Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enviar DAC (dígito verificador) do Nosso Número no Itau - Carteira 109 #167

Open
lfviegas opened this issue Jan 31, 2022 · 1 comment
Open

Comments

@lfviegas
Copy link

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.

@lfviegas
Copy link
Author

lfviegas commented Feb 1, 2022

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;
	}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant