Cómo hacer una factura rectificativa en Prestashop

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:

  1. Prestashop le llama factura de abono y en dicha factura debe aparecer el título «Factura rectificativa».
  2. 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>&nbsp;</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

Shopping Cart
en_USEnglish