CashFlow

De BIS Wiki
Revisão de 16h01min de 30 de abril de 2015 por Rodrigogml (discussão | contribs)
Ir para navegação Ir para pesquisar

Módulo responsável por gerenciar o sistema fluxo financeiro do caixa da empresa.

Requisitos

Lançamentos Financeiros

  • Os lançamentos financeiros são usados para registrar as movimentações financeiras das empresa. Qualquer saída ou entrada de dinheiro deve ter um lançamento correspondente.
  • Um lançamento financeiro pode representar tanto uma conta já paga/recebida quanto um lançamento futuro de recebimento/pagamento.


Os lançamentos devem possuir as seguintes referências:

  • Empresa: Indicando à qual empresa esse lançamento pertence. [Obrigatório]
  • Categoria: Categoria de pagamentos, para sumarização dos pagamentos.
  • Beneficiário/Pagador: Associa uma Pessoa como Beneficiário/Pagador ao lançamento. Não deve ser obrigatório, mas permitir a associação para facilitar a busca dos pagamentos/recebimentos por cliente, fornecedor, funcionário, etc. (PersonVO)
  • Documento(s) de Origem: Permite a associação de documentos que geraram o lançamento, como NFe, Guias de Impostos, Contas de Consumo, etc. Pode ser uma maneira de arquivar a guia (como arquivo binário, ou como referência para o cadastro da NFe no sistema). Algumas vezes um mesmo lançamento de pagamento (por exemplo mesmo boleto, ou mesma transferência) pode abrange a união de vários Documentos de Origem, por isso um lançamento deve permitir a associação de múltiplos documentos.
  • Operação do Lançamento: Define a operação desse lançamento: [Enum]
    • DEBIT: Uma saída, valor removido do caixa: conta a pagar como um boleto de fornecedor, pagamento de salário, etc.
    • CREDIT: Uma entrada, valor removido do caixa: conta a receber como um boleto emitido para um convênio, recebíveis de cartões de crédito e débito, etc..
    • FUNDTRANSFER: Transferência de fundos entre uma conta e outra.
  • Tipo do Lançamento: Permite definir alguns tipos diferentes de lançamentos: [Enum]
    • UNIQUE Define um pagamento único. Como o pagamento de uma nota avista, um serviço de conserto prestado, etc.
    • INSTALLMENTS Define que é um pagamento parcelado. Como uma nota com o valor dividido em 3 vezes em 3 boletos, ou um pagamento de maquinário em várias parcelas.
    • MONTHLYREPETITION Define que o pagamento se repete com frequência mensal. Como a mensalidade de alguma empresa, uma taxa de serviço de manutenção como dedetização, impostos mensais, contas de consumos. No caso de repetição mensal temos que completar os campos:
      • Dia Esperado: Define o dia do mês em que a conta costuma ocorrer.
    • ANNUALREPETITION Define que o pagamento se repete com frequência anual. Como guias referentes ao 13°, registros de domínio, certificados, impostos municipais como TFA, etc.. No caso de repetição anual temos que completar os campos:
      • Dia Esperado: Define o dia do mês em que a conta costuma ocorrer.
      • Mês Esperado: Define o mês em que a conta costuma ocorrer.

Fragmento do Lançamento

