Custom Invoice Numbering — Documentation
Prenez le contrôle de la numérotation de vos factures, bons de livraison et avoirs grâce à un générateur de formats basé sur des tags. Définissez votre propre abréviation de document, ajoutez des tags année/mois/jour, choisissez des compteurs avec zéros initiaux et décidez si les compteurs ne sont jamais réinitialisés, ou s’ils le sont chaque année, chaque mois ou chaque jour. Les numéros de documents existants ne sont pas réécrits ; le module applique votre format aux nouveaux documents créés après la configuration.
Invoice Number
La numérotation des factures par défaut de PrestaShop est une simple séquence numérique. Si votre comptable a besoin de numéros comme INV/2026/000001, DN/2026/0001 ou CN/2026/0001, ce module vous permet de définir séparément le format des factures, des bons de livraison et des avoirs.
Le module conserve un journal des numéros générés, enregistre le modèle utilisé pour chaque document et empêche la réutilisation du même numéro formaté pour un même type de document.
Compatibility
Compatible avec PrestaShop 1.6 à 9.0 (latest) et PHP 7.1+. Nous continuons à prendre en charge les prochaines versions de PrestaShop.
How It Works
Vous construisez chaque numéro de document à partir de tags. Lorsqu’un document est créé, le module remplace les tags par des valeurs réelles, incrémente le compteur concerné et enregistre le résultat généré dans son journal.
Formats par défaut après installation :
invoice_format = {DOC_TYPE}/{YYYY}/{NNNNNN}
delivery_format = {DOC_TYPE}/{YYYY}/{NNNN}
credit_slip_format = {DOC_TYPE}/{YYYY}/{NNNN}
invoice_doc_type_abbrev = INV
delivery_doc_type_abbrev = DN
credit_slip_doc_type_abbrev = CN
invoice_reset_mode = yearly
delivery_reset_mode = yearly
credit_slip_reset_mode = yearly
Ces valeurs par défaut produisent des exemples comme :
INV/2026/000001
DN/2026/0001
CN/2026/0001
Installation
- Dans votre Back Office, allez dans Modules → Module Manager
- Cliquez sur Upload a module et sélectionnez le fichier ZIP
- Une fois le module installé, cliquez sur Configure
- Ouvrez Improve → Invoice Numbering
Configuration
Le module ajoute ces sections dans le Back Office :
- Dashboard — état actuel, compteurs, derniers numéros générés
- Invoice Format — modèle et paramètres de compteur pour les factures
- Delivery Format — modèle et paramètres de compteur pour les bons de livraison
- Credit Slip Format — modèle et paramètres de compteur pour les avoirs
- Generated Numbers — journal d’audit en lecture seule
- Settings — activer ou désactiver la numérotation personnalisée et vérifier l’état des overrides
Format Pattern
Utilisez un modèle composé de texte statique et de tags :
{DOC_TYPE}/{YYYY}/{NNNNNN}
Exemples :
INV/{YYYY}/{NNNNNN}
INV-{YY}-{MM}-{NNNN}
{DOC_TYPE}/{YYYY}/{MM}/{NNNNN}
{DOC_TYPE}-{ORDER_ID}-{NNNN}
Available Tags
Tags de date :
{YYYY} Full year, example: 2026
{YY} 2-digit year, example: 26
{MM} Month, example: 02
{DD} Day, example: 15
{QUARTER} Quarter, example: Q1
{WEEK} ISO week, example: 09
Tags de compteur :
{N} Counter with no padding
{NN} 2-digit counter
{NNN} 3-digit counter
{NNNN} 4-digit counter
{NNNNN} 5-digit counter
{NNNNNN} 6-digit counter
{NNNNNNN} 7-digit counter
{NNNNNNNN} 8-digit counter
Les alias de compteur global sont également pris en charge :
{GLOBAL_N}
{GLOBAL_NNNN}
{GLOBAL_NNNNNN}
Tags de contexte :
{DOC_TYPE} Document abbreviation, such as INV, DN, CN
{ORDER_ID} Order ID
{ORDER_REF} PrestaShop order reference
{INVOICE_ID} Order invoice ID
{SHOP_ID} Shop ID
{SHOP_NAME} Shop name
{CART_ID} Cart ID
{PAYMENT} Payment method
{COUNTRY} Invoice address country ISO code
{CUSTOMER_ID} Customer ID
{CUSTOMER_EMAIL} Customer email prefix
{CUSTOMER_REF} Stable random customer reference
Tags produit et aléatoires :
{PRODUCT_ID} Dominant product ID from the cart
{PRODUCT_REF} Dominant product reference from the cart
{RAND4} Random 4 digits
{RAND2} Random 2 letters
{RAND6} Random 6 letters
{RAND7} Random 7 letters
{RAND8} Random 8 letters
{RAND9} Random 9 letters
Alias en minuscules pris en charge par le formateur :
{year} Same as {YYYY}
{month} Same as {MM}
{day} Same as {DD}
{number} Same as {N}
{counter} Same as {N}
{reference} Same as {CUSTOMER_REF}
{customer_reference} Same as {CUSTOMER_REF}
{order_reference} Same as {ORDER_REF}
{invoice_number} Same as {N}
Important : gérez les zéros initiaux en choisissant le bon tag N. Par exemple, utilisez {NNNNN} pour cinq chiffres. Le format {number:5} n’est pas une syntaxe prise en charge.
Counter Reset Options
Chaque type de document dispose de son propre réglage de réinitialisation :
never
yearly
monthly
daily
Les règles de validation vous protègent contre les modèles incohérents :
yearly requires {YYYY} or {YY}
monthly requires a year tag and {MM}
daily requires a year tag, {MM}, and {DD}
Bons exemples :
Yearly: {DOC_TYPE}/{YYYY}/{NNNNNN}
Monthly: {DOC_TYPE}/{YYYY}/{MM}/{NNNN}
Daily: {DOC_TYPE}/{YYYY}/{MM}/{DD}/{NNN}
Starting Number
Chaque type de document possède un champ Set Next Number :
invoice_start_number
delivery_start_number
credit_slip_start_number
Utilisez-le lorsque le prochain document généré doit continuer une séquence comptable existante. La valeur doit être un nombre entier positif et elle est consommée une seule fois. Une fois le numéro suivant généré, le module efface le réglage du numéro de départ et continue à partir de là.
Exemple :
Set Next Number: 1000
Pattern: {DOC_TYPE}/{YYYY}/{NNNNNN}
Next invoice: INV/2026/001000
Following invoice: INV/2026/001001
Multi-Shop Behavior
Les compteurs sont stockés par ID de boutique. Dans une installation multi-boutique, chaque boutique dispose de ses propres lignes de compteur pour les factures, les bons de livraison et les avoirs.
La table des compteurs utilise cette structure en interne :
doc_type
id_shop
scope_type
scope_id
current_value
period_key
reset_mode
Pour la numérotation normale des factures, bons de livraison et avoirs, le module utilise des compteurs globaux par type de document et par boutique.
Generated Numbers Log
Chaque numéro de document généré est enregistré avec le type de document, la commande, la valeur du compteur, le modèle, le numéro formaté et la date.
La table du journal enregistre :
doc_type
id_order
id_order_invoice
id_order_slip
id_shop
counter_value
format_pattern
formatted_number
date_add
C’est utile lorsque vous devez vérifier quel modèle était actif au moment où une facture, un bon de livraison ou un avoir précis a été émis.
PDF and Document Display
Les factures sont formatées via le hook PrestaShop de formatage des numéros de facture. Les bons de livraison et les avoirs utilisent des overrides du module afin que leurs titres PDF puissent afficher le numéro formaté.
Le module enregistre ces hooks :
actionSetInvoice
actionInvoiceNumberFormatted
actionObjectOrderSlipAddAfter
actionFrontControllerInitAfter
actionAdminControllerInitAfter
Il vérifie également ces fichiers d’override dans l’écran des paramètres :
override/classes/order/Order.php
override/classes/pdf/HTMLTemplateDeliverySlip.php
override/classes/pdf/HTMLTemplateOrderSlip.php
Les noms de fichiers PDF des factures sont basés sur le numéro de facture formaté et nettoyés pour le système de fichiers. Par exemple :
INV/2026/000001
devient :
INV-2026-000001.pdf
Tips
- Validez le format de facture avec votre comptable avant la mise en production.
- Utilisez
{YYYY}dans les formats avec réinitialisation annuelle afin que l’année soit visible dans le numéro. - Utilisez
{YYYY}et{MM}dans les formats avec réinitialisation mensuelle. - Utilisez des compteurs avec zéros initiaux comme
{NNNN}ou{NNNNNN}afin que les listes exportées se trient proprement. - Gardez des abréviations distinctes pour les factures, bons de livraison et avoirs, par exemple
INV,DNetCN. - Définissez Set Next Number avant d’émettre le premier vrai document si vous migrez depuis un autre système.
- Vérifiez Generated Numbers après votre première commande de test pour confirmer que le modèle, le compteur et le numéro formaté correspondent exactement à vos attentes.
- Si le formatage des bons de livraison ou des avoirs n’apparaît pas dans les PDF, vérifiez le panneau Override Status dans les paramètres du module.
Frequently Asked Questions
Ce module modifiera-t-il les numéros des factures que j’ai déjà émises ?
Non. Les documents existants conservent leurs anciens numéros. Le module génère des numéros formatés pour les nouveaux documents après la configuration.
Puis-je réinitialiser automatiquement le compteur chaque année ?
Oui. Définissez le mode de réinitialisation sur yearly et incluez {YYYY} ou {YY} dans le modèle.
Puis-je réinitialiser par mois ?
Oui. Définissez le mode de réinitialisation sur monthly et utilisez un modèle qui contient à la fois l’année et le mois, par exemple :
{DOC_TYPE}/{YYYY}/{MM}/{NNNN}
Puis-je réinitialiser par jour ?
Oui. Définissez le mode de réinitialisation sur daily et incluez l’année, le mois et le jour :
{DOC_TYPE}/{YYYY}/{MM}/{DD}/{NNN}
Les factures, bons de livraison et avoirs peuvent-ils utiliser des formats différents ?
Oui. Chaque type de document a son propre format, sa propre abréviation, son propre mode de réinitialisation et son propre réglage de prochain numéro.
Les bons de livraison et les factures peuvent-ils partager le même compteur de séquence ?
Non. Le module conserve des compteurs séparés pour invoice, delivery et credit_slip.
Que se passe-t-il si la numérotation personnalisée est désactivée ?
Lorsque le réglage principal enabled est désactivé, la numérotation native de PrestaShop est utilisée.
Que se passe-t-il si je saisis un format invalide ?
Le module valide le modèle avant l’enregistrement et avant la génération d’un numéro. Un format valide doit contenir au moins un tag de compteur comme {N}, {NNNN} ou {NNNNNN}.