From: Octavio C. Jr. <oc...@ho...> - 2003-02-15 12:15:30
|
<html><div style='background-color:'><DIV> <P>Bom dia.</P> <P>Por gentileza confirma alguns dados, este eu retirei de sua linha verifica se são os mesmo:</P> <P>Banco: 341 Itaú<BR>Moeda: Real = 9<BR>Carteira = 175</P> <P>Ag: 0743</P> <P>C/C: 34159-6 e Nosso Número = 61580786-8</P> <P>Confirma e envia a resposta aguardo.</P></DIV>>From: "Alex Buelau" <FE...@UO...> <DIV></DIV>>To: Otávio Bonvino <OT...@IN...>, <PHP...@LI...> <DIV></DIV>>Subject: [Phpboleto-devel] Re: [Phpboleto-devel] Erro na geração do DV para ITAU e REAL e quem sabe outros. <DIV></DIV>>Date: Fri, 14 Feb 2003 16:44:10 -0300 <DIV></DIV>> <DIV></DIV>>Otávio, <DIV></DIV>> <DIV></DIV>>Implementei essas mudanças no código do Itau, mas ele continua reclamando que o código de barras é invalido... veja alinha que foi gerada: <DIV></DIV>> <DIV></DIV>>34191.75611 58078.680749 33415.960005 8 19630000001995 <DIV></DIV>> <DIV></DIV>>Abraço... <DIV></DIV>> <DIV></DIV>> ----- Original Message ----- <DIV></DIV>> From: Otávio Bonvino <DIV></DIV>> To: php...@li... <DIV></DIV>> Sent: Friday, February 14, 2003 12:38 PM <DIV></DIV>> Subject: [Phpboleto-devel] Erro na geração do DV para ITAU e REAL e quem sabe outros. <DIV></DIV>> <DIV></DIV>> <DIV></DIV>> Pessoal, <DIV></DIV>> <DIV></DIV>> verifiquei um problema com meus boletos gerados para o REAL, e pelas mensagens anteriores deve ser o mesmo problema para o ITAU, pois fui pagar um dos boletos do REAL no ITAU e ele indicou o problema. <DIV></DIV>> <DIV></DIV>> O problema é quando o resto da divisão por 11, no calculo do modulo11 do digito verificar é 0 ou 1 ou 10, assim a função original _modulo11 retorna 0 quando isto ocorre, oque na verdade tem que retornar 1 para todos estes casos (pelo menos é oque esta dizendo a documentação do banco real para calculo do modulo 11). <DIV></DIV>> <DIV></DIV>> Assim acrescentei um opção nesta função para que retorna-se o valor correto nestes casos, não alterei a função todos pois não sei como se da isto para outros bancos. Assim, função deve ser chamada com o parametro r = 2, por exemplo, na minha classe do banco real postada anteriormente, a linha de calculo do dv deve ser alterada de : <DIV></DIV>> <DIV></DIV>> $dv = $this->_modulo11($dvcampo); <DIV></DIV>> para <DIV></DIV>> $dv = $this->_modulo11($dvcampo,9,2); <DIV></DIV>> <DIV></DIV>> e no arquivo classe.banco.comum.php a função _modulo11 deve ser alterada o ultimo if que calcula o resto no seguinte : <DIV></DIV>> <DIV></DIV>> /* Calculo do modulo 11 */ <DIV></DIV>> if ($r == 0) { <DIV></DIV>> $soma *= 10; <DIV></DIV>> $digito = $soma % 11; <DIV></DIV>> if ($digito == 10) { <DIV></DIV>> $digito = 0; <DIV></DIV>> } <DIV></DIV>> return $digito; <DIV></DIV>> } elseif ($r == 1){ <DIV></DIV>> $resto = $soma % 11; <DIV></DIV>> return $resto; <DIV></DIV>> } elseif ($r == 2) { <DIV></DIV>> $resto = $soma % 11; <DIV></DIV>> if($resto == 0 || $resto == 1 || $resto == 10) { <DIV></DIV>> $digito = 1; <DIV></DIV>> } else { <DIV></DIV>> $digito = 11 - $resto; <DIV></DIV>> } <DIV></DIV>> return $digito; <DIV></DIV>> } <DIV></DIV>> <DIV></DIV>> <DIV></DIV>> notem que somente acrescentei uma opção elseif a mais, caso o parametro r seja igual a 2, calculando o digito de acordo com a documentação do real. <DIV></DIV>> <DIV></DIV>> Abraços a todos e espero ter ajudado em algu. <DIV></DIV>> <DIV></DIV>> Otavio. <DIV></DIV></div><br clear=all><hr>MSN Messenger: converse com os seus amigos online. <a href="http://g.msn.com/8HMUBRBR/2746">Instale grátis. Clique aqui. </a> Get 2 months FREE*. </html> |