O objeto "Fragmento do lançamento" indica as informações sobre o pagamento. Como um mesmo lançamento pode conter pagamentos parcelados e serem pagos de formas diferentes as informações sobre pagamentos ficam um objeto separado. Para lançamentos sem parcelamento (pagamento único) deve conter apenas 1 Fragmento associado.

  • Origin Account: Quando o lançamento for um pagamento ou transferência de fundos, é obrigatório associar à uma conta para indicar de onde foi tirado o valor para pagamento/transferência.
  • Recipient Account: Quando o lançamento for um recebimento ou transferência de fundos, é obrigatório associar à uma conta para indicar para onde foi o valor recebido.
  • Parcelas/Repetições: Associa o pagamento aos "Fragmentos" do pagamento. Normalmente cada lançamento tem apenas 1 com os dados do pagamento. Mas em casos de parcelamento do lançamento ou de contas que se repetem (como contas de consumo e impostos) é associado a diversos objetos. Cada fragmento é um pagamento diferente, com guia, código de barras, valores, vencimentos, etc. distintos.
    • Estatus do Lançamento: Define o "passo" ou estado em que o lançamento se encontra:
      • PLANNED: O pagamento está planejado (lançado no sistema) e aguardando para pagamento.
      • SENT: Estado usado para contas que são pagas por malote eletrônico, ou cobranças por geração de boleto, e indicam que já foram incluídas em um lote para enviar para o banco. Neste estado a conta já deve estar associada à uma conta bancária.
      • ERROR: Estado usado para contas que foram enviadas ao banco por malote eletrônico e retornaram com algum tipo de erro da instituição bancária.
      • PAID: Estado indicando que o lançamento já foi realizado. Isto é, o pagamento efetuado ou o recebível em caixa. Neste estado a associação da conta é obrigatória.
  • Espécie de Lançamento: Define o tipo de conta a pagar ou receber (não usado para FUNDTRANSFER)
    • PAYROLL: Pagamento de folha de pagamento. (Somente Débito)
    • PUBLICSERVICES: Boletos de concessionárias de serviços como telefonia, luz, gás, etc.
    • PAYMENTSLIP_DARF Guia de pagamento de DARF
    • PAYMENTSLIP_GPS Guia de pagamento de GPS
    • BOLETOS: Boletos de pagamentos em geral
    • DEPOSIT: Lançamento de depósitos
    • OTHER: Lançamentos manuais para outros pagamentos e recebimentos. Por exemplo, pagamentos sem nota de pequenos consertos, vales, etc.
  • Mensagem do Malote Eletrônico: Mensagem(ns) recebida do sistema bancário ao tentar pagar uma conta, enviar um pagamento de salário, gerar um boleto, etc.. Por malote eletrônico.
  • Data de Lançamento: Registra a data em que o registro foi criado. Obrigatório
  • Data de Vencimento: Data máxima para pagamento sem penalidades de multas, juros e protestos. Obrigatório
  • Data de Execução: Data em que a ação de pagamento/recebimento realmente ocorreu.
  • Data de Compensação: Data em que o valor realmente entrou no caixa. Normalmente a data é uma duplicação do valor de 'data de execução', no entanto para recebíveis de cartões, boletos, e cheques depositados essa data pode ser diferente da data de execução devido ao processo de compensação. Este campo nunca deve ser nulo. Em casos de compensação imediata, duplicar o valor de 'data de execução' para simplificar consultas do banco de dados.
  • Valor Original: Valor do lançamento. (Seguindo sempre a convenção de que todo pagamento é salvo como valor negativo no banco, e todo recebimento é salvo como valor positivo. - Nos casos de lançamentos de movimentação, sempre lançar o valor positivo)
  • Valor Efetivo: O valor pago é o valor que realmente entrou ou saiu da Conta. Esse valor pode ser diferente do original devido a multas, descontos, taxas de recebíveis, etc.
  • Observações: Campo que permita que o usuário escreva qualquer detalhamento mais específico sobre o fragmento.
  • Documento de Origem: É possível anexar o documento de origem da dívida, seja uma NFe já existente no sistema, seja a digitalização de uma guia de impostos.
  • Comprovante de Pagamento: Permite anexar o documento com o comprovante de pagamento.

Os lançamentos devem ter os seguintes atributos:

  • Documento(s) de Origem: Permite a associação de documentos que geraram o lançamento, como NFe, Guias de Impostos, Contas de Consumo, etc. Pode ser uma maneira de arquivar a guia (como arquivo, ou como referência para o cadastro da NFe no sistema). Algumas vezes um mesmo lançamento de pagamento (por exemplo mesmo boleto) pode abrange a união de várias NFes.
  • Nome de Exibição: Descrição 'curta' dado pelo usuário para descrever o lançamento. Este nome que será usado para exibir em telas e relatórios (como extratos das contas) que permita que o usuário identifique o pagamento.
  • Observações: Campo que permita que o usuário escreva qualquer detalhamento mais específico sobre o lançamento.
  • Projeção Financeira: Caso o tipo de lançamento seja XXXXREPETITION, define como a conta será projetada nos meses seguintes:
    • NONE O lançamento não é projetado até seja realmente lançado.
    • LASTMONTH Usa o mesmo valor do último mês. Bom para lançamentos fixos que são reajustados anualmente.
    • LAST3MONTHS Usa a média do valor dos últimos três meses realizados.
    • LAST6MONTHS Usa a média do valor dos últimos seis meses realizados.




