Skip to content

Commit

Permalink
erros cnab 400
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardokum committed Mar 27, 2018
1 parent c901b8d commit 67ba1d2
Show file tree
Hide file tree
Showing 5 changed files with 170 additions and 5 deletions.
62 changes: 62 additions & 0 deletions src/Cnab/Retorno/Cnab400/Banco/Bancoob.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,39 @@ class Bancoob extends AbstractRetorno implements RetornoCnab400
'27' => 'Confirmação Alteração Dados.',
'48' => 'Confirmação de instrução de transferência de carteira/modalidade de cobrança"'
];
/**
* Array com as possiveis rejeicoes do banco.
*
* @var array
*/
private $rejeicoes = [
'02' => 'Código do registro detalhe inválido',
'03' => 'Código da ocorrência inválida',
'04' => 'Código de ocorrência não permitida para a carteira',
'05' => 'Código de ocorrência não numérico',
'07' => 'Agência/conta/Digito – |Inválido',
'08' => 'Nosso número inválido',
'09' => 'Nosso número duplicado',
'10' => 'Carteira inválida',
'16' => 'Data de vencimento inválida',
'18' => 'Vencimento fora do prazo de operação',
'20' => 'Valor do Título inválido',
'21' => 'Espécie do Título inválida',
'22' => 'Espécie não permitida para a carteira',
'24' => 'Data de emissão inválida',
'38' => 'Prazo para protesto inválido',
'44' => 'Agência Cedente não prevista',
'50' => 'CEP irregular – Banco Correspondente',
'63' => 'Entrada para Título já cadastrado',
'68' => 'Débito não agendado – erro nos dados de remessa',
'69' => 'Débito não agendado – Pagador não consta no cadastro de autorizante',
'70' => 'Débito não agendado – Cedente não autorizado pelo Pagador',
'71' => 'Débito não agendado – Cedente não participa da modalidade de débito automático',
'72' => 'Débito não agendado – Código de moeda diferente de R$',
'73' => 'Débito não agendado – Data de vencimento inválida',
'74' => 'Débito não agendado – Conforme seu pedido, Título não registrado',
'75' => 'Débito não agendado – Tipo de número de inscrição do debitado inválido',
];

/**
* Roda antes dos metodos de processar
Expand All @@ -49,6 +82,12 @@ protected function init()
];
}

/**
* @param array $header
*
* @return bool
* @throws \Exception
*/
protected function processarHeader(array $header)
{
$this->getHeader()
Expand All @@ -66,6 +105,12 @@ protected function processarHeader(array $header)
return true;
}

/**
* @param array $detalhe
*
* @return bool
* @throws \Exception
*/
protected function processarDetalhe(array $detalhe)
{
$d = $this->detalheAtual();
Expand All @@ -88,6 +133,7 @@ protected function processarDetalhe(array $detalhe)
->setValorMora(Util::nFloat($this->rem(267, 279, $detalhe)/100, 2, false))
->setValorMulta(Util::nFloat($this->rem(280, 292, $detalhe)/100, 2, false));

$msgAdicional = str_split(sprintf('%08s', $this->rem(319, 328, $detalhe)), 2) + array_fill(0, 5, '');
if ($d->hasOcorrencia('05', '06')) {
$this->totais['liquidados']++;
$d->setOcorrenciaTipo($d::OCORRENCIA_LIQUIDADA);
Expand All @@ -103,13 +149,29 @@ protected function processarDetalhe(array $detalhe)
} elseif ($d->hasOcorrencia('14')) {
$this->totais['alterados']++;
$d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
} elseif ($d->hasOcorrencia('03', '24', '27', '30', '32')) {
$this->totais['erros']++;
$error = Util::appendStrings(
array_get($this->rejeicoes, $msgAdicional[0], ''),
array_get($this->rejeicoes, $msgAdicional[1], ''),
array_get($this->rejeicoes, $msgAdicional[2], ''),
array_get($this->rejeicoes, $msgAdicional[3], ''),
array_get($this->rejeicoes, $msgAdicional[4], '')
);
$d->setError($error);
} else {
$d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
}

return true;
}

/**
* @param array $trailer
*
* @return bool
* @throws \Exception
*/
protected function processarTrailer(array $trailer)
{
$this->getTrailer()
Expand Down
2 changes: 1 addition & 1 deletion src/Cnab/Retorno/Cnab400/Banco/Banrisul.php
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ protected function processarDetalhe(array $detalhe)
$d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
} elseif ($d->hasOcorrencia('03', '24')) {
$this->totais['erros']++;
$d->setError(array_get($this->rejeicoes, $d->getOcorrencia(), 'Consulte seu Internet Banking'));
$d->setError(array_get($this->rejeicoes, $this->rem(383, 392, $detalhe), 'Consulte seu Internet Banking'));
} else {
$d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
}
Expand Down
24 changes: 21 additions & 3 deletions src/Cnab/Retorno/Cnab400/Banco/Bb.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class Bb extends AbstractRetorno implements RetornoCnab400
*
* @var array
*/
private $rejeicoes = array(
private $rejeicoes = [
'01' => 'identificação inválida',
'02' => 'variação da carteira inválida',
'03' => 'valor dos juros por um dia inválido',
Expand Down Expand Up @@ -152,7 +152,7 @@ class Bb extends AbstractRetorno implements RetornoCnab400
'83' => 'Carteira/variação não localizada no cedente',
'84' => 'Titulo não localizado na existência',
'99' => 'Outros motivos',
);
];

/**
* Roda antes dos metodos de processar
Expand All @@ -169,6 +169,12 @@ protected function init()
];
}

/**
* @param array $header
*
* @return bool
* @throws \Exception
*/
protected function processarHeader(array $header)
{
$this->getHeader()
Expand All @@ -186,6 +192,12 @@ protected function processarHeader(array $header)
return true;
}

/**
* @param array $detalhe
*
* @return bool
* @throws \Exception
*/
protected function processarDetalhe(array $detalhe)
{
if ($this->rem(1, 1, $detalhe) != '7') {
Expand Down Expand Up @@ -229,14 +241,20 @@ protected function processarDetalhe(array $detalhe)
$d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
} elseif ($d->hasOcorrencia('03')) {
$this->totais['erros']++;
$d->setError(array_get($this->rejeicoes, $d->getOcorrencia(), 'Consulte seu Internet Banking'));
$d->setError(array_get($this->rejeicoes, $this->rem(383, 392, $detalhe), 'Consulte seu Internet Banking'));
} else {
$d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
}

return true;
}

/**
* @param array $trailer
*
* @return bool
* @throws \Exception
*/
protected function processarTrailer(array $trailer)
{
$this->getTrailer()
Expand Down
70 changes: 69 additions & 1 deletion src/Cnab/Retorno/Cnab400/Banco/Bradesco.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,48 @@ class Bradesco extends AbstractRetorno implements RetornoCnab400
"69" => "Cancelamento dos dados do rateio",
];

/**
* Array com as possiveis rejeicoes do banco.
*
* @var array
*/
private $rejeicoes = [
'02' => 'Código do registro detalhe inválido',
'03' => 'Código da ocorrência inválida',
'04' => 'Código de ocorrência não permitida para a carteira',
'05' => 'Código de ocorrência não numérico',
'07' => 'Agência/conta/Digito - |Inválido',
'08' => 'Nosso número inválido',
'09' => 'Nosso número duplicado',
'10' => 'Carteira inválida',
'13' => 'Identificação da emissão do bloqueto inválida',
'16' => 'Data de vencimento inválida',
'18' => 'Vencimento fora do prazo de operação',
'20' => 'Valor do Título inválido',
'21' => 'Espécie do Título inválida',
'22' => 'Espécie não permitida para a carteira',
'24' => 'Data de emissão inválida',
'28' => 'Código do desconto inválido',
'38' => 'Prazo para protesto/ Negativação inválido (ALTERADO)',
'44' => 'Agência Beneficiário não prevista',
'45' => 'Nome do pagador não informado',
'46' => 'Tipo/número de inscrição do pagador inválidos',
'47' => 'Endereço do pagador não informado',
'48' => 'CEP Inválido',
'50' => 'CEP irregular - Banco Correspondente',
'63' => 'Entrada para Título já cadastrado',
'65' => 'Limite excedido',
'66' => 'Número autorização inexistente',
'68' => 'Débito não agendado - erro nos dados de remessa',
'69' => 'Débito não agendado - Pagador não consta no cadastro de autorizante',
'70' => 'Débito não agendado - Beneficiário não autorizado pelo Pagador',
'71' => 'Débito não agendado - Beneficiário não participa do débito Automático',
'72' => 'Débito não agendado - Código de moeda diferente de R$',
'73' => 'Débito não agendado - Data de vencimento inválida',
'74' => 'Débito não agendado - Conforme seu pedido, Título não registrado',
'75' => 'Débito não agendado – Tipo de número de inscrição do debitado inválido',
];

