ipagdevs / cnab-layouts-parser
Isso é uma fork de: glauberportella/cnab-layouts-parser
v1.1.0
2023-10-13 15:53 UTC
Requires
- symfony/yaml: ^5
This package is auto-updated.
Last update: 2024-10-13 18:11:37 UTC
README
Isso é uma fork de: https://github.com/glauberportella/cnab-layouts-parser
CNAB LAYOUTS PARSER
Instalação
Instale via composer:
composer require jrodella/cnab-layouts-parser
Exemplos
Arquivo de Remessa
Gerando um arquivo Remessa CNAB240:
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Remessa; use CnabParser\Output\RemessaFile; $remessaLayout = new Layout('itau','cnab240','cobranca'); $remessa = new Remessa($remessaLayout); // header arquivo $remessa->header->codigo_banco = 341; $remessa->header->tipo_inscricao = 2; $remessa->header->inscricao_numero = '12234567000186'; $remessa->header->agencia = 2932; $remessa->header->conta = 24992; $remessa->header->dac = 9; $remessa->header->nome_empresa = 'NOME DA EMPRESA'; $remessa->header->data_geracao = date('dmY'); $remessa->header->hora_geracao = date('His'); $remessa->header->numero_sequencial_arquivo_retorno = 1; // criar um novo lote de serviço para a remessa // informando o código sequencial do lote $lote = $remessa->novoLote(1); $lote->header->codigo_banco = 341; $lote->header->lote_servico = $lote->sequencial; $lote->header->tipo_registro = 1; $lote->header->tipo_operacao = 'R'; $lote->header->tipo_servico = '01'; $lote->header->zeros_01 = 0; $lote->header->versao_layout_lote = '030'; $lote->header->brancos_01 = ''; $lote->header->tipo_inscricao = 2; $lote->header->inscricao_empresa = '12234567000186'; $lote->header->brancos_02 = '0'; $lote->header->zeros_02 = 0; $lote->header->agencia = 2932; $lote->header->brancos_03 = ''; $lote->header->zeros_03 = 0; $lote->header->conta = '24992'; $lote->header->brancos_04 = ''; $lote->header->dac = 9; $lote->header->nome_empresa = 'NOME DA EMPRESA'; $lote->header->brancos_05 = ''; $lote->header->numero_sequencial_arquivo_retorno = 1; $lote->header->data_gravacao = date('dmY'); $lote->header->data_credito = date('dmY'); $lote->header->brancos_06 = ''; $detalhe = $lote->novoDetalhe(); // segmento p $detalhe->segmento_p->lote_servico = $lote->sequencial; $detalhe->segmento_p->nummero_sequencial_registro_lote = 1; $detalhe->segmento_p->codigo_ocorrencia = '01'; $detalhe->segmento_p->agencia = 2932; $detalhe->segmento_p->conta = 24992; $detalhe->segmento_p->dac = 9; $detalhe->segmento_p->carteira = 109; $detalhe->segmento_p->nosso_numero = 12345678; $detalhe->segmento_p->dac_nosso_numero = 3; $detalhe->segmento_p->numero_documento = 1; $detalhe->segmento_p->vencimento = '10052016'; $detalhe->segmento_p->valor_titulo = 1000; $detalhe->segmento_p->agencia_cobradora = 0; $detalhe->segmento_p->dac_agencia_cobradora = 0; $detalhe->segmento_p->especie = '05'; $detalhe->segmento_p->aceite = 'N'; $detalhe->segmento_p->data_emissao = date('dmY'); $detalhe->segmento_p->data_juros_mora = '11052016'; $detalhe->segmento_p->juros_1_dia = 0; $detalhe->segmento_p->data_1o_desconto = '00000000'; $detalhe->segmento_p->valor_1o_desconto = 0; $detalhe->segmento_p->valor_iof = 38; $detalhe->segmento_p->valor_abatimento = 0; $detalhe->segmento_p->identificacao_titulo_empresa = ''; $detalhe->segmento_p->codigo_negativacao_protesto = 0; $detalhe->segmento_p->prazo_negativacao_protesto = 0; $detalhe->segmento_p->codigo_baixa = 0; $detalhe->segmento_p->prazo_baixa = 0; // segmento q $detalhe->segmento_q->lote_servico = $lote->sequencial; $detalhe->segmento_q->nummero_sequencial_registro_lote = 2; $detalhe->segmento_q->codigo_ocorrencia = '01'; $detalhe->segmento_q->tipo_inscricao = 2; $detalhe->segmento_q->inscricao_numero = '12345678999'; $detalhe->segmento_q->nome_pagador = 'NOME PAGADOR'; $detalhe->segmento_q->logradouro = 'RUA PAGADOR'; $detalhe->segmento_q->bairro = 'BAIRRO'; $detalhe->segmento_q->cep = 31814; $detalhe->segmento_q->sufixo_cep = 500; $detalhe->segmento_q->cidade = 'CIDADE'; $detalhe->segmento_q->uf = 'MG'; $detalhe->segmento_q->tipo_inscricao_sacador = 2; $detalhe->segmento_q->inscricao_sacador = '12234567000186'; $detalhe->segmento_q->nome_sacador = 'NOME DA EMPRESA'; // segmento r opcional nao adicionado unset($detalhe->segmento_r); // segmento y opcional nao adicionado unset($detalhe->segmento_y); // insere o detalhe no lote da remessa $lote->inserirDetalhe($detalhe); // trailer lote $lote->trailer->lote_servico = $lote->sequencial; $lote->trailer->quantidade_registros_lote = 4; // quantidade de Registros do Lote correspondente à soma da quantidade dos registros tipo 1 (header_lote), 3(detalhes) e 5(trailer_lote) $lote->trailer->quantidade_cobranca_simples = 1; $lote->trailer->valor_total_cobranca_simples = 10000; $lote->trailer->quantidade_cobranca_vinculada = 0; $lote->trailer->valor_total_cobranca_vinculada = 0; $lote->trailer->aviso_bancario = '00000000'; // inserir lote na remessa $remessa->inserirLote($lote); // trailer arquivo $remessa->trailer->total_lotes = 1; // quantidade de Lotes do arquivo correspondente à soma da quantidade dos registros tipo 1 (header_lote). $remessa->trailer->total_registros = 6; //total da quantidade de Registros no arquivo correspondente à soma da quantidade dos registros tipo 0(header_arquivo), 1(header_lote), 3(detalhes), 5(trailer_lote) e 9(trailer_arquivo). // gera arquivo $remessaFile = new RemessaFile($remessa); $remessaFile->generate(__DIR__.'/tests/out/itaucobranca240.rem');
Retorno
Processando um arquivo de retorno transformando-o em modelo para uso em seu sistema.
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Retorno; use CnabParser\Input\RetornoFile; $layout = new Layout('itau','cnab240','cobranca'); $retornoFile = new RetornoFile($layout, __DIR__.'/data/cobranca-itau-cnab240.ret'); // Gera o objeto instancia de CnabParser\Model\Retorno com os dados do arquivo de retorno processado $retorno = $retornoFile->generate(); // ... utilize o $retorno em seu sistema para verificações, etc. ...