Custom Invoice Numbering — Documentazione
Prendi il controllo della numerazione di fatture, bolle di consegna e note di credito con un generatore di formati basato su tag. Imposta la tua abbreviazione del documento, includi tag per anno/mese/giorno, scegli contatori con zeri iniziali e decidi se i contatori devono azzerarsi mai, ogni anno, ogni mese o ogni giorno. I numeri dei documenti esistenti non vengono riscritti; il modulo applica il tuo formato ai nuovi documenti creati dopo la configurazione.
Invoice Number
La numerazione predefinita delle fatture in PrestaShop è una semplice sequenza numerica. Se il tuo commercialista richiede numeri come INV/2026/000001, DN/2026/0001 o CN/2026/0001, questo modulo ti permette di definire separatamente il formato per fatture, bolle di consegna e note di credito.
Il modulo mantiene un registro dei numeri generati, salva il modello usato per ogni documento e impedisce che lo stesso numero formattato venga riutilizzato per lo stesso tipo di documento.
Compatibility
Compatibile con PrestaShop 1.6 fino a 9.0 (latest) e PHP 7.1+. Continuiamo a supportare le prossime versioni di PrestaShop.
How It Works
Costruisci ogni numero di documento a partire dai tag. Quando viene creato un documento, il modulo sostituisce i tag con valori reali, incrementa il contatore pertinente e salva il risultato generato nel proprio registro.
Formati predefiniti dopo l’installazione:
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
Questi valori predefiniti producono esempi come:
INV/2026/000001
DN/2026/0001
CN/2026/0001
Installation
- Nel tuo Back Office, vai su Modules → Module Manager
- Clicca su Upload a module e seleziona il file ZIP
- Una volta installato, clicca su Configure
- Apri Improve → Invoice Numbering
Configuration
Il modulo aggiunge queste sezioni nel Back Office:
- Dashboard — stato attuale, contatori, numeri generati di recente
- Invoice Format — modello e impostazioni del contatore per le fatture
- Delivery Format — modello e impostazioni del contatore per le bolle di consegna
- Credit Slip Format — modello e impostazioni del contatore per le note di credito
- Generated Numbers — registro di audit in sola lettura
- Settings — attivazione o disattivazione della numerazione personalizzata e controllo dello stato degli override
Format Pattern
Usa un modello composto da testo statico e tag:
{DOC_TYPE}/{YYYY}/{NNNNNN}
Esempi:
INV/{YYYY}/{NNNNNN}
INV-{YY}-{MM}-{NNNN}
{DOC_TYPE}/{YYYY}/{MM}/{NNNNN}
{DOC_TYPE}-{ORDER_ID}-{NNNN}
Available Tags
Tag data:
{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
Tag contatore:
{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
Sono supportati anche gli alias del contatore globale:
{GLOBAL_N}
{GLOBAL_NNNN}
{GLOBAL_NNNNNN}
Tag di contesto:
{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
Tag prodotto e casuali:
{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 in minuscolo supportati dal formatter:
{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}
Importante: imposta il riempimento scegliendo il tag N corretto. Per esempio, usa {NNNNN} per cinque cifre. Il formato {number:5} non è una sintassi supportata.
Counter Reset Options
Ogni tipo di documento ha la propria impostazione di azzeramento:
never
yearly
monthly
daily
Le regole di validazione ti proteggono da modelli incoerenti:
yearly requires {YYYY} or {YY}
monthly requires a year tag and {MM}
daily requires a year tag, {MM}, and {DD}
Esempi corretti:
Yearly: {DOC_TYPE}/{YYYY}/{NNNNNN}
Monthly: {DOC_TYPE}/{YYYY}/{MM}/{NNNN}
Daily: {DOC_TYPE}/{YYYY}/{MM}/{DD}/{NNN}
Starting Number
Ogni tipo di documento ha un campo Set Next Number:
invoice_start_number
delivery_start_number
credit_slip_start_number
Usalo quando il prossimo documento generato deve proseguire una sequenza contabile esistente. Il valore deve essere un numero intero positivo e viene consumato una sola volta. Dopo la generazione del numero successivo, il modulo cancella l’impostazione del numero iniziale e continua da lì.
Esempio:
Set Next Number: 1000
Pattern: {DOC_TYPE}/{YYYY}/{NNNNNN}
Next invoice: INV/2026/001000
Following invoice: INV/2026/001001
Multi-Shop Behavior
I contatori sono memorizzati per ID negozio. In un’installazione multi-shop, ogni negozio ha le proprie righe contatore per fatture, bolle di consegna e note di credito.
La tabella dei contatori usa internamente questa struttura:
doc_type
id_shop
scope_type
scope_id
current_value
period_key
reset_mode
Per la normale numerazione di fatture, bolle di consegna e note di credito, il modulo usa contatori globali per tipo di documento e negozio.
Generated Numbers Log
Ogni numero di documento generato viene salvato con tipo di documento, ordine, valore del contatore, modello, numero formattato e data.
La tabella del registro memorizza:
doc_type
id_order
id_order_invoice
id_order_slip
id_shop
counter_value
format_pattern
formatted_number
date_add
È utile quando devi verificare quale modello era attivo al momento dell’emissione di una determinata fattura, bolla di consegna o nota di credito.
PDF and Document Display
Le fatture vengono formattate tramite l’hook PrestaShop per la formattazione del numero fattura. Le bolle di consegna e le note di credito usano override del modulo, così i loro titoli PDF possono mostrare il numero formattato.
Il modulo registra questi hook:
actionSetInvoice
actionInvoiceNumberFormatted
actionObjectOrderSlipAddAfter
actionFrontControllerInitAfter
actionAdminControllerInitAfter
Controlla inoltre questi file di override nella schermata delle impostazioni:
override/classes/order/Order.php
override/classes/pdf/HTMLTemplateDeliverySlip.php
override/classes/pdf/HTMLTemplateOrderSlip.php
I nomi dei file PDF delle fatture si basano sul numero fattura formattato e vengono ripuliti per il filesystem. Per esempio:
INV/2026/000001
diventa:
INV-2026-000001.pdf
Tips
- Concorda il formato della fattura con il tuo commercialista prima di andare online.
- Usa
{YYYY}nei formati con azzeramento annuale, così l’anno è visibile nel numero. - Usa
{YYYY}e{MM}nei formati con azzeramento mensile. - Usa contatori con zeri iniziali come
{NNNN}o{NNNNNN}, così gli elenchi esportati si ordinano correttamente. - Mantieni distinte le abbreviazioni di fatture, bolle di consegna e note di credito, per esempio
INV,DNeCN. - Imposta Set Next Number prima di emettere il primo documento reale se stai migrando da un altro sistema.
- Controlla Generated Numbers dopo il primo ordine di test per confermare che modello, contatore e numero formattato siano esattamente quelli attesi.
- Se la formattazione di bolle di consegna o note di credito non appare nei PDF, controlla il pannello Override Status nelle impostazioni del modulo.
Frequently Asked Questions
Questo modulo cambierà i numeri delle fatture che ho già emesso?
No. I documenti esistenti mantengono i numeri precedenti. Il modulo genera numeri formattati per i nuovi documenti dopo la configurazione.
Posso far azzerare automaticamente il contatore ogni anno?
Sì. Imposta la modalità di azzeramento su yearly e includi {YYYY} o {YY} nel modello.
Posso azzerare per mese?
Sì. Imposta la modalità di azzeramento su monthly e usa un modello che includa sia l’anno sia il mese, per esempio:
{DOC_TYPE}/{YYYY}/{MM}/{NNNN}
Posso azzerare per giorno?
Sì. Imposta la modalità di azzeramento su daily e includi anno, mese e giorno:
{DOC_TYPE}/{YYYY}/{MM}/{DD}/{NNN}
Fatture, bolle di consegna e note di credito possono usare formati diversi?
Sì. Ogni tipo di documento ha il proprio formato, la propria abbreviazione, la propria modalità di azzeramento e la propria impostazione del numero successivo.
Le bolle di consegna e le fatture possono condividere lo stesso contatore di sequenza?
No. Il modulo mantiene contatori separati per invoice, delivery e credit_slip.
Cosa succede se la numerazione personalizzata è disattivata?
Quando l’impostazione principale enabled è disattivata, viene usata la numerazione nativa di PrestaShop.
Cosa succede se inserisco un formato non valido?
Il modulo valida il modello prima del salvataggio e prima della generazione di un numero. Un formato valido deve contenere almeno un tag contatore come {N}, {NNNN} o {NNNNNN}.