Code Monkey home page Code Monkey logo

cnab_yaml's Introduction

cnab_yaml

O Objetivo deste projeto é fornecer arquivos Yaml com a estrutura dos arquivos Cnab240 e Cnab400, atualmente temos os Cnab240 da Caixa e o Cnab400 da Caixa e do Itaú

Como posso contribuir

Você pode contribuir lendo a documentação do seu banco e criando um arquivo yaml com base nela

E para que isso serve?

Esse projeto é usado para ser base para outros projeto, como por exempo o CnabPHP, cnab_python e muitos outros que poderão ser criados a partir deste projeto

O que eu preciso saber

  • Utilizamos nomes simples para o campo, por exemplo para "Código do banco" utilize o "codigo_banco" (com underline e sem o "do")
  • Para definir o tipo do campo utilizamos uma Picture

O que é uma Picture

Essa Picture foi baseada na documentação do itaú, disponível em http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf

Cada registro é formado por campos que são apresentados em dois formatos:

  • Alfanumérico (picture X): alinhados à esquerda com brancos à direita. Preferencialmente, todos os caracteres devem ser maiúsculos. Aconselhase a não utilização de caracteres especiais (ex.: “Ç”, “?”,, etc) e acentuação gráfica (ex.: “Á”, “É”, “Ê”, etc) e os campos não utiliza dos deverão ser preenchidos com brancos.
  • Numérico (picture 9): alinhado à direita com zeros à esquerda e os campos não utilizados deverão ser preenchidos com zeros. - Vírgula assumida (picture V): indica a posição da vírgula dentro de um campo numérico. E xemplo: num campo com picture “9(5)V9(2)”, o número “876,54” será representado por “0087654”

Exemplo de Arquivo

generic:
  # Registro Header de Lote

  # Baseado na documentação da Caixa
  # Disponível em: http://downloads.caixa.gov.br/_arquivos/cobrcaixasicob/manuaissicob/CNAB_240_SICOB.pdf (Acesso em  23/04/2014)

  codigo_banco:
    # Código fornecido pelo Banco Central para identificação do Banco que está recebendo ou enviando o
    # arquivo, com o qual se firmou o contrato de prestação de serviços.
    # CAIXA ECONÔMICA FEDERAL = ‘104’
    pos: [1, 3]
    picture: '9(3)' # isso significa: campo númerico, 3 digitos, preenchido com 0 a direita

  lote_servico:
    # Lote de Serviço
    # Número seqüencial para identificar cada lote de serviço.
    # Preencher com '0001' para o primeiro lote do arquivo. Para os demais: número do lote anterior
    # acrescido de 1. Deve ser o mesmo número dentro do lote. O número não poderá ser repetido dentro
    # do arquivo.
    # Se registro for Header do Arquivo = '0000'
    # Se registro for Trailer do Arquivo = '9999'
    pos: [4, 7]
    picture: '9(4)'

104:
  # Os seguintes campos são exclusivos da Caixa econômica federal (Código do Banco: 104)
  data_exemplo:
    pos: [8, 15]
    picture: '9(8)'
    date_format: '%d%m%Y' # mesmo padrão usado por linguagens como python e ruby

  valor_exemplo:
    pos: [16, 25]
    picture: '9(8)V9(2)' # isso significa 8 posições para a numero inteiro, mais 2 posições para as casas decimais

341:
  # Os seguintes campos são exclusivos do Itaú (Código do Banco 341)

  data_exemplo:
    pos: [8, 13]
    picture: '9(6)'
    date_format: '%d%m%y'

  outro_campo:
    pos: [14, 15]
    picture: 'X(2)' # Isso significa campo de texto com 2 caracteres (preenchido com espaço a direita)
    default: 'T' # Valor padrão do campo

cnab_yaml's People

Contributors

andersondanilo avatar danieljoppi avatar fabioginzel avatar frankbruno avatar gilglecio avatar jefersondaniel avatar mrprompt avatar murilosandiego avatar programadormarin avatar renanpalmeira avatar wemersonjanuario avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnab_yaml's Issues

