1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Fonction pour générer un code EAN13

Discussion dans 'Windev' créé par jiem31, Oct 7, 2018.

  1. jiem31

    jiem31 New Member

    Inscrit:
    Août 29, 2018
    Messages:
    14
    J'aime reçus:
    8
    [Modération] Bonjour !

    Pour convertir le code UPC d'un article (Universal Product Code sur 12 chiffres) en un code EAN13 valide, il suffit tout simplement de calculer la clé de contrôle (le 13ème chiffre) selon un algorithme qu'on trouve facilement sur Wikipédia ou d'autres sources.
    A l'attention de celles et ceux qui ont besoin de convertir une longue séquence, voici une petite fonction qui fait le travail pour vous.

    [windev]
    FONCTION CodeEAN13_Renvoyer(...

    // PARAMETRES.

    lchnCodeUPC12 est une chaîne)

    // VARIABLES LOCALES.

    lentPoids est un entier
    lentIndice est un entier
    lentSomme est un entier
    lentModulo est un entier

    // TRAITEMENT.

    // Calcule la clé de contrôle.

    lentPoids = 1
    POUR lentIndice = 1 _A_ 12
    lentSomme += Val(lchnCodeUPC12[[lentIndice]]) * lentPoids
    lentPoids = (lentPoids = 1) ? 3 SINON 1
    FIN
    lentModulo = modulo(lentSomme,10)

    // Renvoie le code EAN13 (code UPC12 + clé de contrôle).

    SI lentModulo = 0 ALORS
    RENVOYER lchnCodeUPC12 + 0
    SINON
    RENVOYER lchnCodeUPC12 + (10 - lentModulo)
    FIN
    [/windev]
     
    #1 jiem31, Oct 7, 2018
    Dernière édition par un modérateur: Oct 7, 2018
    Tags:
  2. jiem31

    jiem31 New Member

    Inscrit:
    Août 29, 2018
    Messages:
    14
    J'aime reçus:
    8
    J'ajoute un exemple d'appel de la fonction à adapter selon les besoins.

    Dans le code d'initialisation de la fenêtre, j'utilise 2 constantes qui ont pour valeur les bornes des 10000 codes UPC à générer :

    [windev]
    // CONSTANTES.

    CONSTANT
    cchnCodePremier = "370076300000"
    cchnCodeDernier = "370076309999"
    FIN
    [/windev]

    Le but est , en appelant cette procédure, de remplir une table (vide au départ) pour générer tous les codes compris entre ces bornes :

    [windev]

    PROCEDURE Fichier_GénérerCodesEAN13Internes()

    // VARIABLES LOCALES.

    lentIndice est un entier
    lchnRacine est une chaîne
    lentTaille est un entier
    lchnCodeUPC12 est une chaîne
    lchnCodeEAN13 est une chaîne

    // TRAITEMENT ******************************************************************************************************************************

    // Génére les enregistrements correspondant à une séquence de codes EAN13 internes de l'entreprise (voir constantes).

    chpMessage = "Génération des codes EAN13 internes..."
    Sablier(Vrai)
    lentIndice = 1
    TANTQUE cchnCodePremier[[lentIndice]] = cchnCodeDernier[[lentIndice]]
    lchnRacine += cchnCodePremier[[lentIndice]]
    lentIndice++
    FIN
    lentTaille = 12 - Taille(lchnRacine)
    POUR lentIndice = Val(Droite(cchnCodePremier,lentTaille)) _A_ Val(Droite(cchnCodeDernier,lentTaille))
    lchnCodeUPC12 = lchnRacine + NumériqueVersChaîne(lentIndice,"0" + lentTaille + "d")
    lchnCodeEAN13 = CodeEAN13_Renvoyer(lchnCodeUPC12)
    HRAZ(ArticlesCodes)
    ArticlesCodes.CodeEAN13 = lchnCodeEAN13
    ArticlesCodes.Article = ""
    ArticlesCodes.Interne = Vrai
    SI PAS HAjoute(ArticlesCodes) ALORS
    TitreSuivant("Erreur")
    ErreurConstruit(...
    [
    La tentative de création du code EAN13 interne '%1' a échoué.
    # %2.
    ],
    lchnCodeEAN13,HErreurInfo(hErrMessage))
    Modèle_FermerFenêtre()
    FIN
    FIN
    Sablier(Faux)
    chpMessage = ""
    TableAffiche(tabArticlesCodes,taDébut)
    [/windev]
     

    Fichiers attachés:

Partager cette page

Chargement...