Exemplo n.º 1
0
 public function testArquivoCaixaCnab240SigcbPodeSerCriado()
 {
     $codigoBanco = \Cnab\Banco::CEF;
     $cnabFactory = new \Cnab\Factory();
     $arquivo = $cnabFactory->createRemessa($codigoBanco, 'cnab240', 'sigcb');
     $arquivo->configure(array('data_geracao' => new \DateTime('2015-02-01 01:02:03'), 'data_gravacao' => new \DateTime('2015-02-01'), 'nome_fantasia' => 'Nome Fantasia da sua empresa', 'razao_social' => 'Razão social da sua empresa', 'cnpj' => '11222333444455', 'banco' => $codigoBanco, 'logradouro' => 'Logradouro da Sua empresa', 'numero' => 'Número do endereço', 'bairro' => 'Bairro da sua empresa', 'cidade' => 'Cidade da sua empresa', 'uf' => 'SP', 'cep' => '00000111', 'agencia' => '1234', 'agencia_dv' => '3', 'codigo_cedente' => '123123', 'numero_sequencial_arquivo' => 1));
     // você pode adicionar vários boletos em uma remessa
     $arquivo->insertDetalhe(array('codigo_ocorrencia' => 1, 'nosso_numero' => '12345679', 'numero_documento' => '12345678', 'carteira' => '111', 'especie' => \Cnab\Especie::CNAB240_OUTROS, 'aceite' => 'N', 'registrado' => false, 'modalidade_carteira' => '21', 'valor' => 100.39, 'instrucao1' => '', 'instrucao2' => '', 'sacado_razao_social' => 'Nome do cliente', 'sacado_tipo' => 'cnpj', 'sacado_cnpj' => '21.222.333.4444-55', 'sacado_logradouro' => 'Logradouro do cliente', 'sacado_bairro' => 'Bairro do cliente', 'sacado_cep' => '00000-111', 'sacado_cidade' => 'Cidade do cliente', 'sacado_uf' => 'BA', 'data_vencimento' => new \DateTime('2015-02-03'), 'data_cadastro' => new \DateTime('2015-01-14'), 'juros_de_um_dia' => 0.1, 'data_desconto' => new \DateTime('2015-02-09'), 'valor_desconto' => 10.0, 'prazo' => 10, 'taxa_de_permanencia' => '0', 'mensagem' => 'Descrição do boleto', 'data_multa' => new \DateTime('2015-02-07'), 'valor_multa' => 11.2));
     $texto = $arquivo->getText();
     $lines = explode("\r\n", trim($texto, "\r\n"));
     $this->assertEquals(7, count($lines));
     $headerArquivoText = $lines[0];
     $headerLoteText = $lines[1];
     $segmentoPText = $lines[2];
     $segmentoQText = $lines[3];
     $segmentoRText = $lines[4];
     $trailerLoteText = $lines[5];
     $trailerArquivoText = $lines[6];
     $asserts = array('headerArquivo' => array('1:3' => '104', '4:7' => '0000', '8:8' => '0', '9:17' => '         ', '18:18' => '2', '19:32' => '11222333444455', '33:52' => '00000000000000000000', '53:57' => '01234', '58:58' => '3', '59:64' => '123123', '65:71' => '0000000', '72:72' => '0', '73:102' => 'Nome Fantasia da sua empresa  ', '103:132' => 'C ECON FEDERAL                ', '133:142' => '          ', '143:143' => '1', '144:151' => '01022015', '152:157' => '010203', '158:163' => '000001', '164:166' => '050', '167:171' => '00000', '172:191' => '                    ', '192:211' => 'REMESSA-PRODUCAO    ', '212:215' => '    ', '216:240' => '                         '), 'headerLote' => array('1:3' => '104', '4:7' => '0001', '8:8' => '1', '9:9' => 'R', '10:11' => '02', '12:13' => '00', '14:16' => '030', '17:17' => ' ', '18:18' => '2', '19:33' => '011222333444455', '34:39' => '123123', '40:53' => '              ', '54:58' => '01234', '59:59' => '3', '60:65' => '123123', '66:72' => '0000000', '73:73' => '0', '74:103' => 'Nome Fantasia da sua empresa  ', '104:143' => '                                        ', '144:183' => '                                        ', '184:191' => '00000001', '192:199' => '01022015', '200:207' => '00000000', '208:240' => '                                 '), 'segmentoP' => array('1:3' => '104', '4:7' => '0001', '8:8' => '3', '9:13' => '00001', '14:14' => 'P', '15:15' => ' ', '16:17' => '01', '18:22' => '01234', '23:23' => '3', '24:29' => '123123', '30:37' => '00000000', '38:40' => '000', '41:42' => '21', '43:57' => '000000012345679', '58:58' => '1', '59:59' => '2', '60:60' => '2', '61:61' => '2', '62:62' => '2', '63:73' => '12345678   ', '74:77' => '    ', '78:85' => '03022015', '86:100' => '000000000010039', '101:105' => '00000', '106:106' => '0', '107:108' => '99', '109:109' => 'N', '110:117' => '14012015', '118:118' => '1', '119:126' => '03022015', '127:141' => '000000000000010', '142:142' => '1', '143:150' => '09022015', '151:165' => '000000000001000', '166:180' => '000000000000000', '181:195' => '000000000000000', '196:220' => '12345678                 ', '221:221' => '3', '222:223' => '00', '224:224' => '1', '225:227' => '030', '228:229' => '09', '230:239' => '0000000000', '240:240' => ' '), 'segmentoQ' => array('1:3' => '104', '4:7' => '0001', '8:8' => '3', '9:13' => '00002', '14:14' => 'Q', '15:15' => ' ', '16:17' => '01', '18:18' => '2', '19:33' => '021222333444455', '34:73' => 'NOME DO CLIENTE                         ', '74:113' => 'LOGRADOURO DO CLIENTE                   ', '114:128' => 'BAIRRO DO CLIEN', '129:136' => '00000111', '137:151' => 'CIDADE DO CLIEN', '152:153' => 'BA', '154:154' => '2', '155:169' => '011222333444455', '170:209' => 'Nome Fantasia da sua empresa            ', '210:212' => '   ', '213:232' => '                    ', '233:240' => '        '), 'segmentoR' => array('1:3' => '104', '4:7' => '0001', '8:8' => '3', '9:13' => '00003', '14:14' => 'Q', '15:15' => ' ', '16:17' => '01', '18:65' => '                                                ', '66:66' => '1', '67:74' => '07022015', '75:89' => '000000000001120', '90:99' => '          ', '100:139' => '                                        ', '140:179' => '                                        ', '180:240' => '                                                             '), 'trailerLote' => array('1:3' => '104', '4:7' => '0001', '8:8' => '5', '18:23' => '000005', '24:29' => '000001', '30:46' => '00000000000010039', '93:123' => '                               ', '124:240' => '                                                                                                                     ', '47:52' => '000000', '53:69' => '00000000000000000', '9:17' => '         ', '70:75' => '000000', '76:92' => '00000000000000000'), 'trailerArquivo' => array('1:3' => '104', '4:7' => '9999', '8:8' => '9', '9:17' => '         ', '18:23' => '000001', '24:29' => '000007', '30:35' => '      ', '36:240' => '                                                                                                                                                                                                             '));
     foreach ($asserts as $tipo => $campos) {
         $vname = "{$tipo}Text";
         foreach ($campos as $pos => $value) {
             $aux = explode(':', $pos);
             $start = $aux[0] - 1;
             $end = $aux[1] - $aux[0] + 1;
             $this->assertEquals($value, substr(${$vname}, $start, $end), "[ ] Campo {$pos} do {$tipo}");
         }
     }
 }
Exemplo n.º 2
0
 public function testArquivoItauCnab400PodeSerLido()
 {
     $factory = new \Cnab\Factory();
     $arquivo = $factory->createRetorno('tests/fixtures/cnab400/retorno-cnab400-itau.ret');
     $this->assertNotNull($arquivo);
     $this->assertNotNull($arquivo->header);
     $this->assertNotNull($arquivo->trailer);
     $this->assertEquals(\Cnab\Banco::ITAU, $arquivo->getCodigoBanco());
     $detalhes = $arquivo->listDetalhes();
     $this->assertEquals(4, count($detalhes));
     $detalhe = $detalhes[0];
     $this->assertEquals(12345, $arquivo->getConta());
     $this->assertEquals(0, $arquivo->getContaDac());
     $this->assertEquals(341, $arquivo->getCodigoBanco());
     $this->assertEquals(new \DateTime('2013-08-22 00:00:00'), $arquivo->getDataGeracao());
     $this->assertEquals(new \DateTime('2013-06-21 00:00:00'), $arquivo->getDataCredito());
     $this->assertEquals(6, $detalhe->getCodigo());
     $this->assertEquals(209.97, $detalhe->getValorRecebido());
     $this->assertEquals(389.75, $detalhe->getValorTitulo());
     $this->assertEquals(3.33, $detalhe->getValorTarifa());
     $this->assertEquals(0.1, $detalhe->getValorIOF());
     $this->assertEquals(176.45, $detalhe->getValorDesconto());
     $this->assertEquals(0.19, $detalhe->getValorAbatimento());
     $this->assertEquals(0.18, $detalhe->getValorOutrosCreditos());
     $this->assertEquals(123123.12, $detalhe->getValorMoraMulta());
     $this->assertEquals('1A', $detalhe->getNumeroDocumento());
     $this->assertEquals(109, $detalhe->getCarteira());
     $this->assertEquals('0177', $detalhe->getAgencia());
     $this->assertEquals(231327, $detalhe->getNossoNumero());
     $this->assertEquals(null, $detalhe->getDataVencimento());
     $this->assertEquals(new \DateTime('2013-06-21 00:00:00'), $detalhe->getDataCredito());
     $this->assertEquals(new \DateTime('2013-06-20 00:00:00'), $detalhe->getDataOcorrencia());
     $this->assertEquals(3027, $detalhe->getAgenciaCobradora());
     $this->assertEquals(2, $detalhe->getAgenciaCobradoraDac());
     $this->assertEquals(2, $detalhe->getNumeroSequencial());
     $this->assertEquals('LIQUIDAÇÃO NORMAL', $detalhe->getCodigoNome());
     $this->assertEquals(false, $detalhe->isBaixa());
     $this->assertEquals(false, $detalhe->isBaixaRejeitada());
     $this->assertEquals('B2', $detalhe->getCodigoLiquidacao());
     $this->assertEquals(false, $detalhe->isDDA());
     $this->assertEquals(null, $detalhe->getAlegacaoPagador());
     $this->assertEquals('OUTROS BANCOS – PELA LINHA DIGITÁVEL', $detalhe->getDescricaoLiquidacao());
     $this->assertNotEmpty($detalhe->getDescricaoLiquidacao());
     // teste boleto dda e alegacao sacado
     $detalhe = $detalhes[1];
     $this->assertEquals(true, $detalhe->isDDA());
     $this->assertEquals('BOLETO DDA, DIVIDA NÃO RECONHECIDA PELO PAGADOR', $detalhe->getAlegacaoPagador());
 }
Exemplo n.º 3
0
 public function testArquivoCaixaSigcbPodeSerLido()
 {
     $factory = new \Cnab\Factory();
     $arquivo = $factory->createRetorno('tests/fixtures/cnab240/retorno_cnab240_caixa.ret');
     $this->assertNotNull($arquivo);
     $this->assertNotNull($arquivo->header);
     $this->assertNotNull($arquivo->lotes);
     $this->assertNotNull($arquivo->trailer);
     $this->assertEquals(104, $arquivo->getCodigoBanco());
     $this->assertEquals(\DateTime::createFromFormat('d/m/Y', '06/01/2014'), $arquivo->getDataGeracao());
     $detalhe = $arquivo->listDetalhes();
     $detalhe = $detalhe[0];
     $this->assertEquals(6, $detalhe->getCodigo());
     $this->assertEquals(80.0, $detalhe->getValorRecebido());
     $this->assertEquals(80.0, $detalhe->getValorTitulo());
     $this->assertEquals(1.25, $detalhe->getValorTarifa());
     $this->assertEquals(0, $detalhe->getValorIOF());
     $this->assertEquals(0, $detalhe->getValorDesconto());
     $this->assertEquals(0, $detalhe->getValorAbatimento());
     $this->assertEquals(0, $detalhe->getValorOutrosCreditos());
     $this->assertEquals(0, $detalhe->getValorMoraMulta());
     $this->assertEquals(null, $detalhe->getNumeroDocumento());
     $this->assertEquals(null, $detalhe->getCarteira());
     $this->assertEquals('0', $detalhe->getAgencia());
     $this->assertEquals(11136997, $detalhe->getNossoNumero());
     $this->assertEquals(new \DateTime('2014-01-02 00:00:00'), $detalhe->getDataVencimento());
     $this->assertEquals(new \DateTime('2014-01-07 00:00:00'), $detalhe->getDataCredito());
     $this->assertEquals(new \DateTime('2014-01-06 00:00:00'), $detalhe->getDataOcorrencia());
     $this->assertEquals(1086, $detalhe->getAgenciaCobradora());
     $this->assertEquals(0, $detalhe->getAgenciaCobradoraDac());
     $this->assertEquals(1, $detalhe->getNumeroSequencial());
     //$this->assertEquals('LIQUIDAÇÃO NORMAL', $detalhe->getCodigoNome());
     $this->assertEquals(true, $detalhe->isBaixa());
     $this->assertEquals(false, $detalhe->isBaixaRejeitada());
     $this->assertEquals(null, $detalhe->getCodigoLiquidacao());
     $this->assertEquals(false, $detalhe->isDDA());
     $this->assertEquals(null, $detalhe->getAlegacaoPagador());
     $this->assertEquals(null, $detalhe->getDescricaoLiquidacao());
 }