How to generate PrestaShop Invoice by Customer name
Want to generate PDF invoice by customer's name instead of the boring numbers? It's so easy - on this guide, I will show you how to do it:
Are you ready? Follow me.
Before you do anything else, please make sure to backup your website / your file first. When you have done, let's go.
Step I - Modify function getFilename()
Open and edit function getFilename() in your-website/classes/pdf/HTMLTemplateInvoice.php by using your favourite editor.
Step II - Get the customer object : Find getFilename() function (line 500):
public function getFilename()
{
$id_lang = Context::getContext()->language->id;
$id_shop = (int)$this->order->id_shop;
$format = '%1$s%2$06d';
Change it to:
public function getFilename()
{
$id_lang = Context::getContext()->language->id;
$id_shop = (int)$this->order->id_shop;
$format = '%1$s%2$06d';
$customer = new Customer((int)$this->order->id_customer);
Step III - Return with the name and the number
Look into this code:
return sprintf(
$format,
Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, $id_shop),
$this->order_invoice->number,
date('Y', strtotime($this->order_invoice->date_add))
).'.pdf';
Change it to:
return sprintf(
$format,
Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, $id_shop),
$this->order_invoice->number,
date('Y', strtotime($this->order_invoice->date_add))
).'_'.$customer->firstname.'_'.$customer->lastname.'.pdf';
Final - Enjoy your result
The generated invoice name will be IN_number_customername.pdf. For example IN000001_Natalia_Eva.pdf. We also released a new module called DocumenThemix to help you to customize and personalize the Prestashop Invoice template as well as Delivery Slip & Credit Slip. You should take a view on it and try for a while - it's powerful and easy to use.
Is it cool, huh? Don't forget our blog to find useful Prestashop tutorials.
Check the video to change it easier.
Have a nice weekend!