Tipo do Lançamento

De acordo com o tipo de lançamento o sistema deve se comportar das seguintes maneiras:

  • UNIQUE: No caso de pagamento único, o sistema permite que sejam anexadas guias ao lançamento, e não ao fragmento único que representa o pagamento. No entanto, deverá permitir a anexação de recibo ao fragmento.
  • INSTALLMENTS: No caso de parcelamento, o sistema permite que sejam anexadas guias ao lançamento, e não à nenhum dos fragmentos. Também deve permitir a anexação de comprovantes em cada fragmento.
  • MONTHLYREPETITION e ANNUALREPETITION: O sistema não deve permitir anexar guias ao lançamento. Guias/Documentos de origem, assim como os comprovantes, devem ser associados aos fragmentos.


Contas

Contas são usadas para lançar as entradas e saídas financeiras da empresa. Facilitando o controle dos saldos e valores financeiros da empresa.

Cada conta cadastrada deve ter os seguintes atributos:

  • Nome: Para o usuário nomear e identificar a conta.
  • Tipo da Conta:
    • Conta Local: Usada para lançamento manuais de caixas locais.
    • Conta Bancária: Usada para controle de contas bancárias como corrente ou conta investimento. Esse tipo de conta permitirá a conciliação de extrato bancário, bem como a exportação de “malote eletrônico” (CNAB?) para envio de pagamentos para o banco. Para contas bancárias temos os seguintes atributos adicionais:
      • Banco: Número do banco (listagem já pré existente do sistema, por causa do suporte ao “malote eletrônico”).
      • Agência: Agência da conta.
      • Número da Conta: Número da conta corrente.
      • Contato Agência: Permite anexar um contato (PersonVO) da agência.
      • Contato do Gerente: Permite anexar um contato (PersonVO) do gerente da conta.
    • Cartão BNDES: Usada para controlar compras e fluxo do cartão BNDES. (Para Implementação Futura)
    • Cartão de Crédito: Usada para controlar e registrar fluxos de pagamento em cartão de crédito. (Para Implementação Futura)
    • Administradoras de Cartão: Conta com a função de gerenciar os lançamentos de vendas com cartão de crédito. Para calcular taxas e saber o saldo de recebíveis, taxas e etc.. Ao receber no banco, marcamos como "Transferência de Fundos" entre as contas de administradoras e do extrato bancário.
    • Conta Aplicação: Conta usada para gerenciar os fundos de aplicações da empresa.

Categorias de Lançamentos

  • As categorias de lançamentos são usadas para totalizar os lançamentos por grupos de interesse, de forma a mostrar relatórios de fluxo de caixa.
  • As categorias devem ter uma estrutura hierárquica, de forma que o usuário possa criar sua árvore da maneira como achar conveniente ter os totais e subtotais.
  • As categorias devem ter os seguintes campos:
    • Nome: Nome da categoria dada pelo usuário.
    • Categoria Pai: A categoria pai define onde essa categoria será utilizada.
    • Permite Lançamento: Define se essa categoria permite que sejam colocados lançamentos nela ou se não. Categorias que não permitem o lançamento direto nela podem ser usadas como categorias pais apenas para a sumarização das categorias abaixo dela.
      Em caso de alteração, que proíba novos lançamentos na categoria, os lançamentos antigos continuarão lançados sem problema.
      Categorias com lançamentos e lançamentos filhos devem ter os totais das filhas e dela própria sumarizados. Mesmo que sejam exibidos separados de alguma forma.

