farialimer
Parser / Writer for Brazilian Finance Documents
Intro
Bem-vindo ao projeto de CNAB e IMBARQ! Este projeto tem como objetivo fornecer uma solução open source para processar e gerenciar arquivos de remessa e retorno de cobranças bancárias, de acordo com as normas CNAB e IMBARQ.
Chegou a hora de unificar nossos esforços e resolver de uma vez por todas essa implementação de layouts.
Nossa equipe acredita que a transparência e a colaboração são essenciais para o desenvolvimento de soluções financeiras eficientes e confiáveis. Nós convidamos a comunidade a participar deste projeto, compartilhar ideias, reportar bugs e contribuir com código. Juntos, podemos criar uma solução robusta e de alta qualidade para o setor financeiro.
Uso
Parsing (leitura de arquivos CNAB/IMBARQ)
from farialimer.parser.bradesco.folha_pagamento import FolhaPagamentoParser
parser = FolhaPagamentoParser("bradesco")
content = parser.read_file("caminho/do/arquivo.rem")
registros = parser.parse(content, "folha_pagamento")
for registro in registros:
print(registro)
# OrderedDict([('codigo_banco', 237), ('lote_servico', 0), ...])
Gerador (escrita de arquivos CNAB)
O gerador recebe uma lista de tuplas (tipo_registro, dados) e produz linhas de largura fixa baseadas nas mesmas specs YAML usadas pelo parser.
from decimal import Decimal
from farialimer.generator.bradesco.folha_pagamento import FolhaPagamentoGenerator
generator = FolhaPagamentoGenerator()
registros = [
("0", { # Header de Arquivo
"codigo_banco": 237,
"lote_servico": 0,
"tipo_registro": 0,
"tipo_inscricao_empresa": 2,
"numero_inscricao_empresa": 12345678000190,
"nome_empresa": "EMPRESA TESTE LTDA",
"nome_banco": "BANCO BRADESCO SA",
"codigo_remessa_retorno": 1,
"data_geracao_arquivo": 23032026,
"hora_geracao_arquivo": 143000,
"numero_sequencial_arquivo": 1,
"layout_arquivo": 80,
"densidade_gravacao_arquivo": 1600,
}),
("3A", { # Detalhe - Segmento A
"codigo_banco": 237,
"lote_servico": 1,
"tipo_registro": 3,
"numero_registro": 1,
"segmento": "A",
"tipo_movimento": 0,
"codigo_movimento": 0,
"banco_favorecido": 237,
"agencia_favorecido": 4567,
"nome_favorecido": "JOAO DA SILVA",
"data_pagamento": 23032026,
"valor_pagamento": Decimal("1500.00"),
}),
("9", { # Trailer de Arquivo
"codigo_banco": 237,
"lote_servico": 9999,
"tipo_registro": 9,
"quantidade_lotes": 1,
"quantidade_registros": 3,
"quantidade_contas_conciliacao": 1,
}),
]
# Gerar lista de linhas
linhas = generator.gerar(registros, "folha_pagamento")
# ['23700000 2123456780001900000000000...', ...]
# Ou gravar direto em arquivo
generator.gerar_arquivo(registros, "folha_pagamento", "saida.rem")
Cada linha gerada tem exatamente a largura definida pela spec (240 caracteres para CNAB, ate 1000 para B3). Campos nao informados sao preenchidos com zeros (numericos) ou espacos (texto). Campos com default na spec YAML sao aplicados automaticamente.
Geradores disponiveis
| Banco | Gerador | Spec |
|---|---|---|
| Bradesco | FolhaPagamentoGenerator |
folha_pagamento |
| Itau | ItauFolhaPagamentoGenerator, ItauCobrancaGenerator |
folha_pagamento, cobranca_240 |
| Banco do Brasil | BBFolhaPagamentoGenerator |
folha_pagamento |
| Santander | PagamentoFornecedoresGenerator |
pagamento_fornecedores |
| Caixa | CaixaFolhaPagamentoGenerator |
folha_pagamento |
| Sicoob | SicoobFolhaPagamentoGenerator |
folha_pagamento |
| Sicredi | SicrediFolhaPagamentoGenerator, SicrediPagamentoFornecedoresGenerator |
folha_pagamento, pagamento_fornecedores |
| Unicred | UnicredCobrancaGenerator |
cobranca |
| BTG | BTGPagamentoGenerator |
pagamento |
| Banrisul | BanrisulContasAPagarGenerator |
contas_a_pagar |
| B3 | B3Generator |
imbarq001, imbarq002, ... |
CNAB
CNAB significa "Centro Nacional de Automação Bancária". É um padrão de arquivo utilizado por bancos no Brasil para a transferência de informações financeiras, como cobranças, pagamentos, boletos bancários, entre outras. O CNAB é um padrão estabelecido pela Febraban (Federação Brasileira de Bancos) que padroniza a forma como os arquivos são estruturados, tornando mais fácil e ágil a integração entre sistemas de diferentes bancos. O uso do CNAB permite a automação de processos bancários, melhorando a eficiência e a segurança nas transações financeiras.
IMBARQ
IMBARQ significa "Interface para Movimentação Bancária de Retorno e Quitação". É um padrão de arquivo utilizado pela B3 (Bolsa Brasileira de Valores) para a transferência de informações financeiras entre instituições financeiras. O IMBARQ é utilizado para facilitar a integração de sistemas de diferentes bancos, permitindo a realização de operações bancárias de forma mais ágil e segura.
Outros Projetos
Uma lista com outros projetos que serviram de inspiração:
Metadata
Release files for farialimer 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| farialimer-0.2.1.tar.gz | 134.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| farialimer-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 259.7 kB
Release files / farialimer-0.2.1.tar.gz
| Download URL | farialimer-0.2.1.tar.gz |
|---|---|
| Size | 134.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
453e4a05a47614c37977aba7b409789de18781c0111169ed38d5cc6200036a78
|
|
BLAKE2b-256 checksum How to use checksums |
b51f54a516de325073a7210b37f0352b4f62777d50053b2a3ae233532fe46d0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / farialimer-0.2.1-py3-none-any.whl
| Download URL | farialimer-0.2.1-py3-none-any.whl |
|---|---|
| Size | 125.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b448a4a66c84c93f3bef6a642183e6dfda8a6ca1ffdc691bbab97bf1d5959ca
|
|
BLAKE2b-256 checksum How to use checksums |
e9c311421039b631cce43a5d23a1671b73387ac6b0ae05d7abf2b444ad3f1791
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|