From ba6e894f4d97c22c83df8e4f374df0252cd61a61 Mon Sep 17 00:00:00 2001 From: Fabio Ginzel Date: Fri, 11 Nov 2016 11:49:26 -0200 Subject: [PATCH 1/6] =?UTF-8?q?Codigos=20corretos=20de=20baixa=20(liquida?= =?UTF-8?q?=C3=A7=C3=A3o)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Cnab/Retorno/Cnab240/Detalhe.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Cnab/Retorno/Cnab240/Detalhe.php b/src/Cnab/Retorno/Cnab240/Detalhe.php index 0d6aafa..1748def 100755 --- a/src/Cnab/Retorno/Cnab240/Detalhe.php +++ b/src/Cnab/Retorno/Cnab240/Detalhe.php @@ -31,7 +31,7 @@ public function isBaixa() public static function isBaixaStatic($codigo_movimento) { - $tipo_baixa = array(6, 9, 17, 25); + $tipo_baixa = array(6, 17); $codigo_movimento = (int) $codigo_movimento; if (in_array($codigo_movimento, $tipo_baixa)) { return true; From 55d91fd40579f9281d6d870a74dc3297a6a90f8c Mon Sep 17 00:00:00 2001 From: Bruno Tonin Date: Wed, 8 Feb 2017 16:13:23 -0200 Subject: [PATCH 2/6] implementado para trabalhar com a remessa do santander --- .gitignore | 12 +- cnab_yaml/LICENSE | 21 + cnab_yaml/README.md | 78 ++++ cnab_yaml/cnab240/001/header_arquivo.yml | 72 ++++ cnab_yaml/cnab240/001/header_lote.yml | 54 +++ .../001/remessa/detalhe_segmento_p.yml | 52 +++ cnab_yaml/cnab240/001/trailer_lote.yml | 30 ++ cnab_yaml/cnab240/033/header_arquivo.yml | 47 +++ cnab_yaml/cnab240/033/header_lote.yml | 39 ++ .../033/remessa/detalhe_segmento_p.yml | 95 +++++ .../033/remessa/detalhe_segmento_q.yml | 24 ++ .../033/remessa/detalhe_segmento_r.yml | 21 + .../cnab240/033/remessa/header_arquivo.yml | 44 +++ cnab_yaml/cnab240/033/remessa/header_lote.yml | 31 ++ .../033/retorno/detalhe_segmento_t.yml | 97 +++++ cnab_yaml/cnab240/033/trailer_lote.yml | 47 +++ .../104/retorno/detalhe_segmento_t.yml | 18 + .../104/retorno/detalhe_segmento_u.yml | 11 + .../cnab240/104/sigcb/header_arquivo.yml | 137 +++++++ cnab_yaml/cnab240/104/sigcb/header_lote.yml | 50 +++ .../104/sigcb/remessa/detalhe_segmento_p.yml | 25 ++ .../104/sigcb/remessa/detalhe_segmento_r.yml | 6 + .../104/sigcb/retorno/detalhe_segmento_t.yml | 19 + .../104/sigcb/retorno/detalhe_segmento_u.yml | 11 + cnab_yaml/cnab240/104/sigcb/trailer_lote.yml | 34 ++ cnab_yaml/cnab240/756/header_arquivo.yml | 38 ++ cnab_yaml/cnab240/756/header_lote.yml | 45 +++ .../756/remessa/detalhe_segmento_p.yml | 45 +++ .../756/remessa/detalhe_segmento_q.yml | 4 + .../756/remessa/detalhe_segmento_r.yml | 88 +++++ .../756/remessa/detalhe_segmento_s.yml | 77 ++++ .../756/retorno/detalhe_segmento_t.yml | 9 + .../cnab240/756/retorno/trailer_lote.yml | 73 ++++ cnab_yaml/cnab240/756/trailer_lote.yml | 9 + cnab_yaml/cnab240/generic/header_arquivo.yml | 213 ++++++++++ cnab_yaml/cnab240/generic/header_lote.yml | 217 ++++++++++ .../generic/remessa/detalhe_segmento_p.yml | 369 ++++++++++++++++++ .../generic/remessa/detalhe_segmento_q.yml | 92 +++++ .../generic/remessa/detalhe_segmento_r.yml | 107 +++++ .../generic/retorno/detalhe_segmento_t.yml | 120 ++++++ .../generic/retorno/detalhe_segmento_u.yml | 104 +++++ .../generic/retorno/detalhe_segmento_w.yml | 49 +++ .../generic/retorno/header_lote_captura.yml | 79 ++++ cnab_yaml/cnab240/generic/trailer_arquivo.yml | 39 ++ cnab_yaml/cnab240/generic/trailer_lote.yml | 68 ++++ .../cnab400/001/retorno/codigo_ocorrencia.yml | 43 ++ cnab_yaml/cnab400/001/retorno/detalhe.yml | 170 ++++++++ .../cnab400/001/retorno/header_arquivo.yml | 36 ++ .../cnab400/001/retorno/trailer_arquivo.yml | 94 +++++ .../cnab400/104/retorno/codigo_ocorrencia.yml | 31 ++ cnab_yaml/cnab400/104/retorno/detalhe.yml | 82 ++++ .../cnab400/104/retorno/header_arquivo.yml | 31 ++ .../cnab400/104/retorno/trailer_arquivo.yml | 6 + .../cnab400/237/retorno/codigo_ocorrencia.yml | 32 ++ cnab_yaml/cnab400/237/retorno/detalhe.yml | 127 ++++++ .../cnab400/237/retorno/header_arquivo.yml | 36 ++ .../cnab400/237/retorno/trailer_arquivo.yml | 8 + .../cnab400/341/retorno/codigo_ocorrencia.yml | 65 +++ cnab_yaml/cnab400/341/retorno/detalhe.yml | 143 +++++++ .../cnab400/341/retorno/header_arquivo.yml | 62 +++ .../cnab400/341/retorno/trailer_arquivo.yml | 81 ++++ cnab_yaml/cnab400/generic/remessa/detalhe.yml | 206 ++++++++++ .../cnab400/generic/remessa/detalhe_multa.yml | 28 ++ .../generic/remessa/header_arquivo.yml | 78 ++++ .../generic/remessa/trailer_arquivo.yml | 15 + cnab_yaml/cnab400/generic/retorno/detalhe.yml | 100 +++++ .../generic/retorno/header_arquivo.yml | 51 +++ .../generic/retorno/trailer_arquivo.yml | 30 ++ cnab_yaml/composer.json | 19 + cnab_yaml/package.json | 7 + src/Cnab/Especie.php | 7 +- src/Cnab/Factory.php | 2 +- src/Cnab/Format/Linha.php | 2 + src/Cnab/Format/YamlLoad.php | 12 +- src/Cnab/Remessa/Cnab240/Arquivo.php | 141 ++++--- src/Cnab/Remessa/Cnab240/HeaderArquivo.php | 3 +- src/Cnab/Remessa/Cnab240/HeaderLote.php | 3 +- tests/exemplo_remessa.php | 70 ++++ 78 files changed, 4674 insertions(+), 67 deletions(-) create mode 100755 cnab_yaml/LICENSE create mode 100755 cnab_yaml/README.md create mode 100644 cnab_yaml/cnab240/001/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/001/header_lote.yml create mode 100644 cnab_yaml/cnab240/001/remessa/detalhe_segmento_p.yml create mode 100644 cnab_yaml/cnab240/001/trailer_lote.yml create mode 100644 cnab_yaml/cnab240/033/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/033/header_lote.yml create mode 100644 cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml create mode 100644 cnab_yaml/cnab240/033/remessa/detalhe_segmento_q.yml create mode 100644 cnab_yaml/cnab240/033/remessa/detalhe_segmento_r.yml create mode 100644 cnab_yaml/cnab240/033/remessa/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/033/remessa/header_lote.yml create mode 100644 cnab_yaml/cnab240/033/retorno/detalhe_segmento_t.yml create mode 100644 cnab_yaml/cnab240/033/trailer_lote.yml create mode 100644 cnab_yaml/cnab240/104/retorno/detalhe_segmento_t.yml create mode 100644 cnab_yaml/cnab240/104/retorno/detalhe_segmento_u.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/header_lote.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_p.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_r.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_t.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_u.yml create mode 100644 cnab_yaml/cnab240/104/sigcb/trailer_lote.yml create mode 100644 cnab_yaml/cnab240/756/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/756/header_lote.yml create mode 100644 cnab_yaml/cnab240/756/remessa/detalhe_segmento_p.yml create mode 100644 cnab_yaml/cnab240/756/remessa/detalhe_segmento_q.yml create mode 100644 cnab_yaml/cnab240/756/remessa/detalhe_segmento_r.yml create mode 100644 cnab_yaml/cnab240/756/remessa/detalhe_segmento_s.yml create mode 100644 cnab_yaml/cnab240/756/retorno/detalhe_segmento_t.yml create mode 100644 cnab_yaml/cnab240/756/retorno/trailer_lote.yml create mode 100644 cnab_yaml/cnab240/756/trailer_lote.yml create mode 100644 cnab_yaml/cnab240/generic/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/generic/header_lote.yml create mode 100755 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml create mode 100755 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml create mode 100755 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml create mode 100755 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml create mode 100755 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml create mode 100755 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml create mode 100755 cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml create mode 100644 cnab_yaml/cnab240/generic/trailer_arquivo.yml create mode 100644 cnab_yaml/cnab240/generic/trailer_lote.yml create mode 100644 cnab_yaml/cnab400/001/retorno/codigo_ocorrencia.yml create mode 100644 cnab_yaml/cnab400/001/retorno/detalhe.yml create mode 100644 cnab_yaml/cnab400/001/retorno/header_arquivo.yml create mode 100644 cnab_yaml/cnab400/001/retorno/trailer_arquivo.yml create mode 100644 cnab_yaml/cnab400/104/retorno/codigo_ocorrencia.yml create mode 100644 cnab_yaml/cnab400/104/retorno/detalhe.yml create mode 100644 cnab_yaml/cnab400/104/retorno/header_arquivo.yml create mode 100644 cnab_yaml/cnab400/104/retorno/trailer_arquivo.yml create mode 100644 cnab_yaml/cnab400/237/retorno/codigo_ocorrencia.yml create mode 100644 cnab_yaml/cnab400/237/retorno/detalhe.yml create mode 100644 cnab_yaml/cnab400/237/retorno/header_arquivo.yml create mode 100644 cnab_yaml/cnab400/237/retorno/trailer_arquivo.yml create mode 100644 cnab_yaml/cnab400/341/retorno/codigo_ocorrencia.yml create mode 100644 cnab_yaml/cnab400/341/retorno/detalhe.yml create mode 100644 cnab_yaml/cnab400/341/retorno/header_arquivo.yml create mode 100644 cnab_yaml/cnab400/341/retorno/trailer_arquivo.yml create mode 100755 cnab_yaml/cnab400/generic/remessa/detalhe.yml create mode 100644 cnab_yaml/cnab400/generic/remessa/detalhe_multa.yml create mode 100755 cnab_yaml/cnab400/generic/remessa/header_arquivo.yml create mode 100755 cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml create mode 100755 cnab_yaml/cnab400/generic/retorno/detalhe.yml create mode 100755 cnab_yaml/cnab400/generic/retorno/header_arquivo.yml create mode 100755 cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml create mode 100755 cnab_yaml/composer.json create mode 100644 cnab_yaml/package.json create mode 100644 tests/exemplo_remessa.php diff --git a/.gitignore b/.gitignore index 0f5b6fb..9837543 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,5 @@ -# Vim -*.swp -*.swo -bin -vendor -composer.phar -phpunit.xml +.idea/ composer.lock -nbproject \ No newline at end of file +vendor/ +bin/ +tests/* \ No newline at end of file diff --git a/cnab_yaml/LICENSE b/cnab_yaml/LICENSE new file mode 100755 index 0000000..0b5b763 --- /dev/null +++ b/cnab_yaml/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Anderson Danilo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/cnab_yaml/README.md b/cnab_yaml/README.md new file mode 100755 index 0000000..cba90ec --- /dev/null +++ b/cnab_yaml/README.md @@ -0,0 +1,78 @@ +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 +------------------ +```yaml +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 +``` diff --git a/cnab_yaml/cnab240/001/header_arquivo.yml b/cnab_yaml/cnab240/001/header_arquivo.yml new file mode 100644 index 0000000..dbe66a4 --- /dev/null +++ b/cnab_yaml/cnab240/001/header_arquivo.yml @@ -0,0 +1,72 @@ +# Com base na documentação do banco do brasil +# disponível em: http://www.bb.com.br/docs/pub/emp/empl/dwn/CbrVer04BB.pdf + +codigo_convenio: + # Código de convênio no Banco + # O código de convênio é composto pelo número do contrato do cliente junto + # ao Banco no sistema PAG com tamanho 9 e com '0' (Zeros) a esquerda e mais + # 11 espaços em branco. + # + # O contrato deve estar cadastrado no PAG (Pagamentos a terceiros) no + # serviço 30 (Pagamentos de títulos do Banco do Brasil) e no serviço 31 + # (Pagamentos de títulos de outros bancos). + pos: [33, 41] + picture: '9(9)' + +cobranca_cedente: + # Informar 0014 para cobrança cedente + pos: [42, 45] + picture: '9(4)' + default: 14 + +carteira: + pos: [46, 47] + picture: '9(2)' + +variacao_carteira: + pos: [48, 50] + picture: '9(3)' + +uso_exclusivo_bb_01: + pos: [51, 52] + picture: 'X(2)' + default: '' + +conta: + pos: [59, 70] + picture: '9(12)' + +conta_dv: + pos: [71, 71] + picture: 'X(1)' + +agencia_mais_cedente_dv: + # Campo não tratado pelo Banco do Brasil. Informar 'branco' (espaço) OU zero. + pos: [72, 72] + picture: 'X(1)' + default: '' + +uso_exclusivo_febraban_03: + pos: [212, 222] + picture: 'X(11)' + default: '' + +identificacao_cobranca_sem_papel: + pos: [223, 225] + picture: 'X(3)' + default: '' + +controle_vans: + pos: [226, 228] + picture: '9(3)' + default: '0' + +tipo_servico: + pos: [229, 230] + picture: '9(2)' + default: '0' + +ocorrencias: + pos: [231, 240] + picture: '9(10)' + default: '0' diff --git a/cnab_yaml/cnab240/001/header_lote.yml b/cnab_yaml/cnab240/001/header_lote.yml new file mode 100644 index 0000000..2498df1 --- /dev/null +++ b/cnab_yaml/cnab240/001/header_lote.yml @@ -0,0 +1,54 @@ +numero_inscricao: + # Informar o número de inscrição da Empresa (CNPJ) ou Pessoa Física (CPF). + pos: [19, 33] + picture: '9(15)' + +codigo_convenio: + # Código de convênio no Banco + # O código de convênio é composto pelo número do contrato do cliente junto + # ao Banco no sistema PAG com tamanho 9 e com '0' (Zeros) a esquerda e mais + # 11 espaços em branco. + # + # O contrato deve estar cadastrado no PAG (Pagamentos a terceiros) no + # serviço 30 (Pagamentos de títulos do Banco do Brasil) e no serviço 31 + # (Pagamentos de títulos de outros bancos). + pos: [34, 42] + picture: '9(9)' + +cobranca_cedente: + # Informar 0014 para cobrança cedente + pos: [43, 46] + picture: '9(4)' + default: 14 + +carteira: + pos: [47, 48] + picture: '9(2)' + +variacao_carteira: + pos: [49, 51] + picture: '9(3)' + +remessa_teste: + pos: [52, 53] + picture: 'X(2)' + default: '' + +conta: + pos: [60, 71] + picture: '9(12)' + +conta_dv: + pos: [72, 72] + picture: 'X(1)' + +agencia_mais_conta_dv: + pos: [73, 73] + picture: 'X(1)' + default: '' + +data_credito_obsoleto: + # Campo não tradado pelo banco do brasil + pos: [200, 207] + picture: '9(8)' + default: '0' \ No newline at end of file diff --git a/cnab_yaml/cnab240/001/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/001/remessa/detalhe_segmento_p.yml new file mode 100644 index 0000000..365ec0a --- /dev/null +++ b/cnab_yaml/cnab240/001/remessa/detalhe_segmento_p.yml @@ -0,0 +1,52 @@ +conta: + pos: [24,35] + picture: '9(12)' + +conta_dv: + pos: [36,36] + picture: '9(1)' + +agencia_mais_conta_dv: + # Campo não tratado pelo Banco do Brasil. Informar 'branco' (espaço) OU zero + pos: [37,37] + picture: 'X(1)' + default: '' + +nosso_numero: + # 1. Caso seja o Banco do Brasil quem gera o "Nosso Número", informar 'brancos' (espaços) ou Zeros. + # 2. Caso seja a empresa quem gera o "Nosso Número", informar de acordo com o número do convênio de + # cobrança conforme as seguintes regras: + # a) Para número de convênio de 4 posições (carteira 17 até 9.999) informar o nosso número com + # 11 posições mais o DV (dígito verificador), sendo as 4 primeiras posições o número do convênio, + # as 7 posições seguintes um número sequencial para controle e mais o DV. + # Exemplo: CONVÊNIOS DE 0001 ATÉ 9.999 + # 123412345671 + # CCCCSSSSSSSD + # Onde: C = Convênio S = Sequencial D = dígito verificador + # b) Para número de convênio de 6 posições (de 10.000 a 999.999), informar o nosso número com + # 11 posições mais o DV, sendo as 6 primeiras posições o número do convênio, as 5 posições + # seguintes um número sequencial para controle e mais o DV. + # Exemplo: CONVÊNIOS DE 010.000 ATÉ 999.999 + # 123456123451 + # CCCCCCSSSSSD + # Onde: C = Convênio S = Sequencial D = dígito verificador + # c) Para número de convênio de 7 posições (acima de 1.000.000) informar o nosso número com + # 17 posições sem DV, sendo as 7 primeiras posições o número do convênio e as 10 posições seguintes + # um número sequencial para controle. Esse é o padrão mais utilizado atualmente. + # Exemplo: CONVÊNIOS DE 1.000.000 ATÉ 9.999.999 + # 12345671234567890 + # CCCCCCCSSSSSSSSSS + # Onde: C = Convênio S = Sequencial + # Importante: + # todos os "nosso número" devem ser alinhados à esquerda com brancos à direita. + pos: [38, 57] + picture: 'X(20)' + +numero_documento: + # Número adotado e controlado pelo Cliente, para identificar o título de cobrança. + # Poderá conter número de duplicata, no caso de cobrança de duplicatas; número da apólice, no caso de + # cobrança de seguros, etc. Campo de preenchimento obrigatório. + pos: [63,77] + picture: 'X(15)' + + diff --git a/cnab_yaml/cnab240/001/trailer_lote.yml b/cnab_yaml/cnab240/001/trailer_lote.yml new file mode 100644 index 0000000..af7b0c9 --- /dev/null +++ b/cnab_yaml/cnab240/001/trailer_lote.yml @@ -0,0 +1,30 @@ +# Registro Trailer de Lote +# Com base na documentação do banco do brasil +# disponível em: http://www.bb.com.br/docs/pub/emp/empl/dwn/CbrVer04BB.pdf + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '5' + +uso_exclusivo_febraban_01: + pos: [9, 17] + picture: 'X(9)' + default: '' + +qtde_registro_lote: + pos: [18, 23] + picture: '9(6)' + +uso_exclusivo_febraban_02: + pos: [24, 240] + picture: 'X(217)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/033/header_arquivo.yml b/cnab_yaml/cnab240/033/header_arquivo.yml new file mode 100644 index 0000000..37ecdc9 --- /dev/null +++ b/cnab_yaml/cnab240/033/header_arquivo.yml @@ -0,0 +1,47 @@ +uso_exclusivo_febraban_01: + pos: [9, 16] + picture: 'X(8)' + default: '' + +codigo_inscricao: + pos: [17, 17] + picture: '9(1)' + +numero_inscricao: + pos: [18, 32] + picture: '9(15)' + +agencia: + pos: [33, 36] + picture: '9(4)' + +agencia_dv: + pos: [37, 37] + picture: '9(1)' + +conta: + pos: [38, 46] + picture: '9(9)' + +conta_dv: + pos: [47, 47] + picture: '9(1)' + +uso_exclusivo_banco_01: + pos: [48, 52] + picture: 'X(5)' + default: '' + +codigo_cedente: + pos: [53, 61] + picture: '9(9)' + +uso_exclusivo_banco_02: + pos: [62, 72] + picture: 'X(11)' + default: '' + +uso_exclusivo_febraban_03: + pos: [167, 240] + picture: 'X(74)' + default: '' diff --git a/cnab_yaml/cnab240/033/header_lote.yml b/cnab_yaml/cnab240/033/header_lote.yml new file mode 100644 index 0000000..5f5568d --- /dev/null +++ b/cnab_yaml/cnab240/033/header_lote.yml @@ -0,0 +1,39 @@ +uso_exclusivo_banco_01: + pos: [12, 13] + picture: 'X(2)' + default: '' + +codigo_cedente: + pos: [34, 42] + picture: '9(9)' + +uso_exclusivo_banco_02: + pos: [43, 53] + picture: 'X(11)' + default: '' + +agencia: + pos: [54, 57] + picture: '9(4)' + +agencia_dv: + pos: [58, 58] + picture: '9(1)' + +conta: + pos: [59, 67] + picture: '9(9)' + +conta_dv: + pos: [68, 68] + picture: '9(1)' + +uso_exclusivo_banco_03: + pos: [69, 73] + picture: 'X(5)' + default: '' + +uso_exclusivo_banco_04: + pos: [200, 240] + picture: 'X(41)' + default: '' diff --git a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml new file mode 100644 index 0000000..887fc07 --- /dev/null +++ b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml @@ -0,0 +1,95 @@ +agencia: + pos: [18, 21] + picture: '9(4)' + +agencia_dv: + # Dígito Verificador da Agência + pos: [22, 22] + picture: '9(1)' + +conta: + # Número da conta corrente + pos: [23, 31] + picture: '9(9)' + +conta_dv: + pos: [32, 32] + picture: '9(1)' + +conta_cobranca: + # Número da conta corrente + pos: [33, 41] + picture: '9(9)' + +conta_cobranca_dv: + pos: [42, 42] + picture: '9(1)' + +reservado_santander_01: + pos: [43, 44] + picture: 'X(2)' + default: '' + +nosso_numero: + pos: [45, 57] + picture: '9(13)' + +tipo_documento: + # ‘1’ = Tradicional + # ‘2’ = Escritural + pos: [60,60] + picture: 'X(1)' + default: '1' + +reservado_santander_02: + pos: [61, 61] + picture: 'X(1)' + default: '' + +reservado_santander_03: + pos: [62, 62] + picture: 'X(1)' + default: '' + +numero_documento: + pos: [63, 77] + picture: 'X(15)' + +agencia_cobradora: + pos: [101, 104] + picture: '9(4)' + default: '0' + +agencia_cobradora_dv: + pos: [105, 105] + picture: '9(1)' + default: '0' + +reservado_santander_04: + pos: [106, 106] + picture: 'X(1)' + default: '' + +reservado_santander_05: + pos: [225, 225] + picture: '9(1)' + default: '0' + +prazo_baixa: + pos: [226, 227] + picture: '9(2)' + +codigo_moeda: + pos: [228, 229] + picture: '9(2)' + default: '00' + +uso_exclusivo_banco_03: + pos: [230, 239] + picture: 'X(10)' + default: '' + +uso_exclusivo_febraban_02: + pos: [240, 240] + picture: 'X(1)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_q.yml b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_q.yml new file mode 100644 index 0000000..6a558eb --- /dev/null +++ b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_q.yml @@ -0,0 +1,24 @@ +identificador_carne: + pos: [210, 212] + picture: '9(3)' + default: '0' + +sequencial_parcela: + pos: [213, 215] + picture: '9(3)' + default: '0' + +quantidade_parcela: + pos: [216, 218] + picture: '9(3)' + default: '0' + +numero_plano: + pos: [219, 221] + picture: '9(3)' + default: '0' + +reservado_santander_01: + pos: [222, 240] + picture: 'X(19)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_r.yml new file mode 100644 index 0000000..f1d73ff --- /dev/null +++ b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_r.yml @@ -0,0 +1,21 @@ +codigo_desconto_02: + pos: [18, 18] + picture: '9(1)' + default: 0 + +data_desconto_02: + pos: [19, 26] + picture: '9(8)' + date_format: '%d%m%Y' + + +valor_desconto_02: + # Valor ou Percentual (de acordo com o código) + pos: [27, 41] + picture: '9(13)V9(2)' + default: 0 + +reservado_santander_01: + pos: [42, 65] + picture: 'X(24)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/033/remessa/header_arquivo.yml b/cnab_yaml/cnab240/033/remessa/header_arquivo.yml new file mode 100644 index 0000000..4ee44db --- /dev/null +++ b/cnab_yaml/cnab240/033/remessa/header_arquivo.yml @@ -0,0 +1,44 @@ +uso_exclusivo_febraban_01: + pos: [9, 16] + picture: 'X(8)' + default: '' + +codigo_inscricao: + pos: [17, 17] + picture: '9(1)' + +numero_inscricao: + pos: [18, 32] + picture: '9(15)' + +agencia: + pos: [33, 36] + picture: '9(4)' + +agencia_dv: + pos: [37, 37] + picture: '9(1)' + +codigo_cedente: + pos: [38, 47] + picture: '9(10)' + +uso_exclusivo_banco_01: + pos: [48, 72] + picture: 'X(25)' + default: '' + +hora_geracao: + pos: [152, 157] + picture: 'X(6)' + default: '' + +versao_layout_arquivo: + pos: [164, 166] + picture: '9(3)' + default: '040' + +uso_exclusivo_febraban_03: + pos: [167, 240] + picture: 'X(74)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/033/remessa/header_lote.yml b/cnab_yaml/cnab240/033/remessa/header_lote.yml new file mode 100644 index 0000000..263fb04 --- /dev/null +++ b/cnab_yaml/cnab240/033/remessa/header_lote.yml @@ -0,0 +1,31 @@ +uso_exclusivo_banco_01: + pos: [12, 13] + picture: 'X(2)' + default: '' + +uso_exclusivo_banco_02: + pos: [34, 53] + picture: 'X(20)' + default: '' + +agencia: + pos: [54, 57] + picture: '9(4)' + +agencia_dv: + pos: [58, 58] + picture: '9(1)' + +codigo_cedente: + pos: [59, 68] + picture: '9(10)' + +uso_exclusivo_banco_03: + pos: [69, 73] + picture: 'X(5)' + default: '' + +uso_exclusivo_banco_04: + pos: [200, 240] + picture: 'X(41)' + default: '' diff --git a/cnab_yaml/cnab240/033/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/033/retorno/detalhe_segmento_t.yml new file mode 100644 index 0000000..b71049b --- /dev/null +++ b/cnab_yaml/cnab240/033/retorno/detalhe_segmento_t.yml @@ -0,0 +1,97 @@ +agencia_mantenedora: + pos: [18, 21] + picture: '9(4)' + +agencia_dv: + pos: [22, 22] + picture: '9(1)' + +conta: + pos: [23, 31] + picture: '9(9)' + +conta_dv: + pos: [32, 32] + picture: '9(1)' + +uso_exclusivo_banco_01: + pos: [33, 40] + picture: 'X(8)' + +nosso_numero: + pos: [41, 53] + picture: '9(13)' + +codigo_carteira: + # Tipo de Cobrança + # 1 = Cobrança Simples (Sem Registro e Eletronica com registro) + # 2 = Cobrança Simples (Rápida com registro, Eletrônica com Registro e Convencional com Registro) + # 3 = Cobraça Caucionada (Eletrônica com registro e convencional com registro) + # 4 = Cobrança Descontada (Convencionlal com Registro / Eletrônica com registro) + # 5 = Cobrança Simples (Rápida com Registro) + # 6 = Cobrança Caucionada (Rápida com Registro) + pos: [54, 54] + picture: '9(1)' + +numero_documento: + pos: [55, 69] + picture: 'X(15)' + +data_vencimento: + pos: [70, 77] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_titulo: + pos: [78, 92] + picture: '9(13)V9(2)' + +numero_banco: + pos: [93, 95] + picture: '9(3)' + +agencia_cobradora: + pos: [96, 99] + picture: '9(4)' + +agencia_cobradora_dac: + # Também conhecido como digito verificador + pos: [100, 100] + picture: '9(1)' + +uso_empresa: + pos: [101, 125] + picture: 'X(25)' + +codigo_moeda: + pos: [126, 127] + picture: '9(2)' + +tipo_inscricao: + pos: [128, 128] + picture: '9(1)' + +numero_inscricao: + pos: [129, 143] + picture: '9(15)' + +nome_sacado: + pos: [144, 183] + picture: 'X(40)' + +conta_cobranca: + pos: [184, 193] + picture: 'X(10)' + +valor_tarifa: + pos: [194, 208] + picture: '9(13)V9(2)' + +identificacao_rejeicao: + pos: [209, 218] + picture: 'X(10)' + +uso_exclusivo_banco_03: + pos: [219, 240] + picture: 'X(22)' + default: '' diff --git a/cnab_yaml/cnab240/033/trailer_lote.yml b/cnab_yaml/cnab240/033/trailer_lote.yml new file mode 100644 index 0000000..e53090a --- /dev/null +++ b/cnab_yaml/cnab240/033/trailer_lote.yml @@ -0,0 +1,47 @@ +qtde_titulo_cobranca_simples: + pos: [24, 29] + picture: '9(6)' + +valor_total_titulo_simples: + pos: [30, 46] + picture: '9(15)V9(2)' + +uso_exclusivo_febraban_02: + pos: [47, 52] + picture: 'X(6)' + default: '' + +uso_exclusivo_febraban_03: + pos: [53, 69] + picture: 'X(17)' + default: '' + +qtde_titulo_cobranca_caucionada: + pos: [70, 75] + picture: 'X(6)' + default: '' + +valor_total_titulo_caucionada: + pos: [76, 92] + picture: 'X(17)' + default: '' + +qtde_titulo_cobranca_descontada: + pos: [93, 98] + picture: 'X(6)' + default: '' + +valor_total_titulo_descontada: + pos: [99, 115] + picture: 'X(17)' + default: '' + +uso_exclusivo_febraban_04: + pos: [116, 123] + picture: 'X(8)' + default: '' + +uso_exclusivo_febraban_05: + pos: [124, 240] + picture: 'X(117)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/104/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/104/retorno/detalhe_segmento_t.yml new file mode 100644 index 0000000..2d6b5ae --- /dev/null +++ b/cnab_yaml/cnab240/104/retorno/detalhe_segmento_t.yml @@ -0,0 +1,18 @@ +# Registro Detalhe - Segmento T (Obrigatório - Retorno) +# Baseado na documentação da caixa cef + +uso_exclusivo_cef_01: + pos: [38, 46] + picture: 'X(9)' + +nosso_numero: + pos: [47, 57] + picture: '9(11)' + +numero_documento: + pos: [59, 69] + picture: 'X(11)' + +uso_exclusivo_cef_02: + pos: [70, 73] + picture: 'X(4)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/104/retorno/detalhe_segmento_u.yml b/cnab_yaml/cnab240/104/retorno/detalhe_segmento_u.yml new file mode 100644 index 0000000..699852c --- /dev/null +++ b/cnab_yaml/cnab240/104/retorno/detalhe_segmento_u.yml @@ -0,0 +1,11 @@ +# Registro Detalhe - Segmento U (Obrigatório - Retorno) +# Baseado na documentação da caixa cef + +data_debito_tarifa: + pos: [154, 161] + picture: '9(8)' + date_format: '%d%m%Y' + +uso_exclusivo_febraban_02: + pos: [162, 240] + picture: '9(79)' diff --git a/cnab_yaml/cnab240/104/sigcb/header_arquivo.yml b/cnab_yaml/cnab240/104/sigcb/header_arquivo.yml new file mode 100644 index 0000000..d15337f --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/header_arquivo.yml @@ -0,0 +1,137 @@ +# Registro Header de Arquivo + +# Baseado na documentação da Caixa SIGCB +# Disponível em: http://www.caixa.gov.br/downloads/cobranca-caixa-manuais/LEIAUTE_CNAB_240_SIGCB_COBRANCA_CAIXA.pdf + +uso_exclusivo_caixa_01: + pos: [50, 52] + picture: '9(3)' + default: '0' + +uso_exclusivo_banco_01: + # Padrão: deixar em branco + pos: [65, 71] + picture: 'X(7)' + default: '' + +agencia: + # Código da Agência mantenedora da conta, fornecido pela CAIXA. + pos: [53, 57] + picture: '9(5)' + +agencia_dv: + # Dígito Verificador da Agência mantendedora da conta, fornecido pela CAIXA. + pos: [58, 58] + picture: '9(1)' + +codigo_cedente: + pos: [59, 64] + picture: '9(6)' + +uso_exclusivo_caixa_02: + pos: [65, 71] + picture: '9(7)' + default: '0' + +uso_exclusivo_caixa_03: + pos: [72, 72] + picture: '9(1)' + default: '0' + +nome_empresa: + # Nome que identifica a pessoa, física ou jurídica, a qual se quer fazer referência + pos: [73, 102] + picture: 'X(30)' + +nome_banco: + # Nome que identifica o banco que está recebendo ou enviando o arquivo. + # Informar: CAIXA ECONÔMICA FEDERAL (se o banco for a caixa) + pos: [103, 132] + picture: 'X(30)' + +uso_exclusivo_febraban_02: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [133, 142] + picture: 'X(10)' + default: '' + +codigo_remessa_retorno: + # Código Remessa / Retorno + # Código adotado pela febraban para qualificar o envio ou devolução de arquivo entre a empresa + # cliente e o banco prestador dos serviços. informar: + # '1' = remessa (cliente banco) + # '2' = retorno (banco cliente) + pos: [143, 143] + picture: '9(1)' + +data_geracao: + # Data da criação do arquivo. utilizar o formato DDMMAAAA, onde : dd = dia, mm = mês, aa = ano + pos: [144, 151] + picture: '9(8)' + date_format: '%d%m%Y' + +hora_geracao: + # Hora da criação do arquivo. utilizar o formato hhmmss, onde : HH = hora, MM = minuto, SS = segundo + pos: [152, 157] + picture: '9(6)' + date_format: '%H%M%S' + +numero_sequencial_arquivo: + # Número seqüencial adotado e controlado pelo responsável pela geração do arquivo para ordenar a + # disposição dos arquivos encaminhados. + # Evoluir um número seqüencial a cada header de arquivo. + pos: [158, 163] + picture: '9(6)' + +versao_layout_arquivo: + pos: [164, 166] + picture: '9(3)' + default: '050' + +densidade_gravacao_arquivo: + # Densidade de gravação (bpi), do arquivo encaminhado. Pode ser: + # 1600 BPI + # 6250 BPI + # Pode ser informado ‘0’. (Padrão) + pos: [167, 171] + picture: '9(5)' + default: '0' + +uso_reservado_banco: + # Para Uso Reservado do Banco + # Texto de observações destinado para uso exclusivo da caixa econômica federal. + # Durante a fase de testes (simulado) deverá conter a literal ‘RETORNO-TESTE’ + pos: [172, 191] + picture: 'X(20)' + default: '' + +uso_reservado_empresa: + # Campo utilizado pelo cliente/cedente. Na fase de testes (simulado), deverá conter a literal + # ‘REMESSA-TESTE’ e na fase de produção deverá conter a literal ‘REMESSA-PRODUÇÃO’ + pos: [192, 211] + picture: 'X(20)' + default: 'REMESSA-PRODUCAO' + +versao_aplicativo_caixa: + pos: [212, 215] + picture: 'X(4)' + default: '' + +uso_exclusivo_febraban_03: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [216, 240] + picture: 'X(25)' + default: '' + +codigo_convenio: + # Código do Convênio no Banco (Código do Cedente) + # Código fornecido pela CAIXA, através da agência de relacionamento do cliente, específico para + # identificar determinados tipos de serviços / produtos. + # O campo CÓDIGO DO CEDENTE deverá ser preenchido da seguinte forma: + # AAAAOOOCCCCCCCCD, onde: + # AAAA = código da Agência CAIXA de relacionamento do cliente / cedente + # OOO = Operação + # CCCCCCCC = Número da Conta Corrente ou seqüencial + # D = Dígito Verificador + pos: [33, 49] + picture: '9(17)' diff --git a/cnab_yaml/cnab240/104/sigcb/header_lote.yml b/cnab_yaml/cnab240/104/sigcb/header_lote.yml new file mode 100644 index 0000000..93c1a5a --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/header_lote.yml @@ -0,0 +1,50 @@ +# Registro Header de Lote + +# Baseado na documentação da Caixa +# Disponível em: http://www.caixa.gov.br/downloads/cobranca-caixa-manuais/LEIAUTE_CNAB_240_SIGCB_COBRANCA_CAIXA.pdf + +codigo_inscricao: + # Código que identifica o tipo de inscrição da Empresa ou Pessoa Física. + # '1' = CPF + # '2' = CGC / CNPJ + pos: [18, 18] + picture: '9(1)' + +numero_inscricao: + # Informar o número de inscrição da Empresa (CNPJ) ou Pessoa Física (CPF). + pos: [19, 33] + picture: '9(15)' + +codigo_convenio: + pos: [34, 39] + picture: 'X(6)' + +uso_exclusivo_banco: + # Preenchar com zeros + pos: [40, 53] + picture: '9(14)' + default: '0' + +agencia: + # Código da Agência mantenedora da conta, fornecido pela CAIXA. + pos: [54, 58] + picture: '9(5)' + +agencia_dv: + # Dígito Verificador da Agência mantendedora da conta, fornecido pela CAIXA. + pos: [59, 59] + picture: '9(1)' + +codigo_cedente: + pos: [60, 65] + picture: '9(6)' + +codigo_modelo: + pos: [66, 72] + picture: '9(7)' + default: '0' + +uso_exclusivo_banco_02: + pos: [73, 73] + picture: '9(1)' + default: '0' diff --git a/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_p.yml new file mode 100644 index 0000000..e512da5 --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_p.yml @@ -0,0 +1,25 @@ +# Registro Detalhe - Segmento P (Obrigatório - Remessa) +# Baseado na documentação da Caixa +# Disponível em: http://www.caixa.gov.br/downloads/cobranca-caixa-manuais/LEIAUTE_CNAB_240_SIGCB_COBRANCA_CAIXA.pdf + +codigo_cedente: + pos: [24, 29] + picture: '9(6)' + +uso_exclusivo_caixa_01: + pos: [30, 37] + picture: '9(8)' + default: '0' + +uso_exclusivo_caixa_02: + pos: [38, 40] + picture: '9(3)' + default: '0' + +modalidade_carteira: + pos: [41, 42] + picture: '9(2)' + +nosso_numero: + pos: [43, 57] + picture: '9(15)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_r.yml new file mode 100644 index 0000000..d3a9363 --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/remessa/detalhe_segmento_r.yml @@ -0,0 +1,6 @@ +# Registro Detalhe - Segmento R (Obrigatório - Remessa) +# Baseado na documentação da caixa +uso_exclusivo_febraban_02: + pos: [18, 65] + picture: '9(48)' + default: '0' diff --git a/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_t.yml new file mode 100644 index 0000000..de32c0c --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_t.yml @@ -0,0 +1,19 @@ +# Registro Detalhe - Segmento T (Obrigatório - Retorno) +# Baseado na documentação da Caixa +# Disponível em: http://www.caixa.gov.br/downloads/cobranca-caixa-manuais/LEIAUTE_CNAB_240_SIGCB_COBRANCA_CAIXA.pdf + +codigo_cedente: + pos: [24, 29] + picture: '9(6)' + +nosso_numero: + pos: [42, 56] + picture: '9(15)' + +numero_documento: + pos: [59, 69] + picture: 'X(11)' + +valor_titulo: + pos: [82, 96] + picture: '9(13)V9(2)' diff --git a/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_u.yml b/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_u.yml new file mode 100644 index 0000000..699852c --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/retorno/detalhe_segmento_u.yml @@ -0,0 +1,11 @@ +# Registro Detalhe - Segmento U (Obrigatório - Retorno) +# Baseado na documentação da caixa cef + +data_debito_tarifa: + pos: [154, 161] + picture: '9(8)' + date_format: '%d%m%Y' + +uso_exclusivo_febraban_02: + pos: [162, 240] + picture: '9(79)' diff --git a/cnab_yaml/cnab240/104/sigcb/trailer_lote.yml b/cnab_yaml/cnab240/104/sigcb/trailer_lote.yml new file mode 100644 index 0000000..b9baa35 --- /dev/null +++ b/cnab_yaml/cnab240/104/sigcb/trailer_lote.yml @@ -0,0 +1,34 @@ +# Registro Trailer de Lote +# Baseado na documentação da caixa SIGCB (CNAB 240) +# @link http://www.caixa.gov.br/downloads/cobranca-caixa-manuais/LEIAUTE_CNAB_240_SIGCB_COBRANCA_CAIXA.pdf + +uso_exclusivo_febraban_01: + pos: [9, 17] + picture: 'X(9)' + default: '' + +uso_exclusivo_febraban_02: + pos: [93, 123] + picture: 'X(31)' + default: '' + +uso_exclusivo_febraban_03: + pos: [124, 240] + picture: 'X(117)' + default: '' + +qtde_titulo_cobranca_caucionada: + pos: [47, 52] + picture: '9(6)' + +valor_total_titulo_caucionada: + pos: [53, 69] + picture: '9(15)V9(2)' + +qtde_titulo_cobranca_descontada: + pos: [70, 75] + picture: '9(6)' + +valor_total_titulo_descontada: + pos: [76, 92] + picture: '9(15)V9(2)' diff --git a/cnab_yaml/cnab240/756/header_arquivo.yml b/cnab_yaml/cnab240/756/header_arquivo.yml new file mode 100644 index 0000000..3404fb0 --- /dev/null +++ b/cnab_yaml/cnab240/756/header_arquivo.yml @@ -0,0 +1,38 @@ +# Com base na documentação do Sicoob +# disponível em: http://www.bancoob.com.br/atendimentocobranca/CAS/2_Implanta%C3%A7%C3%A3o_do_Servi%C3%A7o/Sistema_Proprio/Layouts_para_troca_de_informa%C3%A7%C3%B5es.xls + +codigo_convenio: + # Padrão: deixar em branco + pos: [33, 52] + picture: 'X(20)' + default: '' + +agencia_dv: + pos: [58,58] + picture: 'X(1)' + default: '' + +agencia_mais_cedente_dv: + # Padrão: deixa em branco + pos: [72, 72] + picture: 'X(1)' + default: '' + +nome_banco: + pos: [103, 132] + picture: 'X(30)' + default: 'SICOOB' + +versao_layout_arquivo: + # Código adotado pela FEBRABAN para identificar qual a versão de layout do arquivo encaminhado. O + # 081, para SICOOB + pos: [164, 166] + picture: '9(3)' + default: '081' + +uso_reservado_empresa: + # Campo utilizado pelo cliente/cedente. Na fase de testes (simulado), deverá conter a literal + # ‘REMESSA-TESTE’ e na fase de produção deverá conter a literal ‘REMESSA-PRODUÇÃO’ + pos: [192, 211] + picture: 'X(20)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/header_lote.yml b/cnab_yaml/cnab240/756/header_lote.yml new file mode 100644 index 0000000..47a4c3a --- /dev/null +++ b/cnab_yaml/cnab240/756/header_lote.yml @@ -0,0 +1,45 @@ +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. + # SICOOB = ‘756’ + pos: [1, 3] + picture: '9(3)' + default: '756' + +lote_servico: + # Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço. + # Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo. + # Preencher com '0001' para o primeiro lote do arquivo. + # Para os demais: número do lote anterior acrescido de 1. + # O número não poderá ser repetido dentro do arquivo. + pos: [4, 7] + picture: '9(4)' + +forma_lancamento: + # Forma de Lançamento + # Uso Exclusivo FEBRABAN/CNAB, Padrão: Brancos + pos: [12, 13] + picture: 'X(2)' + default: '' + +codigo_convenio: + pos: [34, 49] + picture: 'X(16)' + default: '' + +agencia_dv: + pos: [59,59] + picture: 'X(1)' + default: '' + +agencia_mais_cedente_dv: + # Padrão: deixa em branco + pos: [73, 73] + picture: 'X(1)' + default: '' + +versao_layout_lote: + # Código adotado pela FEBRABAN para identificar qual a versão de layout do arquivo encaminhado. + pos: [14, 16] + picture: '9(3)' + default: '040' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_p.yml new file mode 100644 index 0000000..17ab8f9 --- /dev/null +++ b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_p.yml @@ -0,0 +1,45 @@ +agencia_dv: + pos: [23,23] + picture: 'X(1)' + +agencia_mais_cedente_dv: + # Padrão: deixa em branco + pos: [37, 37] + picture: 'X(1)' + default: '' + +tipo_documento: + # Por padrão em branco no SICOOB + pos: [60,60] + picture: 'X(1)' + default: '' + +numero_documento: + # Número adotado e controlado pelo Cliente, para identificar o título de cobrança. + # Poderá conter número de duplicata, no caso de cobrança de duplicatas; número da apólice, no caso de + # cobrança de seguros, etc. Campo de preenchimento obrigatório. + pos: [63,77] + picture: 'X(15)' + +agencia_cobradora_dv: + # Preencher com zeros - o sistema atribuirá a agência encarregada da cobrança pelo CEP do sacado. + # Código adotado pelo Banco responsável pela cobrança, para identificar o estabelecimento bancário + # responsável pela cobrança do título. + # Código e Dígito Verificador da Agência Encarregada da Cobrança são fornecidos pela CAIXA. Para + # essa informação solicitar a relação de agências cobradoras à agência CAIXA de relacionamento. + pos: [106, 106] + picture: 'X(1)' + default: '0' + +nosso_numero: + # Identificação do Título no Banco + # Número adotado pelo Banco Cedente para identificar o Título. + # Para código de movimento igual a '01' (Entrada de Títulos), caso esteja preenchido com zeros, a + # numeração será atribuída pela CAIXA. + # Para montagem do Nosso Número, quando a emissão do título é feita pelo cliente (carteiras + # Cobrança Rápida, Sem Registro e SAD), solicitar especificação à Agência CAIXA de + # relacionamento. + # Obs: Nosso Número Sem Registro com 16 posições (arquivo Retorno) – posições 106 a 130 do + # Segmento T (ver Nota G072). + pos: [38,57] + picture: 'X(20)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/remessa/detalhe_segmento_q.yml b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_q.yml new file mode 100644 index 0000000..2607bdc --- /dev/null +++ b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_q.yml @@ -0,0 +1,4 @@ +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + default: 'Q' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_r.yml new file mode 100644 index 0000000..68b70a1 --- /dev/null +++ b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_r.yml @@ -0,0 +1,88 @@ +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + default: 'R' + +codigo_desconto_02: + pos: [18, 18] + picture: '9(1)' + default: 0 + +data_desconto_02: + pos: [19, 26] + picture: '9(8)' + date_format: '%d%m%Y' + default: 0 + +valor_desconto_02: + # Valor ou Percentual (de acordo com o código) + pos: [27, 41] + picture: '9(13)V9(2)' + default: 0 + +codigo_desconto_03: + pos: [42, 42] + picture: '9(1)' + default: 0 + +data_desconto_03: + pos: [43, 50] + picture: '9(8)' + date_format: '%d%m%Y' + default: 0 + +valor_desconto_03: + # Valor ou Percentual (de acordo com o código) + pos: [51, 65] + picture: '9(13)V9(2)' + default: 0 + +uso_exclusivo_febraban_04: + pos: [180, 199] + picture: 'X(20)' + default: '' + +codigo_ocorrencia_pagador: + pos: [200, 207] + picture: '9(8)' + default: 0 + +banco_conta_debito: + pos: [208, 210] + picture: '9(3)' + default: 0 + +agencia_debito: + pos: [211, 215] + picture: '9(5)' + default: 0 + +agencia_dv_debito: + pos: [216, 216] + picture: 'X(1)' + default: '' + +conta_corrente_debito: + pos: [217, 228] + picture: '9(12)' + default: 0 + +conta_corrente_dv_debito: + pos: [229, 229] + picture: 'X(1)' + default: '' + +agencia_conta_dv_debito: + pos: [230, 230] + picture: 'X(1)' + default: '' + +aviso_debito_automatico: + pos: [231, 231] + picture: '9(1)' + default: 0 + +uso_exclusivo_febraban_03: + pos: [232, 240] + picture: 'X(9)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/remessa/detalhe_segmento_s.yml b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_s.yml new file mode 100644 index 0000000..ca5a198 --- /dev/null +++ b/cnab_yaml/cnab240/756/remessa/detalhe_segmento_s.yml @@ -0,0 +1,77 @@ +# Registro Detalhe - Segmento S (Obrigatório - Remessa) +# Baseado na documentação da caixa +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)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '3' + +numero_sequencial_lote: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + default: 'S' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + default: '' + +codigo_ocorrencia: + # Código de Movimento Remessa + # Código adotado pela FEBRABAN, para identificar o tipo de movimentação enviado nos registros do + # arquivo de remessa. + # Cada Banco definirá os campos a serem alterados para o código de movimento ‘31’. + # Código Descrição + # ‘01’ Entrada de Títulos + # ‘02’ Pedido de Baixa + # ‘04’ Concessão de Abatimento + # ‘05’ Cancelamento de Abatimento + # ‘06’ Alteração de Vencimento + # ‘07’ Concessão de Desconto + # ‘08’ Cancelamento de Desconto + # ‘09’ Protestar + # ‘10’ Sustar Protesto e Baixar Título + # ‘31’ Alteração de Outros Dados + pos: [16, 17] + picture: '9(2)' + +tipo_impressao: + # Identificação da Impressão: + # '1' = Frente do Bloqueto + # '2' = Verso do Bloqueto + pos: [18, 18] + picture: '9(1)' + +numero_linha: + # Número da Linha a ser Impressa + pos: [18, 20] + picture: '9(2)' + +mensagem: + # Mensagem a ser impressa: + # Os tipos de impressão 1 e 2 não são utilizadas. Preencher com brancos. + pos: [21, 160] + picture: 'X(140)' + +tipo_fonte: + # Tipo de caracter a ser impresso + pos: [161, 162] + picture: '9(2)' + +uso_exclusivo_febraban_03: + pos: [163, 240] + picture: 'X(27)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/756/retorno/detalhe_segmento_t.yml new file mode 100644 index 0000000..1374254 --- /dev/null +++ b/cnab_yaml/cnab240/756/retorno/detalhe_segmento_t.yml @@ -0,0 +1,9 @@ +agencia_dv: + pos: [23, 23] + picture: 'X(1)' + default: '' + +numero_contrato: + #Nº do Contr. da Operação de Crédito: Número adotado pela Empresa Beneficiária para identificação do número do contrato. + pos: [189,198] + picture: '9(10)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/retorno/trailer_lote.yml b/cnab_yaml/cnab240/756/retorno/trailer_lote.yml new file mode 100644 index 0000000..21da43c --- /dev/null +++ b/cnab_yaml/cnab240/756/retorno/trailer_lote.yml @@ -0,0 +1,73 @@ +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. + # SICOOB = ‘756’ + pos: [1, 3] + picture: '9(3)' + default: '756' + +lote_servico: + # Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço. + # Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo. + # Preencher com '0001' para o primeiro lote do arquivo. + # Para os demais: número do lote anterior acrescido de 1. + # O número não poderá ser repetido dentro do arquivo. + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + # Código adotado pela FEBRABAN para identificar o tipo de registro. + # '1' = Header de Lote + pos: [8, 8] + picture: '9(1)' + default: '1' + +uso_exclusivo_febraban_01: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [9, 17] + picture: 'X(9)' + default: '' + +qtd_registros_lote: + pos: [18,23] + picture: '9(6)' + +simples_total_titulo_cobranca: + pos: [24,29] + picture: '9(6)' + +simples_valor_total_titulo_carteira: + pos: [30,46] + picture: '9(15)V9(2)' + +vinculada_total_titulo_cobranca: + pos: [47,52] + picture: '9(6)' + +vinculada_valor_total_titulo_carteira: + pos: [53,69] + picture: '9(15)V9(2)' + +caucionada_total_titulo_cobranca: + pos: [70,75] + picture: '9(6)' + +caucionada_valor_total_titulo_carteira: + pos: [76,92] + picture: '9(15)V9(2)' + +descontada_total_titulo_cobranca: + pos: [93,98] + picture: '9(6)' + +descontada_valor_total_titulo_carteira: + pos: [99,115] + picture: '9(15)V9(2)' + +numero_aviso: + pos: [116,123] + picture: 'X(8)' + +uso_exclusivo_febraban_01: + pos: [124,240] + picture: 'X(205)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/756/trailer_lote.yml b/cnab_yaml/cnab240/756/trailer_lote.yml new file mode 100644 index 0000000..9fa50e0 --- /dev/null +++ b/cnab_yaml/cnab240/756/trailer_lote.yml @@ -0,0 +1,9 @@ +qtde_titulo_cobranca_vinculada: + pos: [47, 52] + picture: 'X(6)' + default: '' + +valor_total_titulo_vinculada: + pos: [53, 69] + picture: '9(15)V9(2)' + default: '0' \ No newline at end of file diff --git a/cnab_yaml/cnab240/generic/header_arquivo.yml b/cnab_yaml/cnab240/generic/header_arquivo.yml new file mode 100644 index 0000000..2b4651c --- /dev/null +++ b/cnab_yaml/cnab240/generic/header_arquivo.yml @@ -0,0 +1,213 @@ +# Registro Header de Arquivo + +# Baseado na documentação da Caixa +# Disponível em: http://downloads.caixa.gov.br/_arquivos/cobrcaixasicob/manuaissicob/CNAB_240_SICOB.pdf + +codigo_banco: + # Caixa = 104, Santander = 033 + pos: [1, 3] + picture: '9(3)' + +lote_servico: + # Se registro for Header do Arquivo = '0000' + pos: [4, 7] + picture: '9(4)' + default: '0000' + +tipo_registro: + # Código adotado pela FEBRABAN para identificar o tipo de registro. + # '0' = Header de Arquivo + pos: [8, 8] + picture: '9(1)' + default: '0' + +uso_exclusivo_febraban_01: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [9, 17] + picture: 'X(9)' + default: '' + +codigo_inscricao: + # Código que identifica o tipo de inscrição da Empresa ou Pessoa Física. + # '1' = CPF + # '2' = CGC / CNPJ + pos: [18, 18] + picture: '9(1)' + +numero_inscricao: + # Informar o número de inscrição da Empresa (CNPJ) ou Pessoa Física (CPF). + pos: [19, 32] + picture: '9(14)' + +codigo_convenio: + # Código do Convênio no Banco (Código do Cedente) + # Código fornecido pela CAIXA, através da agência de relacionamento do cliente, específico para + # identificar determinados tipos de serviços / produtos. + # O campo CÓDIGO DO CEDENTE deverá ser preenchido da seguinte forma: + # AAAAOOOCCCCCCCCD, onde: + # AAAA = código da Agência CAIXA de relacionamento do cliente / cedente + # OOO = Operação + # CCCCCCCC = Número da Conta Corrente ou seqüencial + # D = Dígito Verificador + pos: [33, 48] + picture: '9(16)' + +uso_exclusivo_banco_01: + # Padrão: deixar em branco + pos: [49, 52] + picture: 'X(4)' + default: '' + +agencia: + # Código da Agência mantenedora da conta, fornecido pela CAIXA. + pos: [53, 57] + picture: '9(5)' + +agencia_dv: + # Dígito Verificador da Agência mantendedora da conta, fornecido pela CAIXA. + pos: [58, 58] + picture: '9(1)' + +codigo_cedente: + # Código do Cedente + # Remessa: Código do Convênio no Banco (sem operação), tamanho: 12 posições, no formato + # 0000CCCCCCCC. + # Retorno: Código do Convênio no Banco (com operação), tamanho: 12 posições, no formato + # 0OOOCCCCCCCC. + # Onde: + # 0 = zero + # OOO = Operação + # CCCCCCCC = Cedente + pos: [59, 70] + picture: '9(12)' + +codigo_cedente_dv: + # Dígito Verificador do Cedente + # Código adotado pela CAIXA, para verificação da autenticidade do Código do Cedente. Calculado + # através do módulo 11. + # Exemplo de como calcular o DV do Cedente: + # Agência/Código do Cedente: 0012.870.00000575-1 + # Para Remessa – Cedente sem operação e sem DV: 00000575 + # Para Retorno – Cedente com operação e sem DV: 87000000575 + # 0 0 0 0 0 5 7 5 + # 9 8 7 6 5 4 3 2 + # 0 0 0 0 0 20 21 10 + # 1ª linha – Código do Cedente + # 2ª linha – Índice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª linha – Multiplicação coluna por coluna (0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 3x3, 3x2) + # Soma-se os valores da 3ª linha: 0+0+0+0+0+20+21+10 = 51 + # Dividir o resultado da soma por onze: 51/11 = 4 (resto 7) + # Subtrair onze pelo resto da divisão: 11 – 7 = 4 + # O Dígito Verificador calculado para o Código de Cedente acima é 4 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + pos: [71, 71] + picture: '9(1)' + +agencia_mais_cedente_dv: + # Dígito Verificador da Agência / Código do Cedente + # Código adotado pela CAIXA para verificação da autenticidade do par Código da Agência / Código do + # Cedente. Calculado através do módulo 11. + # Obs: Para o Retorno é o mesmo DV do Código do Cedente, fornecido pela CAIXA. + # Exemplo de como calcular o DV da Agência/Código do Cedente (Remessa): + # Agência/Código do Cedente: 0012.870.00000575-1 + # Agência (sem DV): 0012 + # Cedente (sem operação e sem DV) – tamanho 8 posições: 00000575 + # 0 0 1 2 0 0 0 0 0 5 7 5 + # 5 4 3 2 9 8 7 6 5 4 3 2 + # 0 0 3 4 0 0 0 0 0 20 21 10 + # 1ª Linha – Agência/Código do Cedente + # 2ª Linha – Ìndice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª Linha – Multiplicação coluna por coluna + # Soma-se os valores da 3ª linha: 0+0+3+4+0+0+0+0+0+20+21+10 = 58 + # Dividir o resultado da soma por onze: 58/11 = 5 (RESTO 3) + # Subtrair onze pelo resto da divisão: 11 – 3 = 8 + # O Dígito Verificador calculado para o Código de Cedente acima é 8 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + # No Banco do Brasil, é o Dígito verificador da Ag/Conta + pos: [72, 72] + picture: '9(1)' + +nome_empresa: + # Nome que identifica a pessoa, física ou jurídica, a qual se quer fazer referência + pos: [73, 102] + picture: 'X(30)' + +nome_banco: + # Nome que identifica o banco que está recebendo ou enviando o arquivo. + # Informar: CAIXA ECONÔMICA FEDERAL (se o banco for a caixa) + pos: [103, 132] + picture: 'X(30)' + +uso_exclusivo_febraban_02: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [133, 142] + picture: 'X(10)' + default: '' + +codigo_remessa_retorno: + # Código Remessa / Retorno + # Código adotado pela febraban para qualificar o envio ou devolução de arquivo entre a empresa + # cliente e o banco prestador dos serviços. informar: + # '1' = remessa (cliente banco) + # '2' = retorno (banco cliente) + pos: [143, 143] + picture: '9(1)' + +data_geracao: + # Data da criação do arquivo. utilizar o formato DDMMAAAA, onde : dd = dia, mm = mês, aa = ano + pos: [144, 151] + picture: '9(8)' + date_format: '%d%m%Y' + +hora_geracao: + # Hora da criação do arquivo. utilizar o formato hhmmss, onde : HH = hora, MM = minuto, SS = segundo + pos: [152, 157] + picture: '9(6)' + date_format: '%H%M%S' + +numero_sequencial_arquivo: + # Número seqüencial adotado e controlado pelo responsável pela geração do arquivo para ordenar a + # disposição dos arquivos encaminhados. + # Evoluir um número seqüencial a cada header de arquivo. + pos: [158, 163] + picture: '9(6)' + +versao_layout_arquivo: + # Código adotado pela FEBRABAN para identificar qual a versão de layout do arquivo encaminhado. O + # código é composto de: + # Versão = 2 dígitos + # Release = 1 dígito + # Padrão: 030 + pos: [164, 166] + picture: '9(3)' + default: '030' + +densidade_gravacao_arquivo: + # Densidade de gravação (bpi), do arquivo encaminhado. Pode ser: + # 1600 BPI + # 6250 BPI + # Pode ser informado ‘0’. (Padrão) + pos: [167, 171] + picture: '9(5)' + default: '0' + +uso_reservado_banco: + # Para Uso Reservado do Banco + # Texto de observações destinado para uso exclusivo da caixa econômica federal. + # Durante a fase de testes (simulado) deverá conter a literal ‘RETORNO-TESTE’ + pos: [172, 191] + picture: 'X(20)' + default: '' + +uso_reservado_empresa: + # Campo utilizado pelo cliente/cedente. Na fase de testes (simulado), deverá conter a literal + # ‘REMESSA-TESTE’ e na fase de produção deverá conter a literal ‘REMESSA-PRODUÇÃO’ + pos: [192, 211] + picture: 'X(20)' + default: 'REMESSA-PRODUCAO' + +uso_exclusivo_febraban_03: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [212, 240] + picture: 'X(29)' + default: '' diff --git a/cnab_yaml/cnab240/generic/header_lote.yml b/cnab_yaml/cnab240/generic/header_lote.yml new file mode 100644 index 0000000..dafa4f3 --- /dev/null +++ b/cnab_yaml/cnab240/generic/header_lote.yml @@ -0,0 +1,217 @@ +# 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)' + +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)' + +tipo_registro: + # Código adotado pela FEBRABAN para identificar o tipo de registro. + # '1' = Header de Lote + pos: [8, 8] + picture: '9(1)' + default: '1' + +tipo_operacao: + # Tipo de Operação + # Código adotado pela FEBRABAN para identificar a transação que será realizada com os registros + # detalhe do lote. Deve constar apenas um tipo por lote: + # 'R' = Arquivo Remessa + # 'T' = Arquivo Retorno + pos: [9, 9] + picture: 'X(1)' + +tipo_servico: + # Tipo de Serviço + # Código adotado pela FEBRABAN para indicar o tipo de serviço / produto contido no arquivo / lote: + # '01' = Cobrança + # ‘03’ = Bloqueto Eletrônico + # Padrão: '01' + pos: [10, 11] + picture: '9(2)' + default: '01' + +forma_lancamento: + # Forma de Lançamento + # Padrão: 00 + pos: [12, 13] + picture: '9(2)' + default: '00' + +versao_layout_lote: + # Código adotado pela FEBRABAN para identificar qual a versão de layout do arquivo encaminhado. + pos: [14, 16] + picture: '9(3)' + default: '030' + +uso_exclusivo_febraban_01: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [17, 17] + picture: 'X(1)' + default: '' + +codigo_inscricao: + # Código que identifica o tipo de inscrição da Empresa ou Pessoa Física. + # '1' = CPF + # '2' = CGC / CNPJ + pos: [18, 18] + picture: '9(1)' + +numero_inscricao: + # Informar o número de inscrição da Empresa (CNPJ) ou Pessoa Física (CPF). + pos: [19, 33] + picture: '9(15)' + +codigo_convenio: + # Código do Convênio no Banco (Código do Cedente) + # Código fornecido pela CAIXA, através da agência de relacionamento do cliente, específico para + # identificar determinados tipos de serviços / produtos. + # O campo CÓDIGO DO CEDENTE deverá ser preenchido da seguinte forma: + # AAAAOOOCCCCCCCCD, onde: + # AAAA = código da Agência CAIXA de relacionamento do cliente / cedente + # OOO = Operação + # CCCCCCCC = Número da Conta Corrente ou seqüencial + # D = Dígito Verificador + pos: [34, 49] + picture: 'X(16)' + +uso_exclusivo_banco: + # Preenchar em branco + pos: [50, 53] + picture: 'X(4)' + default: '' + +agencia: + # Código da Agência mantenedora da conta, fornecido pela CAIXA. + pos: [54, 58] + picture: '9(5)' + +agencia_dv: + # Dígito Verificador da Agência mantendedora da conta, fornecido pela CAIXA. + pos: [59, 59] + picture: '9(1)' + +codigo_cedente: + # Código do Cedente + # Remessa: Código do Convênio no Banco (sem operação), tamanho: 12 posições, no formato + # 0000CCCCCCCC. + # Retorno: Código do Convênio no Banco (com operação), tamanho: 12 posições, no formato + # 0OOOCCCCCCCC. + # Onde: + # 0 = zero + # OOO = Operação + # CCCCCCCC = Cedente + pos: [60, 71] + picture: '9(12)' + +codigo_cedente_dv: + # Dígito Verificador do Cedente + # Código adotado pela CAIXA, para verificação da autenticidade do Código do Cedente. Calculado + # através do módulo 11. + # Exemplo de como calcular o DV do Cedente: + # Agência/Código do Cedente: 0012.870.00000575-1 + # Para Remessa – Cedente sem operação e sem DV: 00000575 + # Para Retorno – Cedente com operação e sem DV: 87000000575 + # 0 0 0 0 0 5 7 5 + # 9 8 7 6 5 4 3 2 + # 0 0 0 0 0 20 21 10 + # 1ª linha – Código do Cedente + # 2ª linha – Índice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª linha – Multiplicação coluna por coluna (0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 3x3, 3x2) + # Soma-se os valores da 3ª linha: 0+0+0+0+0+20+21+10 = 51 + # Dividir o resultado da soma por onze: 51/11 = 4 (resto 7) + # Subtrair onze pelo resto da divisão: 11 – 7 = 4 + # O Dígito Verificador calculado para o Código de Cedente acima é 4 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + pos: [72, 72] + picture: '9(1)' + +agencia_mais_cedente_dv: + # Dígito Verificador da Agência / Código do Cedente + # Código adotado pela CAIXA para verificação da autenticidade do par Código da Agência / Código do + # Cedente. Calculado através do módulo 11. + # Obs: Para o Retorno é o mesmo DV do Código do Cedente, fornecido pela CAIXA. + # Exemplo de como calcular o DV da Agência/Código do Cedente (Remessa): + # Agência/Código do Cedente: 0012.870.00000575-1 + # Agência (sem DV): 0012 + # Cedente (sem operação e sem DV) – tamanho 8 posições: 00000575 + # 0 0 1 2 0 0 0 0 0 5 7 5 + # 5 4 3 2 9 8 7 6 5 4 3 2 + # 0 0 3 4 0 0 0 0 0 20 21 10 + # 1ª Linha – Agência/Código do Cedente + # 2ª Linha – Ìndice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª Linha – Multiplicação coluna por coluna + # Soma-se os valores da 3ª linha: 0+0+3+4+0+0+0+0+0+20+21+10 = 58 + # Dividir o resultado da soma por onze: 58/11 = 5 (RESTO 3) + # Subtrair onze pelo resto da divisão: 11 – 3 = 8 + # O Dígito Verificador calculado para o Código de Cedente acima é 8 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + pos: [73, 73] + picture: '9(1)' + +nome_empresa: + # Nome que identifica a pessoa, física ou jurídica, a qual se quer fazer referência + pos: [74, 103] + picture: 'X(30)' + +mensagem_1: + # Mensagem 1 / 2 + # Texto referente a mensagens que serão impressas, em todos os bloquetos referentes ao mesmo lote, no + # corpo de instruções da ficha de compensação e do recibo do sacado do bloqueto. + # Estes campos não serão utilizados no arquivo retorno. + pos: [104, 143] + picture: 'X(40)' + default: '' + +mensagem_2: + # Mensagem 1 / 2 + # Texto referente a mensagens que serão impressas, em todos os bloquetos referentes ao mesmo lote, no + # corpo de instruções da ficha de compensação e do recibo do sacado do bloqueto. + # Estes campos não serão utilizados no arquivo retorno. + pos: [144, 183] + picture: 'X(40)' + default: '' + +numero_sequencial_arquivo: + # Número adotado e controlado pelo responsável pela geração magnética dos dados contidos no + # arquivo para identificar a seqüência de envio ou devolução do arquivo entre o Cedente e o Banco + # Cedente. + pos: [184, 191] + picture: '9(8)' + +data_geracao: + # Data da gravação do arquivo de remessa ou retorno. utilizar o formato DDMMAAAA, onde : dd = dia, mm = mês, aa = ano + pos: [192, 199] + picture: '9(8)' + date_format: '%d%m%Y' + +data_credito: + # Data de efetivação do crédito referente ao pagamento do título de cobrança. Informação enviada somente + # no arquivo de retorno. Utilizar o formato DDMMAAAA, onde: DD = dia, MM = mês, AAAA = ano + pos: [200, 207] + picture: '9(8)' + date_format: '%d%m%Y' + default: '0' + +uso_exclusivo_febraban_02: + # Texto de observações destinado para uso exclusivo da FEBRABAN. + # Preencher com Brancos. + pos: [208, 240] + picture: 'X(33)' + default: '' diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml new file mode 100755 index 0000000..83a21c3 --- /dev/null +++ b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml @@ -0,0 +1,369 @@ +# Registro Detalhe - Segmento P (Obrigatório - Remessa) +# 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)' + +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)' + +tipo_registro: + # Código adotado pela FEBRABAN para identificar o tipo de registro. + # '3' = Detalhe + pos: [8, 8] + picture: '9(1)' + default: '3' + +numero_sequencial_lote: + # Nº Sequencial do Registro no Lote + # Deve ser iniciado sempre em 1, em cada novo lote + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + # Código adotado pela FEBRABAN para identificar o segmento do registro. + pos: [14, 14] + picture: 'X(1)' + default: 'P' + +uso_exclusivo_febraban_01: + # Texto de observações destinado para uso exclusivo da FEBRABAN. Preencher com Brancos. + pos: [15, 15] + picture: 'X(1)' + default: '' + +codigo_ocorrencia: + # Código de Movimento Remessa + # Código adotado pela FEBRABAN, para identificar o tipo de movimentação enviado nos registros do + # arquivo de remessa. + # Cada Banco definirá os campos a serem alterados para o código de movimento ‘31’. + # --------------------------------- + # Código | Descrição + # --------------------------------- + # ‘01’ | Entrada de Títulos + # ‘02’ | Pedido de Baixa + # ‘04’ | Concessão de Abatimento + # ‘05’ | Cancelamento de Abatimento + # ‘06’ | Alteração de Vencimento + # ‘07’ | Concessão de Desconto + # ‘08’ | Cancelamento de Desconto + # ‘09’ | Protestar + # ‘10’ | Sustar Protesto e Baixar Título + # ‘31’ | Alteração de Outros Dados + pos: [16, 17] + picture: '9(2)' + +agencia: + # Código da Agência mantenedora da conta, fornecido pela CAIXA. + pos: [18, 22] + picture: '9(5)' + +agencia_dv: + # Dígito Verificador da Agência mantendedora da conta, fornecido pela CAIXA. + pos: [23,23] + picture: '9(1)' + +codigo_cedente: + # Código do Cedente + # Remessa: Código do Convênio no Banco (sem operação), tamanho: 12 posições, no formato + # 0000CCCCCCCC. + # Retorno: Código do Convênio no Banco (com operação), tamanho: 12 posições, no formato + # 0OOOCCCCCCCC. + # Onde: + # 0 = zero + # OOO = Operação + # CCCCCCCC = Cedente + pos: [24,35] + picture: '9(12)' + +codigo_cedente_dv: + # Dígito Verificador do Cedente + # Código adotado pela CAIXA, para verificação da autenticidade do Código do Cedente. Calculado + # através do módulo 11. + # Exemplo de como calcular o DV do Cedente: + # Agência/Código do Cedente: 0012.870.00000575-1 + # Para Remessa – Cedente sem operação e sem DV: 00000575 + # Para Retorno – Cedente com operação e sem DV: 87000000575 + # 0 0 0 0 0 5 7 5 + # 9 8 7 6 5 4 3 2 + # 0 0 0 0 0 20 21 10 + # 1ª linha – Código do Cedente + # 2ª linha – Índice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª linha – Multiplicação coluna por coluna (0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 3x3, 3x2) + # Soma-se os valores da 3ª linha: 0+0+0+0+0+20+21+10 = 51 + # Dividir o resultado da soma por onze: 51/11 = 4 (resto 7) + # Subtrair onze pelo resto da divisão: 11 – 7 = 4 + # O Dígito Verificador calculado para o Código de Cedente acima é 4 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + pos: [36,36] + picture: '9(1)' + +agencia_mais_cedente_dv: + # Dígito Verificador da Agência / Código do Cedente (Segmentos P e T) + # Código adotado pela CAIXA para verificação da autenticidade do par Código da Agência / Código do + # Cedente. Calculado através do módulo 11. + # Obs: Para o Retorno é o mesmo DV do Código do Cedente, fornecido pela CAIXA. + # Exemplo de como calcular o DV da Agência/Código do Cedente (Remessa): + # Agência/Código do Cedente: 0012.870.00000575-1 + # Agência (sem DV): 0012 + # Cedente (sem operação e sem DV) – tamanho 12 posições: 000000000575 + # 0 0 1 2 0 0 0 0 0 0 0 0 0 5 7 5 + # 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 + # 0 0 7 12 0 0 0 0 0 0 0 0 0 20 21 10 + # 1ª linha – Agência/Código do Cedente + # 2ª linha – índice multiplicação, preencher sequencialmente de 2 a 9 da direita para a esquerda + # 3ª linha – multiplicação coluna por coluna + # Soma-se os valores da 3ª linha: 0+0+7+12+0+0+0+0+0+0+0+0+0+20+21+10 = 70 + # Dividir o resultado da soma por onze: 70/11 = 6 (RESTO 4) + # Subtrair onze pelo resto da divisão: 11 – 4 = 7 + # O Dígito Verificador calculado para o Código de Cedente acima é 7 + # Obs.: se o resultado da subtração for maior que 9 (nove) o dígito será 0 (zero) + pos: [37,37] + picture: '9(1)' + +uso_exclusivo_banco_01: + # Uso Exclusivo CAIXA + # Deixar em branco + pos: [38,46] + picture: 'X(9)' + default: '' + +nosso_numero: + # Identificação do Título no Banco + # Número adotado pelo Banco Cedente para identificar o Título. + # Para código de movimento igual a '01' (Entrada de Títulos), caso esteja preenchido com zeros, a + # numeração será atribuída pela CAIXA. + # Para montagem do Nosso Número, quando a emissão do título é feita pelo cliente (carteiras + # Cobrança Rápida, Sem Registro e SAD), solicitar especificação à Agência CAIXA de + # relacionamento. + # Obs: Nosso Número Sem Registro com 16 posições (arquivo Retorno) – posições 106 a 130 do + # Segmento T (ver Nota G072). + pos: [47,57] + picture: '9(11)' + +codigo_carteira: + # Código da Carteira + # Código adotado pela FEBRABAN, para identificar a característica dos títulos dentro das modalidades de + # cobrança existentes no banco. + # ‘1’ = Cobrança Simples + # ‘3’ = Cobrança Caucionada + # ‘4’ = Cobrança Descontada + # O Código ‘1’ Cobrança Simples deve ser obrigatoriamente informado nas modalidades Cobrança Simples + # e Cobrança Rápida. + pos: [58,58] + picture: '9(1)' + +forma_cadastramento: + # Código adotado pela FEBRABAN, para indicar a existência de registro do título no banco. + # ‘1’ = Com Cadastramento (Cobrança Registrada) + # ‘2’ = Sem Cadastramento (Cobrança sem Registro) + pos: [59,59] + picture: '9(1)' + +tipo_documento: + # Código adotado pela FEBRABAN para identificar a existência material do documento no processo. + # Informar sempre ‘2’ + # ‘1’ = Tradicional + # ‘2’ = Escritural + pos: [60,60] + picture: 'X(1)' + default: '2' + +identificacao_emissao: + # Código adotado pela FEBRABAN para identificar o responsável e a forma de emissão do bloqueto. + # ‘1’ = Banco Emite + # ‘2’ = Cliente Emite + # ‘4’ = Banco Reemite + # ‘5’ = Banco Não Reemite + # Os códigos ‘4’ e ‘5’ só serão aceitos para código de movimento para remessa ‘07’ e ‘31’ + pos: [61,61] + picture: '9(1)' + default: '2' + +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' + +numero_documento: + # Número adotado e controlado pelo Cliente, para identificar o título de cobrança. + # Poderá conter número de duplicata, no caso de cobrança de duplicatas; número da apólice, no caso de + # cobrança de seguros, etc. Campo de preenchimento obrigatório. + pos: [63,73] + picture: 'X(11)' + +uso_exclusivo_banco_02: + # Deixar em branco + pos: [74,77] + picture: 'X(4)' + default: '' + +vencimento: + # Campo de informação da data de vencimento do título de cobrança. + # Utilizar o formato DDMMAAAA, onde : dd = dia, mm = mês, aa = ano + # “A Vista” Preencher com 11111111 + pos: [78,85] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_titulo: + # Valor original do Título. Quando o valor for expresso em moeda corrente, utilizar 2 casas decimais. + # Quando o valor for expresso em moeda variável, utilizar 5 decimais. + pos: [86, 100] + picture: '9(13)V9(2)' + +agencia_cobradora: + # Preencher com zeros - o sistema atribuirá a agência encarregada da cobrança pelo CEP do sacado. + # Código adotado pelo Banco responsável pela cobrança, para identificar o estabelecimento bancário + # responsável pela cobrança do título. + # Código e Dígito Verificador da Agência Encarregada da Cobrança são fornecidos pela CAIXA. Para + # essa informação solicitar a relação de agências cobradoras à agência CAIXA de relacionamento. + pos: [101, 105] + picture: '9(5)' + default: '0' + +agencia_cobradora_dv: + # Preencher com zeros - o sistema atribuirá a agência encarregada da cobrança pelo CEP do sacado. + # Código adotado pelo Banco responsável pela cobrança, para identificar o estabelecimento bancário + # responsável pela cobrança do título. + # Código e Dígito Verificador da Agência Encarregada da Cobrança são fornecidos pela CAIXA. Para + # essa informação solicitar a relação de agências cobradoras à agência CAIXA de relacionamento. + pos: [106, 106] + picture: '9(1)' + default: '0' + +especie: + # Espécie do Título + # Código adotado pela FEBRABAN para identificar o tipo de título de cobrança. + # Código ID Descrição + # ‘01’ CH Cheque + # ‘02’ DM Duplicata Mercantil + # ‘03’ DMI Duplicata Mercantil p/ Indicação + # ‘04’ DS Duplicata de Serviço + # ‘05’ DSI Duplicata de Serviço p/ Indicação + # ‘06’ DR Duplicata Rural + # ‘07’ LC Letra de Câmbio + # ‘08’ NCC Nota de Crédito Comercial + # ‘09’ NCE Nota de Crédito a Exportação + # ‘10’ NCI Nota de Crédito Industrial + # ‘11’ NCR Nota de Crédito Rural + # ‘12’ NP Nota Promissória + # ‘13’ NPR Nota Promissória Rural + # ‘14’ TM Triplicata Mercantil + # ‘15’ TS Triplicata de Serviço + # ‘16’ NS Nota de Seguro + # ‘17’ RC Recibo + # ‘18’ FAT Fatura + # ‘19’ ND Nota de Débito + # ‘20’ AP Apólice de Seguro + # ‘21’ ME Mensalidade Escolar + # ‘22’ PC Parcela de Consórcio + #‘99’ OU Outros + pos: [107,108] + picture: '9(2)' + +aceite: + # Identificação de Título Aceito / Não Aceito + # Código adotado pela FEBRABAN para identificar se o título de cobrança foi aceito (reconhecimento da + # dívida pelo Sacado). + # ‘A’ = Aceite + # ‘N’ = Não Aceite + pos: [109,109] + picture: 'X(1)' + +data_emissao: + pos: [110,117] + picture: '9(8)' + date_format: '%d%m%Y' + +codigo_juros_mora: + # ‘1’ = Valor por Dia + # ‘2’ = Taxa Mensal + # ‘3’ = Isento + pos: [118,118] + picture: 'X(1)' + +data_juros_mora: + pos: [119,126] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_juros_mora: + # Valor ou porcentagem sobre o valor do título a ser cobrado de juros de mora. + pos: [127, 141] + picture: '9(13)V9(2)' + +codigo_desconto_1: + # ‘0’ = Sem Desconto ‘1’ = Valor Fixo até a data informada ‘2’ = Percentual até a data informada + pos: [142, 142] + picture: '9(1)' + +data_desconto_1: + pos: [143, 150] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_desconto_1: + # Valor ou percentual de desconto a ser concedido sobre o título de cobrança. + pos: [151, 165] + picture: '9(13)V9(2)' + +valor_iof: + pos: [166, 180] + picture: '9(13)V9(2)' + default: '0' + +valor_abatimento: + pos: [181, 195] + picture: '9(13)V9(2)' + +uso_empresa: + pos: [196, 220] + picture: 'X(25)' + +codigo_protesto: + pos: [221, 221] + picture: '9(1)' + +prazo_protesto: + pos: [222, 223] + picture: '9(2)' + +codigo_baixa: + pos: [224, 224] + picture: '9(1)' + +prazo_baixa: + pos: [225, 227] + picture: '9(3)' + +codigo_moeda: + pos: [228, 229] + picture: '9(2)' + default: '09' + +uso_exclusivo_banco_03: + pos: [230, 239] + picture: '9(10)' + default: '0' + +uso_exclusivo_febraban_02: + pos: [240, 240] + picture: 'X(1)' + default: '' diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml new file mode 100755 index 0000000..dce3cb3 --- /dev/null +++ b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml @@ -0,0 +1,92 @@ +# Registro Detalhe - Segmento Q (Obrigatório - Remessa) +# Baseado na documentação da caixa +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '3' + +numero_sequencial_lote: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + default: 'Q' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + default: '' + +codigo_ocorrencia: + pos: [16, 17] + picture: '9(2)' + +sacado_codigo_inscricao: + pos: [18, 18] + picture: '9(1)' + +sacado_numero_inscricao: + pos: [19, 33] + picture: '9(15)' + +nome: + pos: [34, 73] + picture: 'X(40)' + +logradouro: + pos: [74, 113] + picture: 'X(40)' + +bairro: + pos: [114, 128] + picture: 'X(15)' + +cep: + pos: [129, 136] + picture: '9(8)' + +cidade: + pos: [137, 151] + picture: 'X(15)' + +estado: + pos: [152, 153] + picture: 'X(2)' + +sacador_codigo_inscricao: + pos: [154, 154] + picture: '9(1)' + +sacador_numero_inscricao: + pos: [155, 169] + picture: '9(15)' + +sacador_nome: + pos: [170, 209] + picture: 'X(40)' + +uso_exclusivo_febraban_02: + pos: [210, 212] + picture: 'X(3)' + default: '' + +uso_exclusivo_febraban_03: + pos: [213, 232] + picture: 'X(20)' + default: '' + +uso_exclusivo_febraban_04: + pos: [233, 240] + picture: 'X(8)' + default: '' + default: '' diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml new file mode 100755 index 0000000..599675d --- /dev/null +++ b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml @@ -0,0 +1,107 @@ +# Registro Detalhe - Segmento R (Obrigatório - Remessa) +# Baseado na documentação da caixa +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)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '3' + +numero_sequencial_lote: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + default: 'R' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + default: '' + +codigo_ocorrencia: + # Código de Movimento Remessa + # Código adotado pela FEBRABAN, para identificar o tipo de movimentação enviado nos registros do + # arquivo de remessa. + # Cada Banco definirá os campos a serem alterados para o código de movimento ‘31’. + # Código Descrição + # ‘01’ Entrada de Títulos + # ‘02’ Pedido de Baixa + # ‘04’ Concessão de Abatimento + # ‘05’ Cancelamento de Abatimento + # ‘06’ Alteração de Vencimento + # ‘07’ Concessão de Desconto + # ‘08’ Cancelamento de Desconto + # ‘09’ Protestar + # ‘10’ Sustar Protesto e Baixar Título + # ‘31’ Alteração de Outros Dados + pos: [16, 17] + picture: '9(2)' + +uso_exclusivo_febraban_02: + pos: [18, 65] + picture: 'X(48)' + default: '' + +codigo_multa: + # Código adotado pela FEBRABAN para identificação do critério de pagamento de pena pecuniária, a + # ser aplicada pelo atraso do pagamento do Título. Pode ser: + # '1' = Valor Fixo + # '2' = Percentual + # ‘0’ = Sem Multa + pos: [66, 66] + picture: '9(1)' + +data_multa: + # Data a partir da qual a multa deverá ser cobrada. Na ausência, será considerada a data de + # vencimento. Utilizar o formato DDMMAAAA, onde: + # DD = dia + # MM = mês + # AAAA = ano + pos: [67, 74] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_multa: + # Valor ou percentual de multa a ser aplicado sobre o valor do Título, por atraso no pagamento. + pos: [75, 89] + picture: '9(13)V9(2)' + +informacao_sacado: + # Texto de observações destinado ao envio de informações do Cedente ao Sacado. + # Este campo só poderá ser utilizado, caso haja troca de arquivos magnéticos entre o Banco e o Sacado. + pos: [90, 99] + picture: 'X(10)' + default: '' + +mensagem_3: + # Texto de observações destinado ao envio de mensagens livres, a serem impressas no campo de + # instruções da ficha de compensação do bloqueto (mensagem 3 e 4) e Recibo do Sacado (mensagem 5 a 8). + # As mensagens 3 e 4 prevalecem sobre as mensagens 1 e 2. + pos: [100, 139] + picture: 'X(40)' + default: '' + +mensagem_4: + # Texto de observações destinado ao envio de mensagens livres, a serem impressas no campo de + # instruções da ficha de compensação do bloqueto (mensagem 3 e 4) e Recibo do Sacado (mensagem 5 a 8). + # As mensagens 3 e 4 prevalecem sobre as mensagens 1 e 2. + pos: [140, 179] + picture: 'X(40)' + default: '' + +uso_exclusivo_febraban_03: + pos: [180, 240] + picture: 'X(61)' + default: '' diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml new file mode 100755 index 0000000..b603172 --- /dev/null +++ b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml @@ -0,0 +1,120 @@ +# Registro Detalhe - Segmento T (Obrigatório - Retorno) +# Baseado na documentação da Febraban Versão 08.8 + + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + +numero_sequencial_lote: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + +codigo_movimento: + pos: [16, 17] + picture: '9(2)' + +agencia_mantenedora: + pos: [18, 22] + picture: '9(5)' + +agencia_dv: + pos: [23, 23] + picture: '9(1)' + +codigo_cedente: + pos: [24, 35] + picture: '9(12)' + +codigo_cedente_dv: + pos: [36, 36] + picture: '9(1)' + +agencia_dv_mais_cedente_dv: + pos: [37, 37] + picture: '9(1)' + +nosso_numero: + pos: [38, 57] + picture: '9(20)' + +codigo_carteira: + pos: [58, 58] + picture: '9(1)' + +numero_documento: + pos: [59, 73] + picture: 'X(15)' + +data_vencimento: + pos: [74, 81] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_titulo: + pos: [82, 96] + picture: '9(13)V9(2)' + +numero_banco: + pos: [97, 99] + picture: '9(3)' + +agencia_cobradora: + pos: [100, 104] + picture: '9(5)' + +agencia_cobradora_dac: + pos: [105, 105] + picture: '9(1)' + +uso_empresa: + pos: [106, 130] + picture: 'X(25)' + +codigo_moeda: + pos: [131, 132] + picture: '9(2)' + +tipo_inscricao: + pos: [133, 133] + picture: '9(1)' + +numero_inscricao: + pos: [134, 148] + picture: '9(15)' + +nome_sacado: + pos: [149, 188] + picture: 'X(40)' + +uso_exclusivo_febraban_02: + pos: [189, 198] + picture: 'X(10)' + +valor_tarifa: + pos: [199, 213] + picture: '9(13)V9(2)' + +identificacao_rejeicao: + pos: [214, 223] + picture: '9(10)' + +uso_exclusivo_febraban: + pos: [224, 240] + picture: 'X(17)' diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml new file mode 100755 index 0000000..6a38277 --- /dev/null +++ b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml @@ -0,0 +1,104 @@ +# Registro Detalhe - Segmento U (Obrigatório - Retorno) +# Baseado na documentação da febraban versão 08.8 + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + +numero_sequencial_registro: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + +codigo_movimento: + pos: [16, 17] + picture: '9(2)' + +valor_acrescimos: + pos: [18, 32] + picture: '9(13)V9(2)' + +valor_desconto: + pos: [33, 47] + picture: '9(13)V9(2)' + +valor_abatimento: + pos: [48, 62] + picture: '9(13)V9(2)' + +valor_iof: + pos: [63, 77] + picture: '9(13)V9(2)' + +valor_pago: + pos: [78, 92] + picture: '9(13)V9(2)' + +valor_liquido: + pos: [93, 107] + picture: '9(13)V9(2)' + +valor_outras_despesas: + pos: [108, 122] + picture: '9(13)V9(2)' + +valor_outros_creditos: + pos: [123, 137] + picture: '9(13)V9(2)' + +data_ocorrencia: + pos: [138, 145] + picture: '9(8)' + date_format: '%d%m%Y' + +data_credito: + pos: [146, 153] + picture: '9(8)' + date_format: '%d%m%Y' + +# foi usado este nome para não confundir com código de ocorrência (que é o mesmo que código de movimento no CNAB 400) +ocorrencia_sacado_codigo: + pos: [154, 157] + picture: 'X(4)' + +ocorrencia_sacado_data: + pos: [158, 165] + picture: 'X(8)' + +ocorrencia_sacado_valor: + pos: [166, 180] + picture: '9(13)V9(2)' + +ocorrencia_sacado_complemento: + pos: [181, 210] + picture: 'X(30)' + +# Cód. Banco Correspondente Compens. +codigo_banco_correspondente: + pos: [211, 213] + picture: '9(3)' + +# Nosso No Banco Correspondente +nosso_numero_banco_correspondente: + pos: [214, 233] + picture: '9(20)' + +# Uso Exclusivo FEBRABAN/CNAB +uso_exclusivo_febraban_02: + pos: [234, 240] + picture: '9(7)' \ No newline at end of file diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml new file mode 100755 index 0000000..f880baf --- /dev/null +++ b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml @@ -0,0 +1,49 @@ +# Registro Detalhe - Segmento W (Opcional - Retorno) + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + +numero_sequencial: + pos: [9, 13] + picture: '9(5)' + +codigo_segmento: + pos: [14, 14] + picture: 'X(1)' + +uso_exclusivo_febraban_01: + pos: [15, 15] + picture: 'X(1)' + +codigo_movimento: + pos: [16, 17] + picture: '9(2)' + +posicao_relativa: + pos: [18, 23] + picture: '9(6)' + +uso_exclusivo_banco_01: + pos: [24, 24] + picture: 'X(1)' + +codigo_campo_01: + pos: [25, 28] + picture: '9(4)' + +codigo_erro_01: + pos: [29, 31] + picture: '9(3)' + +todo_repeat_codigo_campo_codigo_erro_20: + pos: [32, 157] + picture: 'X(126)' diff --git a/cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml b/cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml new file mode 100755 index 0000000..118fa62 --- /dev/null +++ b/cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml @@ -0,0 +1,79 @@ +# header do lote (captura de titulos em cobrança) +# baseado na documentação da caixa cef +# picture baseado na documentação do itaú + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: 'X(1)' + +tipo_operacao: + pos: [9, 9] + picture: '9(1)' + +tipo_servico: + pos: [10, 11] + picture: '9(2)' + +uso_exclusivo_febraban_01: + pos: [12, 13] + picture: 'X(2)' + +versao_layout_lote: + pos: [14, 16] + picture: '9(3)' + +uso_exclusivo_febraban_02: + pos: [17, 17] + picture: 'X(1)' + +tipo_inscricao_empresa: + pos: [18, 18] + picture: '9(1)' + +numero_inscricao_empresa: + pos: [19, 33] + picture: '9(15)' + +codigo_convenio: + pos: [34, 49] + picture: 'X(16)' + +uso_exclusivo_caixa_01: + pos: [50, 53] + picture: 'X(4)' + +agencia_mantenedora: + pos: [54, 58] + picture: '9(5)' + +agencia_dv: + pos: [59, 59] + picture: '9(1)' + +codigo_cedente: + pos: [60, 71] + picture: 'X(12)' + +codigo_cedente_dv: + pos: [72, 72] + picture: '9(1)' + +agencia_dv_mais_codigo_cedente_dv: + pos: [73, 73] + picture: '9(1)' + +nome_empresa: + pos: [74, 103] + picture: 'X(30)' + +uso_exclusivo_febraban_03: + pos: [104, 240] + picture: 'X(137)' diff --git a/cnab_yaml/cnab240/generic/trailer_arquivo.yml b/cnab_yaml/cnab240/generic/trailer_arquivo.yml new file mode 100644 index 0000000..3ac353e --- /dev/null +++ b/cnab_yaml/cnab240/generic/trailer_arquivo.yml @@ -0,0 +1,39 @@ +# Formato Trailer do Arquivo Cnab240 +# baseado na documentação da caixa cef + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + default: '9999' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '9' + +uso_exclusivo_febraban01: + pos: [9, 17] + picture: 'X(9)' + default: '' + +qtde_lotes: + pos: [18, 23] + picture: '9(6)' + +qtde_registros: + pos: [24, 29] + picture: '9(6)' + +uso_exclusivo_febraban02: + pos: [30, 35] + picture: 'X(6)' + default: '' + +uso_exclusivo_febraban_03: + pos: [36, 240] + picture: 'X(205)' + default: '' diff --git a/cnab_yaml/cnab240/generic/trailer_lote.yml b/cnab_yaml/cnab240/generic/trailer_lote.yml new file mode 100644 index 0000000..d5b9c2d --- /dev/null +++ b/cnab_yaml/cnab240/generic/trailer_lote.yml @@ -0,0 +1,68 @@ +# Registro Trailer de Lote +# Baseado na documentação da caixa (CNAB 240) + +codigo_banco: + pos: [1, 3] + picture: '9(3)' + +lote_servico: + pos: [4, 7] + picture: '9(4)' + +tipo_registro: + pos: [8, 8] + picture: '9(1)' + default: '5' + +uso_exclusivo_febraban_01: + pos: [9, 17] + picture: 'X(9)' + default: '' + +qtde_registro_lote: + pos: [18, 23] + picture: '9(6)' + +qtde_titulo_cobranca_simples: + pos: [24, 29] + picture: '9(6)' + +valor_total_titulo_simples: + pos: [30, 46] + picture: '9(15)V9(2)' + +uso_exclusivo_febraban_02: + pos: [47, 52] + picture: 'X(6)' + default: '' + +uso_exclusivo_febraban_03: + pos: [53, 69] + picture: '9(15)V9(2)' + default: '0' + +qtde_titulo_cobranca_caucionada: + pos: [70, 75] + picture: '9(6)' + +valor_total_titulo_caucionada: + pos: [76, 92] + picture: '9(15)V9(2)' + +qtde_titulo_cobranca_descontada: + pos: [93, 98] + picture: '9(6)' + +valor_total_titulo_descontada: + pos: [99, 115] + picture: '9(15)V9(2)' + +uso_exclusivo_febraban_04: + pos: [116, 123] + picture: 'X(8)' + default: '' + +uso_exclusivo_febraban_05: + pos: [124, 240] + picture: 'X(117)' + default: '' diff --git a/cnab_yaml/cnab400/001/retorno/codigo_ocorrencia.yml b/cnab_yaml/cnab400/001/retorno/codigo_ocorrencia.yml new file mode 100644 index 0000000..7a61ccc --- /dev/null +++ b/cnab_yaml/cnab400/001/retorno/codigo_ocorrencia.yml @@ -0,0 +1,43 @@ +# Banco do Brasil + +2: 'Confirmação de Entrada de Título' +3: 'Comando recusado (Motivo indicado na posição 087/088)' +5: 'Liquidado sem registro (carteira 17-tipo4)' +6: 'Liquidação Normal' +7: 'Liquidação por Conta/Parcial' +8: 'Liquidação por Saldo' +9: 'Baixa de Titulo' +10: 'Baixa Solicitada' +11: 'Títulos em Ser (constara somente do arquivo de existência de cobrança, fornecido mediante solicitação do cliente)' +12: 'Abatimento Concedido' +13: 'Abatimento Cancelado' +14: 'Alteração de Vencimento do título' +15: 'Liquidação em Cartório' +16: 'Confirmação de alteração de juros de mora' +19: 'Confirmação de recebimento de instruções para protesto' +20: 'Débito em Conta' +21: 'Alteração do Nome do Sacado' +22: 'Alteração do Endereço do Sacado' +23: 'Indicação de encaminhamento a cartório' +24: 'Sustar Protesto' +25: 'Dispensar Juros de mora' +26: 'Alteração do número do título dado pelo Cedente (Seu número) – 10 e 15 posições' +28: 'Manutenção de titulo vencido' +31: 'Conceder desconto' +32: 'Não conceder desconto' +33: 'Retificar desconto' +34: 'Alterar data para desconto' +35: 'Cobrar Multa' +36: 'Dispensar Multa' +37: 'Dispensar Indexador' +38: 'Dispensar prazo limite para recebimento' +39: 'Alterar prazo limite para recebimento' +41: 'Alteração do número do controle do participante (25 posições)' +42: 'Alteração do número do documento do sacado (CNPJ/CPF)' +44: 'Título pago com cheque devolvido' +46: 'Título pago com cheque, aguardando compensação' +72: 'Alteração de tipo de cobrança (específico para títulos das carteiras 11 e 17)' +73: 'Confirmação de Instrução de Parâmetro de Pagamento Parcial' +96: 'Despesas de Protesto' +97: 'Despesas de Sustação de Protesto' +98: 'Débito de Custas Antecipadas' diff --git a/cnab_yaml/cnab400/001/retorno/detalhe.yml b/cnab_yaml/cnab400/001/retorno/detalhe.yml new file mode 100644 index 0000000..e7d110e --- /dev/null +++ b/cnab_yaml/cnab400/001/retorno/detalhe.yml @@ -0,0 +1,170 @@ +# 001 = Banco do Brasil + +tipo_de_registro: + #Identificação Do Registro Transação para BB '7' + pos: [1, 1] + picture: '9(01)' + default: '7' + +zeros01: + pos: [2, 17] + picture: '9(16)' + default: 0 + +agencia_cobradora: + pos: [18, 21] + picture: '9(04)' + +agencia_cobradora_dac: + pos: [22, 22] + picture: '9(01)' + +conta_cedente: + pos: [23, 30] + picture: '9(08)' + +conta_cedente_dac: + pos: [31, 31] + picture: 'X(01)' + +convenio: + pos: [32, 38] + picture: '9(07)' + +controle_participante: + pos: [39, 63] + picture: 'X(25)' + +nosso_numero: + #Identificação Do Título No Banco + pos: [64, 80] + picture: '9(17)' + +tipo_cobranca: + #Nota 2 + pos: [81, 81] + picture: '9(01)' + +tipo_cobranca_especifico: + #Nota 3 + pos: [82, 82] + picture: '9(01)' + +dias_calculo: + #Nota 4 + pos: [83, 86] + picture: '9(04)' + +natureza_recebimento: + #Nota 5 + pos: [87, 88] + picture: '9(02)' + +prefixo_titulo: + #Nota 6 + pos: [89, 91] + picture: 'X(03)' + +variacao_carteira: + pos: [92, 94] + picture: '9(03)' + +conta_caucao: + #Nota 6 + pos: [95, 95] + picture: '9(01)' + +taxa_desconto: + pos: [96, 100] + picture: '9(05)' + +taxa_iof: + pos: [101, 105] + picture: '9(05)' + +zeros02: + pos: [106, 106] + picture: '9(1)' + default: 0 + +carteira: + pos: [107, 108] + picture: '9(2)' + +brancos01: + pos: [127, 146] + picture: 'X(20)' + default: '' + +data_credito: + #Data De Crédito Desta Liquidação + pos: [176, 181] + picture: '9(06)' + date_format: '%d%m%y' + +valor_tarifa: + #Valor Da Despesa De Cobrança + pos: [182, 188] + picture: '9(5)V9(2)' + +valor_outras_despesas: + pos: [189, 201] + picture: '9(11)V9(2)' + +valor_juros_desconto: + pos: [202, 214] + picture: '9(11)V9(2)' + +valor_juros: + pos: [267, 279] + picture: '9(11)V9(2)' + +valor_outros_recebimentos: + pos: [280, 292] + picture: '9(11)V9(2)' + +valor_abatimento_nao_aproveitado: + pos: [293, 305] + picture: '9(11)V9(2)' + +valor_lancamento: + pos: [306, 318] + picture: '9(11)V9(2)' + +indicativo_debito_credito: + #Nota 11 + pos: [319, 319] + picture: '9(01)' + +indicador_valor: + #Nota 12 + pos: [320, 320] + picture: '9(01)' + +valor_ajuste: + pos: [321, 332] + picture: '9(10)V9(2)' + +brancos02: + pos: [333, 333] + picture: 'X(1)' + default: '' + +zeros03: + pos: [334, 390] + picture: '9(57)' + default: 0 + +indicativo_autorizacao_liquidacao_parcial: + pos: [391, 391] + picture: '9(1)' + +brancos03: + pos: [392, 392] + picture: 'X(1)' + default: '' + +codigo_liquidacao: + #Nota 15 - Meio Pelo Qual O Título Foi Liquidado + pos: [393, 394] + picture: '9(02)' diff --git a/cnab_yaml/cnab400/001/retorno/header_arquivo.yml b/cnab_yaml/cnab400/001/retorno/header_arquivo.yml new file mode 100644 index 0000000..110905c --- /dev/null +++ b/cnab_yaml/cnab400/001/retorno/header_arquivo.yml @@ -0,0 +1,36 @@ +# 001 = Banco do Brasil + +codigo_cedente: + pos: [27, 40] + picture: '9(14)' + +zeros01: + pos: [41, 46] + picture: '9(06)' + default: 0 + +n_seq_arquivo_ret: + #Número Seqüencial Do Arquivo Retorno + pos: [101, 107] + picture: '9(07)' + +brancos01: + pos: [108, 149] + picture: 'X(042)' + default: '' + +numero_convenio: + pos: [150, 156] + picture: '9(07)' + default: 0 + +brancos02: + pos: [157, 394] + picture: 'X(238)' + default: '' + +numero_sequencial: + #Número Seqüencial Do Registro No Arquivo + pos: [395, 400] + picture: '9(06)' + default: 1 diff --git a/cnab_yaml/cnab400/001/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/001/retorno/trailer_arquivo.yml new file mode 100644 index 0000000..7072017 --- /dev/null +++ b/cnab_yaml/cnab400/001/retorno/trailer_arquivo.yml @@ -0,0 +1,94 @@ +# 001 = Banco do Brasil + +brancos01: + #Complemento De Registro + pos: [8, 17] + picture: 'X(10)' + +qtdede_titulos: + #Qtde. De Títulos Em Cobr. Simples + pos: [18, 25] + picture: '9(08)' + +valor_total: + #Total Dos Títulos Em Cobrança Simples + pos: [26, 39] + picture: '9(12)V9(2)' + +aviso_bancario: + #Referência Do Aviso Bancário + pos: [40, 47] + picture: 'X(08)' + +brancos02: + #Complemento Do Registro + pos: [48, 57] + picture: 'X(10)' + +qtdede_titulos_dup: + #Qtde De Títulos Em Cobrança/vinculada + pos: [58, 65] + picture: '9(08)' + +valor_total_dup: + #Vr Total Dos Títulos Em Cobrança/vinculada + pos: [66, 79] + picture: '9(12)V9(2)' + +aviso_bancario_dup: + #Nota 22 - Referência Do Aviso Bancário + pos: [80, 87] + picture: 'X(08)' + +brancos03: + #Cobrança Vinculada brancos + pos: [88, 97] + picture: 'X(10)' + +qtdede_titulos_dup2: + pos: [98, 105] + picture: '9(08)' + +valor_total_dup2: + pos: [106, 119] + picture: '9(12)V9(2)' + +aviso_bancario_dup2: + pos: [120, 127] + picture: 'X(08)' + +brancos04: + pos: [128, 137] + picture: 'X(10)' + +qtdede_titulos_dup3: + pos: [138, 145] + picture: '9(08)' + +valor_total_dup3: + pos: [146, 159] + picture: '9(12)V9(2)' + +aviso_bancario_dup3: + pos: [160, 167] + picture: 'X(08)' + +brancos05: + pos: [168, 217] + picture: 'X(50)' + +qtdede_titulos_dup4: + pos: [218, 225] + picture: '9(08)' + +valor_total_dup4: + pos: [226, 239] + picture: '9(12)V9(2)' + +aviso_bancario_dup4: + pos: [240, 247] + picture: 'X(08)' + +brancos06: + pos: [248, 394] + picture: 'X(147)' diff --git a/cnab_yaml/cnab400/104/retorno/codigo_ocorrencia.yml b/cnab_yaml/cnab400/104/retorno/codigo_ocorrencia.yml new file mode 100644 index 0000000..274dc5e --- /dev/null +++ b/cnab_yaml/cnab400/104/retorno/codigo_ocorrencia.yml @@ -0,0 +1,31 @@ +# Caixa Econômica Federal + +1: 'Entrada Confirmada' +2: 'Baixa Confirmada' +3: 'Abatimento Concedido' +4: 'Abatimento Cancelado' +5: 'Vencimento Alterado' +6: 'Uso da Empresa Alterado' +7: 'Prazo de Protesto Alterado' +8: 'Prazo de Devolução Alterado' +9: 'Alteração Confirmada' +10: 'Alteração com Reemissão de Bloqueto Confirmada' +11: 'Alteração da Opção de Protesto para Devolução' +12: 'Alteração da Opção de Devolução para protesto' +20: 'Em Ser' +21: 'Liquidação' +22: 'Liquidação em Cartório' +23: 'Baixa por Devolução' +24: 'Baixa por Franco Pagamento' +25: 'Baixa por Protesto' +26: 'Título enviado para Cartório' +27: 'Sustação de Protesto' +28: 'Estorno de Protesto' +29: 'Estorno de Sustação de Protesto' +30: 'Alteração de Título' +31: 'Tarifa sobre Título Vencido' +32: 'Outras Tarifas de Alteração' +33: 'Estorno de Baixa/Liquidação' +34: 'Transferência de Carteira/Entrada' +35: 'Transferência de Carteira/Baixa' +99: 'Rejeição do Título – Cód. Rejeição informado nas POS 80 a 82' diff --git a/cnab_yaml/cnab400/104/retorno/detalhe.yml b/cnab_yaml/cnab400/104/retorno/detalhe.yml new file mode 100644 index 0000000..11c6400 --- /dev/null +++ b/cnab_yaml/cnab400/104/retorno/detalhe.yml @@ -0,0 +1,82 @@ +# 104 = Caixa Econômica + +codigo_cedente: + pos: [18, 33] + picture: 'X(16)' + default: '' + +brancos01: + #Complemento De Registro + pos: [34, 37] + picture: 'X(04)' + default: '' + +nosso_numero: + #Identificação Do Título No Banco + pos: [63, 73] + picture: '9(11)' + +brancos21: + pos: [74, 79] + picture: 'X(6)' + +codigo_rejeicao: + pos: [80, 82] + picture: '9(3)' + +uso_do_banco: + pos: [83, 106] + picture: 'X(24)' + +carteira: + pos: [107, 108] + picture: '9(2)' + +brancos04: + #Complemento Do Registro + pos: [127, 146] + picture: 'X(20)' + +tipo_de_liquidacao: + pos: [189, 191] + picture: '9(3)' + +forma_de_pagamento: + pos: [192, 192] + picture: '9(1)' + +float: + pos: [193, 194] + picture: '9(2)' + +data_debito_tarifa: + pos: [195, 200] + picture: '9(6)' + date_format: '%d%m%y' + +brancos05: + pos: [201, 214] + picture: 'X(14)' + +valor_juros: + pos: [267, 279] + picture: '9(11)V9(2)' + +valor_multa: + pos: [280, 292] + picture: '9(11)V9(2)' + +moeda: + pos: [293, 293] + picture: '9(1)' + +data_credito: + #Data De Crédito Desta Liquidação + pos: [294, 299] + picture: 'X(06)' + date_format: '%d%m%y' + +brancos06: + #Data De Crédito Desta Liquidação + pos: [300, 394] + picture: 'X(95)' diff --git a/cnab_yaml/cnab400/104/retorno/header_arquivo.yml b/cnab_yaml/cnab400/104/retorno/header_arquivo.yml new file mode 100644 index 0000000..fc65dac --- /dev/null +++ b/cnab_yaml/cnab400/104/retorno/header_arquivo.yml @@ -0,0 +1,31 @@ +# 104 = Caixa Econômica + +codigo_cedente: + pos: [27, 42] + picture: '9(16)' + +brancos01: + pos: [43, 46] + picture: 'X(04)' + default: '' + +mensagem: + #Unidade Da Densidade + pos: [101, 158] + picture: 'X(58)' + +brancos02: + #Complemento Do Registro + pos: [159, 389] + picture: 'X(231)' + default: '' + +numero_sequencial_a: + pos: [390, 394] + picture: '9(05)' + default: '1' + +numero_sequencial_b: + pos: [395, 400] + picture: '9(06)' + default: '1' diff --git a/cnab_yaml/cnab400/104/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/104/retorno/trailer_arquivo.yml new file mode 100644 index 0000000..fc62f16 --- /dev/null +++ b/cnab_yaml/cnab400/104/retorno/trailer_arquivo.yml @@ -0,0 +1,6 @@ +# 104 = Caixa Econômica + +brancos01: + #Complemento De Registro + pos: [8, 394] + picture: 'X(387)' diff --git a/cnab_yaml/cnab400/237/retorno/codigo_ocorrencia.yml b/cnab_yaml/cnab400/237/retorno/codigo_ocorrencia.yml new file mode 100644 index 0000000..a223c32 --- /dev/null +++ b/cnab_yaml/cnab400/237/retorno/codigo_ocorrencia.yml @@ -0,0 +1,32 @@ +# Bradesco + +2: 'Entrada Confirmada' +3: 'Entrada Rejeitada' +6: 'Liquidação normal' +9: 'Baixado Automat. via Arquivo' +10: 'Baixado conforme instruções da Agência' +11: 'Em Ser - Arquivo de Títulos pendentes' +12: 'Abatimento Concedido' +13: 'Abatimento Cancelado' +14: 'Vencimento Alterado' +15: 'Liquidação em Cartório' +16: 'Título Pago em Cheque – Vinculado' +17: 'Liquidação após baixa ou Título não registrado' +18: 'Acerto de Depositária (sem motivo)' +19: 'Confirmação Receb. Inst. de Protesto' +20: 'Confirmação Recebimento Instrução Sustação de Protesto' +21: 'Acerto do Controle do Participante' +22: 'Título Com Pagamento Cancelado' +23: 'Entrada do Título em Cartório' +24: 'Entrada rejeitada por CEP Irregular' +27: 'Baixa Rejeitada' +28: 'Débito de tarifas/custas' +30: 'Alteração de Outros Dados Rejeitados' +32: 'Instrução Rejeitada' +33: 'Confirmação Pedido Alteração Outros Dados' +34: 'Retirado de Cartório e Manutenção Carteira' +35: 'Desagendamento do débito automático' +40: 'Estorno de pagamento' +55: 'Sustado judicial' +68: 'Acerto dos dados do rateio de Crédito' +69: 'Cancelamento dos dados do rateio' diff --git a/cnab_yaml/cnab400/237/retorno/detalhe.yml b/cnab_yaml/cnab400/237/retorno/detalhe.yml new file mode 100644 index 0000000..16a59ec --- /dev/null +++ b/cnab_yaml/cnab400/237/retorno/detalhe.yml @@ -0,0 +1,127 @@ +# 237 = Bradesco +# Pag 43, 021 - 037 (len 17) +# 0CCCAAAACCCCC + +zeros01: + pos: [18, 20] + picture: '9(3)' + default: 0 + +zeros02: + pos: [21, 21] + picture: '9(1)' + default: 0 + +carteira: + pos: [22, 24] + picture: '9(3)' + +agencia: + pos: [25, 29] + picture: '9(5)' + +conta: + pos: [30, 36] + picture: '9(7)' + +conta_dac: + pos: [37, 37] + picture: '9(1)' + +zeros03: + pos: [63, 70] + picture: '9(8)' + +nosso_numero: + pos: [71, 82] + picture: '9(12)' + +uso_banco01: + pos: [83, 92] + picture: 'X(10)' + +uso_banco02: + pos: [93, 104] + picture: '9(12)' + +indicador_rateio: + pos: [105, 105] + picture: 'X(1)' + +zeros04: + pos: [106, 107] + picture: '9(2)' + +carteira_cod: + pos: [108, 108] + picture: 'X(1)' + +nosso_numero_dup: + # Esta duplicado, é a mesma coisa que nosso_numero + pos: [127, 146] + picture: '9(20)' + +valor_outras_despesas: + pos: [189, 201] + picture: '9(11)V9(2)' + +valor_outras_despesas: + pos: [202, 214] + picture: '9(11)V9(2)' + +valor_mora_multa: + pos: [267, 279] + picture: '9(11)V9(2)' + +valor_outros_creditos: + pos: [280, 292] + picture: '9(11)V9(2)' + +brancos01: + pos: [293, 294] + picture: 'X(2)' + +motivo_ocorrencia: + # Motivo do Código de Ocorrência 19 (Confirmação de Instrução de Protesto) + # A – Aceito, D – Desprezado, Vide Obs. Pág. 50 + pos: [295, 295] + picture: 'X(1)' + +data_credito: + pos: [296, 301] + picture: '9(6)' + date_format: '%d%m%y' + +origem_pagamento: + # Vide OBS Pág + pos: [302, 304] + picture: '9(3)' + +brancos02: + pos: [305, 314] + picture: 'X(10)' + +codigo_banco: + pos: [315, 318] + picture: '9(4)' + +motivo_rejeicao: + # Motivo Vide Obs. Pág. 50 + pos: [319, 328] + picture: '9(10)' + +brancos03: + pos: [329, 368] + picture: 'X(40)' + +numero_cartorio: + pos: [369, 370] + picture: '9(2)' + +numero_protocolo: + pos: [371, 380] + picture: 'X(10)' + +brancos04: + pos: [381, 394] + picture: 'X(14)' diff --git a/cnab_yaml/cnab400/237/retorno/header_arquivo.yml b/cnab_yaml/cnab400/237/retorno/header_arquivo.yml new file mode 100644 index 0000000..63fbfa2 --- /dev/null +++ b/cnab_yaml/cnab400/237/retorno/header_arquivo.yml @@ -0,0 +1,36 @@ +# 237 = Bradesco + +codigo_cedente: + # Código da Empresa, Número da Empresa + pos: [27, 46] + picture: '9(20)' + +zeros01: + pos: [101, 108] + picture: '9(8)' + default: 0 + +numero_aviso_bancario: + pos: [109, 113] + picture: '9(5)' + +brancos01: + pos: [114, 379] + picture: 'X(266)' + default: '' + +data_de_credito: + pos: [380, 385] + picture: '9(6)' + date_format: '%d%m%y' + +brancos02: + pos: [386, 394] + picture: 'X(9)' + default: '' + +numero_sequencial: + #Número Seqüencial Do Registro No Arquivo + pos: [395, 400] + picture: '9(06)' + default: 1 diff --git a/cnab_yaml/cnab400/237/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/237/retorno/trailer_arquivo.yml new file mode 100644 index 0000000..ad816d7 --- /dev/null +++ b/cnab_yaml/cnab400/237/retorno/trailer_arquivo.yml @@ -0,0 +1,8 @@ +# 237 = Itaú +# Existem campos de quantidade de boleto que por enquanto não serão utilizados +# por isso foram omitidos com a nossa criação de um campo "brancos01" + +brancos01: + #Complemento De Registro + pos: [8, 394] + picture: 'X(387)' \ No newline at end of file diff --git a/cnab_yaml/cnab400/341/retorno/codigo_ocorrencia.yml b/cnab_yaml/cnab400/341/retorno/codigo_ocorrencia.yml new file mode 100644 index 0000000..4ec87ac --- /dev/null +++ b/cnab_yaml/cnab400/341/retorno/codigo_ocorrencia.yml @@ -0,0 +1,65 @@ +# Itaú + +2: 'ENTRADA CONFIRMADA COM POSSIBILIDADE DE MENSAGEM (NOTA 20 – TABELA 10) ' +3: 'ENTRADA REJEITADA (NOTA 20 - TABELA 1)' +4: 'ALTERAÇÃO DE DADOS - NOVA ENTRADA OU ALTERAÇÃO/EXCLUSÃO DE DADOS ACATADA ' +5: 'ALTERAÇÃO DE DADOS – BAIXA' +6: 'LIQUIDAÇÃO NORMAL ' +7: 'LIQUIDAÇÃO PARCIAL – COBRANÇA INTELIGENTE (B2B)' +8: 'LIQUIDAÇÃO EM CARTÓRIO ' +9: 'BAIXA SIMPLES' +10: 'BAIXA POR TER SIDO LIQUIDADO ' +11: 'EM SER (SÓ NO RETORNO MENSAL)' +12: 'ABATIMENTO CONCEDIDO ' +13: 'ABATIMENTO CANCELADO' +14: 'VENCIMENTO ALTERADO ' +15: 'BAIXAS REJEITADAS (NOTA 20 - TABELA 4)' +16: 'INSTRUÇÕES REJEITADAS (NOTA 20 - TABELA 3) ' +17: 'ALTERAÇÃO/EXCLUSÃO DE DADOS REJEITADOS (NOTA 20 - TABELA 2)' +18: 'COBRANÇA CONTRATUAL - INSTRUÇÕES/ALTERAÇÕES REJEITADAS/PENDENTES (NOTA 20 - TABELA 5) ' +19: 'CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE PROTESTO' +20: 'CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE SUSTAÇÃO DE PROTESTO /TARIFA' +21: 'CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE NÃO PROTESTAR' +23: 'TÍTULO ENVIADO A CARTÓRIO/TARIFA' +24: 'INSTRUÇÃO DE PROTESTO REJEITADA / SUSTADA / PENDENTE (NOTA 20 - TABELA 7)' +25: 'ALEGAÇÕES DO SACADO (NOTA 20 - TABELA 6)' +26: 'TARIFA DE AVISO DE COBRANÇA' +27: 'TARIFA DE EXTRATO POSIÇÃO (B40X)' +28: 'TARIFA DE RELAÇÃO DAS LIQUIDAÇÕES' +29: 'TARIFA DE MANUTENÇÃO DE TÍTULOS VENCIDOS' +30: 'DÉBITO MENSAL DE TARIFAS (PARA ENTRADAS E BAIXAS)' +32: 'BAIXA POR TER SIDO PROTESTADO' +33: 'CUSTAS DE PROTESTO' +34: 'CUSTAS DE SUSTAÇÃO' +35: 'CUSTAS DE CARTÓRIO DISTRIBUIDOR' +36: 'CUSTAS DE EDITAL' +37: 'TARIFA DE EMISSÃO DE BOLETO/TARIFA DE ENVIO DE DUPLICATA' +38: 'TARIFA DE INSTRUÇÃO' +39: 'TARIFA DE OCORRÊNCIAS' +40: 'TARIFA MENSAL DE EMISSÃO DE BOLETO/TARIFA MENSAL DE ENVIO DE DUPLICATA' +41: 'DÉBITO MENSAL DE TARIFAS – EXTRATO DE POSIÇÃO (B4EP/B4OX)' +42: 'DÉBITO MENSAL DE TARIFAS – OUTRAS INSTRUÇÕES' +43: 'DÉBITO MENSAL DE TARIFAS – MANUTENÇÃO DE TÍTULOS VENCIDOS' +44: 'DÉBITO MENSAL DE TARIFAS – OUTRAS OCORRÊNCIAS' +45: 'DÉBITO MENSAL DE TARIFAS – PROTESTO' +46: 'DÉBITO MENSAL DE TARIFAS – SUSTAÇÃO DE PROTESTO' +47: 'BAIXA COM TRANSFERÊNCIA PARA DESCONTO' +48: 'CUSTAS DE SUSTAÇÃO JUDICIAL' +51: 'TARIFA MENSAL REF A ENTRADAS BANCOS CORRESPONDENTES NA CARTEIRA' +52: 'TARIFA MENSAL BAIXAS NA CARTEIRA' +53: 'TARIFA MENSAL BAIXAS EM BANCOS CORRESPONDENTES NA CARTEIRA' +54: 'TARIFA MENSAL DE LIQUIDAÇÕES NA CARTEIRA' +55: 'TARIFA MENSAL DE LIQUIDAÇÕES EM BANCOS CORRESPONDENTES NA CARTEIRA' +56: 'CUSTAS DE IRREGULARIDADE' +57: 'INSTRUÇÃO CANCELADA (NOTA 20 – TABELA 8)' +59: 'BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG' +60: 'ENTRADA REJEITADA CARNÊ (NOTA 20 – TABELA 1)' +61: 'TARIFA EMISSÃO AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154)' +62: 'DÉBITO MENSAL DE TARIFA - AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154)' +63: 'TÍTULO SUSTADO JUDICIALMENTE' +64: 'ENTRADA CONFIRMADA COM RATEIO DE CRÉDITO' +69: 'CHEQUE DEVOLVIDO (NOTA 20 - TABELA 9)' +71: 'ENTRADA REGISTRADA, AGUARDANDO AVALIAÇÃO' +72: 'BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG SEM TÍTULO CORRESPONDENTE' +73: 'CONFIRMAÇÃO DE ENTRADA NA COBRANÇA SIMPLES – ENTRADA NÃO ACEITA NA COBRANÇA CONTRATUAL' +76: 'CHEQUE COMPENSADO' diff --git a/cnab_yaml/cnab400/341/retorno/detalhe.yml b/cnab_yaml/cnab400/341/retorno/detalhe.yml new file mode 100644 index 0000000..e87a8a3 --- /dev/null +++ b/cnab_yaml/cnab400/341/retorno/detalhe.yml @@ -0,0 +1,143 @@ +# 341 = Itaú + +agencia: + #Agência Mantenedora Da Conta + pos: [18, 21] + picture: '9(04)' + +zeros01: + #Complemento De Registro + pos: [22, 23] + picture: '9(02)' + default: '00' + +conta: + #Número Da Conta Corrente Da Empresa + pos: [24, 28] + picture: '9(05)' + +dac: + #Dígito De Auto Conferência Ag/conta Empresa + pos: [29, 29] + picture: '9(01)' + +brancos01: + #Complemento De Registro + pos: [30, 37] + picture: 'X(08)' + +nosso_numero: + #Identificação Do Título No Banco + pos: [63, 70] + picture: '9(08)' + +brancos02: + #Complemento Do Registro + pos: [71, 82] + picture: 'X(12)' + +carteira: + #Nota 5 - Numero Da Carteira + pos: [83, 85] + picture: '9(03)' + +nosso_numero_dup: + #Nota 3 - Identificação Do Título No Banco + pos: [86, 93] + picture: '9(08)' + +dac_nosso_numero: + #Nota 3 - Dac Do Nosso Número + pos: [94, 94] + picture: '9(01)' + +brancos03: + #Complemento Do Registro + pos: [95, 107] + picture: 'X(13)' + +carteira_cod: + #Nota 5 - Código Da Carteira + pos: [108, 108] + picture: 'X(01)' + +nosso_numero_dup2: + #Confirmação Do Número Do Título No Banco + pos: [127, 134] + picture: '9(08)' + +brancos04: + #Complemento Do Registro + pos: [135, 146] + picture: 'X(12)' + +brancos05: + #Complemento Do Registro + pos: [189, 214] + picture: 'X(26)' + +valor_mora_multa: + #Valor De Mora E Multa + pos: [267, 279] + picture: '9(11)V9(2)' + +valor_outros_creditos: + #Valor De Outros Créditos + pos: [280, 292] + picture: '9(11)V9(2)' + +boleto_dda: + #Nota 34 - Indicador De Boleto Dda + pos: [293, 293] + picture: 'X(01)' + +brancos06: + #Complemento Do Registro + pos: [294, 295] + picture: 'X(02)' + +data_credito: + #Data De Crédito Desta Liquidação + pos: [296, 301] + picture: 'X(06)' + date_format: '%d%m%y' + +instr_cancelada: + #Nota 20 - Código Da Instrução Cancelada + pos: [302, 305] + picture: '9(04)' + +brancos07: + #Complemento De Registro + pos: [306, 311] + picture: 'X(06)' + +zeros02: + #Complemento De Registro + pos: [312, 324] + picture: '9(13)' + +nome_do_sacado: + #Nome Do Sacado + pos: [325, 354] + picture: 'X(30)' + +brancos08: + #Complemento Do Registro + pos: [355, 377] + picture: 'X(23)' + +erros: + #Nota 20 - Mensagem Informativa Registros Rejeitados Ou Alegação Do Sacado Ou Registro De Mensagem Informativa + pos: [378, 385] + picture: 'X(08)' + +brancos09: + #Complemento Do Registro + pos: [386, 392] + picture: 'X(07)' + +codigo_liquidacao: + #Nota 28 - Meio Pelo Qual O Título Foi Liquidado + pos: [393, 394] + picture: 'X(02)' diff --git a/cnab_yaml/cnab400/341/retorno/header_arquivo.yml b/cnab_yaml/cnab400/341/retorno/header_arquivo.yml new file mode 100644 index 0000000..5526259 --- /dev/null +++ b/cnab_yaml/cnab400/341/retorno/header_arquivo.yml @@ -0,0 +1,62 @@ +# 341 = Itaú + +cobranca: + #Agência Agência Mantenedora Da Conta + pos: [27, 30] + picture: '9(04)' + +zeros01: + #Complemento De Registro + pos: [31, 32] + picture: '9(02)' + default: '00' + +conta: + #Número Da Conta Corrente Da Empresa + pos: [33, 37] + picture: '9(05)' + +dac: + #Dígito De Auto Conferência Ag/conta Empresa + pos: [38, 38] + picture: '9(01)' + +brancos01: + #Complemento Do Registro + pos: [39, 46] + picture: 'X(08)' + default: '' + +densidade: + #Unidade Da Densidade + pos: [101, 105] + picture: '9(05)' + +unidade_de_densid: + #Densidade De Gravação Do Arquivo + pos: [106, 108] + picture: 'X(03)' + default: 'BPI' + +n_seq_arquivo_ret: + #Número Seqüencial Do Arquivo Retorno + pos: [109, 113] + picture: '9(05)' + +data_de_credito: + #Data De Crédito Dos Lançamentos + pos: [114, 119] + picture: '9(06)' + date_format: '%d%m%y' + +brancos02: + #Complemento Do Registro + pos: [120, 394] + picture: 'X(275)' + default: '' + +numero_sequencial: + #Número Seqüencial Do Registro No Arquivo + pos: [395, 400] + picture: '9(06)' + default: 1 diff --git a/cnab_yaml/cnab400/341/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/341/retorno/trailer_arquivo.yml new file mode 100644 index 0000000..c33a940 --- /dev/null +++ b/cnab_yaml/cnab400/341/retorno/trailer_arquivo.yml @@ -0,0 +1,81 @@ +# 341 = Itaú + +brancos01: + #Complemento De Registro + pos: [8, 17] + picture: 'X(10)' + +qtdede_titulos: + #Nota 21 - Qtde. De Títulos Em Cobr. Simples + pos: [18, 25] + picture: '9(08)' + +valor_total: + #Nota 21 - Vr Total Dos Títulos Em Cobrança Simples + pos: [26, 39] + picture: '9(12)V9(2)' + +aviso_bancario: + #Nota 22 - Referência Do Aviso Bancário + pos: [40, 47] + picture: 'X(08)' + +brancos02: + #Complemento Do Registro + pos: [48, 57] + picture: 'X(10)' + +qtdede_titulos_dup: + #Nota 21 - Qtde De Títulos Em Cobrança/vinculada + pos: [58, 65] + picture: '9(08)' + +valor_total_dup: + #Nota 21 - Vr Total Dos Títulos Em Cobrança/vinculada + pos: [66, 79] + picture: '9(12)V9(2)' + +aviso_bancario_dup: + #Nota 22 - Referência Do Aviso Bancário + pos: [80, 87] + picture: 'X(08)' + +brancos03: + #Complemento Do Registro + pos: [88, 177] + picture: 'X(90)' + +qtdede_titulos_dup2: + #Nota 21 - Qtde. De Títulos Em Cobr. Direta./escritural + pos: [178, 185] + picture: '9(08)' + +valor_total_dup2: + #Vr Total Dos Títulos Em Cobr. Direta/escrit. + pos: [186, 199] + picture: '9(12)V9(2) NOTA 21' + +aviso_bancario_dup2: + #Nota 22 - Referência Do Aviso Bancário + pos: [200, 207] + picture: 'X(08)' + +controle_do_arquivo: + #Número Seqüencial Do Arquivo Retorno + pos: [208, 212] + picture: '9(05)' + +qtde_de_detalhes: + #Quantidade De Registros De Transação + pos: [213, 220] + picture: '9(08)' + +vlr_total_informado: + #Valor Dos Títulos Informados No Arquivo + pos: [221, 234] + picture: '9(12)V9(2)' + +brancos04: + #Complemento Do Registro + pos: [235, 394] + picture: 'X(160)' diff --git a/cnab_yaml/cnab400/generic/remessa/detalhe.yml b/cnab_yaml/cnab400/generic/remessa/detalhe.yml new file mode 100755 index 0000000..857fa70 --- /dev/null +++ b/cnab_yaml/cnab400/generic/remessa/detalhe.yml @@ -0,0 +1,206 @@ +# Baseado na documentação do itau + +tipo_registro: + pos: [1, 1] + picture: '9(01)' + default: '1' + +codigo_inscricao: + pos: [2, 3] + picture: '9(02)' + +numero_inscricao: + pos: [4, 17] + picture: '9(14)' + +agencia: + pos: [18, 21] + picture: '9(04)' + +zeros01: + pos: [22, 23] + picture: '9(02)' + default: '0' + +conta: + pos: [24, 28] + picture: '9(05)' + +conta_dv: + pos: [29, 29] + picture: '9(01)' + +brancos01: + pos: [30, 33] + picture: 'X(04)' + default: '' + +codigo_instrucao: + pos: [34, 37] + picture: '9(04)' + +uso_empresa: + pos: [38, 62] + picture: 'X(25)' + +nosso_numero: + pos: [63, 70] + picture: '9(08)' + +qtde_moeda: + pos: [71, 83] + picture: '9(08)V9(5)' + +numero_carteira: + pos: [84, 86] + picture: '9(03)' + +uso_banco: + pos: [87, 107] + picture: 'X(21)' + +codigo_carteira: + pos: [108, 108] + picture: 'X(01)' + +codigo_ocorrencia: + pos: [109, 110] + picture: '9(02)' + default: '1' + +numero_documento: + pos: [111, 120] + picture: 'X(10)' + +vencimento: + pos: [121, 126] + picture: '9(06)' + +valor_titulo: + pos: [127, 139] + picture: '9(11)V9(2)' + +codigo_banco: + pos: [140, 142] + picture: '9(03)' + default: '341' + +agencia_cobradora: + pos: [143, 147] + picture: '9(05)' + default: '0' + +especie: + pos: [148, 149] + picture: 'X(02)' + +aceite: + pos: [150, 150] + picture: 'X(01)' + +data_emissao: + pos: [151, 156] + picture: '9(06)' + date_format: '%d%m%y' + +instrucao1: + pos: [157, 158] + picture: 'X(02)' + default: '05' + +instrucao2: + pos: [159, 160] + picture: 'X(02)' + default: '20' + +juros_um_dia: + pos: [161, 173] + picture: '9(11)V9(2)' + default: '0' + +desconto_ate: + pos: [174, 179] + picture: '9(06)' + default: '0' + date_format: '%d%m%y' + +valor_desconto: + pos: [180, 192] + picture: '9(11)V9(2)' + default: '0' + +valor_iof: + pos: [193, 205] + picture: '9(11)V9(2)' + default: '0' + +abatimento: + pos: [206, 218] + picture: '9(11)V9(2)' + default: '0' + +sacado_codigo_inscricao: + pos: [219, 220] + picture: '9(02)' + +sacado_numero_inscricao: + pos: [221, 234] + picture: '9(14)' + +nome: + pos: [235, 264] + picture: 'X(30)' + +brancos02: + pos: [265, 274] + picture: 'X(10)' + default: '' + +logradouro: + pos: [275, 314] + picture: 'X(40)' + +bairro: + pos: [315, 326] + picture: 'X(12)' + +cep: + pos: [327, 334] + picture: '9(08)' + +cidade: + pos: [335, 349] + picture: 'X(15)' + +estado: + pos: [350, 351] + picture: 'X(02)' + +sacador: + pos: [352, 381] + picture: 'X(30)' + +brancos03: + pos: [382, 385] + picture: 'X(04)' + default: '' + +data_mora: + pos: [386, 391] + picture: '9(06)' + default: '0' + date_format: '%d%m%y' + +prazo: + pos: [392, 393] + picture: '9(02)' + default: '0' + +brancos04: + pos: [394, 394] + picture: 'X(01)' + default: '' + +numero_sequencial: + pos: [395, 400] + picture: '9(06)' diff --git a/cnab_yaml/cnab400/generic/remessa/detalhe_multa.yml b/cnab_yaml/cnab400/generic/remessa/detalhe_multa.yml new file mode 100644 index 0000000..57419b1 --- /dev/null +++ b/cnab_yaml/cnab400/generic/remessa/detalhe_multa.yml @@ -0,0 +1,28 @@ +# Baseado na documentação do itau + +tipo_registro: + pos: [1, 1] + picture: '9(1)' + default: '2' + +codigo_multa: + pos: [2, 2] + picture: 'X(1)' + +data_multa: + pos: [3, 10] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_multa: + pos: [11, 23] + picture: '9(11)V9(2)' + +brancos01: + pos: [24, 394] + picture: 'X(371)' + default: '' + +numero_sequencial: + pos: [395, 400] + picture: '9(6)' \ No newline at end of file diff --git a/cnab_yaml/cnab400/generic/remessa/header_arquivo.yml b/cnab_yaml/cnab400/generic/remessa/header_arquivo.yml new file mode 100755 index 0000000..90e8adf --- /dev/null +++ b/cnab_yaml/cnab400/generic/remessa/header_arquivo.yml @@ -0,0 +1,78 @@ +# Baseado na documentação do ITAU + +tipo_registro: + pos: [1, 1] + picture: '9(01)' + default: '0' + +tipo_operacao: + # 1 = Remessa + pos: [2, 2] + picture: '9(01)' + default: '1' + +literal_remessa: + pos: [3, 9] + picture: 'X(07)' + default: 'REMESSA' + +codigo_servico: + pos: [10, 11] + picture: '9(02)' + default: '1' + +literal_servico: + pos: [12, 26] + picture: 'X(15)' + default: 'COBRANCA' + +agencia: + pos: [27, 30] + picture: '9(04)' + +zeros01: + pos: [31, 32] + picture: '9(02)' + default: '0' + +conta: + pos: [33, 37] + picture: '9(05)' + +conta_dv: + pos: [38, 38] + picture: '9(01)' + +brancos01: + pos: [39, 46] + picture: 'X(08)' + default: '' + +nome_empresa: + pos: [47, 76] + picture: 'X(30)' + +codigo_banco: + pos: [77, 79] + picture: '9(03)' + default: '341' + +nome_banco: + pos: [80, 94] + picture: 'X(15)' + #default: 'BANCO ITAU SA' + +data_geracao: + pos: [95, 100] + picture: '9(06)' + date_format: '%d%m%y' + +brancos02: + pos: [101, 394] + picture: 'X(294)' + default: '' + +numero_sequencial: + pos: [395, 400] + picture: '9(06)' + default: '1' \ No newline at end of file diff --git a/cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml b/cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml new file mode 100755 index 0000000..2a4b227 --- /dev/null +++ b/cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml @@ -0,0 +1,15 @@ +# Baseado na documentação do ITAU + +tipo_registro: + pos: [1, 1] + picture: '9(01)' + default: '9' + +brancos01: + pos: [2, 394] + picture: 'X(393)' + default: '' + +numero_sequencial: + pos: [395, 400] + picture: '9(06)' diff --git a/cnab_yaml/cnab400/generic/retorno/detalhe.yml b/cnab_yaml/cnab400/generic/retorno/detalhe.yml new file mode 100755 index 0000000..cd6cd9b --- /dev/null +++ b/cnab_yaml/cnab400/generic/retorno/detalhe.yml @@ -0,0 +1,100 @@ +# Registro de Detalhe +# Baseado na documentação da Caixa e do Itaú + +tipo_de_registro: + #Identificação Do Registro Transação + pos: [1, 1] + picture: '9(01)' + default: '1' + +codigo_de_inscricao: + #Identificação Do Tipo De Inscrição/empresa + pos: [2, 3] + picture: '9(02)' + +numero_de_inscricao: + #Número De Inscrição Da Empresa (cpf/cnpj) + pos: [4, 17] + picture: '9(14)' + +uso_da_empresa: + #Nota 2 - Identificação Do Título Na Empresa + pos: [38, 62] + picture: 'X(25)' + +codigo_de_ocorrencia: + #Nota 17 - Identificação Da Ocorrência + pos: [109, 110] + picture: '9(02)' + +data_de_ocorrencia: + #Data De Ocorrência No Banco + pos: [111, 116] + picture: '9(06)' + date_format: '%d%m%y' + +numero_do_documento: + #Nota 18 - Nº Do Documento De Cobrança (dupl, Np Etc) + pos: [117, 126] + picture: 'X(10)' + +data_vencimento: + #Data De Vencimento Do Título + pos: [147, 152] + picture: '9(06)' + date_format: '%d%m%y' + +valor_do_titulo: + #Valor Nominal Do Título + pos: [153, 165] + picture: '9(11)V9(2)' + +codigo_do_banco: + #Número Do Banco Na Câmara De Compensação + pos: [166, 168] + picture: '9(03)' + +agencia_cobradora: + #Nota 9 - Ag. Cobradora, Ag. De Liquidação Ou Baixa + pos: [169, 172] + picture: '9(04)' + +agencia_cobradora_dac: + #Dac Da Agência Cobradora + pos: [173, 173] + picture: '9(01)' + +especie: + #Nota 10 - Espécie Do Título + pos: [174, 175] + picture: '9(02)' + +valor_tarifa: + #Valor Da Despesa De Cobrança + pos: [176, 188] + picture: '9(11)V9(2)' + +valor_iof: + #Valor Do Iof A Ser Recolhido (notas Seguro) + pos: [215, 227] + picture: '9(11)V9(2)' + +valor_abatimento: + #Nota 19 - Valor Do Abatimento Concedido + pos: [228, 240] + picture: '9(11)V9(2)' + +valor_desconto: + #Nota 19 - Valor Do Desconto Concedido + pos: [241, 253] + picture: '9(11)V9(2)' + +valor_principal: + #Valor Lançado Em Conta Corrente + pos: [254, 266] + picture: '9(11)V9(2)' + +numero_sequencial: + #Número Seqüencial Do Registro No Arquivo + pos: [395, 400] + picture: '9(06)' diff --git a/cnab_yaml/cnab400/generic/retorno/header_arquivo.yml b/cnab_yaml/cnab400/generic/retorno/header_arquivo.yml new file mode 100755 index 0000000..1c09861 --- /dev/null +++ b/cnab_yaml/cnab400/generic/retorno/header_arquivo.yml @@ -0,0 +1,51 @@ +# Registro de Detalhe, Retorno +# Baseado na documentação da Caixa e do Itaú + +tipo_de_registro: + #Identificação Do Registro Header + pos: [1, 1] + picture: '9(01)' + default: '0' + +codigo_de_retorno: + #Identificação Do Arquivo Retorno + pos: [2, 2] + picture: '9(01)' + default: '2' + +literal_de_retorno: + #Identificação. Por Extenso Do Tipo De Movimento + pos: [3, 9] + picture: 'X(07)' + +retorno_codigo_do_servico: + #Identificação Do Tipo De Serviço + pos: [10, 11] + picture: '9(02)' + default: '01' + +literal_de_servico: + #Identificação Por Extenso Do Tipo De Serviço + pos: [12, 26] + picture: 'X(15)' + +nome_da_empresa: + #Nome Por Extenso Da "empresa Mãe" + pos: [47, 76] + picture: 'X(30)' + +codigo_do_banco: + #Número Do Banco Na Câmara De Compensação + pos: [77, 79] + picture: '9(03)' + +nome_do_banco: + #Nome Por Extenso Do Banco Cobrador + pos: [80, 94] + picture: 'X(15)' + +data_de_geracao: + #Data De Geração Do Arquivo + pos: [95, 100] + picture: '9(06)' + date_format: '%d%m%y' diff --git a/cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml new file mode 100755 index 0000000..8e57ab5 --- /dev/null +++ b/cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml @@ -0,0 +1,30 @@ +# Registro de Detalhe, Retorno +# Baseado na documentação da Caixa e do Itaú + +tipo_de_registro: + #Identificação Do Registro Trailer + pos: [1, 1] + picture: '9(01)' + default: '9' + +codigo_de_retorno: + #Identificação De Arquivo Retorno + pos: [2, 2] + picture: '9(01)' + default: '2' + +codigo_de_servico: + #Identificação Do Tipo De Serviço + pos: [3, 4] + picture: '9(02)' + default: '01' + +codigo_do_banco: + #Identificação Do Banco Na Compensação + pos: [5, 7] + picture: '9(03)' + +numero_sequencial: + #Número Seqüencial Do Registro No Arquivo + pos: [395, 400] + picture: '9(06)' diff --git a/cnab_yaml/composer.json b/cnab_yaml/composer.json new file mode 100755 index 0000000..c89eb17 --- /dev/null +++ b/cnab_yaml/composer.json @@ -0,0 +1,19 @@ +{ + "name": "andersondanilo/cnab_yaml", + "type": "library", + "description": "Especificação do formato Cnab240 e Cnab400 traduzida para Yaml", + "keywords": ["boleto", "remessa", "retorno", "cnab", "cnab240", "cnab400", "edi", "yaml"], + "licence": "MIT", + "authors": [ + { + "name": "Anderson Danilo", + "email": "andersondanilo.souza@gmail.com" + }, + { + "name": "Fernando Dutra neres", + "email": "fernando@inova2b.com.br" + } + ], + "require": {}, + "config": {} +} diff --git a/cnab_yaml/package.json b/cnab_yaml/package.json new file mode 100644 index 0000000..83fcb94 --- /dev/null +++ b/cnab_yaml/package.json @@ -0,0 +1,7 @@ + +{ + "name": "cnab_yaml", + "version": "1.2.9", + "license": "MIT", + "repository": "https://github.com/andersondanilo/cnab_yaml" +} diff --git a/src/Cnab/Especie.php b/src/Cnab/Especie.php index 6a791bf..a59d50a 100755 --- a/src/Cnab/Especie.php +++ b/src/Cnab/Especie.php @@ -1,7 +1,6 @@ fields as $fieldNome => $field) { + if ($field->getValue() === null || $field->getValue() === false) { + $this->last_error = "$fieldNome dont be null or false"; return false; diff --git a/src/Cnab/Format/YamlLoad.php b/src/Cnab/Format/YamlLoad.php index 8180f6a..249edac 100755 --- a/src/Cnab/Format/YamlLoad.php +++ b/src/Cnab/Format/YamlLoad.php @@ -9,14 +9,16 @@ class YamlLoad public $codigo_banco = null; public $formatPath; public $layoutVersao; + public $fileNameGeneric; protected static $loaded = array(); - public function __construct($codigo_banco, $layoutVersao = null) + public function __construct($codigo_banco, $layoutVersao = null, $fileNameGeneric = null) { $this->codigo_banco = $codigo_banco; $this->layoutVersao = $layoutVersao; $this->formatPath = Factory::getCnabFormatPath(); + $this->fileNameGeneric = $fileNameGeneric; } public function validateCollision($fields) @@ -77,7 +79,6 @@ public function loadArray(Linha $cnabLinha, $array) $end = $info['pos'][1]; $default = isset($info['default']) ? $info['default'] : false; $options = $info; - $cnabLinha->addField($name, $start, $end, $picture, $default, $options); } } @@ -92,13 +93,18 @@ public function loadYaml($filename) } static::$loaded[$filename] = spyc_load_file($filename); } + return static::$loaded[$filename]; } public function loadFormat($cnab, $filename) { + if($this->fileNameGeneric == null){ + $this->fileNameGeneric = $filename; + } + $banco = sprintf('%03d', $this->codigo_banco); - $filenamePadrao = $this->formatPath.'/'.$cnab.'/generic/'.$filename.'.yml'; + $filenamePadrao = $this->formatPath.'/'.$cnab.'/generic/'.$this->fileNameGeneric.'.yml'; $filenameEspecifico = $this->formatPath.'/'.$cnab.'/'.$banco.'/'.$filename.'.yml'; if ($this->layoutVersao != null && $this->codigo_banco == 104) { diff --git a/src/Cnab/Remessa/Cnab240/Arquivo.php b/src/Cnab/Remessa/Cnab240/Arquivo.php index 563685d..1a332e0 100644 --- a/src/Cnab/Remessa/Cnab240/Arquivo.php +++ b/src/Cnab/Remessa/Cnab240/Arquivo.php @@ -38,7 +38,7 @@ public function configure(array $params) $campos[] = 'codigo_cedente'; } - if($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { + if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { $campos[] = 'codigo_convenio'; $campos[] = 'codigo_carteira'; $campos[] = 'variacao_carteira'; @@ -53,7 +53,15 @@ public function configure(array $params) $campos[] = 'numero_sequencial_arquivo'; } + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + $campos[] = 'codigo_cedente'; + $campos[] = 'agencia'; + $campos[] = 'agencia_dv'; + $campos[] = 'conta'; + $campos[] = 'conta_dv'; + $campos[] = 'numero_sequencial_arquivo'; + } foreach ($campos as $campo) { if (array_key_exists($campo, $params)) { @@ -62,13 +70,13 @@ public function configure(array $params) } $this->configuracao[$campo] = $params[$campo]; } else { - throw new \Exception('Configuração "'.$campo.'" need to be set'); + throw new \Exception('Configuração "' . $campo . '" need to be set'); } } foreach ($campos as $key) { if (!array_key_exists($key, $params)) { - throw new Exception('Configuração "'.$key.'" dont exists'); + throw new Exception('Configuração "' . $key . '" dont exists'); } } @@ -86,7 +94,7 @@ public function configure(array $params) $this->headerArquivo->agencia = $this->configuracao['agencia']; $this->headerArquivo->agencia_dv = $this->configuracao['agencia_dv']; - if($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { + if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { $this->headerArquivo->codigo_convenio = $this->configuracao['codigo_convenio']; $this->headerArquivo->carteira = $this->configuracao['codigo_carteira']; $this->headerArquivo->variacao_carteira = $this->configuracao['variacao_carteira']; @@ -94,7 +102,11 @@ public function configure(array $params) $this->headerArquivo->conta_dv = $this->configuracao['conta_dv']; } - if($this->codigo_banco == \Cnab\Banco::CEF) { + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + + } + + if ($this->codigo_banco == \Cnab\Banco::CEF || $this->codigo_banco == \Cnab\Banco::SANTANDER) { $this->headerArquivo->codigo_cedente = $this->configuracao['codigo_cedente']; } @@ -106,7 +118,7 @@ public function configure(array $params) $this->headerArquivo->numero_sequencial_arquivo = $this->configuracao['numero_sequencial_arquivo']; if ($this->codigo_banco == \Cnab\Banco::CEF) { - if($this->layoutVersao === 'sigcb') { + if ($this->layoutVersao === 'sigcb') { $this->headerArquivo->codigo_convenio = 0; } else { $codigoConvenio = sprintf( @@ -134,6 +146,11 @@ public function configure(array $params) $this->headerLote->codigo_cedente = $this->headerArquivo->codigo_cedente; } + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + $this->headerLote->codigo_cedente = $this->configuracao['codigo_cedente']; + + } + if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { $this->headerLote->codigo_convenio = $this->headerArquivo->codigo_convenio; $this->headerLote->carteira = $this->headerArquivo->carteira; @@ -207,24 +224,35 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->codigo_cedente = $this->headerArquivo->codigo_cedente; } - if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { - $detalhe->segmento_p->conta = $this->headerArquivo->conta; - $detalhe->segmento_p->conta_dv = $this->headerArquivo->conta_dv; + if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL || $this->codigo_banco == \Cnab\Banco::SANTANDER) { + $detalhe->segmento_p->conta = $this->configuracao['conta']; + $detalhe->segmento_p->conta_dv = $this->configuracao['conta_dv']; + } + + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + $detalhe->segmento_p->conta_cobranca = $this->configuracao['conta']; + $detalhe->segmento_p->conta_cobranca_dv = $this->configuracao['conta_dv']; + + } $detalhe->segmento_p->nosso_numero = $this->formatarNossoNumero($boleto['nosso_numero']); - if($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { + if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { // Informar 1 – para carteira 11/12 na modalidade Simples; 2 ou 3 – para carteira 11/17 modalidade // Vinculada/Caucionada e carteira 31; 4 – para carteira 11/17 modalidade Descontada e carteira 51; e 7 – para // carteira 17 modalidade Simples. - if($boleto['carteira'] == 17 && $boleto['codigo_carteira'] == \Cnab\CodigoCarteira::COBRANCA_SIMPLES) { + if ($boleto['carteira'] == 17 && $boleto['codigo_carteira'] == \Cnab\CodigoCarteira::COBRANCA_SIMPLES) { $detalhe->segmento_p->codigo_carteira = 7; } else { $detalhe->segmento_p->codigo_carteira = $boleto['codigo_carteira']; } } + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + $detalhe->segmento_p->codigo_carteira = $boleto['carteira']; + } + if ($this->layoutVersao === 'sigcb' && $this->codigo_banco == \Cnab\Banco::CEF) { $detalhe->segmento_p->codigo_carteira = 1; // 1 = Cobrança Simples $detalhe->segmento_p->modalidade_carteira = $boleto['modalidade_carteira']; // 21 = (título Sem Registro emissão CAIXA) @@ -240,7 +268,7 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->especie = $boleto['especie']; // 4 = Duplicata serviço $detalhe->segmento_p->aceite = $boleto['aceite']; $detalhe->segmento_p->data_emissao = $dateCadastro; - $detalhe->segmento_p->codigo_juros_mora = 1; // 1 = Por dia + $detalhe->segmento_p->codigo_juros_mora = $boleto['codigo_juros_mora']; // 1 = Por dia if (!empty($boleto['dias_iniciar_contagem_juros']) && is_numeric($boleto['dias_iniciar_contagem_juros'])) { $dateJurosMora->modify("+{$boleto['dias_iniciar_contagem_juros']} days"); @@ -278,8 +306,8 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->codigo_baixa = 0; $detalhe->segmento_p->prazo_baixa = 0; } else { - if(isset($boleto['baixar_apos_dias'])) { - if($boleto['baixar_apos_dias'] === false) { + if (isset($boleto['baixar_apos_dias'])) { + if ($boleto['baixar_apos_dias'] === false) { // não baixar / devolver $detalhe->segmento_p->codigo_baixa = 2; $detalhe->segmento_p->prazo_baixa = 0; @@ -303,7 +331,7 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') } elseif ($tipo == 'baixa') { $detalhe->segmento_p->codigo_ocorrencia = 2; } else { - throw new \Exception('Tipo de detalhe inválido: '.$tipo); + throw new \Exception('Tipo de detalhe inválido: ' . $tipo); } // SEGMENTO Q ------------------------------- @@ -334,29 +362,47 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_r->lote_servico = $detalhe->segmento_p->lote_servico; $detalhe->segmento_r->codigo_ocorrencia = $detalhe->segmento_p->codigo_ocorrencia; if ($boleto['valor_multa'] > 0) { - $detalhe->segmento_r->codigo_multa = 1; - $detalhe->segmento_r->valor_multa = $boleto['valor_multa']; - $detalhe->segmento_r->data_multa = $boleto['data_multa']; + if($boleto['codigo_multa'] == 2){ + $detalhe->segmento_r->codigo_multa = 2; + $detalhe->segmento_r->valor_multa = $boleto['valor_multa']; + $detalhe->segmento_r->data_multa = $boleto['data_multa']; + }else{ + $detalhe->segmento_r->codigo_multa = 1; + $detalhe->segmento_r->valor_multa = $boleto['valor_multa']; + $detalhe->segmento_r->data_multa = $boleto['data_multa']; + } + } else { $detalhe->segmento_r->codigo_multa = 0; $detalhe->segmento_r->valor_multa = 0; $detalhe->segmento_r->data_multa = 0; } + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + if ($boleto['valor_desconto'] > 0) { + + $detalhe->segmento_r->data_desconto_02 = $boleto['data_desconto']; + $detalhe->segmento_r->valor_desconto_02 = $boleto['valor_desconto']; + } else { + // sem desconto + $detalhe->segmento_r->data_desconto_02 = 0; + $detalhe->segmento_r->valor_desconto_02 = 0; + } + } $this->detalhes[] = $detalhe; } public function formatarNossoNumero($nossoNumero) { - if(!$nossoNumero) + if (!$nossoNumero) return $nossoNumero; if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { $codigo_convenio = $this->configuracao['codigo_convenio']; - if(strlen($codigo_convenio) <= 4) { + if (strlen($codigo_convenio) <= 4) { # Convênio de 4 digitos - if(strlen($nossoNumero) > 7) { + if (strlen($nossoNumero) > 7) { throw new \InvalidArgumentException( "Para número de convênio de 4 posições o nosso número deve ter no máximo 7 posições (sem o digito)" ); @@ -365,7 +411,7 @@ public function formatarNossoNumero($nossoNumero) return $number . $this->mod11($number); } elseif (strlen($codigo_convenio) <= 6) { # Convênio de 6 digitos - if(strlen($nossoNumero) > 5) { + if (strlen($nossoNumero) > 5) { throw new \InvalidArgumentException( "Para número de convênio de 6 posições o nosso número deve ter no máximo 5 posições (sem o digito)" ); @@ -373,7 +419,7 @@ public function formatarNossoNumero($nossoNumero) $number = sprintf('%06d%05d', $codigo_convenio, $nossoNumero); return $number . $this->mod11($number); } else { - if(strlen($nossoNumero) > 10) { + if (strlen($nossoNumero) > 10) { throw new \InvalidArgumentException( "Para número de convênio de 7 posições o nosso número deve ter no máximo 10 posições" ); @@ -405,21 +451,21 @@ private function removeAccents($string) { return preg_replace( array( - '/\xc3[\x80-\x85]/', - '/\xc3\x87/', - '/\xc3[\x88-\x8b]/', - '/\xc3[\x8c-\x8f]/', - '/\xc3([\x92-\x96]|\x98)/', - '/\xc3[\x99-\x9c]/', - - '/\xc3[\xa0-\xa5]/', - '/\xc3\xa7/', - '/\xc3[\xa8-\xab]/', - '/\xc3[\xac-\xaf]/', - '/\xc3([\xb2-\xb6]|\xb8)/', - '/\xc3[\xb9-\xbc]/', - '/\xC2\xAA/', - '/\xC2\xBA/', + '/\xc3[\x80-\x85]/', + '/\xc3\x87/', + '/\xc3[\x88-\x8b]/', + '/\xc3[\x8c-\x8f]/', + '/\xc3([\x92-\x96]|\x98)/', + '/\xc3[\x99-\x9c]/', + + '/\xc3[\xa0-\xa5]/', + '/\xc3\xa7/', + '/\xc3[\xa8-\xab]/', + '/\xc3[\xac-\xaf]/', + '/\xc3([\xb2-\xb6]|\xb8)/', + '/\xc3[\xb9-\xbc]/', + '/\xC2\xAA/', + '/\xC2\xBA/', ), str_split('ACEIOUaceiouao', 1), $this->isUtf8($string) ? $string : utf8_encode($string) @@ -438,7 +484,7 @@ private function isUtf8($string) | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', - $string + $string ); } @@ -458,8 +504,9 @@ public function getText() throw new \InvalidArgumentException($this->headerLote->last_error); } - $dados = $this->headerArquivo->getEncoded().self::QUEBRA_LINHA; - $dados .= $this->headerLote->getEncoded().self::QUEBRA_LINHA; + $dados = $this->headerArquivo->getEncoded() . self::QUEBRA_LINHA; + + $dados .= $this->headerLote->getEncoded() . self::QUEBRA_LINHA; foreach ($this->detalhes as $detalhe) { ++$qtde_titulo_cobranca_simples; @@ -473,18 +520,14 @@ public function getText() throw new \InvalidArgumentException($detalhe->last_error); } - $dados .= $detalhe->getEncoded().self::QUEBRA_LINHA; + $dados .= $detalhe->getEncoded() . self::QUEBRA_LINHA; } $this->trailerLote->qtde_registro_lote = $qtde_registro_lote; - if ($this->codigo_banco == \Cnab\Banco::CEF) { + if ($this->codigo_banco == \Cnab\Banco::CEF || $this->codigo_banco == \Cnab\Banco::SANTANDER) { $this->trailerLote->qtde_titulo_cobranca_simples = $qtde_titulo_cobranca_simples; $this->trailerLote->valor_total_titulo_simples = $valor_total_titulo_simples; - $this->trailerLote->qtde_titulo_cobranca_caucionada = 0; - $this->trailerLote->valor_total_titulo_caucionada = 0; - $this->trailerLote->qtde_titulo_cobranca_descontada = 0; - $this->trailerLote->valor_total_titulo_descontada = 0; } $this->trailerArquivo->qtde_lotes = 1; @@ -498,8 +541,8 @@ public function getText() throw new \InvalidArgumentException($this->trailerArquivo->last_error); } - $dados .= $this->trailerLote->getEncoded().self::QUEBRA_LINHA; - $dados .= $this->trailerArquivo->getEncoded().self::QUEBRA_LINHA; + $dados .= $this->trailerLote->getEncoded() . self::QUEBRA_LINHA; + $dados .= $this->trailerArquivo->getEncoded() . self::QUEBRA_LINHA; return $dados; } diff --git a/src/Cnab/Remessa/Cnab240/HeaderArquivo.php b/src/Cnab/Remessa/Cnab240/HeaderArquivo.php index 8bec036..4514ff3 100644 --- a/src/Cnab/Remessa/Cnab240/HeaderArquivo.php +++ b/src/Cnab/Remessa/Cnab240/HeaderArquivo.php @@ -7,6 +7,7 @@ class HeaderArquivo extends \Cnab\Format\Linha public function __construct(\Cnab\Remessa\IArquivo $arquivo) { $yamlLoad = new \Cnab\Format\YamlLoad($arquivo->codigo_banco, $arquivo->layoutVersao); - $yamlLoad->load($this, 'cnab240', 'header_arquivo'); + $yamlLoad->fileNameGeneric = 'header_arquivo'; + $yamlLoad->load($this, 'cnab240', 'remessa/header_arquivo'); } } diff --git a/src/Cnab/Remessa/Cnab240/HeaderLote.php b/src/Cnab/Remessa/Cnab240/HeaderLote.php index 1f86e97..82f81c6 100644 --- a/src/Cnab/Remessa/Cnab240/HeaderLote.php +++ b/src/Cnab/Remessa/Cnab240/HeaderLote.php @@ -7,6 +7,7 @@ class HeaderLote extends \Cnab\Format\Linha public function __construct(\Cnab\Remessa\IArquivo $arquivo) { $yamlLoad = new \Cnab\Format\YamlLoad($arquivo->codigo_banco, $arquivo->layoutVersao); - $yamlLoad->load($this, 'cnab240', 'header_lote'); + $yamlLoad->fileNameGeneric = 'header_lote'; + $yamlLoad->load($this, 'cnab240', 'remessa/header_lote'); } } diff --git a/tests/exemplo_remessa.php b/tests/exemplo_remessa.php new file mode 100644 index 0000000..13ef8bb --- /dev/null +++ b/tests/exemplo_remessa.php @@ -0,0 +1,70 @@ +configure(array( + 'data_geracao' => new DateTime(), + 'data_gravacao' => new DateTime(), + 'nome_fantasia' => '', // seu nome de empresa + 'razao_social' => '', // sua razão social + 'cnpj' => '', // seu cnpj completo + 'banco' => $codigo_banco, //código do banco + 'logradouro' => '', + 'numero' => '', + 'bairro' => '', + 'cidade' => '', + 'uf' => '', + 'cep' => '', + 'agencia' => '', + 'agencia_dv' => '', + 'conta' => '', // número da conta + 'conta_dv' => '', // número da conta + 'conta_dac' => '', // digito da conta, + 'codigo_cedente' => '', + 'numero_sequencial_arquivo' => 1, + 'codigo_transmissao' => $agencia . $codigo_cedente +)); + +// você pode adicionar vários boletos em uma remessa +$arquivo->insertDetalhe(array( + 'codigo_ocorrencia' => 1, + 'nosso_numero' => '', + 'numero_documento' => '', + 'carteira' => '1', + 'especie' => Cnab\Especie::SANTANDER_DUPLICATA_MERCANTIL, // Você pode consultar as especies Cnab\Especie + 'valor' => 100.39, // Valor do boleto + 'instrucao1' => 2, // 1 = Protestar com (Prazo) dias, 2 = Devolver após (Prazo) dias, futuramente poderemos ter uma constante + 'instrucao2' => 0, // preenchido com zeros + 'sacado_nome' => '', // O Sacado é o cliente, preste atenção nos campos abaixo + 'sacado_tipo' => 'cpf', //campo fixo, escreva 'cpf' (sim as letras cpf) se for pessoa fisica, cnpj se for pessoa juridica + 'sacado_cpf' => '',//cpf com mascara + 'sacado_logradouro' => '',// Rua + 'sacado_bairro' => '',// Bairro + 'sacado_cep' => '', // sem hífem + 'sacado_cidade' => '',//Cidade + 'sacado_uf' => 'RS', //Sigla estado + 'data_vencimento' => new DateTime('2017-02-28'), + 'data_cadastro' => new DateTime('2017-02-01'), + 'juros_de_um_dia' => 2.00, // Valor do juros de 1 dia' + 'data_desconto' => new DateTime('2017-02-15'), + 'valor_desconto' => 10.0, // Valor do desconto + 'prazo' => 10, // prazo de dias para o cliente pagar após o vencimento + 'taxa_de_permanencia' => '0', //00 = Acata Comissão por Dia (recomendável), 51 Acata Condições de Cadastramento na CAIXA + 'mensagem' => 'Mensalidade', + 'data_multa' => new DateTime('2017-03-01'), // data da multa + 'valor_multa' => 10.0, // valor da multa, + 'aceite' =>'N', + 'registrado' => 1, + 'codigo_protesto' =>'0', + 'codigo_multa' => 2, + 'codigo_juros_mora' => 2 +)); +// para salvar +$arquivo->save('exemplo.txt'); + +?> \ No newline at end of file From ff6f608c79f476e4f17be2dd3135056dac6f0bf0 Mon Sep 17 00:00:00 2001 From: Bruno Tonin Date: Mon, 17 Apr 2017 15:26:19 -0300 Subject: [PATCH 3/6] =?UTF-8?q?feitas=20mudan=C3=A7as=20para=20remessa=20s?= =?UTF-8?q?antander?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 0 README.md | 0 cnab_yaml/LICENSE | 0 cnab_yaml/README.md | 0 .../033/remessa/detalhe_segmento_p.yml | 5 + cnab_yaml/cnab240/033/trailer_lote.yml | 47 +-------- cnab_yaml/cnab240/041/header_arquivo.yml | 47 +++++++++ cnab_yaml/cnab240/041/header_lote.yml | 39 ++++++++ .../041/remessa/detalhe_segmento_p.yml | 72 ++++++++++++++ .../041/remessa/detalhe_segmento_q.yml | 4 + .../041/remessa/detalhe_segmento_r.yml | 28 ++++++ .../cnab240/041/remessa/header_arquivo.yml | 93 ++++++++++++++++++ cnab_yaml/cnab240/041/remessa/header_lote.yml | 34 +++++++ .../041/retorno/detalhe_segmento_t.yml | 97 +++++++++++++++++++ cnab_yaml/cnab240/041/trailer_lote.yml | 47 +++++++++ cnab_yaml/cnab240/generic/header_arquivo.yml | 2 +- cnab_yaml/cnab240/generic/header_lote.yml | 2 +- .../generic/remessa/detalhe_segmento_p.yml | 0 .../generic/remessa/detalhe_segmento_q.yml | 0 .../generic/remessa/detalhe_segmento_r.yml | 0 .../generic/retorno/detalhe_segmento_t.yml | 0 .../generic/retorno/detalhe_segmento_u.yml | 0 .../generic/retorno/detalhe_segmento_w.yml | 0 .../generic/retorno/header_lote_captura.yml | 0 cnab_yaml/cnab400/generic/remessa/detalhe.yml | 0 .../generic/remessa/header_arquivo.yml | 0 .../generic/remessa/trailer_arquivo.yml | 0 cnab_yaml/cnab400/generic/retorno/detalhe.yml | 0 .../generic/retorno/header_arquivo.yml | 0 .../generic/retorno/trailer_arquivo.yml | 0 cnab_yaml/composer.json | 0 composer.json | 0 phpunit.xml.dist | 0 src/Cnab/Banco.php | 8 +- src/Cnab/Especie.php | 1 + src/Cnab/Factory.php | 0 src/Cnab/Format/Field.php | 0 src/Cnab/Format/Identifier.php | 0 src/Cnab/Format/Linha.php | 1 + src/Cnab/Format/Picture.php | 0 src/Cnab/Format/YamlLoad.php | 0 src/Cnab/Remessa/Cnab240/Arquivo.php | 64 +++++++++--- src/Cnab/Remessa/Cnab400/Arquivo.php | 0 src/Cnab/Remessa/Cnab400/Detalhe.php | 0 src/Cnab/Remessa/Cnab400/Trailer.php | 0 src/Cnab/Remessa/IArquivo.php | 0 src/Cnab/Retorno/Cnab240/Arquivo.php | 0 src/Cnab/Retorno/Cnab240/Detalhe.php | 0 src/Cnab/Retorno/Cnab240/HeaderArquivo.php | 0 src/Cnab/Retorno/Cnab240/HeaderLote.php | 0 src/Cnab/Retorno/Cnab240/Lote.php | 0 src/Cnab/Retorno/Cnab240/SegmentoT.php | 0 src/Cnab/Retorno/Cnab240/SegmentoU.php | 0 src/Cnab/Retorno/Cnab240/SegmentoW.php | 0 src/Cnab/Retorno/Cnab240/TrailerArquivo.php | 0 src/Cnab/Retorno/Cnab240/TrailerLote.php | 0 src/Cnab/Retorno/Cnab400/Arquivo.php | 0 src/Cnab/Retorno/Cnab400/Detalhe.php | 0 src/Cnab/Retorno/Cnab400/Header.php | 0 src/Cnab/Retorno/Cnab400/Trailer.php | 0 src/Cnab/Retorno/IArquivo.php | 0 src/Cnab/Retorno/IDetalhe.php | 0 tests/Cnab/BancoTest.php | 0 tests/Cnab/Format/LinhaTest.php | 0 tests/Cnab/Format/YamlLoadTest.php | 0 tests/Cnab/Retorno/Cnab240/ArquivoTest.php | 0 tests/Cnab/Retorno/Cnab400/ArquivoTest.php | 0 tests/bootstrap.php | 0 .../cnab240/retorno_cnab240_caixa.ret | 0 tests/fixtures/cnab240/retorno_santander.ret | 0 .../cnab400/retorno-cb030400-bradesco.ret | 0 .../fixtures/cnab400/retorno-cnab400-itau.ret | 0 72 files changed, 529 insertions(+), 62 deletions(-) mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README.md mode change 100755 => 100644 cnab_yaml/LICENSE mode change 100755 => 100644 cnab_yaml/README.md create mode 100644 cnab_yaml/cnab240/041/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/041/header_lote.yml create mode 100644 cnab_yaml/cnab240/041/remessa/detalhe_segmento_p.yml create mode 100644 cnab_yaml/cnab240/041/remessa/detalhe_segmento_q.yml create mode 100644 cnab_yaml/cnab240/041/remessa/detalhe_segmento_r.yml create mode 100644 cnab_yaml/cnab240/041/remessa/header_arquivo.yml create mode 100644 cnab_yaml/cnab240/041/remessa/header_lote.yml create mode 100644 cnab_yaml/cnab240/041/retorno/detalhe_segmento_t.yml create mode 100644 cnab_yaml/cnab240/041/trailer_lote.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml mode change 100755 => 100644 cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/remessa/detalhe.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/remessa/header_arquivo.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/retorno/detalhe.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/retorno/header_arquivo.yml mode change 100755 => 100644 cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml mode change 100755 => 100644 cnab_yaml/composer.json mode change 100755 => 100644 composer.json mode change 100755 => 100644 phpunit.xml.dist mode change 100755 => 100644 src/Cnab/Banco.php mode change 100755 => 100644 src/Cnab/Especie.php mode change 100755 => 100644 src/Cnab/Factory.php mode change 100755 => 100644 src/Cnab/Format/Field.php mode change 100755 => 100644 src/Cnab/Format/Identifier.php mode change 100755 => 100644 src/Cnab/Format/Linha.php mode change 100755 => 100644 src/Cnab/Format/Picture.php mode change 100755 => 100644 src/Cnab/Format/YamlLoad.php mode change 100755 => 100644 src/Cnab/Remessa/Cnab400/Arquivo.php mode change 100755 => 100644 src/Cnab/Remessa/Cnab400/Detalhe.php mode change 100755 => 100644 src/Cnab/Remessa/Cnab400/Trailer.php mode change 100755 => 100644 src/Cnab/Remessa/IArquivo.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/Arquivo.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/Detalhe.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/HeaderArquivo.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/HeaderLote.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/Lote.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/SegmentoT.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/SegmentoU.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/SegmentoW.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/TrailerArquivo.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab240/TrailerLote.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab400/Arquivo.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab400/Detalhe.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab400/Header.php mode change 100755 => 100644 src/Cnab/Retorno/Cnab400/Trailer.php mode change 100755 => 100644 src/Cnab/Retorno/IArquivo.php mode change 100755 => 100644 src/Cnab/Retorno/IDetalhe.php mode change 100755 => 100644 tests/Cnab/BancoTest.php mode change 100755 => 100644 tests/Cnab/Format/LinhaTest.php mode change 100755 => 100644 tests/Cnab/Format/YamlLoadTest.php mode change 100755 => 100644 tests/Cnab/Retorno/Cnab240/ArquivoTest.php mode change 100755 => 100644 tests/Cnab/Retorno/Cnab400/ArquivoTest.php mode change 100755 => 100644 tests/bootstrap.php mode change 100755 => 100644 tests/fixtures/cnab240/retorno_cnab240_caixa.ret mode change 100755 => 100644 tests/fixtures/cnab240/retorno_santander.ret mode change 100755 => 100644 tests/fixtures/cnab400/retorno-cb030400-bradesco.ret mode change 100755 => 100644 tests/fixtures/cnab400/retorno-cnab400-itau.ret diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/cnab_yaml/LICENSE b/cnab_yaml/LICENSE old mode 100755 new mode 100644 diff --git a/cnab_yaml/README.md b/cnab_yaml/README.md old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml index 887fc07..4021730 100644 --- a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml +++ b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml @@ -70,6 +70,11 @@ reservado_santander_04: picture: 'X(1)' default: '' +valor_juros_mora: + # Valor ou porcentagem sobre o valor do título a ser cobrado de juros de mora. + pos: [127, 141] + picture: '9(10)V9(5)' + reservado_santander_05: pos: [225, 225] picture: '9(1)' diff --git a/cnab_yaml/cnab240/033/trailer_lote.yml b/cnab_yaml/cnab240/033/trailer_lote.yml index e53090a..da3c408 100644 --- a/cnab_yaml/cnab240/033/trailer_lote.yml +++ b/cnab_yaml/cnab240/033/trailer_lote.yml @@ -1,47 +1,4 @@ -qtde_titulo_cobranca_simples: - pos: [24, 29] - picture: '9(6)' - -valor_total_titulo_simples: - pos: [30, 46] - picture: '9(15)V9(2)' - -uso_exclusivo_febraban_02: - pos: [47, 52] - picture: 'X(6)' - default: '' - -uso_exclusivo_febraban_03: - pos: [53, 69] - picture: 'X(17)' - default: '' - -qtde_titulo_cobranca_caucionada: - pos: [70, 75] - picture: 'X(6)' - default: '' - -valor_total_titulo_caucionada: - pos: [76, 92] - picture: 'X(17)' - default: '' - -qtde_titulo_cobranca_descontada: - pos: [93, 98] - picture: 'X(6)' - default: '' - -valor_total_titulo_descontada: - pos: [99, 115] - picture: 'X(17)' - default: '' - -uso_exclusivo_febraban_04: - pos: [116, 123] - picture: 'X(8)' - default: '' - uso_exclusivo_febraban_05: - pos: [124, 240] - picture: 'X(117)' + pos: [24, 240] + picture: 'X(217)' default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/header_arquivo.yml b/cnab_yaml/cnab240/041/header_arquivo.yml new file mode 100644 index 0000000..37ecdc9 --- /dev/null +++ b/cnab_yaml/cnab240/041/header_arquivo.yml @@ -0,0 +1,47 @@ +uso_exclusivo_febraban_01: + pos: [9, 16] + picture: 'X(8)' + default: '' + +codigo_inscricao: + pos: [17, 17] + picture: '9(1)' + +numero_inscricao: + pos: [18, 32] + picture: '9(15)' + +agencia: + pos: [33, 36] + picture: '9(4)' + +agencia_dv: + pos: [37, 37] + picture: '9(1)' + +conta: + pos: [38, 46] + picture: '9(9)' + +conta_dv: + pos: [47, 47] + picture: '9(1)' + +uso_exclusivo_banco_01: + pos: [48, 52] + picture: 'X(5)' + default: '' + +codigo_cedente: + pos: [53, 61] + picture: '9(9)' + +uso_exclusivo_banco_02: + pos: [62, 72] + picture: 'X(11)' + default: '' + +uso_exclusivo_febraban_03: + pos: [167, 240] + picture: 'X(74)' + default: '' diff --git a/cnab_yaml/cnab240/041/header_lote.yml b/cnab_yaml/cnab240/041/header_lote.yml new file mode 100644 index 0000000..5f5568d --- /dev/null +++ b/cnab_yaml/cnab240/041/header_lote.yml @@ -0,0 +1,39 @@ +uso_exclusivo_banco_01: + pos: [12, 13] + picture: 'X(2)' + default: '' + +codigo_cedente: + pos: [34, 42] + picture: '9(9)' + +uso_exclusivo_banco_02: + pos: [43, 53] + picture: 'X(11)' + default: '' + +agencia: + pos: [54, 57] + picture: '9(4)' + +agencia_dv: + pos: [58, 58] + picture: '9(1)' + +conta: + pos: [59, 67] + picture: '9(9)' + +conta_dv: + pos: [68, 68] + picture: '9(1)' + +uso_exclusivo_banco_03: + pos: [69, 73] + picture: 'X(5)' + default: '' + +uso_exclusivo_banco_04: + pos: [200, 240] + picture: 'X(41)' + default: '' diff --git a/cnab_yaml/cnab240/041/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_p.yml new file mode 100644 index 0000000..6793623 --- /dev/null +++ b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_p.yml @@ -0,0 +1,72 @@ +conta: + # Número da conta corrente + pos: [24, 35] + picture: '9(12)' + +conta_dv: + pos: [36, 36] + picture: '9(1)' + +agencia_mais_cedente_dv: + pos: [37,37] + picture: 'X(1)' + default: '' + +nosso_numero: + pos: [38, 57] + picture: '9(20)' + +tipo_documento: + # ‘1’ = Tradicional + # ‘2’ = Escritural + pos: [60,60] + picture: 'X(1)' + default: '1' + +identificacao_distribuicao: + pos: [62,62] + picture: 'X(1)' + default: '' + +numero_documento: + pos: [63, 77] + picture: 'X(15)' + +agencia_cobradora: + pos: [101, 104] + picture: '9(4)' + default: '0' + +agencia_cobradora_dv: + pos: [105, 105] + picture: '9(1)' + default: '0' + +reservado_santander_04: + pos: [106, 106] + picture: 'X(1)' + default: '' + +reservado_santander_05: + pos: [225, 225] + picture: '9(1)' + default: '0' + +prazo_baixa: + pos: [226, 227] + picture: '9(2)' + +codigo_moeda: + pos: [228, 229] + picture: '9(2)' + default: '00' + +uso_exclusivo_banco_03: + pos: [230, 239] + picture: 'X(10)' + default: '' + +uso_exclusivo_febraban_02: + pos: [240, 240] + picture: 'X(1)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/remessa/detalhe_segmento_q.yml b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_q.yml new file mode 100644 index 0000000..813f674 --- /dev/null +++ b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_q.yml @@ -0,0 +1,4 @@ +banco_correspondente: + pos: [210, 212] + picture: '9(3)' + default: '000' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_r.yml new file mode 100644 index 0000000..d83768c --- /dev/null +++ b/cnab_yaml/cnab240/041/remessa/detalhe_segmento_r.yml @@ -0,0 +1,28 @@ +codigo_multa: + pos: [66, 66] + picture: '9(1)' + +codigo_banco_debito: + pos: [180, 182] + picture: 'X(3)' + default: '' + +agencia_banco_debito: + pos: [183, 186] + picture: 'X(4)' + default: '' + +conta_banco_debito: + pos: [187, 199] + picture: 'X(13)' + default: '' + +ocorrencia_pagador: + pos: [200, 207] + picture: '9(8)' + default: '00000000' + +uso_exclusivo_febraban_03: + pos: [208, 240] + picture: 'X(33)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/remessa/header_arquivo.yml b/cnab_yaml/cnab240/041/remessa/header_arquivo.yml new file mode 100644 index 0000000..88d42ca --- /dev/null +++ b/cnab_yaml/cnab240/041/remessa/header_arquivo.yml @@ -0,0 +1,93 @@ +##254580048 +codigo_convenio: + pos: [33, 52] + picture: 'X(20)' + default: '123' + +agencia: + pos: [53, 57] + picture: '9(5)' + +agencia_dv: + pos: [58, 58] + picture: 'X(1)' + +conta: + pos: [59, 70] + picture: '9(12)' + +conta_dv: + pos: [71, 71] + picture: '9(1)' + +agencia_mais_cedente_dv: + pos: [72, 72] + picture: 'X(1)' + default: '' + +hora_geracao: + pos: [152, 157] + picture: 'X(6)' + default: '000000' + +versao_layout_arquivo: + pos: [164, 166] + picture: '9(3)' + default: '040' + +densidade_gravacao_arquivo: + # Densidade de gravação (bpi), do arquivo encaminhado. Pode ser: + # 1600 BPI + # 6250 BPI + # Pode ser informado ‘0’. (Padrão) + pos: [167, 171] + picture: '9(5)' + default: '00000' + +uso_reservado_banco: + # Para Uso Reservado do Banco + # Texto de observações destinado para uso exclusivo da caixa econômica federal. + # Durante a fase de testes (simulado) deverá conter a literal ‘RETORNO-TESTE’ + pos: [172, 179] + picture: 'X(8)' + default: '' + +uso_reservado_banco_remessa: + pos: [180, 181] + picture: 'X(2)' + default: 'BE' + +uso_resevado_BFQ/BBM: + pos: [182, 191] + picture: 'X(10)' + default: '' + +uso_resevado_empresa: + pos: [192, 211] + picture: 'X(20)' + default: '' + +cnab: + pos: [212, 222] + picture: 'X(11)' + default: '' + +identificacao_sem_papel: + pos: [223, 225] + picture: 'X(3)' + default: '' + +identificacao_vans: + pos: [226, 228] + picture: 'X(3)' + default: '' + +tipo_servico: + pos: [229, 230] + picture: 'X(2)' + default: '' + +uso_exclusivo_febraban_04: + pos: [231, 240] + picture: 'X(10)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/remessa/header_lote.yml b/cnab_yaml/cnab240/041/remessa/header_lote.yml new file mode 100644 index 0000000..82cc5e7 --- /dev/null +++ b/cnab_yaml/cnab240/041/remessa/header_lote.yml @@ -0,0 +1,34 @@ +forma_lancamento: + pos: [12, 13] + picture: 'X(2)' + default: '' + +versao_layout_lote: + pos: [14, 16] + picture: '9(3)' + default: '020' + +codigo_convenio: + pos: [34, 53] + picture: 'X(20)' + +agencia: + pos: [54, 58] + picture: '9(5)' + +agencia_dv: + pos: [59, 59] + picture: '9(1)' + +conta: + pos: [60, 71] + picture: '9(12)' + +conta_dv: + pos: [72, 72] + picture: '9(1)' + +agencia_mais_cedente_dv: + pos: [73, 73] + picture: 'X(1)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/041/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/041/retorno/detalhe_segmento_t.yml new file mode 100644 index 0000000..b71049b --- /dev/null +++ b/cnab_yaml/cnab240/041/retorno/detalhe_segmento_t.yml @@ -0,0 +1,97 @@ +agencia_mantenedora: + pos: [18, 21] + picture: '9(4)' + +agencia_dv: + pos: [22, 22] + picture: '9(1)' + +conta: + pos: [23, 31] + picture: '9(9)' + +conta_dv: + pos: [32, 32] + picture: '9(1)' + +uso_exclusivo_banco_01: + pos: [33, 40] + picture: 'X(8)' + +nosso_numero: + pos: [41, 53] + picture: '9(13)' + +codigo_carteira: + # Tipo de Cobrança + # 1 = Cobrança Simples (Sem Registro e Eletronica com registro) + # 2 = Cobrança Simples (Rápida com registro, Eletrônica com Registro e Convencional com Registro) + # 3 = Cobraça Caucionada (Eletrônica com registro e convencional com registro) + # 4 = Cobrança Descontada (Convencionlal com Registro / Eletrônica com registro) + # 5 = Cobrança Simples (Rápida com Registro) + # 6 = Cobrança Caucionada (Rápida com Registro) + pos: [54, 54] + picture: '9(1)' + +numero_documento: + pos: [55, 69] + picture: 'X(15)' + +data_vencimento: + pos: [70, 77] + picture: '9(8)' + date_format: '%d%m%Y' + +valor_titulo: + pos: [78, 92] + picture: '9(13)V9(2)' + +numero_banco: + pos: [93, 95] + picture: '9(3)' + +agencia_cobradora: + pos: [96, 99] + picture: '9(4)' + +agencia_cobradora_dac: + # Também conhecido como digito verificador + pos: [100, 100] + picture: '9(1)' + +uso_empresa: + pos: [101, 125] + picture: 'X(25)' + +codigo_moeda: + pos: [126, 127] + picture: '9(2)' + +tipo_inscricao: + pos: [128, 128] + picture: '9(1)' + +numero_inscricao: + pos: [129, 143] + picture: '9(15)' + +nome_sacado: + pos: [144, 183] + picture: 'X(40)' + +conta_cobranca: + pos: [184, 193] + picture: 'X(10)' + +valor_tarifa: + pos: [194, 208] + picture: '9(13)V9(2)' + +identificacao_rejeicao: + pos: [209, 218] + picture: 'X(10)' + +uso_exclusivo_banco_03: + pos: [219, 240] + picture: 'X(22)' + default: '' diff --git a/cnab_yaml/cnab240/041/trailer_lote.yml b/cnab_yaml/cnab240/041/trailer_lote.yml new file mode 100644 index 0000000..e53090a --- /dev/null +++ b/cnab_yaml/cnab240/041/trailer_lote.yml @@ -0,0 +1,47 @@ +qtde_titulo_cobranca_simples: + pos: [24, 29] + picture: '9(6)' + +valor_total_titulo_simples: + pos: [30, 46] + picture: '9(15)V9(2)' + +uso_exclusivo_febraban_02: + pos: [47, 52] + picture: 'X(6)' + default: '' + +uso_exclusivo_febraban_03: + pos: [53, 69] + picture: 'X(17)' + default: '' + +qtde_titulo_cobranca_caucionada: + pos: [70, 75] + picture: 'X(6)' + default: '' + +valor_total_titulo_caucionada: + pos: [76, 92] + picture: 'X(17)' + default: '' + +qtde_titulo_cobranca_descontada: + pos: [93, 98] + picture: 'X(6)' + default: '' + +valor_total_titulo_descontada: + pos: [99, 115] + picture: 'X(17)' + default: '' + +uso_exclusivo_febraban_04: + pos: [116, 123] + picture: 'X(8)' + default: '' + +uso_exclusivo_febraban_05: + pos: [124, 240] + picture: 'X(117)' + default: '' \ No newline at end of file diff --git a/cnab_yaml/cnab240/generic/header_arquivo.yml b/cnab_yaml/cnab240/generic/header_arquivo.yml index 2b4651c..716ff28 100644 --- a/cnab_yaml/cnab240/generic/header_arquivo.yml +++ b/cnab_yaml/cnab240/generic/header_arquivo.yml @@ -81,7 +81,7 @@ codigo_cedente: pos: [59, 70] picture: '9(12)' -codigo_cedente_dv: +codigo_cedente_dv: # Dígito Verificador do Cedente # Código adotado pela CAIXA, para verificação da autenticidade do Código do Cedente. Calculado # através do módulo 11. diff --git a/cnab_yaml/cnab240/generic/header_lote.yml b/cnab_yaml/cnab240/generic/header_lote.yml index dafa4f3..9ebf6b5 100644 --- a/cnab_yaml/cnab240/generic/header_lote.yml +++ b/cnab_yaml/cnab240/generic/header_lote.yml @@ -183,7 +183,7 @@ mensagem_2: # Mensagem 1 / 2 # Texto referente a mensagens que serão impressas, em todos os bloquetos referentes ao mesmo lote, no # corpo de instruções da ficha de compensação e do recibo do sacado do bloqueto. - # Estes campos não serão utilizados no arquivo retorno. + # Estes campos não serão utilizados no ar quivo retorno. pos: [144, 183] picture: 'X(40)' default: '' diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_p.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_q.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml b/cnab_yaml/cnab240/generic/remessa/detalhe_segmento_r.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_t.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_u.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml b/cnab_yaml/cnab240/generic/retorno/detalhe_segmento_w.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml b/cnab_yaml/cnab240/generic/retorno/header_lote_captura.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/remessa/detalhe.yml b/cnab_yaml/cnab400/generic/remessa/detalhe.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/remessa/header_arquivo.yml b/cnab_yaml/cnab400/generic/remessa/header_arquivo.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml b/cnab_yaml/cnab400/generic/remessa/trailer_arquivo.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/retorno/detalhe.yml b/cnab_yaml/cnab400/generic/retorno/detalhe.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/retorno/header_arquivo.yml b/cnab_yaml/cnab400/generic/retorno/header_arquivo.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml b/cnab_yaml/cnab400/generic/retorno/trailer_arquivo.yml old mode 100755 new mode 100644 diff --git a/cnab_yaml/composer.json b/cnab_yaml/composer.json old mode 100755 new mode 100644 diff --git a/composer.json b/composer.json old mode 100755 new mode 100644 diff --git a/phpunit.xml.dist b/phpunit.xml.dist old mode 100755 new mode 100644 diff --git a/src/Cnab/Banco.php b/src/Cnab/Banco.php old mode 100755 new mode 100644 index 07b5ac8..1155be6 --- a/src/Cnab/Banco.php +++ b/src/Cnab/Banco.php @@ -9,6 +9,7 @@ class Banco const CEF = 104; const BRADESCO = 237; const ITAU = 341; + const BANRISUL = 41; public static function getBanco($codigo) { @@ -30,13 +31,18 @@ public static function getBanco($codigo) } elseif ($codigo == self::SANTANDER) { return array( 'codigo_do_banco' => self::SANTANDER, - 'nome_do_banco' => 'BANCO SANTANDER (BRASIL) S/A', + 'nome_do_banco' => 'BANCO SANTANDER', ); } elseif ($codigo == self::BRADESCO) { return array( 'codigo_do_banco' => self::BRADESCO, 'nome_do_banco' => 'BRADESCO', ); + } elseif ($codigo == self::BANRISUL) { + return array( + 'codigo_do_banco' => self::BANRISUL, + 'nome_do_banco' => 'BANRISUL', + ); } else { return false; } diff --git a/src/Cnab/Especie.php b/src/Cnab/Especie.php old mode 100755 new mode 100644 index a59d50a..dfce0d4 --- a/src/Cnab/Especie.php +++ b/src/Cnab/Especie.php @@ -42,6 +42,7 @@ class Especie const BB_DUPLICATA_DE_SERVICO = 4; const SANTANDER_DUPLICATA_MERCANTIL = '02'; + const BANRISUL_DUPLICATA_MERCANTIL = '02'; const CNAB240_OUTROS = '99'; } \ No newline at end of file diff --git a/src/Cnab/Factory.php b/src/Cnab/Factory.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Format/Field.php b/src/Cnab/Format/Field.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Format/Identifier.php b/src/Cnab/Format/Identifier.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Format/Linha.php b/src/Cnab/Format/Linha.php old mode 100755 new mode 100644 index 69958b8..957fc9e --- a/src/Cnab/Format/Linha.php +++ b/src/Cnab/Format/Linha.php @@ -67,6 +67,7 @@ public function getEncoded() $lastField = null; foreach ($fields as $field) { if ($lastField && $field->pos_start != $lastField->pos_end + 1) { + throw new \Exception("gap between {$lastField->nome} and {$field->nome}"); } $dados .= $field->getEncoded(); diff --git a/src/Cnab/Format/Picture.php b/src/Cnab/Format/Picture.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Format/YamlLoad.php b/src/Cnab/Format/YamlLoad.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Remessa/Cnab240/Arquivo.php b/src/Cnab/Remessa/Cnab240/Arquivo.php index 1a332e0..a60bf8d 100644 --- a/src/Cnab/Remessa/Cnab240/Arquivo.php +++ b/src/Cnab/Remessa/Cnab240/Arquivo.php @@ -2,6 +2,8 @@ namespace Cnab\Remessa\Cnab240; +use Hamcrest\Thingy; + class Arquivo implements \Cnab\Remessa\IArquivo { public $headerArquivo; @@ -60,7 +62,16 @@ public function configure(array $params) $campos[] = 'conta'; $campos[] = 'conta_dv'; $campos[] = 'numero_sequencial_arquivo'; + } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + //$campos[] = 'codigo_cedente'; + $campos[] = 'agencia'; + $campos[] = 'agencia_dv'; + $campos[] = 'conta'; + $campos[] = 'conta_dv'; + $campos[] = 'numero_sequencial_arquivo'; + $campos[] = 'codigo_convenio'; } foreach ($campos as $campo) { @@ -76,7 +87,7 @@ public function configure(array $params) foreach ($campos as $key) { if (!array_key_exists($key, $params)) { - throw new Exception('Configuração "' . $key . '" dont exists'); + throw new \Exception('Configuração "' . $key . '" dont exists'); } } @@ -102,19 +113,23 @@ public function configure(array $params) $this->headerArquivo->conta_dv = $this->configuracao['conta_dv']; } - if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { - - } if ($this->codigo_banco == \Cnab\Banco::CEF || $this->codigo_banco == \Cnab\Banco::SANTANDER) { $this->headerArquivo->codigo_cedente = $this->configuracao['codigo_cedente']; } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + //$this->headerArquivo->codigo_cedente = $this->configuracao['codigo_cedente']; + $this->headerArquivo->conta = $this->configuracao['conta']; + $this->headerArquivo->conta_dv = $this->configuracao['conta_dv']; + $this->headerArquivo->codigo_convenio = $this->configuracao['agencia'] . $this->configuracao['codigo_convenio']; + //$this->headerArquivo->agencia_dv = ''; + } + $this->headerArquivo->nome_empresa = $this->configuracao['nome_fantasia']; $this->headerArquivo->nome_banco = $banco['nome_do_banco']; $this->headerArquivo->codigo_remessa_retorno = 1; $this->headerArquivo->data_geracao = $this->configuracao['data_geracao']; - $this->headerArquivo->hora_geracao = $this->configuracao['data_geracao']; $this->headerArquivo->numero_sequencial_arquivo = $this->configuracao['numero_sequencial_arquivo']; if ($this->codigo_banco == \Cnab\Banco::CEF) { @@ -138,7 +153,7 @@ public function configure(array $params) $this->headerLote->codigo_inscricao = $this->headerArquivo->codigo_inscricao; $this->headerLote->numero_inscricao = $this->headerArquivo->numero_inscricao; $this->headerLote->agencia = $this->headerArquivo->agencia; - $this->headerLote->agencia_dv = $this->headerArquivo->agencia_dv; + $this->headerLote->agencia_dv = $this->configuracao['agencia_dv']; if ($this->codigo_banco == \Cnab\Banco::CEF) { @@ -148,7 +163,6 @@ public function configure(array $params) if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { $this->headerLote->codigo_cedente = $this->configuracao['codigo_cedente']; - } if ($this->codigo_banco == \Cnab\Banco::BANCO_DO_BRASIL) { @@ -159,6 +173,12 @@ public function configure(array $params) $this->headerLote->conta_dv = $this->headerArquivo->conta_dv; } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + $this->headerLote->codigo_convenio = $this->headerArquivo->codigo_convenio; + $this->headerLote->conta = $this->headerArquivo->conta; + $this->headerLote->conta_dv = $this->headerArquivo->conta_dv; + } + $this->headerLote->nome_empresa = $this->headerArquivo->nome_empresa; $this->headerLote->numero_sequencial_arquivo = $this->headerArquivo->numero_sequencial_arquivo; $this->headerLote->data_geracao = $this->headerArquivo->data_geracao; @@ -218,7 +238,7 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->codigo_banco = $this->headerArquivo->codigo_banco; $detalhe->segmento_p->lote_servico = $this->headerLote->lote_servico; $detalhe->segmento_p->agencia = $this->headerArquivo->agencia; - $detalhe->segmento_p->agencia_dv = $this->headerArquivo->agencia_dv; + $detalhe->segmento_p->agencia_dv = $this->configuracao['agencia_dv']; if ($this->codigo_banco == \Cnab\Banco::CEF) { $detalhe->segmento_p->codigo_cedente = $this->headerArquivo->codigo_cedente; @@ -229,6 +249,11 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->conta_dv = $this->configuracao['conta_dv']; } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + $detalhe->segmento_p->conta = $this->configuracao['conta']; + $detalhe->segmento_p->conta_dv = $this->configuracao['conta_dv']; + } + if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { $detalhe->segmento_p->conta_cobranca = $this->configuracao['conta']; $detalhe->segmento_p->conta_cobranca_dv = $this->configuracao['conta_dv']; @@ -253,6 +278,10 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->codigo_carteira = $boleto['carteira']; } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + $detalhe->segmento_p->codigo_carteira = $boleto['carteira']; + } + if ($this->layoutVersao === 'sigcb' && $this->codigo_banco == \Cnab\Banco::CEF) { $detalhe->segmento_p->codigo_carteira = 1; // 1 = Cobrança Simples $detalhe->segmento_p->modalidade_carteira = $boleto['modalidade_carteira']; // 21 = (título Sem Registro emissão CAIXA) @@ -273,7 +302,7 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') if (!empty($boleto['dias_iniciar_contagem_juros']) && is_numeric($boleto['dias_iniciar_contagem_juros'])) { $dateJurosMora->modify("+{$boleto['dias_iniciar_contagem_juros']} days"); } else { - $dateJurosMora->modify('+1 day'); + $dateJurosMora->modify('+0 day'); } $detalhe->segmento_p->data_juros_mora = $dateJurosMora; @@ -305,6 +334,9 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') // sua carteira junto ao Banco do Brasil. $detalhe->segmento_p->codigo_baixa = 0; $detalhe->segmento_p->prazo_baixa = 0; + } elseif ($this->codigo_banco == \Cnab\Banco::SANTANDER) { + $detalhe->segmento_p->codigo_baixa = 1; + $detalhe->segmento_p->prazo_baixa = 60; } else { if (isset($boleto['baixar_apos_dias'])) { if ($boleto['baixar_apos_dias'] === false) { @@ -362,16 +394,20 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_r->lote_servico = $detalhe->segmento_p->lote_servico; $detalhe->segmento_r->codigo_ocorrencia = $detalhe->segmento_p->codigo_ocorrencia; if ($boleto['valor_multa'] > 0) { - if($boleto['codigo_multa'] == 2){ + if ($boleto['codigo_multa'] == 2) { $detalhe->segmento_r->codigo_multa = 2; $detalhe->segmento_r->valor_multa = $boleto['valor_multa']; $detalhe->segmento_r->data_multa = $boleto['data_multa']; - }else{ + } else { $detalhe->segmento_r->codigo_multa = 1; $detalhe->segmento_r->valor_multa = $boleto['valor_multa']; $detalhe->segmento_r->data_multa = $boleto['data_multa']; } + if ($this->codigo_banco == \Cnab\Banco::BANRISUL) { + $detalhe->segmento_r->codigo_multa = $boleto['codigo_multa']; + } + } else { $detalhe->segmento_r->codigo_multa = 0; $detalhe->segmento_r->valor_multa = 0; @@ -496,6 +532,8 @@ public function getText() $valor_total_titulo_simples = 0; // valida os dados + $dados = $this->headerArquivo->getEncoded() . self::QUEBRA_LINHA; + if (!$this->headerArquivo->validate()) { throw new \InvalidArgumentException($this->headerArquivo->last_error); } @@ -504,8 +542,6 @@ public function getText() throw new \InvalidArgumentException($this->headerLote->last_error); } - $dados = $this->headerArquivo->getEncoded() . self::QUEBRA_LINHA; - $dados .= $this->headerLote->getEncoded() . self::QUEBRA_LINHA; foreach ($this->detalhes as $detalhe) { @@ -525,7 +561,7 @@ public function getText() $this->trailerLote->qtde_registro_lote = $qtde_registro_lote; - if ($this->codigo_banco == \Cnab\Banco::CEF || $this->codigo_banco == \Cnab\Banco::SANTANDER) { + if ($this->codigo_banco == \Cnab\Banco::CEF || $this->codigo_banco == \Cnab\Banco::BANRISUL) { $this->trailerLote->qtde_titulo_cobranca_simples = $qtde_titulo_cobranca_simples; $this->trailerLote->valor_total_titulo_simples = $valor_total_titulo_simples; } diff --git a/src/Cnab/Remessa/Cnab400/Arquivo.php b/src/Cnab/Remessa/Cnab400/Arquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Remessa/Cnab400/Detalhe.php b/src/Cnab/Remessa/Cnab400/Detalhe.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Remessa/Cnab400/Trailer.php b/src/Cnab/Remessa/Cnab400/Trailer.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Remessa/IArquivo.php b/src/Cnab/Remessa/IArquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/Arquivo.php b/src/Cnab/Retorno/Cnab240/Arquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/Detalhe.php b/src/Cnab/Retorno/Cnab240/Detalhe.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/HeaderArquivo.php b/src/Cnab/Retorno/Cnab240/HeaderArquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/HeaderLote.php b/src/Cnab/Retorno/Cnab240/HeaderLote.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/Lote.php b/src/Cnab/Retorno/Cnab240/Lote.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/SegmentoT.php b/src/Cnab/Retorno/Cnab240/SegmentoT.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/SegmentoU.php b/src/Cnab/Retorno/Cnab240/SegmentoU.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/SegmentoW.php b/src/Cnab/Retorno/Cnab240/SegmentoW.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/TrailerArquivo.php b/src/Cnab/Retorno/Cnab240/TrailerArquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab240/TrailerLote.php b/src/Cnab/Retorno/Cnab240/TrailerLote.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab400/Arquivo.php b/src/Cnab/Retorno/Cnab400/Arquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab400/Detalhe.php b/src/Cnab/Retorno/Cnab400/Detalhe.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab400/Header.php b/src/Cnab/Retorno/Cnab400/Header.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/Cnab400/Trailer.php b/src/Cnab/Retorno/Cnab400/Trailer.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/IArquivo.php b/src/Cnab/Retorno/IArquivo.php old mode 100755 new mode 100644 diff --git a/src/Cnab/Retorno/IDetalhe.php b/src/Cnab/Retorno/IDetalhe.php old mode 100755 new mode 100644 diff --git a/tests/Cnab/BancoTest.php b/tests/Cnab/BancoTest.php old mode 100755 new mode 100644 diff --git a/tests/Cnab/Format/LinhaTest.php b/tests/Cnab/Format/LinhaTest.php old mode 100755 new mode 100644 diff --git a/tests/Cnab/Format/YamlLoadTest.php b/tests/Cnab/Format/YamlLoadTest.php old mode 100755 new mode 100644 diff --git a/tests/Cnab/Retorno/Cnab240/ArquivoTest.php b/tests/Cnab/Retorno/Cnab240/ArquivoTest.php old mode 100755 new mode 100644 diff --git a/tests/Cnab/Retorno/Cnab400/ArquivoTest.php b/tests/Cnab/Retorno/Cnab400/ArquivoTest.php old mode 100755 new mode 100644 diff --git a/tests/bootstrap.php b/tests/bootstrap.php old mode 100755 new mode 100644 diff --git a/tests/fixtures/cnab240/retorno_cnab240_caixa.ret b/tests/fixtures/cnab240/retorno_cnab240_caixa.ret old mode 100755 new mode 100644 diff --git a/tests/fixtures/cnab240/retorno_santander.ret b/tests/fixtures/cnab240/retorno_santander.ret old mode 100755 new mode 100644 diff --git a/tests/fixtures/cnab400/retorno-cb030400-bradesco.ret b/tests/fixtures/cnab400/retorno-cb030400-bradesco.ret old mode 100755 new mode 100644 diff --git a/tests/fixtures/cnab400/retorno-cnab400-itau.ret b/tests/fixtures/cnab400/retorno-cnab400-itau.ret old mode 100755 new mode 100644 From b559ef38bf66a07a53ea0d275835f6bfd3450eec Mon Sep 17 00:00:00 2001 From: Bruno Tonin Date: Tue, 31 Oct 2017 16:32:47 -0200 Subject: [PATCH 4/6] ajustado layout cnab 240 santander --- src/Cnab/Remessa/Cnab240/Arquivo.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/Cnab/Remessa/Cnab240/Arquivo.php b/src/Cnab/Remessa/Cnab240/Arquivo.php index a60bf8d..1fa2c9a 100644 --- a/src/Cnab/Remessa/Cnab240/Arquivo.php +++ b/src/Cnab/Remessa/Cnab240/Arquivo.php @@ -413,17 +413,10 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_r->valor_multa = 0; $detalhe->segmento_r->data_multa = 0; } - if ($this->codigo_banco == \Cnab\Banco::SANTANDER) { - if ($boleto['valor_desconto'] > 0) { - $detalhe->segmento_r->data_desconto_02 = $boleto['data_desconto']; - $detalhe->segmento_r->valor_desconto_02 = $boleto['valor_desconto']; - } else { - // sem desconto - $detalhe->segmento_r->data_desconto_02 = 0; - $detalhe->segmento_r->valor_desconto_02 = 0; - } - } + $detalhe->segmento_r->data_desconto_02 = 0; + $detalhe->segmento_r->valor_desconto_02 = 0; + $this->detalhes[] = $detalhe; } From dc54491d4e0e25acc5424580b26c38c35a18fba0 Mon Sep 17 00:00:00 2001 From: Bruno Tonin Date: Wed, 4 Jul 2018 14:25:06 -0300 Subject: [PATCH 5/6] ajustado mascara juros mora --- cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml index 4021730..8292861 100644 --- a/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml +++ b/cnab_yaml/cnab240/033/remessa/detalhe_segmento_p.yml @@ -73,7 +73,7 @@ reservado_santander_04: valor_juros_mora: # Valor ou porcentagem sobre o valor do título a ser cobrado de juros de mora. pos: [127, 141] - picture: '9(10)V9(5)' + picture: '9(13)V9(2)' reservado_santander_05: pos: [225, 225] @@ -97,4 +97,4 @@ uso_exclusivo_banco_03: uso_exclusivo_febraban_02: pos: [240, 240] picture: 'X(1)' - default: '' \ No newline at end of file + default: '' From a694d09986a3881d60c60de77879543ddbda3934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Xavier=20Martinez?= Date: Thu, 12 Jul 2018 18:43:15 -0300 Subject: [PATCH 6/6] corrigindo impossibilidade de configurar parametros de baixa --- README.md | 12 +++++++++++- src/Cnab/Remessa/Cnab240/Arquivo.php | 9 +++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0aa2005..ba873bd 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Projeto para criar arquivos de remessas e processar arquivos de retorno no forma | Bradesco | | 240 | | Caixa | 240 | 240 e 400 | | Itaú | 400 | 400 | -| Santander | | 240 | +| Santander | 240 | 240 | ## Instalação ### Composer @@ -31,6 +31,16 @@ Se você já conhece o **Composer**, adicione a dependência abaixo à diretiva ``` "andersondanilo/cnab_php": "1.3.*" ``` +Além disso adicione esse repositório: +``` +"repositories": [ + { + "type": "vcs", + "url": "https://github.com/Pandora-una/CnabPHP.git" + } + ] +``` + ## Como Usar ### Lendo um arquivo de Retorno diff --git a/src/Cnab/Remessa/Cnab240/Arquivo.php b/src/Cnab/Remessa/Cnab240/Arquivo.php index 1fa2c9a..49c37bf 100644 --- a/src/Cnab/Remessa/Cnab240/Arquivo.php +++ b/src/Cnab/Remessa/Cnab240/Arquivo.php @@ -335,8 +335,13 @@ public function insertDetalhe(array $boleto, $tipo = 'remessa') $detalhe->segmento_p->codigo_baixa = 0; $detalhe->segmento_p->prazo_baixa = 0; } elseif ($this->codigo_banco == \Cnab\Banco::SANTANDER) { - $detalhe->segmento_p->codigo_baixa = 1; - $detalhe->segmento_p->prazo_baixa = 60; + if (!empty($boleto['codigo_baixa']) && !empty($boleto['prazo_baixa'])) { + $detalhe->segmento_p->codigo_baixa = $boleto['codigo_baixa']; + $detalhe->segmento_p->prazo_baixa = $boleto['prazo_baixa']; + } else { + $detalhe->segmento_p->codigo_baixa = 1; + $detalhe->segmento_p->prazo_baixa = 60; + } } else { if (isset($boleto['baixar_apos_dias'])) { if ($boleto['baixar_apos_dias'] === false) {