CnabPHP
CnabPHP copied to clipboard
Enviar DAC (dígito verificador) do Nosso Número no Itau - Carteira 109
Olá pessoal. Estamos implementando a classe utilizando o Itaú, na carteira 109.
Utilizei o exemplo da home do repositório e observei que nele há chave apenas para informar o nosso número, com os 8 dígitos. Não encontramos o DAC no arquivo de remessa.
Também não encontrei na classe método para gerar o DAC do nosso número, de acordo com a documentação do Itaú.
Isso já foi implementado?
Se não foi, há pelo menos o método para incluir o DAC no layout após o cálculo?
Obrigado.
Pessoal, fiz uma rotina para calcular o DAC do Itau conforme o manual. Segue abaixo para quem tiver interesse.
Como estou utilizando
Após calcular, concateno o DAC com o Nosso Número e envio na chave 'nosso_numero' do array que vai como parâmetro para o método inserDetalhe. Dessa forma, envio um 'nosso_numero' com 8 caracteres de tamanho, sendo os 7 iniciais o nosso número e o 8º o DAC calculado pela função abaixo:
Código:
`public function nosso_numero_dac($agencia, $conta, $carteira, $nosso_numero){
$soma = 0;
$agencia = preg_replace( '/[^0-9]/', '', $agencia);
$conta = preg_replace( '/[^0-9]/', '', $conta);
$carteira = preg_replace( '/[^0-9]/', '', $carteira);
$num = $agencia.$conta.$carteira.$nosso_numero;
$sequencia = "12121212121212121212";
if(strlen($num) != strlen($sequencia)){
die("Erro ao gerar DAC nosso número. Tamanhos diferentes entre a sequência padrão e agência/conta/carteira/nosso número.");
}
/* Separacao dos numeros */
for ($i = strlen($num); $i > 0; --$i) {
$parcial[$i] = substr($num, $i - 1, 1) * substr($sequencia, $i - 1, 1);
$soma += $parcial[$i];
}
$digito = $soma % 10;
$dac = 10-$digito;
if($dac == 10){
$dac = 0;
}
return $dac;
}`