Azzerare la fattura Prestashop
Sviluppo di una semplice guida per azzerare la fattura Prestashop all’inizio di un nuovo anno. Modifica alla classe Order.php metodo setLastInvoiceNumber.
Una funzionalità di Prestashop non prevista è la possibilità di azzerare la fattura prestashop con l’inizio di un nuovo anno, come prevede la legge italiana per la gestione delle fatture.
Allora mi sono posto il problema di realizzare una breve guida per risolvere questo problema Prestashop per i negozianti Italiani.
La classe che andremo a modificare è Order.php che va a gestire gli ordini all’interno di Prestashop, ed andremo a modificare il metodo che va a settare il numero di fattura quando viene generata nel nostro pannello di amministrazione.
Il metodo che setta il numero di fattura è:
public static function setLastInvoiceNumber($order_invoice_id, $id_shop)
il quale fa una ricerca all’interno del database del numero più grande di fattura inserito.
Il problema è che ricerca il numero massimo tra tutte le fatture emesse e non fa riferimento all’anno di emissione. Quindi noi ora alla chiamata SQL andremo ad inserire la ricerca del numero massimo di fattura facendo riferimento soltanto alle fatture emesse nell’anno di fatturazione corrente.
Apriamo il file Order.php che trovate su /classes/order/ ed andate a cercare metodo sopra citato “public static function setLastInvoiceNumber($order_invoice_id, $id_shop)” e vedrete dentro la chiamata SQL da modificare:
$sql .= '(SELECT new_number FROM (SELECT (MAX(`number`) + 1) AS new_number FROM `'._DB_PREFIX_.'order_invoice`) AS result)';
adesso andiamo ad inserire la condizione per la ricerca esclusiva in base al numero massimo di fattura generata nell’anno corrente:
$sql .= '(SELECT new_number FROM (SELECT (MAX(`number`) + 1) AS new_number FROM `'._DB_PREFIX_.'order_invoice` WHERE date_add>="'.date("Y", time()).'-01-01 00:00:00") AS result)';
Ed il gioco è fatto!
Vi ricordo che se avete già generato delle fatture per l’anno corrente ovviamente questa modifica farà settare il numero di fatture al numero progressivo dell’ultima fattura generato, quindi andrebbero cambiati i numeri di fattura per l’anno corrente già generati nel database.
Ciao, complimenti per il tuo post.
Ho una domanda da farti; se oltre le fatture dovessimo azzerare le note credito? Solitamente da anno nuovo se ripartono le fatture anche le nc dovrebbero azzerarsi e partire dalla prima.
Grazie per il tuo articolo, molto utile
In effetti sarebbe un’ottima idea per un futuro articolo per il blog. Purtroppo ho un periodo intenso con il lavoro, ma appena ho del tempo libero provo a scrivere un’altra guida.
Grazie per l’osservazione!
A presto.
Ciao, ottima guida, funziona perfettamente.
Ti faccio una domanda, avendo effettuato questa modifica oggi e avendo già acquisti nel nuovo anno la numerazione continua con quella precedente. Ho dovuto modificare la colonna “number” della tabella _order_invoice.
Questo può causare errori? vanno modificati altri valori?
Ciao e grazie!
ciao Marco,
si praticamente questa modifica prende come riferimento la fattura con numero massimo dell’anno in corso, quindi vanno modificate le numerazioni da database delle fatture emesse nell’anno fino a quel momento. La tabella da te utilizzata è quella corretta, e basta modificare il campo number.
Saluti
Oreste Delitala
Ciao, grazie per il post, però ho un problema,
Ho Prestashop in versione 1.6.1.1 e se cerco il file Order.php nella cartella /classes/ non lo trovo, ma lo ritrovo all’interno della sottocartella /order/.
Detto questo, faccio la modifica elencata sopra e salvo il file (dopo aver fatto backup) però quando cerco di impostare il numero di fattura, mi riprende quello dello scorso anno. Dove sbaglio?
Ciao Davide,
Sicuramente ci saranno delle fatture già emesse nel 2016, in pratica la numerazione fa riferimento alle fatture emesse nell’anno corrente. Per cambiare la numerazione delle fatture emesse devi andare nel database nella tabella ps_order_invoice e modificare il campo number delle fatture con data 2016.
Se hai bisogno contattami in privato.
Saluti
Oreste Delitala
ottima guida,
ma mi sorge il dubbio con prestashop 1.6.0.14 se adesso faccio una fattura 3 che c’era anche l’anno scorso lui come fa a prendere la fattura giusta ?
non è che prende in stampa la fattura 3 dell’anno precedente ?