Skip to main content

Parser and Generator for Brazilian Finance Documents. Ex: IMBARQ, CNAB

Project description

GitHub Workflow Status codecov Sonarcloud Status SonarCloud Bugs SonarCloud Vulnerabilities

Discord

farialimer

Parser / Writer for Brazilian Finance Documents farialimer

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:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

farialimer-0.2.0.tar.gz (134.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

farialimer-0.2.0-py3-none-any.whl (125.3 kB view details)

Uploaded Python 3

File details

Details for the file farialimer-0.2.0.tar.gz.

File metadata

  • Download URL: farialimer-0.2.0.tar.gz
  • Upload date:
  • Size: 134.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for farialimer-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d14b8083e211aeec44d3cd79f95f3d48542e09e848554df0e1138e31784c39b3
MD5 80ed13626bc0b06660d73171b6590444
BLAKE2b-256 add1c9902a0e65d5266368aabe6dbb0285de517c621e9fe5bb1c96714fea9e39

See more details on using hashes here.

File details

Details for the file farialimer-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: farialimer-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 125.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for farialimer-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4552e6b081addb2fccfb59750d7752c7e768a2b7a85fe1a5e1366ef168c19aef
MD5 d3ca9b15622686a6666deb60aa56478a
BLAKE2b-256 b200c8ae3eb56cc87444fd32269d6679aeb68a71fcb4e2d7239cce59aa66676b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page