/**
* Roda antes dos metodos de processar
*/
Expand All @@ -68,6 +110,12 @@ protected function init()
];
}

/**
* @param array $header
*
* @return bool
* @throws \Exception
*/
protected function processarHeader(array $header)
{
$this->getHeader()
Expand All @@ -81,6 +129,12 @@ protected function processarHeader(array $header)
return true;
}

/**
* @param array $detalhe
*
* @return bool
* @throws \Exception
*/
protected function processarDetalhe(array $detalhe)
{
if ($this->count() == 1) {
Expand Down Expand Up @@ -109,6 +163,7 @@ protected function processarDetalhe(array $detalhe)
->setValorMora(Util::nFloat($this->rem(267, 279, $detalhe)/100, 2, false))
->setValorMulta(Util::nFloat($this->rem(280, 292, $detalhe)/100, 2, false));

$msgAdicional = str_split(sprintf('%08s', $this->rem(319, 328, $detalhe)), 2) + array_fill(0, 5, '');
if ($d->hasOcorrencia('06', '15', '17')) {
$this->totais['liquidados']++;
$d->setOcorrenciaTipo($d::OCORRENCIA_LIQUIDADA);
Expand All @@ -126,14 +181,27 @@ protected function processarDetalhe(array $detalhe)
$d->setOcorrenciaTipo($d::OCORRENCIA_ALTERACAO);
} elseif ($d->hasOcorrencia('03', '24', '27', '30', '32')) {
$this->totais['erros']++;
$d->setError('Consulte seu Internet Banking');
$error = Util::appendStrings(
array_get($this->rejeicoes, $msgAdicional[0], ''),
array_get($this->rejeicoes, $msgAdicional[1], ''),
array_get($this->rejeicoes, $msgAdicional[2], ''),
array_get($this->rejeicoes, $msgAdicional[3], ''),
array_get($this->rejeicoes, $msgAdicional[4], '')
);
$d->setError($error);
} else {
$d->setOcorrenciaTipo($d::OCORRENCIA_OUTROS);
}

return true;
}

/**
* @param array $trailer
*
* @return bool
* @throws \Exception
*/
protected function processarTrailer(array $trailer)
{
$this->getTrailer()
Expand Down
17 changes: 17 additions & 0 deletions src/Cnab/Retorno/Cnab400/Banco/Caixa.php
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ protected function init()
];
}

/**
* @param array $header
*
* @return bool
* @throws \Exception
*/
protected function processarHeader(array $header)
{
$this->getHeader()
Expand All @@ -115,6 +121,12 @@ protected function processarHeader(array $header)
return true;
}

/**
* @param array $detalhe
*
* @return bool
* @throws \Exception
*/
protected function processarDetalhe(array $detalhe)
{
$d = $this->detalheAtual();
Expand Down Expand Up @@ -163,6 +175,11 @@ protected function processarDetalhe(array $detalhe)
return true;
}

/**
* @param array $trailer
*
* @return bool
*/
protected function processarTrailer(array $trailer)
{
$this->getTrailer()
Expand Down

0 comments on commit 67ba1d2

Please sign in to comment.