Formule Code Barre EAN 13

Mise en place de code-barres EAN13 

Guide détaillé

Les étapes à exécuter : 

  1. Installer les polices de CodeUPC.zip  
  2. Créer la formule personnalisée Generate_EAN13
  3. Créer une formule dans l'état EAN13 

 

Genetate_EAN13

Generate_EAN13({CodeArticle.CodeEAN})

Genetate_EAN13


//Les chiffres sont numérotés de droite à gauche;
//Soit x, la somme des chiffres pairs et y la somme des chiffres impairs
//Calculons z = x +3*y
//Soit m le nombre divisible par 10 immédiatement supérieur à z
//La somme de contrôle est : m - z

//Exemple : 978020113447
//x = 4 + 3 + 1 + 2 + 8 + 9 = 27
//y = 7 + 4 + 1 + 0 + 0 + 7 = 19
//z = 3 * 19 + 27 = 84
//m = 90
//Somme de contrôle = 90 - 84 = 6
//EAN13 ---> 9 780201 134476


Function (StringVar input)
NumberVar checkDigitSubtotal;
NumberVar NumberSupModuloTen;
StringVar checkDigit;

StringVar temp;

//x
NumberVar pairs;
//y
NumberVar impairs;
// z
NumberVar somme;
//m
NumberVar NbDivParDix;
//cle de controle
NumberVar checkDigit_EMIV;


impairs:=Val(input[2]) + Val(input[4]) + Val(input[6]) + Val(input[8]) + Val(input[10])+ Val(input[12]);
pairs:=Val(input[1]) + Val(input[3]) + Val(input[5]) + Val(input[7]) + Val(input[9])+ Val(input[11]);
somme:=pairs+(3*impairs);
NbDivParDix:=somme;
while NbDivParDix mod 10 <> 0 do
(
NbDivParDix:=NbDivParDix+1
);
//checkDigitSubtotal := 3 * (Val(input[2]) + Val(input[4]) + Val(input[6]) + Val(input[8]) + Val(input[10]) + Val(Right(input, 1)));
//checkDigitSubtotal := checkDigitSubtotal + Val(input[1]) + Val(input[3]) + Val(input[5]) + Val(input[7]) + Val(input[9]) + Val(input[11]);
//NumberSupModuloTen := checkDigitSubtotal;


//checkDigit := Right(ToText(NumberSupModuloTen - checkDigitSubtotal,"#"), 1);
checkDigit_EMIV := NbDivParDix - somme;

Select input[1]
Case "0" :
temp := "U|x" + Chr(65 + Val(input[2]))
+ Chr(65 + Val(input[3]))
+ Chr(65 + Val(input[4]))
+ Chr(65 + Val(input[5]))
+ Chr(65 + Val(input[6]))
+ Chr(65 + Val(input[7]))
Case "1" :
temp := "[|x" + Chr(65 + Val(input[2]))
+ Chr(65 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(65 + Val(input[5]))
+ Chr(75 + Val(input[6]))
+ Chr(75 + Val(input[7]))
Case "2" :
temp := "V|x" + Chr(65 + Val(input[2]))
+ Chr(65 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(75 + Val(input[5]))
+ Chr(65 + Val(input[6]))
+ Chr(75 + Val(input[7]))
Case "3" :
temp := "W|x" + Chr(65 + Val(input[2]))
+ Chr(65 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(75 + Val(input[5]))
+ Chr(75 + Val(input[6]))
+ Chr(65 + Val(input[7]))
Case "4" :
temp := "X|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(65 + Val(input[4]))
+ Chr(65 + Val(input[5]))
+ Chr(75 + Val(input[6]))
+ Chr(75 + Val(input[7]))
Case "5" :
temp := "Y|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(65 + Val(input[5]))
+ Chr(65 + Val(input[6]))
+ Chr(75 + Val(input[7]))
Case "6" :
temp := "Z|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(75 + Val(input[5]))
+ Chr(65 + Val(input[6]))
+ Chr(65 + Val(input[7]))
Case "7" :
temp := "u|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(65 + Val(input[4]))
+ Chr(75 + Val(input[5]))
+ Chr(65 + Val(input[6]))
+ Chr(75 + Val(input[7]))
Case "8" :
temp := "\|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(65 + Val(input[4]))
+ Chr(75 + Val(input[5]))
+ Chr(75 + Val(input[6]))
+ Chr(65 + Val(input[7]))
Case "9" :
temp := "]|x" + Chr(65 + Val(input[2]))
+ Chr(75 + Val(input[3]))
+ Chr(75 + Val(input[4]))
+ Chr(65 + Val(input[5]))
+ Chr(75 + Val(input[6]))
+ Chr(65 + Val(input[7]));

temp + "y" + Mid(input, 8, 5) + left(totext(checkDigit_EMIV),1) + "z"


Tests douchette

Tests avec des terminaux portables Datalogic : toutes les polices sont lues

Tests avec des douchettes Datalogic (2430 et Gryphon) : les polices TallNarrow et HalfNarrow en grande taille (>100pt) sont lues

Articles connexes



Donnez votre avis sur la Base de connaissance Silog ici ou contactez-nous directement par mail sur confluence@silog.fr