Se rendre au contenu
Icône de Codes-barres produit — génération, contrôle et étiquettes

Codes-barres produit — génération, contrôle et étiquettes

par Dyonysos
Gratuit Odoo 20 Application Contrôle qualité : Vérifiée OPL-1 (propriétaire Odoo)

Product Barcode Generator and Label Printing for Odoo — EAN-13, EAN-8, UPC-A, Code 128 and QR, with the GS1 check digit computed and verified, mass assignment from a reserved number range that never reassigns a number, and printable A4 sheets (Avery) or thermal roll labels.

Captures d'écran

Product Barcode Generator and Label Printing for Odoo 20

La clé de contrôle calculée, le numéro jamais réattribué, l'étiquette aux mesures de la boîte

Codes-barres produit pour Odoo 20

Pourquoi celui-ci et pas un autre

Les modules d'étiquettes impriment sans jamais vérifier ce qu'ils impriment. Les générateurs gratuits posent un code et ne l'impriment pas. Personne ne fait les deux.

Et Odoo lui-même enregistre sans broncher un EAN-13 dont le dernier chiffre est faux. On ne l'apprend qu'en caisse, une fois les étiquettes imprimées et collées.

Ce module génère, refuse le code faux à la saisie, tient la plage de numéros, et imprime.

Assistant de vérification : la clé lue, la clé attendue et le code corrigé

Le code 4006381333930 soumis à l'assistant : la clé lue est 0, la clé attendue est 1, et le code corrigé est donné.

La clé de contrôle GS1, vérifiée

EAN-13, EAN-8 et UPC-A portent une clé de contrôle. Elle est calculée à la génération et vérifiée à l'enregistrement. Un code dont la clé ne tombe pas juste est refusé, et le message donne le code corrigé — il n'y a rien à recalculer à la main.

Le calcul est éprouvé sur des codes réels : exemples officiels GS1, ISBN-13 de livres existants, articles de grande distribution. Et chacun des neuf autres chiffres de clé possibles est vérifié comme refusé.

Les codes internes alphanumériques et les Code 128 maison passent sans être jugés : il n'y a rien à vérifier dessus, et les refuser rendrait le module inutilisable sur un catalogue existant.

Une plage de numéros qui ne se répète jamais

Déclarez le préfixe d'entreprise que GS1 vous a délivré et l'étendue des numéros. L'attribution en masse y puise, le compteur avance, et un numéro déjà porté par un produit — même archivé — est sauté, jamais redonné. Un produit archivé qui revient est exactement la collision qu'on cherche à empêcher.

La plage épuisée le dit avant d'attribuer, pas au milieu du lot.

Sur les variantes autant que sur les modèles : deux tailles du même article sont deux articles en caisse, donc deux codes.

Pour un usage strictement interne, une plage en 20-29 ou 40-49 fonctionne aussi — et le module vous signale que ces codes ne doivent pas sortir de l'entreprise.

Une plage de numéros : préfixe, étendue, compteur et exemple de code

Le préfixe, les chiffres disponibles, le compteur et le prochain code que la plage produira.

Les gabarits d'étiquettes fournis : Avery et rouleaux thermiques

Quatre planches Avery et deux rouleaux thermiques fournis. Les vôtres se décrivent par leurs mesures.

Des étiquettes aux mesures de la boîte

Odoo propose quatre formats figés. Ici une planche se décrit par ses mesures réelles : nombre par ligne, nombre de lignes, largeur, hauteur, marges, écart horizontal et vertical. C'est ce qui manque dès qu'on a acheté une boîte précise.

Gabarits fournis : Avery L7160, L7163, L7651, L7871, et rouleaux thermiques 57×32 et 100×50 mm.

Une planche qui dépasse 210×297 mm est refusée à l'enregistrement plutôt qu'à l'impression : c'est une feuille gâchée en moins.

On reprend une planche déjà entamée en indiquant le nombre de cases décollées.

Ce que ce module ajoute à Odoo 19

Ce qu'Odoo 19 fait déjàCe que ce module ajoute
Unicité du code entre produits, en nommant les produits fautifs Vérification de la clé de contrôle GS1 à l'enregistrement
Quatre formats d'étiquettes figés Des gabarits paramétrables : marges, écarts, Avery, rouleau
—Une plage réservée qui ne redonne jamais un numéro
—L'attribution en masse, variantes comprises
—Un assistant de vérification : clé, longueur, préfixe pays, produit porteur

Le module ne refait pas le contrôle d'unicité d'Odoo 19, qui est bon. Il ajoute le contrôle avant attribution, pour qu'une attribution en masse ne parte jamais sur un numéro déjà pris.

Aucune bibliothèque à installer

Le dessin des symboles passe par ce que votre Odoo utilise déjà. Mieux : le rendu PNG de reportlab réclame un moteur supplémentaire qui n'est pas toujours installé — et sur ces installations, la route native d'Odoo échoue. Ce module bascule alors tout seul en SVG, qui s'imprime aussi bien.

EAN-13, EAN-8, UPC-A, Code 128 et QR.

