Gros Pb avec codes barre en EAN13

Posté par 2501 le 16/2/2006 18:02:37
Voila, j'ai une application qui tournait chez un client depuis quelques temps, cette application génére, entre autre, des codes barres.

J'ai un code unique à 11 chiffres, et je calcul la clé de controle moi même. Ensuite j'imprime des codes barre de type EAN13 sous windev en envoyant mon code de 12Chiffres (11 chiffres du code + 1controle).

Le problème c'est que sur certains codes, la clé de controle que je calcul n'est pas la même que celle que calcul windev pour l'impression. Du coup je me retrouve à imprimer un code différent de la valeur envoyée.

Par exemple pour le code 00000010638, je calcul 6 en clé, ça me donne : 000000106386, mais mon état imprime le code 000000106382.

Ci dessous mon algo de calcul de la clé de controle :

PROCEDURE calculControleEAN13(_codeInitial)
temp est un entier
sommePair, sommeImpair sont des entiers
z est un entier
m est un entier
controle est un entier
chaineControle est une chaîne

i est un entier = 1
BOUCLE(Taille(_codeInitial))
	temp = _codeInitial[[i A i]]
	SI EstPair(i+1) ALORS
		sommePair += temp
	SINON
		sommeImpair += temp
	FIN
	i++
FIN

z = 3*sommeImpair + sommePair
m = z
BOUCLE
	SI modulo(m,10) = 0 ALORS SORTIR
	m++	
FIN

controle = m - z

chaineControle = controle

RENVOYER chaineControle


Les codes sont issus de codes articles de type 9999, que je complète à gauche par un nombre de 0 variable afin d'avoir toujours la même longeur. Le problème est apparut aves les codes de plus de 4 chiffres. Néanmoins ce problème n'affecte pas tous les codes barre

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=3558&post_id=15002