Contas à Pagar e Receber: mudanças entre as edições
Linha 38: | Linha 38: | ||
** '''Recebimentos (Créditos/Receitas):''' Recebimento de Convênios, Faturamento de Venda, Prêmio/Indenização de Seguros, etc. | ** '''Recebimentos (Créditos/Receitas):''' Recebimento de Convênios, Faturamento de Venda, Prêmio/Indenização de Seguros, etc. | ||
** '''Transferências:''' Transferências entre contras da própria empresa. Não implica em Despesa ou Receita, apenas um Crédito e Débito entre contas. | ** '''Transferências:''' Transferências entre contras da própria empresa. Não implica em Despesa ou Receita, apenas um Crédito e Débito entre contas. | ||
** '''Serviço - Prefeituras:''' As contas de pagamentos para a prefeitura são utilizados para registrar recolhimentos para prefeituras. Esses pagamentos incluem recolhimentos de diversas naturezas, como IPTU, ISSQN, TFA, etc. | |||
* '''BillPaymentType (Tipo do Pagamento)''' - BillPayment, ou Tipo do Pagamento, é declarado pelo BillPaymentVO. Define como o pagamento é realizado, e suas definições devem ser coerentes com a definição do BillType do BillVO. Lembre-se que BillVO pode ter vários BillPaymentVO, sendo BillVO a representação da conta, enquanto que o BillPaymentVO é a representação de cada pagamento/parcela realizado. São eles: | * '''BillPaymentType (Tipo do Pagamento)''' - BillPayment, ou Tipo do Pagamento, é declarado pelo BillPaymentVO. Define como o pagamento é realizado, e suas definições devem ser coerentes com a definição do BillType do BillVO. Lembre-se que BillVO pode ter vários BillPaymentVO, sendo BillVO a representação da conta, enquanto que o BillPaymentVO é a representação de cada pagamento/parcela realizado. São eles: | ||
** '''None''' - Indica que a transação é feita sem a presença de uma guia ou ação gerenciada pelo sistema. Como pagamento de contador, funcionários (quando feitos na empresa), pagamentos feitos em dinheiro a vista, etc. | ** '''None''' - Indica que a transação é feita sem a presença de uma guia ou ação gerenciada pelo sistema. Como pagamento de contador, funcionários (quando feitos na empresa), pagamentos feitos em dinheiro a vista, etc. | ||
Linha 53: | Linha 54: | ||
=== BillPaymentType compatíveis com cada BillType === | === BillPaymentType compatíveis com cada BillType === | ||
O mapeamento de compatibilidade entre os tipos pode ser visto diretamente no código, na classe CFlowUtils no método isBillPaymentCompatibleWithBillVO(). Mais fácil que mantar a documentação atualizada aqui ;) | |||
= Lançamento de Contas a Pagar/Receber = | = Lançamento de Contas a Pagar/Receber = |
Edição atual tal como às 23h49min de 19 de fevereiro de 2020
A gestão de contas a pagar e receber (ou já pagas e recebidas) será feita toda a partir de um único objeto (o BillVO). Entendemos por "Conta" qualquer fluxo financeiro realizado pela empresa tanto débitos (despesas) quanto créditos (receitas).
Neste objeto teremos informações como Valores, contra-partes da operação, se é crédito ou débito (receber ou pagar), data de previsão de pagamento (vencimento), data da efetivação do pagamento, etc. Note que este objeto tem a finalidade de registrar todas as movimentações financeiras da empresa.
Relacionamento e Diferença do AccountStatementVO
O BillVO representa a conta a ser paga/recebida. Com valores, parcelas, tipo de guia, código de boleto, etc.. Enquanto que o AccountStatementVO representa um lançamento feito no extrato da conta.
Um BillVO existe "sozinho" enquanto a conta não foi paga/recebida, representando uma expectativa de movimentação futura. Já o AccountStatementVO é um lançamento de movimentação já realizado em algum caixa. Uma vez que o BillVO é definido como efetivado (pago/recebido), ele deve ser associado com o AccountStatementVO para registrar em qual conta financeira a movimentação ocorreu.
Note que, o relacionamento entre o BillVO e o AccountStatementVO é N:N, mas e feito indiretamente pelo objeto das parcelas do BillVO, o BillPaymentVO. Assim o BillVO pode ter várias parcelas, e cada parcela ser paga em uma conta diferente. Assim como, em um único lançamento do lado da Conta Financeira pode representar vários pagamentos. Por exemplo, é emitido um único cheque para se pagar vários boletos, ou pelo pagamento em Lote o banco aglutina em um único lançamento o pagamento de vários boletos e tributos, ou do pagamento de vários funcionários.
Parcelamento e Múltiplos Pagamentos (O BillPaymentVO)
As informações da Conta a Pagar/Receber é separa entre o BillVO e o BillPaymentVO. Deve-se pensar no BillVO como a conta a ser efetivada. Por exemplo, o pagamento do seguro, o IPTU de um imóvel, a compra de um carro para a frota, etc.. Enquanto que o BillPaymentVO é "a parcela". Muitas vezes o BillVO tem só um BillPaymentVO, mas pode ser tantos quantos forem necessários para representar os pagamentos realizados. Como citado, imagine o seguro da empresa que foi parcelado em 5 prestações. O BillVO deverá ter 5 BillPaymentVO para que sejam lançados os diferentes pagamentos.
Outra ponto importante sobre o BillPaymentVO é que ele representa "a Guia", ou o documento utilizado para pagamento, ou mesmo a ausência de uma guia específica de pagamento. Continuando nosso exemplo do seguro, imagine que as 5 recebemos 5 boletos para realizar os pagamentos, teremos 5 BillPaymentVO com a informação de cada boleto no sistema. Mas por algum motivo a prestação 4 não foi paga e depois de entrar em contato com a empresa foi solicitado que fizéssemos uma transferência bancária. Neste caso teríamos de substituir o BillPaymentVO com os dados do boleto, por um registrando o novo pagamento por TED/Transferência.
O BillPaymentVO também pode ser utilizado para registrar múltiplos pagamentos para fechar uma mesma conta, mesmo que não seja um parcelamento. Por exemplo, para pagar um fornecedor pagamos parte com cheque de terceiros e outra com uma transferência bancária. Temos de registrar o pagamento com os cheques de terceiros saindo do caixa local que estava com os cheques, e registrar a transferência da conta bancária a partir de transferência. Mesmo que tudo tenha ocorrido na mesma data, teremos 2 BillPaymentVO para registrar todos os pagamentos para quitar a conta em questão.
Por fim, o BillPaymentVO também registra a forma de pagamento. Aqui é preciso tomar cuidado para não misturar o documento de pagamento com a forma de pagamento. Vamos lá, o documento de pagamento pode ser um Boleto, já o boleto pode ser pago com dinheiro de algum caixa, ou pago manualmente pelo bankline, pode ser pago em cheque na boca do caixa ou ainda por remessa/lote eletrônico.
Tipo de Contas a Pagar/Receber
Para otimizar alguns processos e validações o BIS identifica de alguns pagamentos, como Impostos, Pagamento de Notas, Pagamentos de Salários, etc.. Essa identificação permite que o BIS gerencie lançamentos contábeis, valide guias e formas de pagamento automaticamente.
Definições dos Pagamentos
O BIS categorias as movimentações financeiras em 3 tipos diferentes:
- BillType (Tipo da Conta) - BillType, ou Tipo da Conta, é declarado pelo BillVO e define de forma geral o porque da movimentação financeira. Exemplos:
- Pagamentos (Débitos/Despesas): Fornecedor, Prestador de Serviço, algum Tributo como PIS, Cofins, ICMS, IPTU, Salários, Pensão Alimentícia, etc.
- Manual - Permite o cadastramento de uma conta "não gerenciada" pelo BIS. Nesse tipo de conta o BIS não faz nenhum tipo de validação ou controle extra. Em geral existe para ser utilizado pelos casos de pagamentos atípicos ou que não precisam ser controlados pelo BIS.
- Recebimentos (Créditos/Receitas): Recebimento de Convênios, Faturamento de Venda, Prêmio/Indenização de Seguros, etc.
- Transferências: Transferências entre contras da própria empresa. Não implica em Despesa ou Receita, apenas um Crédito e Débito entre contas.
- Serviço - Prefeituras: As contas de pagamentos para a prefeitura são utilizados para registrar recolhimentos para prefeituras. Esses pagamentos incluem recolhimentos de diversas naturezas, como IPTU, ISSQN, TFA, etc.
- Pagamentos (Débitos/Despesas): Fornecedor, Prestador de Serviço, algum Tributo como PIS, Cofins, ICMS, IPTU, Salários, Pensão Alimentícia, etc.
- BillPaymentType (Tipo do Pagamento) - BillPayment, ou Tipo do Pagamento, é declarado pelo BillPaymentVO. Define como o pagamento é realizado, e suas definições devem ser coerentes com a definição do BillType do BillVO. Lembre-se que BillVO pode ter vários BillPaymentVO, sendo BillVO a representação da conta, enquanto que o BillPaymentVO é a representação de cada pagamento/parcela realizado. São eles:
- None - Indica que a transação é feita sem a presença de uma guia ou ação gerenciada pelo sistema. Como pagamento de contador, funcionários (quando feitos na empresa), pagamentos feitos em dinheiro a vista, etc.
- Boleto - Indica que a transação é feita por um Boleto. Note que esse tipo só inclui os boletos do tipo de fornecedores, não as guias de arrecadação/serviços (que começam com 8 e 4 blocos de 11 dígitos).
- Transferência - Este tipo de pagamento é realizado utilizando-se uma transferência a partir de conta bancária (transferências entre contas do mesmo banco, DOC, TED, etc.).
- IPTU: Neste caso BillType será definido como IPTU, pois é isso que estamos pagando. Já o BillPaymentType será definido como "Boleto de Serviço de Prefeitura", caso a parcela seja recolhida por uma guia com código de barras começando com 8 (Mais detalhes sobre boletos e códigos de barras na documentação dos boletos). Ou como Manual, caso o pagamento seja realizado de forma manual na prefeitura, diretamente no bankline, ou qualquer outra forma controlada fora do sistema.
- PIS: Para este tipo de conta, o BillType deve ser definido como PIS, e o BillPaymentType como DARF uma vez que normalmente o PIS é pago através de guias de DARF. Pode também ser definido de forma "manual", ao ser pago diretamente para um contador, ou em casos atípicos de recolhimento direto por outro tipo de guia.
- Método de Pagamento: Por fim, depois de definido o tipo de conta, a guia/tipo de pagamento, cabe ainda a definição de como o pagamento foi realizado para que possa ser controlado pelo sistema. Por exemplo:
- Arquivo de Lote: O pagamento foi realizado através de envio de arquivo de lote para pagamento em banco de forma eletrônica
- Manual: Quanto o pagamento é realizado de de alguma forma manual (não controlada pelo sistema), de forma que simplesmente é retirado o valor do caixa do qual o pagamento foi realizado.
- Cheque: Pagamento realizado através de Cheque. O BIS não controla esse tipo de pagamento ainda, mas poderia ser controlado para que se registre e rastreie os destinos das folhas de cheque.
BillPaymentType compatíveis com cada BillType
O mapeamento de compatibilidade entre os tipos pode ser visto diretamente no código, na classe CFlowUtils no método isBillPaymentCompatibleWithBillVO(). Mais fácil que mantar a documentação atualizada aqui ;)
Lançamento de Contas a Pagar/Receber
Uma Conta a Pagar/Receber pode ser lançada de diversas maneiras no sistema, seja manualmente, através de uma nota, de um boleto con fatura, boleto por contrato (sem nota), etc..
Cada parte do sistema criará os objetos conforme os requisitos e necessidades de cada parte do sistema. As outras partes do sistema devem simplesmente respeitar as regras previstas no módulo para manter a compatibilidade com a edição e com os métodos de pagamento.
Lançamento Manual
Entre as opções de se lançar uma conta está a própria tela de Contas à Pagar e Receber que permite o lançamento de novas contas manualmente. Seja de boletos de contratos, guias de impostos, pagamentos de funcionários, etc.
Efetivação do Pagamento/Recebimento
Pagamento por Lote Bancário
De acordo com as contas bancárias cadastradas, as contas poderão ser pagas através de lote bancário (pagamento por arquivo). O BIS gera o arquivo de Lote que deve ser enviado ao banco. Anotando o lote os IDs e demais atributos conforme a geração do Layout e do tipo de conta, para que depois, possa ler o arquivo de retorno e dar baixa/vincular os pagamentos realizados e erros.
Pagamento Manual
O Pagamento Manual permite que uma conta seja marcada como paga em qualquer conta financeira sem mais controles do sistema. Utilizado quando o usuário fez o pagamento em dinheiro do caixa local, ou pagou o boleto de forma manual no bankline ou na boca do caixa.
Validação Extras
- [ve0001] Código de Barras / Código Numérico Obrigatório - Devem conter sempre o código de barras, mesmo que o usuário entre a representação numérica, o sistema deve converter e salvar ambas as informações. Esta validação se aplica apenas para os títulos com códigos de barras como Boleto, Contas de Consumo, alguns tributos, etc.
- [ve0004] Verificar se Código de Barras e Código Numérico são compatíveis - Garantir que ambos os valores salvos são referência um do outro.
- [ve0005] Guias de Impostos e Contas de Consumo não podem ser do tipo crédito - embora óbvio, garante que no sistema não tente salvar alguma informação incoerente no sistema.
- [ve0006] Validações da Guia GPS sem código de Barras - Validar campos obrigatórios da Guia
- [ve0007] Validações da Guia DARF sem código de Barras - Validar os campos obrigatórios da Guia
- [ve0008] Validações da Guia GARE/SP sem código de Barras - Validar os campos obrigatórios da Guia
- [ve0009] Validações das Transferências - Validar os campos necessários para realizar a transferência como:
- Destinatário da Transferência esteja preenchido e com CPF/CNPJ válidos
- Banco destino tenha o Código do Banco e ISPB definidos
- Agência esteja Preenchido
- Conta Corrente com DV esteja Preenchido
- Finalidade da Transferência esteja Preenchida
- [ve0010] Total de StatementVO - A soma dos valores do StatementVO gerados deve ser o mesmo que o valor final do BillVO.
- [ve0011] Data de Pagamento e Competência seja o mesmo no StatementVO - A soma dos valores do StatementVO gerados deve ser o mesmo que o valor final do BillVO.
- [ve0012] O Sacador/Avalista só pode ser alterado enquanto o pagamento tiver o status 'Aguardando' - Pagamentos com outros status só podem ser alterados com acesso especial.
- [ve0013] Os atributos das parcelas só podem ser alteradas enquanto estiverem com o status 'Aguadando' - Todos os atributos da parcela que iniciou ou completou o pagamento devem ser imutáveis. Podendo ser alterados apenas por acessos de segurança especial.
Validação na Exclusão
- [ve0014] Excluir AccountStatementVO ao remover pagamentos realizados - Validar se o usuário tem permissão para remover o pagamento, e se sim, é necessário excluir os lançamentos do AccountStatementVO.