Conciliação Bancária

A conciliação bancária tem a finalidade de sincronizar as informações oferecidas pelo banco (extrato bancário), com as informações (lançamentos) disponíveis no sistema e associadas a contas do tipo "Conta Corrente". Para isso o sistema deve executar as seguintes tarefas:

  • Importar Extrato Bancário: O sistema deve permitir a importação de formatos comuns usados pelos bancos. Deve guardar os dados importados ignorando os trechos repetidos, e organizar de “forma continua” as informações do extrato bancário. Deve ainda ser capaz de “informar” se perceber que períodos de datas não foram importados, por exemplo o usuário esqueceu pulou algum trecho.
  • Mapear Lançamentos: O sistema deve oferecer uma ferramenta que permita mapear os lançamentos de extrato com os lançamentos do sistema. A intenção é verificar todos os lançamentos ocorridos no extrato com os lançamentos locais utilizados no fechamento da empresa. O mapeamento entre lançamentos do extrato e do sistema deve ser do tipo 1:N, ou N:1 pois podemos ter:
    • múltiplos pagamentos no sistema e um único lançamento no extrato, como boletos pagos em malote eletrônico; e,
    • ter um único lançamento no sistema para múltiplos no extrato, como por exemplo os créditos de cartões de crédito de um periodo que não são controlados no sistema, e o usuário simples soma todos para realizar um único lançamento de crédito mensal.
    Em cada mapeamento múltiplo vamos chamar o lado "1" do relacionamento com o owner do relacionamento para facilitar buscas e validações evitando que mapeamentos N:N sejam feitos. A ideia não é exibir esse campo para o usuário, mas que as UIs possam gerencia-lo sozinho permitindo apenas que o usuário ao fazer o mapeamento escolha como seus lançamentos serão associados.
    • Status do Mapeamento:
      • NONE: Significa que nenhum mapeamento foi feito ainda entre aquele lançamento e o extrato bancário.
      • INCOMPLETE: Significa que algum mapeamento já foi feito entre os lançamentos e o extrato, mas os valores não estão batendo.
      • VALIDATING: Mostra que o sistema fez os mapeamentos estão completos e praticamente OK, mas ainda precisa de alguém com acesso os valide. A ideia é que depois de validados (auditados) alguém sem permissão de auditoria não possa mais edita-lo ou excluí-los. Mapeamentos automáticos feitos pelo sistema, quando ficarem completos devem ser definidos como VALIDATING, enquanto que se o mapeamento automático ficar incompleto ele deve ser definido como INCOMPLETE.
      • AUDITED: Define que o mapeamento foi auditado e está pronto e validado em definitivo.

Contas a Pagar

O sistema deve ter uma tela para gerenciar as contas a pagar (ainda não pagas) para que seja executado o pagamento delas. Além da listagem de contas a pagar por período essa tela deve permitir que pagamentos sejam executados. Durante a execução de um pagamento o sistema deve perguntar em qual conta local o pagamento será executado.

  • Pagamentos com "Conta Corrente"
    • Malote Eletrônico: Caso uma conta bancária seja escolhida devemos mostrar a opção de "Malote Eletrônico", quer permitirá a geração de malote eletrônico com todos os pagamentos suportados para aquela instituição financeira. Os pagamentos não aceitos devem ser exibidos em tela de confirmação. O arquivo do malote eletrônico não precisa ser salvo explicitamente, mas deve ser possível gera-lo novamente a partir dos dados que devem ser salvos nos fragmentos dos lançamentos.
    • Cheque: Ao escolher pagar com uma conta bancária também deve ser possível escolher a opção de pagamento com folha de cheque. Ao escolher essa opção o usuário será indagado do número do cheque para registro, além de data pré-datamento, e data de emissão (o sistema pode sugerir a data de hoje, mas o lançamento do sistema pode não estar sendo feito no momento em que o cheque foi preenchido.)

Contas a Receber

  1. Gestão dos recebíveis da operadora de cartão
  2. Recebimento de Boletos Emitidos

Fluxo de Caixa