L’application en mouvement

Le module en marche, enregistré dans le vrai client Odoo 19 : plage, plage (fiche), gabarit puis verifier. Ce n’est pas un montage — ce sont les trames du navigateur sur le module livré, pris sur sa propre base.

Vidéo MP4 — 87 ko, 1280 px, 3.3 s, 4 écrans. Une amorce animée est aussi livrée en GIF (58 ko, 560 px) pour les contextes qui n’affichent pas la balise vidéo.

Amorce animée du parcours de dyo_codebarres
Amorce GIF — 58 ko. Enregistrement réel du client Odoo 19 sur une base dédiée à ce module, avec les données de démonstration livrées avec lui.

Ce que le module ne fait pas

Ce n'est pas un éditeur graphique d'étiquettes : on décrit une planche par ses mesures, on n'y fait pas glisser des blocs à la souris.

Il ne gère pas les codes GS1-128 à identifiants applicatifs (lot, DLC), ni les DataMatrix réglementaires.


Ce qui a été vérifié, et ce qui ne l'a pas été

64 tests automatiques. Les clés de contrôle sont éprouvées sur des codes réels, et chacun des neuf autres chiffres de clé possibles est vérifié comme refusé. Les planches sont réellement rendues en PDF et inspectées.

L'alignement sur une imprimante physique n'a pas été éprouvé. Les mesures fournies sont celles des fiches techniques Avery, mais chaque imprimante dérive d'un demi-millimètre ou deux. Imprimez une planche d'essai sur papier ordinaire avant d'entamer une boîte : le gabarit s'ajuste au dixième de millimètre, et c'est lui qu'on corrige, jamais le pilote d'impression.


Odoo 19 Community et Enterprise. Français et anglais.

DYONYSOS — welcome@dyonysos.fr

Codes-barres produit — génération, contrôle et étiquettes — capture 1
Codes-barres produit — génération, contrôle et étiquettes — capture 1
Codes-barres produit — génération, contrôle et étiquettes — capture 2
Codes-barres produit — génération, contrôle et étiquettes — capture 2
Codes-barres produit — génération, contrôle et étiquettes — capture 3
Codes-barres produit — génération, contrôle et étiquettes — capture 3
Codes-barres produit — génération, contrôle et étiquettes — capture 4
Codes-barres produit — génération, contrôle et étiquettes — capture 4
Codes-barres produit — génération, contrôle et étiquettes — capture 5
Codes-barres produit — génération, contrôle et étiquettes — capture 5

Ce que l'application ne fait pas

  • Ce n'est pas un éditeur graphique d'étiquettes : on décrit une planche par ses mesures, on n'y fait pas glisser des blocs à la souris.
  • Il ne gère pas les codes GS1-128 à identifiants applicatifs (lot, DLC), ni les DataMatrix réglementaires .

Applications du magasin nécessaires

Aucune.

Modules Odoo Community utilisés

productstock

SérieVersionÉtatPubliée le
20.020.0.1.0.0 Disponible 02/10/2026
19.019.0.1.0.1 Disponible

Fiche générée depuis le code de l'éditeur (dépôt privé, branche 20.0) : le code source n'est pas publié.

