CashFlow: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 3: | Linha 3: | ||
== Requisitos == | == Requisitos == | ||
=== Lançamentos Financeiros === | |||
== 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 == | |||
# Gestão dos recebíveis da operadora de cartão | |||
# Recebimento de Boletos Emitidos | |||
== Fluxo de Caixa == | |||
==== 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. | |||
== 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<nowiki>:</nowiki>N, ou N<nowiki>:</nowiki>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<nowiki>:</nowiki>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. | |||
== Entidades == | |||
=== Categorias de Lançamentos (CashFlowCategoryVO) === | |||
* 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. | |||
{{TODO|Lançamentos Esperados|Como forma de auxiliar o usuário a "não esquecer de pagar as contas", no futuro as categorias podem ter regras de 'lançamentos esperados'. Essas regras serviriam para registrar que alguns lançamentos são esperados dentro dessa categoria, assim quando o lançamento não existir o sistema poderia notificar que falta o lançamento. Muito útil por exemplo para mensalidades, contas de consumo ou qualquer outra que tenha alguma frequência quinzenal, mensal, anual, etc. | |||
O sistema poderia avaliar não só se há o lançamento para ajudar a encontrar erros da contabilidade (seja falta do lançamento seja lançado na categoria errada), como também avisar antes do vencimento que nem o lançamento como "contas a pagar" foi realizado até o momento.}} | |||
=== Lançamentos Financeiros (CashFlowStatementVO) === | |||
* 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. | * 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. | * Um lançamento financeiro pode representar tanto uma conta já paga/recebida quanto um lançamento futuro de recebimento/pagamento. | ||
Linha 20: | Linha 77: | ||
** '''UNIQUE''' Define um pagamento único. Como o pagamento de uma nota avista, um serviço de conserto prestado, etc. | ** '''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. | ** '''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. | ||
* '''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. | * '''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. | * '''Observações:''' Campo que permita que o usuário escreva qualquer detalhamento mais específico sobre o lançamento. | ||
=== Parcelas do Lançamento (CashFlowStatementInstallmentVO) === | |||
O objeto "parcela 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 "uma parcela" associada. | |||
=== | |||
O objeto " | |||
* '''Origin Account:''' Quando o lançamento for um pagamento ou transferência de fundos, é obrigatório associar a conta para indicar de onde foi tirado o valor para pagamento/transferência. | * '''Origin Account:''' Quando o lançamento for um pagamento ou transferência de fundos, é obrigatório associar a 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. | * '''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. | ||
* '''Lançamento:''' Associa | * '''Lançamento:''' Associa a parcela ao lançamento. | ||
* '''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. | * '''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. | * '''Comprovante de Pagamento: ''' Permite anexar o documento (arquivo) com o comprovante de pagamento. | ||
* '''Cheque:''' Caso o pagamento seja feito com folha de cheque, a associação ao objeto deve ser | * '''Cheque:''' Caso o pagamento seja feito com folha de cheque, a associação ao objeto que representa a folha de cheque deve ser informada. | ||
* '''Dados Bancários:''' Em caso de pagamento com depósito, transferência essa associação é obrigatória. Para pagamentos com boletos | * '''Dados Bancários:''' Em caso de pagamento com depósito, transferência essa associação é obrigatória. Assim como a informação do PersonVO (o destinatário do pagamento). Para pagamentos com boletos o Person é obrigatório, mas a informação bancária não. A informação bancária pode ser obtida de alguns boletos automaticamente. | ||
* '''Espécie de Lançamento:''' Define o tipo de conta a pagar ou receber (não usado para lançamentos do tipo FUNDTRANSFER, neste caso sempre lançar OTHER) | * '''Espécie de Lançamento:''' Define o tipo de conta a pagar ou receber (não usado para lançamentos do tipo FUNDTRANSFER, neste caso sempre lançar OTHER) | ||
** '''PAYROLL:''' Pagamento de folha de pagamento. (Somente Débito) | ** '''PAYROLL:''' Pagamento de folha de pagamento. (Somente Débito) | ||
Linha 62: | Linha 111: | ||
* '''Valor Descontos:''' O valor de descontos concedidos nos boletos que devem ser decrescidos do valor original do boleto. | * '''Valor Descontos:''' O valor de descontos concedidos nos boletos que devem ser decrescidos do valor original do boleto. | ||
* '''Valor Final:''' O valor final é 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. | * '''Valor Final:''' O valor final é 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. | ||
* '''Campos do Malote Eletrônico:''' Abaixo está a relação de alguns campos usados no malote eletrônico. | * '''Campos do Malote Eletrônico:''' Abaixo está a relação de alguns campos usados no malote eletrônico. | ||
** '''Mensagem de Retorno:''' Campo de texto livre para salvar a mensagem de retorno do banco. Esta mensagem é usada pelo sistema apenas para exibição para o usuário. | ** '''Mensagem de Retorno:''' Campo de texto livre para salvar a mensagem de retorno do banco. Esta mensagem é usada pelo sistema apenas para exibição para o usuário. | ||
Linha 70: | Linha 117: | ||
** '''ID Pagamento:''' Todo pagamento enviado para em um malote eletrônico deve ter um ID único "na vida". Que não deve ser repetido preferencialmente nem em outros arquivos de Lote. Para evitar conflitos caso pagamentos de um mesmo lote tenham retorno em lotes diferentes. Esse ID é normalmente usado pelo sistema do banco. | ** '''ID Pagamento:''' Todo pagamento enviado para em um malote eletrônico deve ter um ID único "na vida". Que não deve ser repetido preferencialmente nem em outros arquivos de Lote. Para evitar conflitos caso pagamentos de um mesmo lote tenham retorno em lotes diferentes. Esse ID é normalmente usado pelo sistema do banco. | ||
** '''Número Validação:''' Número de validação retornado pelo banco ao autorizar um pagamento. Diferente para cada sistema bancário. | ** '''Número Validação:''' Número de validação retornado pelo banco ao autorizar um pagamento. Diferente para cada sistema bancário. | ||
* '''Código de Barras:''' Valor do Código de barras da guia de pagamento dos pagamentos que dispõe de código de barras. | * '''Código de Barras:''' Valor do Código de barras da guia de pagamento dos pagamentos que dispõe de código de barras. | ||
* '''Representação Numérica:''' Numeração da representação numérica do código de barras. Quando o usuário digita 1 ou outra informação o sistema deve gerar a outra automaticamente. | * '''Representação Numérica:''' Numeração da representação numérica do código de barras. Quando o usuário digita 1 ou outra informação o sistema deve gerar a outra automaticamente. | ||
=== Contas (CashFlowAccountVO) === | |||
=== 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. | 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. | ||
Linha 90: | Linha 128: | ||
** '''Conta Local:''' Usada para lançamento manuais de caixas locais. | ** '''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: | ** '''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 | *** '''Banco:''' Número do banco (listagem já pré existente do sistema, por causa do PersonBankDataVO). | ||
*** '''Agência:''' Agência da conta. | *** '''Agência:''' Agência da conta. | ||
*** '''Número da Conta:''' Número da conta corrente. | *** '''Número da Conta:''' Número da conta corrente. | ||
*** '''Contato Agência: ''' Permite anexar um contato (PersonVO) da agência. | *** '''Contato Agência: ''' Permite anexar um contato (PersonVO) da agência. | ||
*** '''Contato do Gerente: ''' Permite anexar um contato (PersonVO) do gerente da conta. | *** '''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) | ** [VERSÃO FUTURA] '''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) | ** [VERSÃ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. | ** [VERSÃ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 | ** [VERSÃO FUTURA] '''Conta Aplicação:''' Conta usada para gerenciar os fundos de aplicações da empresa. | ||
== Extrato Bancário (CashFlowBankStatementVO) == | |||
Este objeto representa um lançamento do extrato bancário, oferecido pela instituição financeira (banco). | |||
Atributos do objeto: | |||
* '''Conta Bancária:''' Todo lançamento obrigatoriamente deve estar associado à uma conta (CashFlowAccountVO) do tipo 'Conta Bancária'. | |||
* '''Operação:''' Define o tipo da operação: Crédito ou Débito. | |||
* '''Valor:''' Valor da operação financeira. Toda a operação de crédito deve ter o valor positivo, todo débito deve manter o valor negativo. | |||
* '''Linha de Exibição:''' Descrição como exibida pela instituição financeira. | |||
* '''ID Lançamento:''' Os extratos bancários costumam (não é regra) ter um ID que identifica aquele lançamento, permitindo que o sistema reconheça o lançamento do banco com os já existentes no sistema evitando duplicatas. Na ausência desse ID a tríade Data + Descrição + Valor deve ser usada para reconhecer o lançamento. (Embora em casos raros possa existis o lançamento exatamente igual no extrato). |
Edição das 20h54min de 30 de abril de 2015
Módulo responsável por gerenciar o sistema fluxo financeiro do caixa da empresa.
Requisitos
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
- Gestão dos recebíveis da operadora de cartão
- Recebimento de Boletos Emitidos
Fluxo de Caixa
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.
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.
Entidades
Categorias de Lançamentos (CashFlowCategoryVO)
- 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.
![]() |
|
Lançamentos Financeiros (CashFlowStatementVO)
- 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 os seguintes atributos e relacionamentos:
- 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.
- 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.
Parcelas do Lançamento (CashFlowStatementInstallmentVO)
O objeto "parcela 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 "uma parcela" associada.
- Origin Account: Quando o lançamento for um pagamento ou transferência de fundos, é obrigatório associar a 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.
- Lançamento: Associa a parcela ao lançamento.
- 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 (arquivo) com o comprovante de pagamento.
- Cheque: Caso o pagamento seja feito com folha de cheque, a associação ao objeto que representa a folha de cheque deve ser informada.
- Dados Bancários: Em caso de pagamento com depósito, transferência essa associação é obrigatória. Assim como a informação do PersonVO (o destinatário do pagamento). Para pagamentos com boletos o Person é obrigatório, mas a informação bancária não. A informação bancária pode ser obtida de alguns boletos automaticamente.
- Espécie de Lançamento: Define o tipo de conta a pagar ou receber (não usado para lançamentos do tipo FUNDTRANSFER, neste caso sempre lançar OTHER)
- 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.
- 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/recebimento.
- 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.
- 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 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 duplicata 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 para lançamentos 'executados' (que já ocorreram). 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 transferência de fundos, sempre lançar o valor positivo)
- Valor Multas: O valor de multas é aplicado para contas pagas com atraso ou outros acréscimos.
- Valor Descontos: O valor de descontos concedidos nos boletos que devem ser decrescidos do valor original do boleto.
- Valor Final: O valor final é 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.
- Campos do Malote Eletrônico: Abaixo está a relação de alguns campos usados no malote eletrônico.
- Mensagem de Retorno: Campo de texto livre para salvar a mensagem de retorno do banco. Esta mensagem é usada pelo sistema apenas para exibição para o usuário.
- Número de Lote: Identificador do lote de pagamento gerado pelo sistema. Quando o arquivo de lote é gerado o sistema deve definir o ID do Lote único para identificar o arquivo gerado. Esse id deve ser salvo para referência futura do retorno e para regerar o arquivo caso o usuário deseje.
- Data de Geração do Lote: Define a data de geração do lote.
- ID Pagamento: Todo pagamento enviado para em um malote eletrônico deve ter um ID único "na vida". Que não deve ser repetido preferencialmente nem em outros arquivos de Lote. Para evitar conflitos caso pagamentos de um mesmo lote tenham retorno em lotes diferentes. Esse ID é normalmente usado pelo sistema do banco.
- Número Validação: Número de validação retornado pelo banco ao autorizar um pagamento. Diferente para cada sistema bancário.
- Código de Barras: Valor do Código de barras da guia de pagamento dos pagamentos que dispõe de código de barras.
- Representação Numérica: Numeração da representação numérica do código de barras. Quando o usuário digita 1 ou outra informação o sistema deve gerar a outra automaticamente.
Contas (CashFlowAccountVO)
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 PersonBankDataVO).
- 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.
- [VERSÃO FUTURA] Cartão BNDES: Usada para controlar compras e fluxo do cartão BNDES. (Para Implementação Futura)
- [VERSÃ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)
- [VERSÃ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.
- [VERSÃO FUTURA] Conta Aplicação: Conta usada para gerenciar os fundos de aplicações da empresa.
Extrato Bancário (CashFlowBankStatementVO)
Este objeto representa um lançamento do extrato bancário, oferecido pela instituição financeira (banco).
Atributos do objeto:
- Conta Bancária: Todo lançamento obrigatoriamente deve estar associado à uma conta (CashFlowAccountVO) do tipo 'Conta Bancária'.
- Operação: Define o tipo da operação: Crédito ou Débito.
- Valor: Valor da operação financeira. Toda a operação de crédito deve ter o valor positivo, todo débito deve manter o valor negativo.
- Linha de Exibição: Descrição como exibida pela instituição financeira.
- ID Lançamento: Os extratos bancários costumam (não é regra) ter um ID que identifica aquele lançamento, permitindo que o sistema reconheça o lançamento do banco com os já existentes no sistema evitando duplicatas. Na ausência desse ID a tríade Data + Descrição + Valor deve ser usada para reconhecer o lançamento. (Embora em casos raros possa existis o lançamento exatamente igual no extrato).