Tutorial Prestashop: Modificare la Numerazione Note di Credito
Come personalizzare e Resettare la Numerazione delle Note su Prestashop
Se vi è mai sorta la necessità di dover modificare la numerazione delle note di credito, o semplicemente resettarle a inizio anno, sul vostro ecommerce Prestashop, avrete certamente notato che questo CMS non consente di effettuare questa operazione.
Infatti, il sistema utilizza come numero di emissione per la nota di credito l’id della tabella stessa, che per sua natura, è univoco.
Esiste però un sistema in grado di superare questo limite, ma richiede un po’ di pazienza e qualche piccola conoscenza di Database e Codcie Sorgente.
IMPORTANTE: Prima di effettuare una qualunque delle seguenti operazioni, consigliamo vivamente di effettuare un Backup del database e dei file!
NdR: Abbiamo assunto come prefisso standard delle tabelle il classico ‘ps_’. Ovviamente va sostituito con il proprio prefisso tabelle scelto in fase di installazione.
Come Aggiungere la Numerazione alle Note di Credito
Il primo passo da effettuare è proprio quello di aggiungere una numerazione, visto che ora la numerazione è collegata all’ID e, come accennato in precedenza, questo non va bene. Sarà necessario aggiungere un campo alla tabella ps_order_slip; chiameremo questo campo invoice_number, in modo da farci capire che si tratta della numerazione ufficiale relativa alla contabilità.
Accediamo quindi al nostro database mediante il nostro tool di amministrazione (verosimilmente phpMyAdmin), raggiungiamo la tabella ps_order_slip e aggiungiamo un campo alla fine della tabella:
Selezionare la tabella ps_order_slip e aggiungere un campo
Creiamo il campo invoice_number di tipo INT senza valore predefinito
Per i più esperti è sufficiente lanciare la seguente query
ALTER TABLE `ps_order_slip` ADD `invoice_number` INT NULL AFTER `date_upd`;
A questo punto abbiamo il nostro nuovo campo, che però ha ancora valori nulli. In linea di massima, possiamo pensare di fargli assumere come valore, per il momento, lo stesso valore dell’id della tabella, che fino a questo momento era di fatto il numero della nota di credito. Eseguiamo quindi la seguente query:
UPDATE `ps_order_slip` SET `invoice_number`=`id_order_slip`
A questo punto avremo una numerazione parallela all’id della tabella, che potremo andare a modificare e resettare in base alle nostre necessità.
Dopo il Database Modifichiamo le Classi di Prestashop
Per modificare il comportamento di Prestashop, abbiamo bisogno di modificare le classi che gestiscono le note di credito: quindi sia i file che gestiscono la creazione della nota, sia i file che permettono di gestire le note nell’amministrazione e che gestiscono il template della stessa.
Sfrutteremo, per effettuare tali operazioni, il meccanismo degli override.
OrderSlip.php
Come prima cosa andiamo quindi a creare un override della classe OrderSlip.php, da posizionare nella cartella /override/classes/order/OrderSlip.php
In questa classe (che troverete in allegato in calce all’articolo) andiamo ad aggiungere l’attributo invoice_number e andiamo a modificare la funzione createOrderSlip(), aggiungendo del codice prima del salvataggio della nota come segue:
//gestione numero di nota personalizzato e resettabile
$orderSlip->invoice_number = (int)Configuration::get('PS_NEXT_SLIP_NUMBER');
Configuration::updateValue('PS_NEXT_SLIP_NUMBER', $orderSlip->invoice_number + 1);
Come possiamo ben notare, l’intermo meccanismo si basa su una variabile contatore che andremo a memorizzare nel database, cosa che possiamo effettuare molto semplicemente con la seguente query:
INSERT INTO `ps_configuration` ( `name`, `value`) VALUES ('PS_NEXT_SLIP_NUMBER', '1')
A questo punto, se abbiamo fatto tutto bene, durante la creazione di una nota di credito, il sistema andrà ad associare il nuovo numero nella colonna invoice_number e aggiornerà di volta in volta il contatore.
Non ci resta che mostrare questo numero nel PDF che viene generato dal sistema.
HTMLTemplateOrderSlip.php
Creiamo quindi un altro override da inserire nella cartella /override/classes/pdf/HTMLTemplateOrderSlip.php.
In questo file, nella funzione __construct(), andiamo a modificare la parte delle header information come segue:
$this->title = HTMLTemplateOrderSlip::l('Slip #').Configuration::get('PS_CREDIT_SLIP_PREFIX', Context::getContext()->language->id).sprintf('%06d', (int)$this->order_slip->invoice_number);
e modifichiamo la funzione getFilename() nel seguente modo:
public function getFilename()
{
return 'order-slip-'.sprintf('%06d', $this->order_slip->invoice_number).'.pdf';
}
Ecco qui il link per scaricare i file già pronti da inserire nelle cartelle override:
Antonio Cicirelli
Sono laureato in Ingegneria Informatica e nutro una grande passione per il Marketing e l'imprenditoria. Queste passioni mi hanno portato, da qualche anno a questa parte, ad impegnarmi nella realizzazione di siti ecommerce e portali per la lead generation moderni, funzionali e professionali, oltre ad occuparmi di Advertising e posizionamento SEO. Il mio obiettivo è aiutare le aziende a vendere e prosperare attraverso le attività online.
Categorie
Ultime News
OpportunityCommerce: AFFIDABILE secondo le opinioni REALI dei clienti
Recensioni Verificate da Clienti Veri di Opport...E-commerce 2020: come sfruttare il commercio online
Gli scenari dell’Ecommerce in Italia e nel mond...Bonus E-Commerce 2020 Lombardia: Come Accedere al Fondo Perduto
Nuovi mercati per Piccole e Medie imprese lomba...CRO Tips: Anatomia di una Landing Page Efficace
Scopriamo gli Elementi Chiave di una Pagina che...Regime Forfettario per e-commerce: come risparmiare?
Hai appena aperto la tua attività di e-commerce...