Eduardokum\LaravelBoleto\Cnab\Retorno\Cnab240\Banco\Santander::processarDetalhe PHP Method

processarDetalhe() protected method

protected processarDetalhe ( array $detalhe ) : boolean
$detalhe array
return boolean
    protected function processarDetalhe(array $detalhe)
    {
        if ($this->count() <= 2 && $this->getServiceType($detalhe) == '3') {
            if ($this->getSegmentType($detalhe) == 'T') {
                $d = $this->detalheAtual()->setOcorrencia($this->rem(16, 17, $detalhe));
                $d = $this->detalheAtual()->getSegmentoT()->setCodigoBancoCompensacao($this->rem(1, 3, $detalhe))->setNumeroLoteRetorno($this->rem(4, 7, $detalhe))->setTipoRegistro($this->rem(8, 8, $detalhe))->setNumeroSequencialRegistroLote($this->rem(9, 13, $detalhe))->setCodigoSegmentoRegistroDetalhe($this->rem(14, 14, $detalhe))->setAgenciaCedente($this->rem(18, 21, $detalhe))->setAgenciaCedenteDigito($this->rem(22, 22, $detalhe))->setContaCorrente($this->rem(23, 31, $detalhe))->setContaDigito($this->rem(32, 32, $detalhe))->setNossoNumero($this->rem(41, 53, $detalhe))->setCodigoCarteira($this->rem(54, 54, $detalhe))->setSeuNumero($this->rem(55, 69, $detalhe))->setDataVencimento($this->convertDate($this->rem(70, 77, $detalhe)))->setValorTitulo(Util::nFloat($this->rem(78, 92, $detalhe)) / 100, 2, false)->setNumeroBancoCobradorRecebedor($this->rem(93, 95, $detalhe))->setAgenciaCobradoraRecebedora($this->rem(96, 99, $detalhe))->setDigitoAgenciaCedente($this->rem(100, 100, $detalhe))->setIdentificador($this->rem(101, 125, $detalhe))->setCodigoMoeda($this->rem(126, 127, $detalhe))->setTipoInscriçãoSacado($this->rem(128, 128, $detalhe))->setNumeroInscricaoSacado($this->rem(129, 143, $detalhe))->setNomeSacado($this->rem(144, 183, $detalhe))->setContaCobranca($this->rem(184, 193, $detalhe))->setValorTarifa(Util::nFloat($this->rem(194, 208, $detalhe)) / 100, 2, false)->setIdentificacaoRejeicao($this->rem(209, 218, $detalhe))->setNumeroDocumento($this->rem(55, 69, $detalhe));
                //ocorrencias
                $d = $this->detalheAtual();
                $this->totais['valor_recebido'] += $d->getValorPagoSacado();
                if ($d->hasOcorrencia('06', '09', '17')) {
                    $this->totais['liquidados']++;
                    $d->setOcorrenciaTipo($d::OCORRENCIA_LIQUIDADA);
                } elseif ($d->hasOcorrencia('02')) {
                    $this->totais['entradas']++;
                    $d->setOcorrenciaTipo($d::OCORRENCIA_ENTRADA);
                } elseif ($d->hasOcorrencia('09')) {
                    $this->totais['baixados']++;
                    $d->setOcorrenciaTipo($d::OCORRENCIA_BAIXADA);
                } elseif ($d->hasOcorrencia('19')) {
                    $this->totais['protestados']++;
                    $d->setOcorrenciaTipo($d::OCORRENCIA_PROTESTADA);
                } elseif ($d->hasOcorrencia('27', '30')) {
                    $this->totais['alterados']++;
                    $d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
                } elseif ($d->hasOcorrencia('03', '26', '30')) {
                    $this->totais['erros']++;
                    $errorsRetorno = str_split(sprintf('%09s', $this->rem(209, 218, $detalhe)), 3);
                    $error = array_get($this->rejeicoes, $errorsRetorno[0], '');
                    $error .= array_get($this->rejeicoes, $errorsRetorno[1], '');
                    $error .= array_get($this->rejeicoes, $errorsRetorno[2], '');
                    $d->setError($error);
                } else {
                    $d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
                }
            } elseif ($this->getSegmentType($detalhe) == 'U') {
                $d = $this->detalheAtual()->getSegmentoU()->setCodigoBancoCompensacao($this->rem(1, 3, $detalhe))->setLoteServico($this->rem(4, 7, $detalhe))->setTipoRegistro($this->rem(8, 8, $detalhe))->setNumeroSequencialRegistroLote($this->rem(9, 13, $detalhe))->setCodigoSegmentoRegistroDetalhe($this->rem(14, 14, $detalhe))->setJurosMultaEncargos(Util::nFloat($this->rem(18, 32, $detalhe)) / 100, 2, false)->setValorDescontoConcedido(Util::nFloat($this->rem(33, 47, $detalhe)) / 100, 2, false)->setValorAbatimentoConcedidoCancelado(Util::nFloat($this->rem(48, 62, $detalhe)) / 100, 2, false)->setValorIOF(Util::nFloat($this->rem(63, 77, $detalhe)) / 100, 2, false)->setValorPagoSacado(Util::nFloat($this->rem(78, 92, $detalhe)) / 100, 2, false)->setValorLiquidoCreditado(Util::nFloat($this->rem(93, 107, $detalhe)) / 100, 2, false)->setValorOutrasDespesas(Util::nFloat($this->rem(108, 122, $detalhe)) / 100, 2, false)->setValorOutrosCreditos(Util::nFloat($this->rem(123, 137, $detalhe)) / 100, 2, false)->setDataOcorrencia($this->convertDate($this->rem(138, 145, $detalhe)))->setDataCredito($this->convertDate($this->rem(146, 153, $detalhe)))->setCodigoOcorrenciaSacado($this->rem(154, 157, $detalhe))->setDataOcorrenciaSacado($this->convertDate($this->rem(158, 165, $detalhe)))->setValorOcorrenciaSacado(Util::nFloat($this->rem(166, 180, $detalhe)) / 100, 2, false)->setComplementoOcorrenciaSacado($this->rem(181, 210, $detalhe))->setCodigoBancoCorrespondenteCompensacao($this->rem(211, 213, $detalhe));
            } elseif ($this->getSegmentType($detalhe) == 'Y') {
                $d = $this->detalheAtual()->getSegmentoY()->setCodigoBancoCompensacao($this->rem(1, 3, $detalhe))->setLoteServico($this->rem(4, 7, $detalhe))->setTipoRegistro($this->rem(8, 8, $detalhe))->setNumeroSequencialRegistroLote($this->rem(9, 13, $detalhe))->setCodigoSegmentoRegistroDetalhe($this->rem(14, 14, $detalhe))->setCodigoOcorrencia($this->rem(16, 17, $detalhe))->setIdentificacaoRegistroOpcional($this->rem(18, 19, $detalhe))->setIdentificacaoCheque(array('1' => $this->rem(20, 53, $detalhe), '2' => $this->rem(44, 87, $detalhe), '3' => $this->rem(88, 121, $detalhe), '4' => $this->rem(122, 155, $detalhe), '5' => $this->rem(156, 189, $detalhe), '6' => $this->rem(190, 223, $detalhe)));
            }
            return true;
        }
        return false;
    }