glauberportella / cnab-layouts-parser
用于解析在https://github.com/glauberportella/cnab-layouts项目中生成的CNAB配置文件的解析器
dev-master
2016-06-27 13:01 UTC
Requires
- symfony/yaml: 2.7.*
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3.2
This package is auto-updated.
Last update: 2024-09-25 06:54:05 UTC
README
CNAB LAYOUTS PARSER
安装
使用composer安装
composer install glauberportella/cnab-layouts-parser
示例
汇款文件
生成CNAB240汇款文件
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Remessa; use CnabParser\Output\RemessaFile; $remessaLayout = new Layout(__DIR__.'/config/itau/cnab240/cobranca.yml'); $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');
返回
处理返回文件,将其转换为适用于您系统的模型。
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Retorno; use CnabParser\Input\RetornoFile; $layout = new Layout(__DIR__.'/config/itau/cnab240/cobranca.yml'); $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. ...
许可
MIT许可(MIT)
版权所有(c)2016 Glauber Portella glauberportella@gmail.com
特此授予任何获得此软件及其相关文档副本(“软件”)的人免费权利,无限制地使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯知识产权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是在合同、侵权或其他行为中产生的,无论这些责任是否与软件或软件的使用或其他方式有关。