protected function processarDetalhe(array $detalhe)
{
if ($this->count() == 1) {
if (trim($this->rem(384, 385, $detalhe), '') != '') {
$this->getHeader()->setConta($this->getHeader()->getConta() . $this->rem(384, 385, $detalhe));
}
}
$d = $this->detalheAtual();
$d->setNossoNumero($this->rem(63, 70, $detalhe))->setNumeroDocumento($this->rem(117, 126, $detalhe))->setOcorrencia($this->rem(109, 110, $detalhe))->setOcorrenciaDescricao(array_get($this->ocorrencias, $d->getOcorrencia(), 'Desconhecida'))->setDataOcorrencia($this->rem(111, 116, $detalhe))->setDataVencimento($this->rem(147, 152, $detalhe))->setDataCredito($this->rem(296, 301, $detalhe))->setValor(Util::nFloat($this->rem(153, 165, $detalhe) / 100, 2, false))->setValorTarifa(Util::nFloat($this->rem(176, 188, $detalhe) / 100, 2, false))->setValorIOF(Util::nFloat($this->rem(215, 227, $detalhe) / 100, 2, false))->setValorAbatimento(Util::nFloat($this->rem(228, 240, $detalhe) / 100, 2, false))->setValorDesconto(Util::nFloat($this->rem(241, 253, $detalhe) / 100, 2, false))->setValorRecebido(Util::nFloat($this->rem(254, 266, $detalhe) / 100, 2, false))->setValorMora(Util::nFloat($this->rem(267, 279, $detalhe) / 100, 2, false))->setValorMulta(Util::nFloat($this->rem(280, 292, $detalhe) / 100, 2, false));
$this->totais['valor_recebido'] += $d->getValorRecebido();
if ($d->hasOcorrencia('06', '07', '08', '16', '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('10')) {
$this->totais['protestados']++;
$d->setOcorrenciaTipo($d::OCORRENCIA_PROTESTADA);
} elseif ($d->hasOcorrencia('14')) {
$this->totais['alterados']++;
$d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
} elseif ($d->hasOcorrencia('03')) {
$this->totais['erros']++;
$errorsRetorno = str_split(sprintf('%09s', $this->rem(137, 145, $detalhe)), 3);
$error = [];
$error[] = array_get($this->rejeicoes, $errorsRetorno[0], '');
$error[] = array_get($this->rejeicoes, $errorsRetorno[1], '');
$error[] = array_get($this->rejeicoes, $errorsRetorno[2], '');
$d->setError(implode(PHP_EOL, $error));
} else {
$d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
}
return true;
}