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.

Custom Invoice Numbering — Admin invoice format builder

Compatibility

Compatibile con PrestaShop 1.6 fino a 9.0 (latest) e PHP 7.1+. Continuiamo a supportare le prossime versioni di PrestaShop.

Custom Invoice Numbering — Admin counter dashboard

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
Custom Invoice Numbering — Admin number log

Installation

  1. Nel tuo Back Office, vai su Modules → Module Manager
  2. Clicca su Upload a module e seleziona il file ZIP
  3. Una volta installato, clicca su Configure
  4. Apri Improve → Invoice Numbering
Custom Invoice Numbering — Admin numbering health

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.

Custom Invoice Numbering — Mprinvoicenumber counter settings

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}
Custom Invoice Numbering — Mprinvoicenumber dashboard counters

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
Custom Invoice Numbering — Mprinvoicenumber generated numbers log

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.

Custom Invoice Numbering — Mprinvoicenumber integrity checks

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.

Custom Invoice Numbering — Mprinvoicenumber invoice format builder

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
Custom Invoice Numbering — Mprinvoicenumber override status

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, DN e CN.
  • 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}.

Caricamento...
Torna su