En Prestashop no se pueden eliminar las facturas ya emitidas. Cuando cancelamos un pedido o un cliente solicita una devolución, ya sea parcial (solo algunos productos de un pedido) o total, se debe crear una factura rectificativa.
Es obligatorio hacerlo si vamos a presentar estas facturas, de lo contrario, al presentar la factura, estaremos declarando una venta que no hemos hecho y estaremos pagando impuestos que no hemos recaudado o que no nos corresponde pagar. La factura rectificativa se hace por un importe negativo correspondiente a los productos devueltos en un pedido.
El formato de las facturas rectificativas que genera Prestashop no es correcto. Hay que solventar los siguientes problemas:
- Prestashop le llama factura de abono y en dicha factura debe aparecer el título «Factura rectificativa».
- Debe hacer referencia a la factura que rectifica mediante su número y fecha, sin embargo, solo hace referencia al número de pedido y esto puede ocasionar problemas en una inspección.
Para resolver estos problemas en la versión 1.7 de Prestashop vamos a introducir una línea en la factura debajo del número de factura que haga referencia a la factura que rectifica. Para ello introduciremos una nueva variable smarty en el .tpl de la factura rectificativa y le daremos un valor desde su controlador.
El .tpl se encuentra en
/pdf/header.tpl
Bajo el cierre de la fila de la tabla que contiene la variable $title:
<tr>
<td style="font-size: 14pt; color: #9E9F9E">
{$title|escape:'html':'UTF-8'}
</td>
</tr>
Creamos dos nuevas filas, una vacía para introducir un espacio vertical y otra con nuestra nueva variable llamada $subtitle
<tr>
<td> </td>
</tr>
<tr>
<td style="font-size: 11pt; color: #666">
{$subtitle|escape:'html':'UTF-8'}
</td>
</tr>

Para que los cambios no se pierdan en futuras actualizaciones de Prestashop deberemos copiar este fichero y su ruta en el directorio de nuestro tema. Y para que no se pierdan al actualizar nuestro tema deberemos hacerlo preferentemente en nuestro tema child. Se haría copiando el fichero header.tpl con los cambios en:
/themes/tema_child/
Y ahora debemos introducir el contenido que queremos en la variable $subtitle desde el controlador, que se encuentra ubicado en:
…/classes/pdf/HTMLTemplateOrderSlip.php
Para que no se pierdan los cambios de este fichero en futuras actualizaciones lo duplicaremos y lo editaremos en /override/classes/pdf. Creando esa ruta de directorios previamente.
Dentro de la función __construct debajo de la línea:
$this->title = sprintf(HTMLTemplateOrderSlip::l('%1$s%2$06d'), $prefix, (int) $this->order_slip->id);
Introduciremos las siguientes líneas de código:
$invoice_prefix = Configuration::get('PS_INVOICE_PREFIX', Context::getContext()->language->id);
$subtitlestring = "(Correspondiente a la factura ".sprintf(HTMLTemplateOrderSlip::l('%1$s%2$06d'), $invoice_prefix, (int) $this->order->invoice_number)." del ".Tools::displayDate($this->order->date_add).')';
$this->smarty->assign(['subtitle' => $subtitlestring]);
Y más abajo, dentro de la función getHeader() comentamos la línea
$this->smarty->assign(['header' => Context::getContext()->getTranslator()->trans('Credit slip', [], 'Shop.Pdf')]);
y justo debajo pegamos:
$this->smarty->assign(['header' => 'Factura rectificativa']);
Aquí estamos cambiando el texto «Factura de abono» por la forma correcta que sería «Factura rectificativa»


Con estos cambios la cabecera de la factura rectificativa estaría correcta y se vería así:
Testeado en la versión 1.7.7.1