Potřebujete změnit číslování objednávek a číslování faktur?


Je zde skript, který funguje takto:


1) Vezměte poslední dvě číslice roku + přidejte poslední nejvyšší číslo + přidejte 1
2) pokud se rok změní, číslování se automaticky vynuluje od 1

3) Soubor má název Order.php a je potřeba jej umístit do složky prestashop/override/classes/order

Doufám, že to pomůže mnoha lidem.

Prestashop kompatibilita: 1.5, 1.6, 1.7

<?php
Class Order extends OrderCore
{
  public static function generateReference()
  {
    $curYear = substr(date('Y'),2,2); 
    $last_id = Db::getInstance()->getValue('
        SELECT MAX(id_order)
        FROM `'._DB_PREFIX_.'orders`');
      return $curYear.sprintf('%04d',(int)$last_id + 1);
   }
  
  public static function setLastInvoiceNumber($order_invoice_id, $id_shop)
  {
        if (!$order_invoice_id) {
            return false;
        }

        $curYear2 = substr(date('Y'),2,2); 
        $last_id2 = Db::getInstance()->getValue('
               SELECT MAX(number)
                FROM `'._DB_PREFIX_.'order_invoice`');

        $number1 = sprintf('%04d',(int)$last_id2 + 1);
        
        if (substr($number1,0,2) == $curYear2) 
        {
          $newInvoiceNumber = $number1;
        } else {
          $newInvoiceNumber = $curYear2.sprintf('%04d', (int)$last_id2 + 1);
        }
        
        $sql = 'UPDATE `'._DB_PREFIX_.'order_invoice` SET number = '.$newInvoiceNumber.' WHERE `id_order_invoice` = '.(int)$order_invoice_id;

        return Db::getInstance()->execute($sql);
        
  }

}