Cette exemple est dédié aux développeurs ayant à générer la création d’articles de type U.V.C. (Unité de Ventes Consommateurs) et utilisant la gestion de codes à barres de type AEN 13
Ce type d’articles est utilisé par exemple dans le prêt à porter ou chaque produit est décliné en différents coloris et plusieurs tailles.
Vous ne pourrez donc pas utiliser la gestion de produit de type classique car il vous faut différencier le produit « TOTO » en coloris NOIR et en taille 38 du modèle TOTO en coloris NOIR en taille 40.
La solution consiste donc à générer autant d’U.V.C. que de déclinaison et ensuite attribuer un code barre unique à chacune de ces U.V.C.
Pour l’exemple, j’utilise un serveur SQL et la version WD14.
1- Dans la première partie, nous allons contrôler si l’article que nous souhaitons créer existe déjà ou non dans le BDD.
a. Dans le cas ou il existerait déjà, ce code tiendra compte des UVC déjà crées et créera les nouvelles en tenant compte de la plus grande UVC existante
2- Pour l’exemple, nous allons dire que le résultat final sera le suivant : XN-OLGA400\1 ce qui correspond au modèle XN-OLGA400 en coloris NOIR et en taille 36
a. On aura donc pour le même modèle dans le même coloris mais pour la taille 38 le résultat : \2, et ainsi de suite
//-- Le principe est le même que pour la création de l’UVC, on recherche le dernier code barre créé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 variable est une chaîne Suffixe est une chaîne NouveauCode est une chaîne sRequete est une chaîne="SELECT MAX(ART_CODE), ART_DATE_CREATION, MAX(ART_LIBRE10) FROM ARTICLES WHERE ART_CODE LIKE '"+SAI_ART_CODE+"%' GROUP BY ART_CODE, ART_DATE_CREATION, ART_LIBRE10 ORDER BY ART_DATE_CREATION, ART_LIBRE10 DESC " SI SQLExec(sRequete,"REQ") ALORS SI SQLAvance("REQ") = 0 ALORS variable=SQLLitCol("REQ", 1) // Récupération de ce qu'il y a après l'anti-slash si l’article existe Suffixe=ExtraitChaîne(variable,2,"\") // Incrémente UVC de 1 Suffixe=Val(Suffixe)+1 // Constitution de la nouvelle UVC NouveauCode=ExtraitChaîne(variable,1,"\")+"\"+Suffixe SINON Dans le cas ou l’article n’existe pas NouveauCode=SAI_ART_CODE+"\1" FIN SQLFerme("REQ")
Voilà, ce sujet a souvent été abordé sur le Forum, et de fait, j’espère que celui-ci aidera certains d’entre vous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 sVariable_EAN est une chaîne prefixe_AEN est une chaîne nouveauCode_AEN est une chaîne Cle est une chaîne nTotal est un entier Requete est une chaîne="SELECT MAX(ART_CODEBARRE) FROM ARTICLES " SI SQLExec(Requete, "REQ1") ALORS SI SQLAvance("REQ1")=0 ALORS sVariable_EAN=SQLLitCol("REQ1", 1) //-- On extrait les 12 premiers nombre auquel nous ajoutons 1 prefixe_AEN=Gauche(sVariable_EAN,12) prefixe_AEN=NumériqueVersChaîne(Val(prefixe_AEN)+1,"012d") FIN SINON SQLInfoGene("REQ1") Trace("Erreur SQL R1 : ", SQL.MesErreur) FIN SQLFerme("REQ1") //Calcul du caractère de contrôle, on trouve ce type de code de calcul sur de nombreux sites internet. POUR ii = 1 A Taille(prefixe_AEN) SI EstPair(ii) ALORS nTotal+=Val(prefixe_AEN[[ii]])*3 SINON nTotal+=Val(prefixe_AEN[[ii]]) FIN FIN Cle = ((PartieEntière(nTotal/10)+1)*10)-nTotal SI Cle = 10 ALORS Cle = 0 FIN NouveauCode_AEN=prefixe_AEN + Cle
Pour l’avoir effectué, une modification de ce code permet aisément de créer un code à barres de type AEN 128
Bon courage à Toutes et Tous
Partager