HAI DIMENTICATO I TUOI DATI?

Tutorial Prestashop: Modificare la Numerazione Note di Credito

da / mercoledì, 23 marzo 2016 / Pubblicato inLe Guide di IdeaCommerce

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:

Aggiungere Campo al Database Step 1 Selezionare la tabella ps_order_slip e aggiungere un campo

 

Campo incoice_number nella tabella ps_order_slip 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:

Free Download

Taggato con:

Laureato in Ingegneria Informatica, nutre una grande passione per il Marketing e l'imprenditoria. Queste passioni lo hanno portato, da qualche anno a questa parte, ad impegnarsi nella realizzazione di siti ecommerce moderni, funzionali e professionali. Il suo obiettivo è aiutare le aziende a vendere online.

TOP