openboleto / OpenCnabPHP

Biblioteca multibanco para geração e leitura de arquivos Cnab240 e Cna400 de remessa e retorno
MIT License
192 stars 117 forks source link

Tive que alterar a função modulo11 para o bradesco #106

Open webesistemas opened 5 years ago

webesistemas commented 5 years ago

estava gerando o digito errado e com a alteração que fiz passou no teste de envio de REM que tem no site deles

alterei para:

protected static function modulo11($num, $base = 9) { $fator = 2; $fatores = array(1=>2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2);

    $soma = 0;

// Separacao dos numeros. for ($i = strlen($num); $i > 0; $i--) { //echo $i.'
'; // Pega cada numero isoladamente.

        $numeros[$i] = substr($num, $i - 1, 1);

// Efetua multiplicacao do numero pelo falor. $parcial[$i] = $numeros[$i] * $fatores[$i]; // Soma dos digitos. $soma += $parcial[$i]; if ($fator == $base) { // Restaura fator de multiplicacao para 2. $fator = 2; } $fator++; }

$resto=$soma % 11;
if($resto==1){ $digito='p';}
elseif($resto==0){ $digito=0;}
else
{
$digito=($soma * 10) % 11   ;
}

$result = array('digito' => $digito, 'resto' => $resto);

 return $result;

}