Deixar passar uma cobrança não é legal, ainda mais se você mantém uma hospedagem em algum cloud para seus clientes, e depende do recebimento para manter os serviços ativos!
Com essa aplicação, receitas e despesas nunca mais serão esquecidas ou passadas em branco. Além de registrar cobranças de seus clientes, você também pode registrar os gastos internos.
Principais características da aplicação:
- Cobranças recorrentes para assinaturas (boleto e cartão)
- Envio de boletos automáticos antes do vencimento
- Registro de receitas e despesas
- Balanço para acompanhar seu financeiro
- Anexo de comprovantes
- Categorização de receitas e despesas
- Gestão customizada para usuários e clientes, podendo criar Empresas e vincular vários usuários à mesma
Novidades da versão 1.2.0
Adicionado
- Implementada criação de boletos via Gateway Gerencianet
Modificado
- Melhoria na navegação com Datepicker para alterar meses e dias na navegação entre datas
- Melhoria na navegação, com novo botão para escolher navegar pelos registros mensais ou diários
- Melhoria na navegação, com novo botão (no menu) para ver apenas registros de receitas e despesas
Corrigido
- Revisada cron de lançamentos automáticos para lançamentos recorrentes
- Ajuste em alguns bugs ao criar receitas e despesas. Aplicação revisada em todos os processos
Garantimos o bom funcionamento apenas em versões oficiais do WorkControl!
Esteja ciente que não podemos prever outras versões do WorkControl criadas e/ou disponibilizadas por você ou por outros profissionais! Caso tenha um WorkControl customizado e não tem conhecimento necessário para adaptação, você deve solicitar suporte para quem disponibilizou a customização para que possa instalar e usufruir essa aplicação!
- WorkControl 3.1.4
Arquivo /_app/Config.inc.php (a partir da linha #112 do WC original).
Adicione somente o conteúdo em negrito no arquivo, conforme abaixo:
(...)
require 'Config/Config.inc.php';
require 'Config/Agency.inc.php';
require 'Config/Client.inc.php';
// SISTEMA FINANCEIRO
require 'Config/Custom.inc.php';
Importante: Caso você já tenha instalado alguma outra aplicação comprada aqui no meu market e o require para esse arquivo Custom.inc.php já existir, você não precisa (e não deve) chamá-lo novamente neste local... O que você precisa fazer é copiar o conteúdo do novo arquivo e mesclar com o conteúdo existente!
Para começar, precisamos copiar os arquivos para dentro do painel administrativo WorkControl. Siga a lista abaixo de arquivos e seu respectivo local de destino:
Nome da pasta ou arquivo | Local de destino |
/APP/Custom.inc.php | BASE-DO-PROJETO/_app/Config/aqui |
/APP/rr_Finance.ajax.php | BASE-DO-PROJETO/admin/_ajax/aqui |
/APP/rr_Clients.ajax.php | BASE-DO-PROJETO/admin/_ajax/aqui |
/APP/finan/ | BASE-DO-PROJETO/admin/_siswc/aqui |
/APP/clients/ | BASE-DO-PROJETO/admin/_siswc/aqui |
/APP/elements/ | BASE-DO-PROJETO/admin/_tpl/aqui |
Para que possamos exibir a nova função no menu principal do WC é necessário uma alteração simples no arquivo wc_menu.php ... OU, se preferir, copie o arquivo 'wc_menu.php' que está dentro da pasta /APP
Arquivo /admin/_siswc/wc_menu.php
Adicione o conteúdo abaixo no arquivo:
<?php
/**==================
* SISTEMA FINANCEIRO
* Versão Atual: v1.2.0
* https://rodrichard.com.br/financeiro
* ====================================
/*/
if (APP_FINANCE && $Admin['user_level'] >= LEVEL_FINANCE):
$wc_fin_alerts = null; ?>
<li class="dashboard_nav_menu_li <?= strstr($getViewInput, 'finan/') ? 'dashboard_nav_menu_active' : ''; ?>"><a class="icon-coin-dollar" title="Ver Financeiro" href="dashboard.php?wc=finan/home">Financeiro <?= $wc_fin_alerts; ?></a>
<ul class="dashboard_nav_menu_sub">
<li class="dashboard_nav_menu_sub_li <?= ($getViewInput == 'finan/home' && !filter_input(INPUT_GET, "type", FILTER_DEFAULT)) ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver Lançamentos" href="dashboard.php?wc=finan/home">» Ver Financeiro <?= $wc_fin_alerts; ?></a></li>
<li class="dashboard_nav_menu_sub_li <?= ($getViewInput == 'finan/home' && filter_input(INPUT_GET, "type", FILTER_DEFAULT) == 'rec') ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver Lançamentos" href="dashboard.php?wc=finan/home&type=rec">» Receitas</a></li>
<li class="dashboard_nav_menu_sub_li <?= ($getViewInput == 'finan/home' && filter_input(INPUT_GET, "type", FILTER_DEFAULT) == 'des') ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver Lançamentos" href="dashboard.php?wc=finan/home&type=des">» Despesas</a></li>
<li class="dashboard_nav_menu_sub_li <?= $getViewInput == 'finan/categories' || $getViewInput == 'finan/category' ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver categorias cadastradas" href="dashboard.php?wc=finan/categories">» Categorias</a></li>
<li class="dashboard_nav_menu_sub_li <?= $getViewInput == 'finan/reports' ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver categorias cadastradas" href="dashboard.php?wc=finan/reports">» Relatórios</a></li>
</ul>
</li>
<?php
endif;
/**=======================
* APP USUÁRIOS E CLIENTES
* Versão Atual: v1.0.0
* https://rodrichard.com.br/clientes
*===================================
/*/
if (APP_CLIENTS && $_SESSION['userLogin']['user_level'] >= LEVEL_CLIENTS): ?>
<li class="dashboard_nav_menu_li <?= strstr($getViewInput, 'clients') ? 'dashboard_nav_menu_active' : ''; ?>"><a class="icon-users" title="Usuários" href="dashboard.php?wc=clients/home">Usuários</a>
<ul class="dashboard_nav_menu_sub">
<li class="dashboard_nav_menu_sub_li <?= strstr($getViewInput, 'clients/home') ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver Todos os Usuários" href="dashboard.php?wc=clients/home">» Usuários</a></li>
<li class="dashboard_nav_menu_sub_li <?= strstr($getViewInput, 'clients/update-users') ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Novo Usuário" href="dashboard.php?wc=clients/update-users">» Novo Usuário</a></li>
<li class="dashboard_nav_menu_sub_li <?= strstr($getViewInput, 'clients/clients') ? 'dashboard_nav_menu_active' : ''; ?>"><a title="Ver Clientes" href="dashboard.php?wc=clients/clients">» Clientes</a></li>
</ul>
</li>
<?php
endif;
Para que o siistema possa fazer os lançamentos recorrentes, é preciso configurar a cronjob no servidor chamando o arquivo PHP responsável por fazer os lançamentos em segundo plano, sem que precise você botar a mão na massa!
Configurando Cron Job
Primeiramente, acesse seu cPanel. Faça login e vá até o menu "Cron Jobs":
Configurações
1) Na primeira opção chamada Common Settings você vai selecionar a opção "Once per minute"
2) No input chamado Command você vai preencher:
php /home/SEUPROJETO/public_html/admin/_siswc/finan/files/cronjob.php >/dev/null 2>&1
Lembre-se de substituir SEUPROJETO pela raiz do seu ambiente!
Toda vez que o servidor rodar esse arquivo PHP, fará uma verificação se há boletos em aberto para um usuário específico - e essa execução acontece apenas para registros Recorrentes (mensal, quinzenal, semestral e anual).
Por exemplo: Hoje é dia 1º de um mês qualquer, o sistema vai rodar a cron e verificar se os boletos dentro do intervalo configurado estão criados. Caso falte o boleto do mês atual (lembra que hoje é dia 1º) o sistema cria o boleto automaticamente no Gateway com a data de vencimento e valor configurado de acordo com o registro!
Caso todos os boletos estejam de acordo, o sistema não faz mais nada... Não tem problema a cron continuar rodando pois não há nenhuma execução acontecendo!
IMPORTANTE: Essa cron deve ser configurada em um período curto de tempo, pois para que não haja sobrecarga, a cada execução é processado um registro apenas. Ou seja, um cadastro de cada vez. Você é livre para escolher o período configurado na Cron, mas caso sua base contenha várias cobranças o sistema vai demorar mais para processar todos os boletos!
Configurando Recorrências
A configuraçao de recorrência acontece dentro do arquivo _app/Config/Custom.inc.php na linha #19:
define("FINANCE_RECURRENT_PERIOD", 2);
Esse parâmetro controla o número de MESES em que o sistema cria automaticamente lançamentos recorrentes (contando com atual)
- Se informar '0' (zero), o sistema mantém apenas o boleto do mês atual enquanto a cron é executada
- Se informar um valor maior ou igual a '1' (um), o sistema entenderá que você quer um mês de "folga", e irá lançar o mês atual + a quantidade de meses que você informar
No caso acima, FINANCE_RECURRENT_PERIOD está configurado com o número dois. Ou seja, se estivermos e Janeiro, a cron fará o lançamento de Fevereiro e Março para nós, e toda vez que um novo mês virar, manterá os lançamentos obedecendo esse período
Para que o sistema possa criar os boletos é necessária a conexão entre o sistema e os Gateways e bibliotecas externas. E para que isso seja possível, é uma regra que você informe seus dados de conexão, e assim o sistema consegue conversar com a API do Gateway e fazer todas as ações pra você, sem que precise criar, editar e/ou excluir nada manualmente!
Hoje, o sistema conta apenas com geração de boletos via Gerencianet. Mas, em um futuro bem próximo outros Gateways serão implementados. Julgue o Gerencianet como a porta de entrada e validação... E aguarde por novas conexões de Gateways e opções nativas de geração de boletos direto com os Bancos (em breve).
Configurando o Gerencianet
Siga os passos abaixo para configurar o ambiente. Caso já tenha uma API configurada, você pode pular para o Passo 2
Passo 1)
É necesário criar uma API Gerencianet. Você pode usar uma API que você já tenha, ou pode seguir os passos abaixo para criar uma nova. Caso queira usar uma API já existente, pule para o Passo 2
- CRIAR API - https://sistema.gerencianet.com.br/api/minhas-aplicacoes/nova-aplicacao.
- 1 - Insira o nome da sua nova API (livre e sem espaços e sem caracteres especiais)
- 2 - Mantenha a opção "Modo de compatibilidade" como DESATIVADO e clique no botão "Criar nova aplicação"
- 3 - Clique em "Minhas Aplicações" e em seguida na sua API
- 4 - Na tela teremos três abas: 'Produção' - 'Desenvolvimento' - 'Playground'.
- 5 - Você irá selecionar a aba correspondente e irá preencher os dados de acordo com os ambientes abaixo:
Passo 2)
Agora que temos a API, vamos informá-la no sistema: Você precisa abrir o arquivo _app/Config/Custom.inc.php a partir da linha #47 e informar os dados da sua API:
(...)
define('FINANCE_GTW_GERENCIANET_ACCOUNT_ID', ''); // Seu ID Identificador de Conta. Disponível em (https://sistema.gerencianet.com.br/minha-conta/validacoes)
define('FINANCE_GTW_GERENCIANET_NOTIFICATION_EMAIL', ''); //E-mail para receber as notificações do sistema
// [Desenvolvimento] AMBIENTE DE TESTES
define('FINANCE_GTW_GERENCIANET_SANDBOX_CLIENT_ID', ''); // Client ID
define('FINANCE_GTW_GERENCIANET_SANDBOX_CLIENT_SECRET', ''); // Client Secret
// [Produção] AMBIENTE REAL
define('FINANCE_GTW_GERENCIANET_CLIENT_ID', ''); // Client ID
define('FINANCE_GTW_GERENCIANET_CLIENT_SECRET', ''); // Client Secret
Precisamos fazer a importação das tabelas responsáveis pelo gerenciamento da sua aplicação. Para isso, utilize o seu SGBD padrão ou utilize o seu phpmyadmin
Na raiz da pasta baixada temos o arquivo sistema-financeiro_1.2.0.sql! Você deve importá-lo para dentro do banco de dados de sua aplicação!
Agora, depois de tudo feito é necessário dar um reset dentro da área administrativa do WorkControl.
Para fazer isso basta ir até Menu > Configurações > Configurações Gerais e clicar no botão Resetar Configurações.
Tudo pronto! Se tudo foi feito como descrito neste tutorial sua Aplicação deve estar funcionando corretamente.