==========================
Boletos e CNAB de cobrança
==========================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:8496165d0674ac9514eeb76a9c44c0deb12659a162e66e90609f5c38a0483645
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
    :target: https://odoo-community.org/page/development-status
    :alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
    :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--brazil-lightgray.png?logo=github
    :target: https://github.com/OCA/l10n-brazil/tree/14.0/l10n_br_account_payment_brcobranca
    :alt: OCA/l10n-brazil
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
    :target: https://translation.odoo-community.org/projects/l10n-brazil-14-0/l10n-brazil-14-0-l10n_br_account_payment_brcobranca
    :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
    :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-brazil&target_branch=14.0
    :alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

O módulo implementa o CNAB, a geração do Boleto, do Arquivo de Remessa e importa o Arquivo de Retorno usando a Biblioteca BRCobranca_ através do Micro-Serviço Boleto_CNAB_API_.

.. _BRCobranca: https://github.com/kivanio/brcobranca
.. _Boleto_CNAB_API: https://github.com/akretion/boleto_cnab_api

**Table of contents**

.. contents::
   :local:

Installation
============

O módulo depende do:

* l10n_br_account_payment_order
* account_move_base_import

Configuration
=============

Para configurar esse módulo é preciso:

Rodar a biblioteca **BRCobranca** como um micro-serviço **Boleto_CNAB_API**.

Informar a variável de ambiente **BRCOBRANCA_API_URL**, existem três opções:

* No arquivo de configuração do **Docker Compose File** na seção **enviroment**, por exemplo https://github.com/akretion/docky-odoo-brasil/blob/12.0/docker-compose.yml#L3 , incluir:
    **BRCOBRANCA_API_URL=http://boleto_cnab_api:9292**
* No arquivo de Configuração do Odoo, incluir:
    **brcobranca_api_url=http://boleto_cnab_api:9292**
* No Odoo crie um Parâmetro de Sistema como:
    **brcobranca_api_url=http://boleto_cnab_api:9292**

Verifique se os Códigos do CNAB do Banco que será usado existem em:

**Faturamento > Configurações > Administração > Códigos CNAB**

Caso seja preciso criar por favor considere fazer um PR acrescentando os Códigos em l10n_br_account_payment_order/data/cnab_codes/banco_X_cnab_Y_Z.xml assim em próximas implementações já não será preciso cadastra-los ajudando também na construção desse banco de conhecimento, você pode ver os casos que já existem hoje no módulo `l10n_br_account_payment_order <https://github.com/OCA/l10n-brazil/tree/14.0/l10n_br_account_payment_order>`_.

Crie uma **Configuração CNAB**, é onde serão armazenadas as informações específicas de cada caso como a Carteira, Convênio, Código do Benificiário, Códigos de Instrução e Retorno do Movimento, etc, em:

**Faturamento > Configuração > Administração > Configurações CNAB**

Verifique se a **Conta Bancária** referente ao CNAB já foi cadastrada em:

**Configurações > Usuários e Empresas > Empresas**

Clique no Contato associado, e na aba Faturamento veja se a **Contas Bancária** referente ao CNAB já existe e se as informações estão corretas, se não existir veja de criar informando os dados Número da Conta, Agencia, etc.

Ao cadastrar a **Conta Bancária** deve ser criado automaticamente um **Diário Contábil**, ou se já havia sido cadastrada o Diário já deve existir, verifique em:

**Faturamento > Configurações > Financeiro > Diários**

Confirme se as informações estão corretas, campo **Tipo** deve estar como Banco, na aba **Lançamentos do Diário** em **Número da Conta Bancária** deve estar preenchido com a **Conta Bancária** do CNAB e na aba **Configuração de Pagamentos** os Metódos que serão usados, 240 ou 400, devem estar marcados.

Na aba **Informações Referentes a Importação** informe as configurações de Retorno do CNAB nos campos **Tipo de Importação**, **Conta de Recebimento/Pagamento**, **Criação de Contra-Partida** e se deve ser feita a reconciliação automática ao importar o arquivo em **Reconciliar Automaticamente o Retorno de Pagamento**.

Crie um **Modo de Pagamento** ou use um existente em:

**Faturamento > Configuração > Administração > Modos de Pagamento**

Informe o **Diário Contábil** referente ao Banco e a **Configuração CNAB** que deverá ser utilizada, no campo **Diário de Banco Fixo** informar o Diário Contábil da Conta Bancária e se for o caso, e é recomendado, marcar a opção **Adicionar automaticamente ao validar a fatura** para não ser preciso fazer manualmente.

Caso o CNAB e Banco escolhidos possua um campo específico que seja preciso implementar considere fazer um PR no módulo **l10n_br_account_payment_order** aqui https://github.com/OCA/l10n-brazil/blob/14.0/l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py#L307 .

Configure as permissões de acesso dos usuários, as opções são CNAB **Usuário** e **Gerente**.

Usage
=====

Ao criar e Confirmar uma **Fatura** que tem um **Modo de Pagamento** que tenha uma **Configuração CNAB** definida deverá aparecer o botão de **Imprimir Boleto**, caso esteja marcado no Modo de Pagamento a opção de **Adicionar automaticamente ao validar a fatura** será criada ou adicionada em uma **Ordem de Pagamento** as linhas de pagamentos do CNAB, se a opção não estiver marcada será preciso fazer isso manualmente podendo ser feito tanto na Fatura quanto na Ordem de Pagamento.

