Codes-barres produit — génération, contrôle et étiquettes
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.
Schermafbeeldingen
-
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 3 -
Codes-barres produit — génération, contrôle et étiquettes — capture 4 -
Codes-barres produit — génération, contrôle et étiquettes — capture 5
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
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.
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.
Le préfixe, les chiffres disponibles, le compteur et le prochain code que la plage produira.
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.
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
Wat deze app niet doet
- 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 .
Vereiste applicaties van de appstore
Geen.
Gebruikte Odoo Community-modules
productstock
| Serie | Versie | Status | Gepubliceerd op |
|---|---|---|---|
| 20.0 | 20.0.1.0.0 | Beschikbaar | 02-10-2026 |
| 19.0 | 19.0.1.0.1 | Beschikbaar |
Fiche gegenereerd uit de code van de uitgever (privé-repository, branch 20.0): de broncode is niet gepubliceerd.
Automatische controle van de appstore (los van de uitgever), toegepast op alle applicaties. Conforme.
| Controle | Resultaat | Effect indien afwezig |
|---|---|---|
| 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à29ou40à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
Beoordelingen van ingelogde klanten. Eén beoordeling per klant; de uitgever kan erop reageren. Log in om een beoordeling te plaatsen.
- Uitgever
- DYONYSOS
- contact@omnifloo.com
- Omnifloo-klanten
- Support inbegrepen volgens uw formule: helpcentrum.