Skip to content

kallyous/br-banking-cnab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Br Banking CNAB

Geração de arquivos CNAB

Atualmente gerando apenas algumas modalidades de CNAB 240 do Itaú.


Visão Geral

  • ArquivoCNAB240 - Classe: Define um arquivo de remessa, que pode conter diversos lotes de operações bancárias. É necessário especificar um template de arquivo de remessa na criação.
  • FileTemplate240 - Enum: Define os templates de arquivos de remessa prontos.
  • LoteCNAB240 - Classe: Define um lote de registros de operações. É necessário especificar um template de lote na criação.
  • BatchTemplate240 - Enum: Define os templates de lotes prontos.
  • RegistroCNAB240 - Classe: Define um registro de operação bancária. É necessário especificar um template de registro na criação.
  • RecordTemplate240 - Enum: Define os templates de registros prontos.

Uso

Como gerar um CNAB em 10 passos:

  1. Crie um ArquivoCNAB240. Altere o que for necessário com os dados da empresa.
  2. Pegue os dados de um cliente e os seus pagamentos.
  3. Separe os pagamentos por tipo de operação. Vai depender da especificação do banco e do CNAB em uso. Por exemplo para um CNAB 240 Itaú, TEDs vão para um grupo e boletos vão para outro. Cada grupo vai para um lote diferente.
  4. Crie um LoteCNAB240 para cada grupo de operações do cliente. Use os templates adequados e carregue no LoteCNAB240 os dados pertinentes.
  5. Crie um RegistroCNAB240 para cada pagamento/operação. Atenção para os tipos e use os templates adequados.
  6. Carregue os dados do cliente e de seus pagamentos nos RegistroCNAB240, de acordo com cada tipo de pagamento.
  7. Usando LoteCNAB240.add(registro) adicione os registros nos lotes adequados.
  8. Usando ArquivoCNAB240.add(lote) adiciona todos os lotes do cliente no arquivo de remessa.
  9. Repita os passos de 2 a 8 para todos os clientes.
  10. Gere a string final contendo o arquivo CNAB completo com ArquivoCNAB240.make(). Agora salve ou envie seu CNAB.

Exemplo:

from brbankingcnab.cnab240 import ArquivoCNAB240, LoteCNAB240, RegistroCNAB240,

BatchTemplate240, FileTemplate240, RecordTemplate240

...  # Qualquer coisa que vem antes da criação do CNAB.
clientes = ...  # Lista de clientes aqui e pagamentos em clientes[i]['pagamentos'] .

arquivo_cnab = ArquivoCNAB240(FileTemplate240.FileItau)
arquivo_cnab.header['...'] = ...  # Altere o header no que for necessário.
arquivo_cnab.trailer['...'] = ...  # Altere o trailer no que for necessário.

for cliente in clientes:

    pagamentos_TED = ...  # Pagametnos tipo TED.
    lote_ted = LoteCNAB240(BatchTemplate240.Itau_SegA_Cheq_OP_DOC_TED_PIX_CredCC)
    lote_ted.header['...'] = ...  # Altere o header no que for necessário.
    lote_ted.trailer['...'] = ...  # Altere o trailer no que for necessário.

    for ted in pagamentos_TED:
        registro = RegistroCNAB240(RecordTemplate240.Itau_SegA_Cheq_OP_DOC_TED_PIX_CredCC)
        registro.content['...'] = ...  # Altere os campos que forem necessários.
        lote_ted.add(registro)

    arquivo_cnab.add(lote_ted)

    pagamentos_blt = ...  # Pagametnos tipo boleto.
    lote_blt = LoteCNAB240(BatchTemplate240.Itau_SegA_Cheq_OP_DOC_TED_PIX_CredCC)
    lote_blt.header['...'] = ...  # Altere o header no que for necessário.
    lote_blt.trailer['...'] = ...  # Altere o trailer no que for necessário.

    for blt in pagamentos_blt:
        registro = RegistroCNAB240(RecordTemplate240.Itau_Boleto_PIXqrcode)
        registro.content['...'] = ...  # Altere os campos que forem necessários.
        lote_blt.add(registro)

    arquivo_cnab.add(lote_ted)

# O resultado é a string do arquivo de remessa CNAB 240.
final_cnab_string = arquivo_cnab.make()

Templates, Visualização e Saída

Os templates são JSONs e estão em cnab/templates. Eles não são apenas para uso interno da lib, mas possúem documentação de todos os campos dos blocos CNAB implementados. Na dúvida, consulte o JSON do template que for usar.

Campos com valor inicial null nos JSON dos templates são necessários e não possúem valor default válido.

Se precisar visualizar o estado do CNAB sendo montado, basta dar um print(cnab). Isso é válido para qualquer bloco CNAB. Campos com valor ausente serão preenchidos com ?.

Ao chamar o método make() de qualquer bloco CNAB, se houver algum campo vazio ou com valor inválido, ocorrerá um erro do tipo CNABInvalidValueError.

About

Gerador de CNAB 240 Itaú.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages