public function buildDetail(Stringy $linha)
 {
     $detail = new Detail();
     $cedente = new Cedente();
     $banco = new Banco();
     $banco->setCod($linha->substr(1, 3));
     $detail->setLote($linha->substr(4, 4))->setRegistro($linha->substr(8, 1))->setNumRegistroLote($linha->substr(9, 5))->setSegmento($linha->substr(14, 1))->setTipoMovimento($linha->substr(15, 1))->setCodMovimento($linha->substr(16, 2))->setCodBarras($linha->substr(18, 44))->setDataVencimento($this->createDate($linha->substr(92, 8)))->setValorTitulo($linha->substr(100, 13))->setDesconto($linha->substr(115, 13))->setAcrescimos($linha->substr(130, 13))->setDataPagamento($this->createDate($linha->substr(145, 8)))->setValorPagamento($linha->substr(153, 13))->setQuantidadeMoeda($linha->substr(168, 10))->setReferenciaSacado($linha->substr(183, 20))->setNossoNumero($linha->substr(203, 20))->setCodMoeda($linha->substr(223, 2))->addCnab($linha->substr(225, 6))->addOcorrencia($linha->substr(231, 10));
     $cedente->setNome($linha->substr(62, 30))->setBanco($banco);
     $detail->setCedente($cedente);
     return $detail;
 }
 public function buildDetail(Stringy $linha)
 {
     $detail = new Detail();
     $banco = new Banco();
     $banco->setCod($linha->substr(1, 3));
     $detail->setLote($linha->substr(4, 4))->setRegistro($linha->substr(8, 1))->setNumRegistroLote($linha->substr(9, 5))->setSegmento($linha->substr(14, 1))->setTipoMovimento($linha->substr(15, 1))->setCodMovimento($linha->substr(16, 2));
     $banco->setAgencia($linha->substr(18, 5))->setDvAgencia($linha->substr(23, 1))->setConta($linha->substr(24, 12))->setDvConta($linha->substr(36, 1));
     $detail->setNossoNumero($linha->substr(38, 20))->setCarteira($linha->substr(58, 1))->setNumeroDocumento($linha->substr(59, 15))->setDataVencimento($linha->substr(74, 8))->setValorTitulo($linha->substr(82, 13));
     $banco->setCod($linha->substr(97, 3))->setAgencia($linha->substr(100, 5))->setDvAgencia($linha->substr(105, 1));
     $empresa = new Empresa();
     $empresa->addUso($linha->substr(106, 25));
     $detail->setCodMoeda($linha->substr(131, 2));
     $sacado = new Sacado();
     $sacado->setInscricao(new Inscricao($linha->substr(134, 15), $linha->substr(133, 1)))->setNome($linha->substr(149, 40));
     $detail->setNumeroContrato($linha->substr(189, 10))->setValorTarifa($linha->substr(199, 13))->addOcorrencia($linha->substr(214, 10))->addCnab($linha->substr(224, 17));
     $cedente = new Cedente();
     $cedente->setBanco($banco);
     $detail->setCedente($cedente)->setSacado($sacado);
     return $detail;
 }
 protected function processarDetalhe($linha)
 {
     $detail = new Detail();
     $detail->setRegistro($linha->substr(1, 1)->trim())->setDataPagamento($this->createDateTime($linha->substr(22, 8)->trim(), "Ymd"))->setDataCredito($this->createDateTime($linha->substr(30, 8)->trim(), "Ymd"))->setCodBarras($linha->substr(38, 44)->trim())->setValorRecebido($linha->substr(82, 10)->trim())->setValorTarifa($linha->substr(94, 5)->trim())->setNumeroSequencial($linha->substr(101, 8)->trim())->setCodigoAgenciaArrecadadora($linha->substr(109, 8)->trim())->setFormaArrecadacao($linha->substr(117, 1)->trim())->setNumeroAutenticacao($linha->substr(118, 23)->trim())->setFormaPagamento($linha->substr(141, 1)->trim())->setFiller($linha->substr(142, 9)->trim());
     $banco = new Banco();
     $banco->setAgencia($linha->substr(2, 4)->trim())->setConta($linha->substr(6, 14)->trim())->setDvConta($linha->substr(20, 1)->trim());
     $cedente = new Cedente();
     $cedente->setBanco($banco);
     $detail->setCedente($cedente);
     return $detail;
 }
 /**
  * Processa uma linha detalhe do arquivo.
  * @param string $linha Linha detalhe do arquivo processado
  * @return string Retorna um vetor contendo os dados dos campos da linha detalhe. 
  */
 protected function processarDetalhe($linha)
 {
     $detail = $this->createDetail();
     $bancoEmissor = new Banco();
     $bancoEmissor->setAgencia(substr($linha, 22, 1))->setDvAgencia(substr($linha, 31, 1))->setConta(substr($linha, 23, 8))->setDvConta(substr($linha, 31, 1));
     $bancoRecebedor = new Banco();
     $bancoRecebedor->setCod(substr($linha, 166, 3))->setAgencia(substr($linha, 169, 4))->setDvAgencia(substr($linha, 173, 1));
     $bancoEmpresa = new Banco();
     $bancoEmpresa->setCod(substr($linha, 21, 17));
     $empresa = new Empresa();
     $empresa->setBanco($bancoEmpresa)->setTipoInscricao(substr($linha, 2, 2))->setNumInscricao(substr($linha, 4, 14))->addReservado(substr($linha, 38, 25));
     $detail->setBancoEmissor($bancoEmissor)->setBancoRecebedor($bancoRecebedor)->setRegistro(substr($linha, 1, 1))->setNumOcorrencia(substr($linha, 117, 10))->setDataVencimento(substr($linha, 147, 6))->setValor($this->formataNumero(substr($linha, 153, 13)))->setDespCobranca(substr($linha, 176, 2))->setOutrasDespesas($this->formataNumero(substr($linha, 189, 13)))->setJurosAtraso($this->formataNumero(substr($linha, 202, 13)))->setTaxaIof($this->formataNumero(substr($linha, 215, 13)))->setDescontoConcedido($this->formataNumero(substr($linha, 241, 13)))->setValorRecebido($this->formataNumero(substr($linha, 254, 13)))->setJurosMora($this->formataNumero(substr($linha, 267, 13)))->setOutrosRecebimentos($this->formataNumero(substr($linha, 280, 13)))->setValorAbatimento($this->formataNumero(substr($linha, 228, 13)))->setValorLancamento($this->formataNumero(substr($linha, 306, 13)))->setIndicativoDc(substr($linha, 319, 1))->setIndicadorValor(substr($linha, 320, 1))->setValorAjuste($this->formataNumero(substr($linha, 321, 12)))->setSequencial(substr($linha, 395, 6))->setMotivoCodOcorrencia(substr($linha, 319, 10))->setNumCartorio(substr($linha, 369, 2))->setNumCartorio(substr($linha, 369, 2))->setNumCartorio(substr($linha, 369, 2));
     return $detail;
 }
 /**
  * Processa a linha trailer do arquivo.
  * @param string $linha Linha trailer do arquivo processado
  * @return ITrailer Retorna um vetor contendo os dados dos campos da linha trailer do arquivo.
  */
 protected function processarTrailerArquivo($linha)
 {
     $trailer = $this->createTrailer();
     $banco = new Banco();
     $banco->setCod($linha->substr(5, 3)->trim());
     $simples = new Cobranca();
     $simples->setQtdTitulos($linha->substr(18, 8)->trim())->setValorTotal($this->formataNumero($linha->substr(26, 14)->trim()))->setNumAviso($linha->substr(40, 8)->trim());
     $vinculada = new Cobranca();
     $vinculada->setQtdTitulos($linha->substr(58, 8)->trim())->setValorTotal($this->formataNumero($linha->substr(66, 14)->trim()))->setNumAviso($linha->substr(80, 8)->trim());
     $caucionada = new Cobranca();
     $caucionada->setQtdTitulos($linha->substr(98, 8)->trim())->setValorTotal($this->formataNumero($linha->substr(106, 14)->trim()))->setNumAviso($linha->substr(120, 8)->trim());
     $descontada = new Cobranca();
     $descontada->setQtdTitulos($linha->substr(138, 8)->trim())->setValorTotal($this->formataNumero($linha->substr(146, 14)->trim()))->setNumAviso($linha->substr(160, 8)->trim());
     $vendor = new Cobranca();
     $vendor->setQtdTitulos($linha->substr(218, 8)->trim())->setValorTotal($this->formataNumero($linha->substr(226, 14)->trim()))->setNumAviso($linha->substr(240, 8)->trim());
     $trailer->setBanco($banco)->setRegistro($linha->substr(1, 1)->trim())->setRetorno($linha->substr(2, 1)->trim())->setTipoRegistro($linha->substr(3, 2)->trim())->setSimples($simples)->setVinculada($vinculada)->setCaucionada($caucionada)->setDescontada($descontada)->setVendor($vendor)->setSequencial($linha->substr(395, 6)->trim());
     return $trailer;
 }
 protected function processarTrailerArquivo($linha)
 {
     $trailer = new Trailer();
     $banco = new Banco();
     $banco->setCod($linha->substr(1, 3)->trim());
     $cedente = new Cedente();
     $cedente->setNome($linha->substr(62, 30)->trim())->setBanco($banco);
     $trailer->setLote($linha->substr(4, 4)->trim())->setRegistro($linha->substr(8, 1)->trim())->addCnab($linha->substr(9, 9)->trim())->setQuantidadeLotes($linha->substr(18, 6)->trim())->setQuantidadeRegistros($linha->substr(24, 6)->trim())->setQuantidadeContasConc($linha->substr(30, 6)->trim())->addCnab($linha->substr(36, 205)->trim());
     return $trailer;
 }
 public function buildDetail(Stringy $linha)
 {
     $detail = new Detail();
     $banco = new Banco();
     $bancoSacado = new Banco();
     $sacado = new Sacado();
     $ocorrencia = new Ocorrencia();
     $dadosTitulo = new DadosTitulo();
     $cedente = new Cedente();
     $bancoSacado->setCod($linha->substr(1, 3));
     $sacado->setBanco($bancoSacado);
     $detail->setLote($linha->substr(4, 4))->setRegistro($linha->substr(8, 1))->setNumRegistroLote($linha->substr(9, 5))->setSegmento($linha->substr(14, 1))->addCnab($linha->substr(15, 1))->setCodMovimento($linha->substr(16, 2));
     //Dados do Titulo
     $dadosTitulo->setAcrescimos($this->convertToFloat($linha->substr(18, 15)))->setValorDesconto($this->convertToFloat($linha->substr(33, 15)))->setValorAbatimento($this->convertToFloat($linha->substr(48, 15)))->setValorIOF($this->convertToFloat($linha->substr(63, 15)))->setValorPago($this->convertToFloat($linha->substr(78, 15)))->setValorLiquido($this->convertToFloat($linha->substr(93, 15)));
     $detail->setDadosTitulo($dadosTitulo)->setOutrasDespesas($this->convertToFloat($linha->substr(108, 15)))->setOutrosCreditos($this->convertToFloat($linha->substr(123, 15)))->setDataOcorrencia($this->createDate($linha->substr(138, 8), "dmY"))->setDataCredito($this->createDate($linha->substr(146, 8), "dmY"));
     $ocorrencia->setCod($this->convertToInt($linha->substr(154, 4)))->setData($this->createDate($linha->substr(158, 8)))->setValor($this->convertToFloat($linha->substr(166, 15)))->setComplemento($linha->substr(181, 30));
     $banco->setCod($linha->substr(211, 3));
     $cedente->setBanco($banco);
     $detail->setNossoNumero($linha->substr(214, 20))->addCnab($linha->substr(234, 7));
     $detail->setCedente($cedente)->setSacado($sacado);
     return $detail;
 }