Ao Confirmar essa **Ordem de Pagamento** será possível gerar o **Arquivo de Remessa CNAB** a ser enviado ao Banco, é importante confirmar o envio do arquivo alterando o status da ordem para **Arquivo Enviado**, essa informação é usada para validar se existe uma instrução CNAB pendente antes de se poder criar outra.

Alterações de CNAB como Alteração da Data de Vencimento, Protesto, Conceder Abatimento e etc podem ser feitas na própria Fatura em:

**Faturamento > Clientes > Faturas**

Na aba **Recebimentos** na última coluna existe o botão **Atualizar Informação CNAB** ao clicar em uma linha essa opção também aparece, ao fazer uma alteração é criada ou adicionada em uma Ordem de Pagamento a **Instrução de Movimento CNAB** selecionada.

A importação do **Arquivo CNAB de Retorno** pode ser feita em:

**Faturamento > Financeiro > CNAB > Importar Arquivo de Lote**

ou no próprio Diário em:

**Faturamento > Configurações > Financeiro > Diários**

Na aba **Informações Referentes a Importação** no botão **Arquivo de lote de importação**.

Toda importação de arquivo de retorno cria um **LOG** que pode ser consultado em:

**Faturamento > Financeiro > CNAB > Registro de Retorno de CNAB**

Caso o **Código de Retorno CNAB** recebido seja um dos **Códigos de Liquidação do Retorno do Movimento**, definidos na **Configuração CNAB** usada no **Modo de Pagamento**, será criada uma **Entrada de Diário** com os valores, quando existirem de **Desconto, Juros/Mora, Tarifa Bancária, Abatimento** e o **Valor Recebido** a ser reconciliado com a linha da **Fatura** referente, os lançamentos são separados de acordo com as **Contas Contabéis** definidas na **Configuração CNAB**, a linha para reconciliar a Fatura precisam ser iguais por isso o valor é:

**valor_recebido_calculado = valor_recebido + valor_desconto + valor_abatimento - valor_juros_mora**

Quando marcada a opção de **Reconciliação Automatica** a **Entrada de Diário** será movida para o status **Lançado** automaticamente ao importar o arquivo, se essa opção não estiver marcada isso deverá ser feito manualmente.

Known issues / Roadmap
======================

* Incluir a posssibilidade de imprimir o boleto no menu Imprimir da Fatura, na v12 aparentemente não é possível chamar um metodo apenas um QWeb, verificar na migração para outras versões.

Changelog
=========

14.0.9.0.0 (2024-09-19)
~~~~~~~~~~~~~~~~~~~~~~~

* [REM] Removendo Campos, Visões e Objetos obsoletos.

14.0.8.0.0 (2024-09-18)
~~~~~~~~~~~~~~~~~~~~~~~

* [IMP] Possibilidade de informar Códigos de Desconto além do 0 e 1.

14.0.7.0.0 (2024-09-13)
~~~~~~~~~~~~~~~~~~~~~~~

* [REF] Separando as Configurações do CNAB do Modo de Pagamento.

14.0.6.0.0 (2024-09-10)
~~~~~~~~~~~~~~~~~~~~~~~

* [REF] Unindo os Códigos CNAB em um mesmo objeto.

14.0.1.0.0 (2022-05-26)
~~~~~~~~~~~~~~~~~~~~~~~

* [MIG] Migration

12.0.1.0.0 (2021-05-07)
~~~~~~~~~~~~~~~~~~~~~~~

* [MIG] Finish migration
* [IMP] Integrate with module account_move_base_import used to import CNAB file
* [IMP] Make possible automatic reconciliation and register the values of Fees, Tariff Bank, Rebate in configured accounts.

12.0.1.0.0 (2020-06-12)
~~~~~~~~~~~~~~~~~~~~~~~

* [MIG] Start Migration

10.0.1.0.0 (2019-05-30)
~~~~~~~~~~~~~~~~~~~~~~~

* [MIG] Migration

8.0.1.0.0 (2018-01-29)
~~~~~~~~~~~~~~~~~~~~~~~

* [REF] Maked functional to print Boleto, create CNAB file and import CNAB as Extrat Bank the user should be resolved manully the divergences between the values( Fee, Tariff Bank, Rebate, etc).

8.0.1.0.0 (2017-07-01)
~~~~~~~~~~~~~~~~~~~~~~~

* [NEW] First version

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-brazil/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/l10n-brazil/issues/new?body=module:%20l10n_br_account_payment_brcobranca%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Akretion

Contributors
~~~~~~~~~~~~

* `Akretion <https://akretion.com/pt-BR>`_:

  * Raphaël Valyi <raphael.valyi@akretion.com.br>
  * Magno Costa <magno.costa@akretion.com.br>

* `Engenere <https://engenere.one>`_:

  * Antônio S. Pereira Neto <neto@engenere.one>

Other credits
~~~~~~~~~~~~~

The development of this module has been financially supported by:

* AKRETION LTDA - https://akretion.com/pt-BR

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
   :alt: Odoo Community Association
   :target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-rvalyi| image:: https://github.com/rvalyi.png?size=40px
    :target: https://github.com/rvalyi
    :alt: rvalyi
.. |maintainer-mbcosta| image:: https://github.com/mbcosta.png?size=40px
    :target: https://github.com/mbcosta
    :alt: mbcosta

Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-rvalyi| |maintainer-mbcosta| 

This module is part of the `OCA/l10n-brazil <https://github.com/OCA/l10n-brazil/tree/14.0/l10n_br_account_payment_brcobranca>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
