diff --git a/src/Cnab/Retorno/Cnab400/Banco/Daycoval.php b/src/Cnab/Retorno/Cnab400/Banco/Daycoval.php index 8bec2f4b..a56b82fc 100644 --- a/src/Cnab/Retorno/Cnab400/Banco/Daycoval.php +++ b/src/Cnab/Retorno/Cnab400/Banco/Daycoval.php @@ -24,7 +24,31 @@ class Daycoval extends AbstractRetorno implements RetornoCnab400 * @var array */ private $ocorrencias = [ - + '01' => 'Entrada Confirmada na CIP', + '02' => 'Entrada Confirmada', + '03' => 'Entrada Rejeitada', + '05' => 'Campo Livre Alterado', + '06' => 'Liquidação Normal', + '08' => 'Liquidação em Cartório', + '09' => 'Baixa Automática', + '10' => 'Baixa por ter sido liquidado', + '12' => 'Confirma Abatimento', + '13' => 'Abatimento Cancelado', + '14' => 'Vencimento Alterado', + '15' => 'Baixa Rejeitada', + '16' => 'Instrução Rejeitada', + '19' => 'Confirma Recebimento de Ordem de Protesto', + '20' => 'Confirma Recebimento de Ordem de Sustação', + '22' => 'Seu Número Alterado', + '23' => 'Título enviado para Cartório', + '24' => 'Confirma recebimento de ordem de não protestar', + '28' => 'Débito de tarifas/custas – Correspondentes', + '40' => 'Tarifa de entrada (debitada na liquidação)', + '43' => 'Baixado por ter sido protestado', + '96' => 'Tarifa sobre instruções – Mês anterior', + '97' => 'Tarifa sobre baixas – Mês anterior', + '98' => 'Tarifa sobre entradas – Mês anterior', + '99' => 'Tarifa sobre instrução de protesto/sustação – mês anterior', ]; /** @@ -33,7 +57,108 @@ class Daycoval extends AbstractRetorno implements RetornoCnab400 * @var array */ private $rejeicoes = [ - + '03' => [ + '03' => 'CEP inválido – Não temos cobrador – Cobrador não Localizado', + '04' => 'Sigla do Estado inválida', + '05' => 'Data de Vencimento inválida ou fora do prazo mínimo', + '06' => 'Código do Banco inválido', + '08' => 'Nome do sacado não informado', + '10' => 'Logradouro não informado', + '14' => 'Registro em duplicidade', + '19' => 'Data de desconto inválida ou maior que a data de vencimento', + '20' => 'Valor de IOF não numérico', + '21' => 'Movimento para título não cadastrado no sistema', + '22' => 'Valor de desconto + abatimento maior que o valor do título', + '25' => 'CNPJ ou CPF do sacado inválido (aceito com restrições)', + '26' => 'Espécies de documento inválida (difere de 01...10,13 e 99)', + '27' => 'Data de emissão do título inválida', + '28' => 'Seu número não informado', + '29' => 'CEP é igual a espaço ou zeros; ou não numérico', + '30' => 'Valor do título não numérico ou inválido', + '36' => 'Valor de permanência não numérico', + '37' => 'Valor de permanência inconsistente, pois, dentro de um mês, será maior que o valor do título', + '38' => 'Valor de desconto/abatimento não numérico ou inválido', + '39' => 'Valor de abatimento não numérico', + '42' => 'Título já existente em nossos registros. Nosso número não aceito', + '43' => 'Título enviado em duplicidade nesse movimento', + '44' => 'Título zerado ou em branco; ou não numérico na remessa', + '46' => 'Título enviado fora da faixa de Nosso Número, estipulada para o cliente', + '51' => 'Tipo/Número de Inscrição Sacador/Avalista Inválido', + '52' => 'Sacador/Avalista não informado', + '53' => 'Prazo de vencimento do título excede ao da contratação', + '54' => 'Banco informado não é nosso correspondente 140-142', + '55' => 'Banco correspondente informado não cobra este CEP ou não possui faixas de CEP cadastradas', + '56' => 'Nosso número no correspondente não foi informado', + '57' => 'Remessa contendo duas instruções incompatíveis – não protestar e dias de protesto ou prazo para protesto inválido', + '58' => 'Entradas Rejeitadas – Reprovado no Represamento para Análise', + '60' => 'CNPJ/CPF do sacado inválido – título recusado', + '87' => 'Excede Prazo máximo entre emissão e vencimento', + '99' => 'Título não acatado pelo banco – entrar em contato Gerente da conta', + 'AA' => 'Serviço de Cobrança inválido', + 'AB' => 'Nossa Carteira inválida', + 'AE' => 'Título não possui abatimento', + 'AI' => 'Nossa Cobrança inválida', + 'AJ' => 'Modalidade com bancos correspondentes inválida', + 'AL' => 'Sacado impedido de entrar nesta cobrança', + 'AU' => 'Data de ocorrência inválida', + 'AV' => 'Valor de tarifa de cobrança inválida', + 'AX' => 'Título em pagamento parcial', + 'BC' => 'Análise gerencial-sacado inválido p/operação crédito', + 'BD' => 'Análise gerencial-sacado inadimplente', + 'BE' => 'Análise gerencial-sacado difere do exigido', + 'BF' => 'Análise gerencial-vencto excede vencto da operação de crédito', + 'BG' => 'Análise gerencial-sacado com baixa liquidez', + 'BH' => 'Análise gerencial-sacado excede concentração', + 'CC' => 'Valor de iof incompatível com a espécie documento', + 'CD' => 'Efetivação de protesto sem agenda válida', + 'CE' => 'Título não aceito - pessoa física', + 'CF' => 'Excede prazo máximo da entrada ao vencimento', + 'CG' => 'Título não aceito – por análise gerencial', + 'CH' => 'Título em espera – em análise pelo banco', + 'CJ' => 'Análise gerencial-vencto do titulo abaixo przcurto', + 'CK' => 'Análise gerencial-vencto do titulo abaixo przlongo', + 'CS' => 'Título rejeitado pela checagem de duplicatas', + 'DA' => 'Análise gerencial – Entrada de Título Descontado com limite cancelado', + 'DB' => 'Análise gerencial – Entrada de Título Descontado com limite vencido', + 'DC' => 'Análise gerencial - cedente com limite cancelado', + 'DD' => 'Análise gerencial – cedente é sacado e teve seu limite cancelado', + 'DE' => 'Análise gerencial - apontamento no Serasa', + 'DG' => 'Endereço sacador/avalista não informado', + 'DH' => 'Cep do sacador/avalista não informado', + 'DI' => 'Cidade do sacador/avalista não informado', + 'DJ' => 'Estado do sacador/avalista inválido ou não informado', + 'DM' => 'Cliente sem Código de Flash cadastrado no cobrador', + 'DN' => 'Título Descontado com Prazo ZERO – Recusado', + 'DP' => 'Data de Referência menor que a Data de Emissão do Título', + 'DT' => 'Nosso Número do Correspondente não deve ser informado', + 'EB' => 'HSBC não aceita endereço de sacado com mais de 38 caracteres', + ], + '15' => [ + '05' => 'Solicitação de baixa para título já baixado ou liquidado', + '06' => 'Solicitação de baixa para título não registrado no sistema', + '08' => 'Solicitação de baixa para título em float', + ], + '16' => [ + '04' => 'Data de Vencimento não numérica ou inválida', + '05' => 'Data de vencimento inválida ou fora do prazo mínimo', + '14' => 'Registro em duplicidade', + '19' => 'Data de desconto inválida ou maior que a data de vencimento', + '20' => 'Campo livre informado', + '21' => 'Título não registrado no sistema', + '22' => 'Título baixado ou liquidado', + '26' => 'Espécie de documento inválida', + '27' => 'Instrução não aceita, por não ter sido emitida ordem de protesto ao cartório', + '28' => 'Título tem instrução de cartório ativa', + '29' => 'Título não tem instrução de cartório ativa', + '30' => 'Existe instrução de não protestar, ativa para o título', + '36' => 'Valor de permanência (mora) não numérico', + '37' => 'Título Descontado - Instrução não permitida para a carteira', + '38' => 'Valor do abatimento não numérico ou maior que a soma do valor do título + permanência + multa', + '39' => 'Título em cartório', + '40' => 'Instrução recusada - cobrança vinculada / caucionada', + '44' => 'Título zerado ou em branco ou não numérico na remessa', + '99' => 'Ocorrência desconhecida na remessa', + ], ]; /** @@ -89,7 +214,6 @@ protected function processarDetalhe(array $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)); diff --git a/src/Util.php b/src/Util.php index fa9e21c0..6d16fd43 100644 --- a/src/Util.php +++ b/src/Util.php @@ -510,9 +510,9 @@ public static function formatCnab($tipo, $valor, $tamanho, $dec = 0, $sFill = '' // Verifica se o tipo é 'x' minúsculo e então retorna a string em minúsculas if ($tipo === 'Z') { - return strtolower(sprintf("%{$left}{$sFill}{$tamanho}{$type}", mb_substr($valor, 0, $tamanho))); + return strtolower(sprintf("%$left$sFill$tamanho$type", mb_substr($valor, 0, $tamanho))); } else { - return sprintf("%{$left}{$sFill}{$tamanho}{$type}", mb_substr($valor, 0, $tamanho)); + return sprintf("%$left$sFill$tamanho$type", mb_substr($valor, 0, $tamanho)); } } @@ -896,7 +896,7 @@ public static function isCnab400($content) /** * @param $file * - * @return array|bool + * @return array */ public static function file2array($file) { @@ -1101,7 +1101,7 @@ public static function getBancoClass($banco) */ public static function addPessoa(&$property, $obj) { - if (is_subclass_of($obj, 'Eduardokum\\LaravelBoleto\\Contracts\\Pessoa')) { + if (is_subclass_of($obj, "Eduardokum\LaravelBoleto\Contracts\Pessoa")) { $property = $obj; return $obj; @@ -1123,7 +1123,7 @@ public static function addPessoa(&$property, $obj) */ public static function addNotaFiscal(&$property, $obj) { - if (is_subclass_of($obj, 'Eduardokum\\LaravelBoleto\\Contracts\\NotaFiscal')) { + if (is_subclass_of($obj, "Eduardokum\LaravelBoleto\Contracts\NotaFiscal")) { $property[] = $obj; return $obj; @@ -1192,12 +1192,10 @@ public static function validarCpf($cpf) } for ($s = 10, $n = 0, $i = 0; $s >= 2; $n += $c[$i++] * $s--); if ($c[9] != ((($n %= 11) < 2) ? 0 : 11 - $n)) { - return false; } for ($s = 11, $n = 0, $i = 0; $s >= 2; $n += $c[$i++] * $s--); if ($c[10] != ((($n %= 11) < 2) ? 0 : 11 - $n)) { - return false; } @@ -1217,12 +1215,10 @@ public static function validarCnpj($cnpj) } for ($i = 0, $n = 0; $i < 12; $n += $c[$i] * $b[++$i]); if ($c[12] != ((($n %= 11) < 2) ? 0 : 11 - $n)) { - return false; } for ($i = 0, $n = 0; $i <= 12; $n += $c[$i] * $b[$i++]); if ($c[13] != ((($n %= 11) < 2) ? 0 : 11 - $n)) { - return false; }