jessicamrbr / jsons-to-cnab

Convert JSON data and map to cnab file and the opposite too
MIT License
6 stars 3 forks source link

CNAB to JSONs #7

Open vincequeiroz opened 5 years ago

vincequeiroz commented 5 years ago

Estou tentando converter um CNAB de cobrança do Itaú para JSON, e não achei referência na documentação sobre o preenchimento do FIT.

            cnabToJsons.fit([
                {
                    "positions": [4, 8],
                    "values": ["0000", "0"],
                    "map": layout
                }
            ])

Estou com problemas com o preenchimento dos campos positions e values, como funcionam esses campos?

Afim de contribuir com o projeto, notei que o layout de Cobrança do Itaú, não encontra-se no CSV. Como devo proceder para adicionar esse layout ao projeto? Eu notei que você adicionou o serviço SISPAG do Itaú, adiciono um novo CSV "341COBRANCA" exclusivo para o serviço de Cobrança?

jessicamrbr commented 5 years ago

@vincequeiroz A função fit treina no seu leitor, para cada posição informada, você deve informar um respectivo valor.

"positions": [4, 8],
 "values": ["0000", "0"],

nesse caso o leitor do CNAB, irá procurar por linhas com onde a posição 4 possua o valor 0000 e a posição 8 possua o valor 0, ao encontrar linhas com essas características, utilizará o layout informado em "map" para converter a linha do CNAB para um JSON.

Vamos a um exemplo, imagine o seguinte arquivo fictício:

H000123000NOME000BANCO000TRET A000123000NOME000BANCO000R0OK B000123000NOME000BANCO000RNOK

ao treinar fit com:

{
   "positions": [0, 25],
   "values": ["A", "R"],
   "map": [
       {
          fieldName: "TIPOREGISTRO", 
          positionStart: 1,
          positionEnd: 1,
          positionLength: 1,
          picture: "X"
       },
       ....
       {
          fieldName: "STATUS", 
          positionStart: 26,
          positionEnd: 28,
          positionLength: 3,
          picture: "X",
        defaultValue: "0000",
       }
   ]
}

Depois de treinar o modelo, ao aplicar cnabToJsons.convert() ele retorna o JSON com dados mapeados, algo como:

{
   "TIPOREGISTRO": "A",
   "STATUS": "0OK"
}

Ele desconsidera as linhas que não tiverem match com o treinamento, mas você pode passar vários objetos para treinar o reconhecimento de várias linhas.

em cnabToJsons.test.js você encontra um exemplo.

jessicamrbr commented 5 years ago

Te deixo um super convite para contribuir com o projeto adicionando o CSV de cobrança. Basta olhar o manual do Itaú e seguir o exemplo do SISPAG além da descrição da documentação. Se precisar de ajuda, não deixe de me avisar.

vincequeiroz commented 5 years ago

Olá @jessicamrbr, criei dois pull requests, um com a correção de um problema que eu encontrei ao tentar abrir o CSV de fora do módulo e o outro com o template mapeado.

8 e #10

Por favor da uma conferida se a parte do "registerAlias" está ok.

jessicamrbr commented 5 years ago

@vincequeiroz muita grata pelas correções e pelo novo layout. Não entendi sua dúvida quanto ao registerAlias

Alterações mescladas