compatibilidade com o npm

Teria como inserir o arquivo package.json para que o projeto tenha compatibilidade com o npm ... Quero usar o teu projeto no meu projeto de CNAB em node.js ...
Fiz um migrador do teu formato yaml pro meu formato json ... Aí com isso posso usar o teu projeto como base dos meus modelos e quando eu for inserir um segmento novo já poderia inclui-lo no nesse teu projeto ...
Ele ficaria de base ... Tem como?

Santander: header_arquivo.yml (Remessa 400)

Gostaria de saber qual foi a documentação que seguiram, para gerar esses header?

Recebi do banco uma documentação atualizada, e alguns campos do header_arquivo não existe na documentação.

Segue imagem:
image

Banco Coopnore - Cnab 400

O Banco Coopnore (Cooperativa de Crédito) utiliza o mesmo retorno BB, mesmo header tudo praticamente igual, porém eles mudaram as posições de início e fim do nosso número que no arquivo de exemplo, está nas posições 46 a 63 (17 caracteres) onde:

Nosso número completo no retorno: 16280000000000023,

  • 1628 => é o código de controle da cooperativa
  • 0000000 => 7 dígitos (zeros) do convênio
  • 000023 => 6 dígitos do nosso número real enviado na remessa

Sugestões de como adaptar a factory para trabalhar com este retorno?

27072017.2918.1628.454.txt

Remessa CNAB 400 do BB

Olá, pessoal. Desculpem-me se não compreendi por completo a atualização do projeto. Para criação da Remessa CNAB 400 do BB basta trabalhar neste repositório com atualização dos arquivos e yml? Acarreta em mudanças no projeto CnabPHP do Anderson? Abraços

yaml Genérico possui campos incompatíveis [Santander 240]

Gente, acredito fortemente ser necessária uma revisão nos arquivos .yml genéricos, pois
há campos que não existem por exemplo no santander 240, e se acontece no Santander pode acontecer em outros bancos também.

Tomemos como exemplo
header_arquivo.yml (Genérico)
ele possui "codigo_convenio", no santander esse campo chama-se "codigo_transmissao"
como ha esse problema no arquivo genérico (e ele sempre é usado) teremos exception por campo
de valor nulo, afinal de contas no santander "codigo_convenio" jamais sera preenchido.

Entre outros campos que não existem, não vou elencar todos por esse tópico ficaria muito extenso.

Eu proponho, que seja encorajado que os arquivos genéricos possuam apenas padroes comuns em todos os bancos e que as particularidades sejam especificados apenas pelo yml especifico de cada banco.

Também notei que Arquivo.php (Format) usa IF's para determinar o preenchimento ou nao de alguns campos, isso não deveria acontecer e cada atribuição poderia ser melhor feito sem if's através de polimorfismo.

Nossa me desculpem, quero ajudar, mas eu vejo muito a se fazer

Erro no comentário da 'identificacao_distribuicao' para Caixa Econômica Federal

No arquivo genérico onde é descrito o identificacao_distribuicao as opções comentadas não diz respeito a todos os bancos.

// https://github.com/andersondanilo/cnab_yaml/blob/master/cnab240/generic/remessa/detalhe_segmento_p.yml#L196
identificacao_distribuicao:
  # Código adotado pela FEBRABAN para identificar o responsável pela distribuição do bloqueto.
  # ‘1’ = Banco Distribui
  # ‘2’ = Cliente Distribui
  pos: [62,62]
  picture: '9(1)'
  default: '2'

Segundo o documento o documento da Caixa (http://www.caixa.gov.br/Downloads/cobranca-caixa-manuais/Manual_Leiaute_CNAB240_SIGCB.pdf) as opções possíveis são:

‘0’ = Postagem pelo Beneficiário
‘1’ = Pagador via Correios
‘2’ = Beneficiário via Agência CAIXA
‘3’ = Pagador via e-mail
‘4’ = Pagador via SMS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.