Contrôle automatique du magasin (distinct de l'éditeur), appliqué à toutes les applications. Conforme.

ContrôleRésultatEffet si absent
Manifeste lisible sans exécution conforme bloquant
Licence reconnue (OPL-1) conforme bloquant
Aucune dépendance vers Odoo Enterprise conforme bloquant
Aucun import de code Enterprise conforme bloquant
Aucun en-tête de licence Enterprise conforme bloquant
Icône static/description/icon.png conforme déclasse
Description (static/description/index.html ou README) conforme déclasse
Tests automatisés (tests/test_*.py) conforme déclasse
Traduction française (i18n/fr.po) conforme info
Section « Ce que le module ne fait pas » conforme info
Titre de 70 caractères au plus (57 actuellement) conforme info
Résumé en français absent info

Guide utilisateur — Codes-barres produit

1. Déclarer votre plage de numéros

Codes-barres ▸ Configuration ▸ Plages de numéros ▸ Nouveau

C'est la première chose à faire. Une plage, c'est le préfixe que GS1 vous a délivré et l'étendue des numéros que vous comptez y prendre.

Champ Ce qu'on y met
Nom Ce que vous reconnaîtrez : « GS1 France 2026 »
Type EAN-13 en Europe, UPC-A en Amérique du Nord, EAN-8 pour les tout petits articles
Préfixe d'entreprise Celui de votre contrat GS1, sans la clé. Par exemple 3012345
Premier / dernier numéro Généralement 0 et le maximum que la longueur permet

Le champ Chiffres disponibles vous dit combien il reste de place : un EAN-13 avec un préfixe de 7 chiffres laisse 5 chiffres, soit 99 999 articles. Le champ Exemple de code montre le prochain code que la plage produira.

Vous n'avez pas de préfixe GS1 ? Pour un usage strictement interne (pesage, étiquetage magasin), créez une plage avec un préfixe commençant par 20 à 29 ou 40 à 49. Ces codes sont réservés à l'usage interne et ne doivent jamais sortir de l'entreprise — le module vous le signale.

Le compteur

Il avance tout seul et n'est jamais remis en arrière automatiquement : reculer reviendrait à réattribuer des numéros déjà imprimés.

Un numéro déjà porté par un produit, même archivé, est sauté. Vous n'avez rien à surveiller.

2. Attribuer des codes-barres

Depuis la liste des produits : sélectionnez les lignes, puis Actions ▸ Attribuer des codes-barres.

L'assistant annonce d'abord ce qui va se passer :

  • Produits concernés — ceux qui vont recevoir un code.
  • Déjà pourvus — ceux qu'on ne touche pas.
  • Premier code attribué — pour vérifier que c'est bien la bonne plage.

Deux réglages comptent :

Portée. Par défaut, chaque variante reçoit son code. C'est presque toujours ce qu'il faut : deux tailles du même article sont deux articles distincts en caisse. L'autre choix ne donne un code qu'à la variante principale.

Remplacer les codes existants. Laissé décoché, seuls les produits sans code reçoivent un numéro. Coché, les codes déjà imprimés sur des étiquettes sont remplacés — c'est une décision, pas un réflexe.

Si la plage ne contient plus assez de numéros libres, l'assistant le dit avant d'agir.

3. Le code faux est refusé

Saisissez 4006381333930 dans le code-barres d'un produit, et Odoo refuse :

« 4006381333930 » n'est pas un EAN13 valide : sa clé de contrôle ne tombe pas juste. Le code se termine par 0, il devrait se terminer par 1 — soit 4006381333931.

Le message donne le code corrigé. Il n'y a rien à recalculer à la main.

Ce qui n'est pas jugé : les codes internes alphanumériques (REF-2026/A), les Code 128 maison, les codes de longueur non normalisée. Il n'y a pas de clé à vérifier dessus.

Sur la fiche produit, trois informations apparaissent à côté du code : le type reconnu, l'organisation GS1 qui a délivré le préfixe, et un diagnostic en clair.

4. Vérifier un code qu'on a sous les yeux

Codes-barres ▸ Vérifier un code

Collez le code — les espaces et les tirets sont ignorés. L'assistant dit :

  • le type reconnu et la longueur ;
  • la clé lue et la clé attendue, et le code corrigé si elles diffèrent ;
  • l'organisation GS1 du préfixe ;
  • si le code est diffusable hors de l'entreprise ;
  • quel produit le porte déjà, le cas échéant.

C'est l'outil à utiliser avant d'importer une liste de codes fournisseur.

5. Imprimer les étiquettes

Depuis la liste des produits : Actions ▸ Imprimer des étiquettes code-barres.

Champ Ce qu'il fait
Gabarit La planche ou le rouleau. Six sont fournis
Étiquettes par produit Le même nombre pour tous
Sauter les premières cases Sur une planche déjà entamée : le nombre d'étiquettes déjà décollées
Ignorer les produits sans code-barres Décoché, l'impression s'arrête et nomme le premier produit sans code
Liste de prix Seulement si le gabarit affiche le prix

L'assistant annonce le nombre d'étiquettes et de planches avant d'imprimer.

Créer votre propre gabarit

Codes-barres ▸ Configuration ▸ Gabarits d'étiquettes ▸ Nouveau

Recopiez les mesures imprimées sur la boîte : largeur et hauteur de l'étiquette, marge du haut et de gauche, écart entre deux étiquettes. Une planche qui dépasse le format A4 est refusée à l'enregistrement, avec la mesure fautive dans le message.

Si votre imprimante décale d'un millimètre, c'est le gabarit qu'on ajuste, pas le pilote.

Pour une imprimante thermique, choisissez Rouleau : une étiquette par page, à la taille exacte du support, sans marges.

Questions qui reviennent

Le code-barres n'apparaît pas sur l'étiquette. Le dessin en PNG réclame une bibliothèque (rlPyCairo) que toutes les installations n'ont pas. Le module bascule alors tout seul en SVG, qui s'imprime aussi bien. Si vous voyez le code en clair dans un cadre pointillé, c'est que reportlab manque entièrement — votre installation d'Odoo est incomplète, et ses propres rapports en souffrent aussi.

Deux produits ont le même code-barres. Odoo 19 le refuse déjà et nomme les produits en conflit. Ce module y ajoute le contrôle avant attribution.

J'ai régénéré ma plage et les numéros repartent de zéro. Le compteur n'est jamais remis en arrière automatiquement. Si vous l'avez modifié à la main, remettez-le au-delà du dernier numéro attribué : le bouton Produits de la plage vous montre ce qui a déjà été posé.


DYONYSOS — welcome@dyonysos.fr

Avis des clients connectés. Un avis noté par client ; l'éditeur peut y répondre. Connectez-vous pour laisser un avis.

Éditeur
DYONYSOS
E-mail
contact@omnifloo.com
Clients Omnifloo
Support inclus selon votre formule : centre d'aide.