Depuis quelques mois, je travaille énormement sur la documentation GS1 pour la création des étiquettes de traçabilité pour un de nos clients qui est un fournisseur de Nestlé. J'utise des imprimantes Zebra Z6MPlus sur des étiquettes au format A5.

Nos programmes sont présents sur différents sites de production et de stockage de notre client. La force de nos programmes reside dans le fait que nous n'utilisons aucun Driver Windows de ces imprimantes Zebra Z6MPlus. Et oui, j'ai choisi de travailler en natif sur ces imprimantes. Je balance les séquences directement à l'imprimante, qui elle imprime immédiatement !!! pas le temps d'attendre, alors qu'avec des drivers windows.... c'est quand même méga gallère !

Donc revenons à la documentation GS1 et ces fameux codes SSCC ou AI(00). Ce N° est le numéro séquentiel de colis : C'est à dire qu'il doit etre unique d'une part et qu'il doit respecter un certain nombre de règles, dont le fameux checkdigit qui est très facilement calculable.

Voici donc l'algorithme écrit en Delphi :

Function SSCC_CheckSum(Const AString:string):String;
var i:integer;
    CheckSum:integer;
    Facteur:integer;
begin
     facteur := 3;
     CheckSum := 0;
     for i:=length(AString) downto 1
      do
        begin
             CheckSum := CheckSum + StrToInt(Copy(AString,i,1)) * facteur;
             facteur := 4 - facteur;
        end;
     CheckSum := ((1000 - CheckSum) Mod 10);
     If CheckSum=10 Then CheckSum:=0;
     result:= AString + IntToStr(CheckSum);
end;
La variable d'entrée est le N° SSCC sans le checkdigit, la variable de sortie est le N° SSCC avec le checkdigit.