Il nostro consiglio per la numerazione delle fatture è di usare un plugin fatto apposta, come WooCommerce PDF Invoices & Packing Slips, un plugin gratuito che consente la generazione e l'invio di fatture in pdf al completamento dell'ordine e la numerazione progressiva automatica.

Ci sono però casi in cui la numerazione delle fatture elettroniche e delle note di credito non sono associabili a un meccanismo automatico di numerazione, o casi in cui è solo la nota di credito a non essere associata a un meccanismo automatico.

Abbiamo anche casi in cui si vuole gestire autonomamente questa numerazione, sincronizzandola con un sistema diverso da WooCommerce, come nei casi di gestione in contemporanea delle fatture di un negozio fisico e di un'attività e-commerce o nei casi di più e-commerce differenti.

La soluzione che abbiamo adottato è quella di creare dei campi personalizzati (custom fields) associati a quell'ordine, dove riportare il numero e la data della fattura o nota di credito. Il plugin prenderà quei valori e li riporterà nella fattura/nota di credito elettronica corrispondente.

I campi personalizzati sono una funzione nativa di WordPress e quindi degli ordini di WooCommerce. Per attivarli NON è necessario l'uso di alcun plugin aggiuntivo. Vediamo come fare.

Numerazione della fattura elettronica

Facciamo un esempio concreto: dobbiamo numerare la nostra fattura 07/2019 del 15 aprile 2019.

Apriamo il dettaglio dell'ordine (Menu WooCommerce -> Ordini -> click sull'ordine da modificare).

Soltanto una prima volta, controlliamo che il riquadro dei campi personalizzati sia visibile. In alto a destra nella schermata dell'ordine apriamo le Impostazioni schermata e controlliamo che l'opzione "Campi personalizzati" sia attiva.

Nella parte inferiore della schermata sarà visibile il riquadro dei campi personalizzati.

Aggiungiamo un nuovo campo personalizzato. Clicchiamo su "Aggiungi nuovo".

Adesso possiamo aggiungere il nome del campo personalizzato e il valore.

Per indicare il numero della fattura il nome del campo da inserire è "woo_pdf_invoice_id". Il valore è il numero della fattura, come vogliamo che venga riportato nella fattura elettronica. Impostiamo tutto e clicchiamo su "Aggiungi campo personalizzato".

Ripetiamo la stessa operazione per la data della fattura. Il nome del campo, per la data della fattura, è "woo_pdf_invoice_date". Il valore è la data della fattura, scritta in modalità anno-mese-giorno come da specifiche della Fattura PA (per il 15 aprile 2019 scriviamo "2019-04-15". Clicchiamo su "Aggiungi campo personalizzato".

Finito. Da questo momento possiamo esportare la fattura elettronica di quest'ordine in modo corretto.

Numerazione della nota di credito elettronica

Il procedimento per la numerazione delle note di credito è lo stesso. Cambiano i nomi dei campi da aggiungere all'ordine, e sono:

  • per il numero della nota di credito:
    nome del campo personalizzato: woo_pdf_credit_note_id
    valore del campo: il numero della nota di credito così come si vuolevenga riportato in fattura elettronica (es. R01-2019)
  • per la data della nota di credito:
    nome del campo personalizzato: woo_pdf_credit_note_date
    valore del campo: la data della nota di credito in formato anno-mese-giorno (es. 2019-04-16).

Ci preme ricordare che WooCommerce Italian Add-on gestisce solo le note di credito a rimborso totale dell'acquisto, e non importi parziali.

Sincronizzazione con sistemi di fatturazione esterni

L'uso dei custom fields di WordPress ci consente di collegare agevolmente sistemi esterni di gestione della numerazione e datazione delle fatture, come ad esempio sincronizzare la generazione di fatture due WooCommerce differenti o un e-commerce e un sistema in locale.

Un esempio di codice per l'applicazione della fattura di esempio all'ordine con id 12345:

$order_id = 12345;
$inum = numero_della_fattura; // ad es. 7
$idate = data_della_fattura; // ad es. '2019-04-15'
$order_invoice_id = sprintf("%03d-%s", $inum, date("Y", strtotime($idate));
$order_invoice_date = date("Y-m-d", strtotime($idate));
update_post_meta($order_id, 'woo_pdf_invoice_id', $order_invoice_id);
update_post_meta($order_id, 'woo_pdf_invoice_date', $order_invoice_date);

analogamente per la nota di credito:

$order_id = 12345;
$rnum = numero_della_nota_di_credito; // ad es. 1
$rdate = data_della_nota_di_credito; // ad es. '2019-04-16'
$order_credit_note_id = sprintf("R%03d-%s", $rnum, date("Y", strtotime($rdate));
$order_credit_note_date = date("Y-m-d", strtotime($rdate));
update_post_meta($order_id, 'woo_pdf_credit_note_id', $order_credit_note_id);
update_post_meta($order_id, 'woo_pdf_credit_note_date', $order_credit_note_date);