Najděte si soubor /administrator/components/com_virtuemart/models/orders.php
V něm si vyhledejte řádek s řetězcem:
$_orderData->order_number =''; //měl by být ve funkci createOrder -- pozor tento řetězec může být v souboru vícekrát
A pod něj vložte tento kód:
#---nastavení vlastního číslování VM2----------------------------------------------------------
$rok = date('Y');
$rok2 = date('y'); //pro dvoumístné předčíslí objednávky dle roku
$db = JFactory::getDbo();
$query = "SELECT max(order_number) FROM `#__virtuemart_orders` WHERE `order_number` REGEXP '^$rok2' AND `created_on` >= '$rok-01-01' AND `created_on` <= '$rok-12-31' ";
$db->setQuery($query);
$cislo = $db->loadResult();
$cislo_pom = $rok2."000000";
$cislo = $cislo - $cislo_pom + 1;
if($cislo < 1) $cislo = 1;
$_orderData->order_number = $rok2.str_pad($cislo,6,0, STR_PAD_LEFT);
#-------------------------------------------------------nastavení vlastního číslování VM2------
a vyzkoušejte.
Pokud je vše v pořádku, nově definovaný kód nastaví vlastní číslování objednávek a defaultní způsob generování čísla objednávky VM nebude použitý. Bohužel se ale jedná o hack core souboru, takže je třeba hlídat, zda po upgradu VM2 nedojde k přepsání.
Sjednocení čísel objednávek s čísly faktury ve Virtuemart 2
pokud se Vám nové číslování objednávek líbí, můžete ještě zjistit, že VM používá vlastní generování čísel faktur, které nesouhlasí s čísly objednávek. Pokud to chcete sjednotit, dá se číslo objednávky podstrčit i jako číslo faktury.
Opět otevřete soubor /administrator/components/com_virtuemart/models/orders.php
V něm si vyhledejte řádek s řetězcem:
if(empty($data['invoice_number'])) {
a pod ním je mechanismus tvorby čísla faktury, řádky zakomentujte a připište na konec nový, tohle bude výsledek:
if(empty($data['invoice_number'])) {
// $variable_fixed=sprintf("%05s",$num_rows);
// $date = date("Y-m-d");
// $date = JFactory::getDate()->toMySQL();
// $data['invoice_number'] = str_replace('-', '', //substr($date,2,8)).substr(md5($orderDetails['order_number'].$orderDetails['order_status']),0,3).'0'.$count;
$data['invoice_number'] = $orderDetails['order_number']; //toto je nový řádek, kterým přepíšete stávající tvorbu čísla faktury