Trust-Code / python-cnab

Cnab 240
MIT License
36 stars 48 forks source link

Dúvida #70

Closed oiacrasec closed 5 years ago

oiacrasec commented 5 years ago

A lib contempla leitura de um arquivo cnab?

faio commented 5 years ago

Sim, para o arquivo retorno apenas alguns bancos tem o layout implementado.

oiacrasec commented 5 years ago

Poderia por favor me mostrar um exemplo de leitura do arquivo .rem? Vou iniciar um projeto em breve para ler, aí eu poderia até ajudar subindo os bancos que não possui layout implementado.

faio commented 5 years ago

Forma mais simples:

from cnab240.tipos import Arquivo
from cnab240.bancos import sicoob

with open(path_retorno, 'r', encoding='cp1252') as arq:
    arquivo = Arquivo(sicoob, arquivo=arq)

Agora é só manipular, a lib tem muita facilidade para se trabalhar, tem muita coisa legal, mais falta documentação, nada que lendo os testes implementados e um pouco de paciência lendo o fonte não resolva.

oiacrasec commented 5 years ago

Boa tarde! Testei com exemplo que me passou, leu o arquivo direitinho, eu só estou em dúvidas agora para ler um segmento, por exemplo, o segmento P.

Eu vi que existe o layout dentro de banco > registros. Como eu faria para ler o segmento P?

faio commented 5 years ago

Não há necessidade, se você inteirar sobre o lote você tem acesso sobre todos os dados de todos os seguimentos, os segmentos ficam dentro do lote em um array que se eu não me engano se chama segmentos.

Abaixo segue um exemplo de uma forma de leitura:

from cnab240.tipos import Arquivo from cnab240.bancos import sicoob

with open(path_retorno, 'r', encoding='cp1252') as arq: arquivo = Arquivo(sicoob, arquivo=arq)

for lote in arquivo.lotes:
    for evento in lote.eventos:
        # Evento 6 é Liquidação
        if evento.servico_codigo_movimento == 6:
            nosso_numero = evento.numero_documento
            juros = evento.titulo_acrescimos
            desconto = evento.titulo_desconto
            valor_pago = evento.titulo_pago
            data_pagamento = evento.data_ocorrencia
            print(f'nosso numero: {nosso_numero}, data: {data_pagamento}, valor: {valor_pago}, juros: {juros}')
oiacrasec commented 5 years ago

Desconfio que meu arquivo está com problemas, o array de evento está vazio, posso enviar um e-mail com um arquivo .rem só para eu ter essa certeza (do BB)? Se puder me passar seu e-mail agradeceria, obrigado!

oiacrasec commented 5 years ago

Bom dia! Não era problema em meu arquivo remessa, o segmento P e Q que irei utilizar não estava implementado na classe Arquivo, adicionei e leu certinho.

cassiobartolo commented 3 years ago

Ler remessa consegui, mais agora como faço para gerar a remessa????