Ajuda com digito modulo 103 code 128C da NFE

amigos,

to gerando o calculo do digito pelo modulo 103 desta chave mas o resto da divisão da 101 e no digito tem que ter apenas 2 digitos

chave 35100947265640000197550010000000071100000072

alguem sabe me dizer o que acontece?

dario

Olá amigo cardosodario,

A chave está correta?

Abraço!

sim ela transmite

e tem 44 digitos

poderia ser ate 44 digitos de 9

teria que dar o digito de 2 algarismos pra todos concorda?/

dario

Olá amigo cardosodario,

Me deu curiosidade de conferir esse resultado e após calcular aqui notei que o seu resto está errado, não dá 101.

35100947265640000197550010000000071100000072 % 103 = 21

Mas gostaria de te lembrar que o resto de uma divisão por 103 receber como resultado um valor de até 102.

A exemplo disso temos:

35100947265640000197550010000000071100000153 % 103 = 102

ou

103102 % 103 = 102

Sendo assim, você pode esperar dessa divisão, resto com valores de 1 ou 2 ou 3 algarismos.

[color=red]EDIT:[/color]
Para tirar a prova, segue um cógigo bem grosse, mas funcional, que fiz:

[code]public class Modulo{

public static void main(String[] args){

	int valor0 =  (35100            %103)*1000000;// 80 000000
	int valor1 = ((valor0 + 947265) %103)*1000000;// 80 000000
	int valor2 = ((valor1 + 640000) %103)*1000000;// 64 000000
	int valor3 = ((valor2 + 197550) %103)*1000000;// 19 000000
	int valor4 = ((valor3 +  10000) %103)*1000000;// 11 000000
	int valor5 = ((valor4 +     71) %103)*1000000;// 83 000000
	int valor6 = ((valor5 + 100000) %103)*1000;   // 12 000000
	int valor7 = ((valor6 +     72)    %103);     // 21

	System.out.println(	valor0 +"\n" +
			 	valor1 +"\n" +
				valor2 +"\n" +
				valor3 +"\n" +
				valor4 +"\n" +
				valor5 +"\n" +
				valor6 +"\n" +
				valor7);
}

}[/code]

Abraço amigo!

este calculo é para a NFe

no manual diz que é a soma ponderada dos numeros + 105 que é o start

então a soma total para dividir por 103 fica 4736 que dá 101 tanto no meu codigo quando no excel

segue planilha no excel anexa demonstrando

onde esta meu erro?

dario

Olá cardosodario,

Eu entendi o procedimento para gerar o dígito. Porém o exemplo que achei usa uma chave pequenão e não tem vários 0s (zeros) seguidos como é o caso da sua chave. Talvez seja a forma de lidar com esses zeros que esteja compromentendo o resultado.

Por exemplo:

[code]//CHAVE: 026000000311
105
02 -> 2 * 1 = 2
60 -> 60 * 2 = 120
00 -> 0 * 3 = 0 // Será que os 00 contam uma posição?
00 -> 0 * 4 = 0 // Idem
03 -> 3 * 5 = 15
11 -> 11 * 6 = 66

            308 % 103 = 102

[/code]Procure ver como proceder nesses casos.

Outra coisa, o fato de estar dando 101 como resultado final não é um erro, afinal como eu já disse anteriormente, um número dividido por 103 pode retornar um resto até 102. Por sinal o exemplo que fiz retornou 102.

Abraço!

No manual da NFe não diz quantos digitos tem que retornar, se é 1, 2 ou 3…
Também não explica nada sobre os 00…
Mas eu achei 1 fonte de codigo de barras que não precisa passar o digito, ele gera sozinho então deu certo…
Mas fica a duvida… o governo manda a gente programar isto mas da pouca informação…

grato,

Dario