PepeFernandez Posted April 29 Share Posted April 29 (edited) Buenas, escribo este post por si es de utilidad para alguien que se tope con este problema.El caso: La empresa con tienda en prestashop ha cambiado de nombre, por lo que se necesita reiniciar las facturas. Puede que otra persona necesite reiniciarlas por otro motivo. Sabiendo que las facturas deben seguir un orden lógico y de más cosas que he leído por ahí, no encontraba ninguna solución definitiva a mi problema ya que no me valía el poner el año delante ni cosas así, mi ultima factura era la T00698 y quería que la siguiente fuera la T00001.Porqué ocurre esto: Prestashop calcula el último numero de factura haciendo un SELECT MAX('number') de la tabla de facturas por lo que por más que cambies el último registro, si no te cargas los anteriores te seguirá sacando un número que no quieresLa solución: he creado el siguiente fichero que se debe ubicar en override/classes/order/Order.php, cambiando la consulta: <?php class Order extends OrderCore { public static function getLastInvoiceNumber() { $sql = 'SELECT `number` FROM `' . _DB_PREFIX_ . 'order_invoice` ORDER BY `id_order_invoice` DESC'; return Db::getInstance()->getValue($sql); } public static function setLastInvoiceNumber($order_invoice_id, $id_shop) { if (!$order_invoice_id) { return false; } $number = Configuration::get('PS_INVOICE_START_NUMBER', null, null, $id_shop); // If invoice start number has been set, you clean the value of this configuration if ($number) { Configuration::updateValue('PS_INVOICE_START_NUMBER', false, false, null, $id_shop); } $sql = 'UPDATE `' . _DB_PREFIX_ . 'order_invoice` SET number ='; if (!$number) { $getNumberSql = 'SELECT `number` FROM `' . _DB_PREFIX_ . 'order_invoice` WHERE `id_order_invoice` = (SELECT `id_order_invoice` FROM `' . _DB_PREFIX_ . 'order_invoice` ORDER BY `id_order_invoice` DESC LIMIT 1, 1)'; $lastNumber = Db::getInstance()->getValue($getNumberSql); $number = $lastNumber +1; } $sql .= (int) $number; $sql .= ' WHERE `id_order_invoice` = ' . (int) $order_invoice_id; return Db::getInstance()->execute($sql); } } Ahora cogerá el último 'number' de la tabla, por lo que podrás modificar el número por el que quieres que sigan las facturas simplemente modificando el último valor 'number' de tu tabla ps_order_invoice. Espero que sirva, si hay algo que ven que pueda generar un problema comentarlo sin problemas, un saludo. Edited May 2 by PepeFernandez fix error on code (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now