Řazení produktů ve virtuemart 2 podle skutečné ceny

Při vytváření eshopu na bázi virtuemart 2  jsem narazil na problém u řazení produktů dle ceny. VM2 totiž řadí podle základní ceny (product_price z tabulky #__virtuemart_products), což může být zavádějící, když u individiálních výrobků použijete přepis ceny (product_override_price). Zákazníka samozřejmě nezajímá řazení podle STARÝCH CEN, ale podle AKTUÁLNÍCH.

Je třeba bohužel hacknout core soubor  /administrator/components/com_virtuemart/models/product.php

Tam je část, kde se vytváří SQL dotaz. Použijeme do něj jednoduchou podmínku (ano, podmínku přímo do SQL dotazu !): Pokud je hodnota `override` rovna 1, řadím podle hodnoty `product_override_price`, pokud ne, řadím podle `product_price` modifikované daňovou sazbou (v době psaní článku byla 21% DPH, takže proto hodnota 1.21). A takto to má vypadat:

case 'product_price':          
          $orderBy =" ORDER BY
                            CASE `override`
                              WHEN 1 THEN `product_override_price` * 1   
                              ELSE `product_price` * 1.21
                            END   ";

Příklad není dokonalý, místo napsání daně natvrdo hodnotou 1.21 bych měl zobnout do daňových sazeb a použít aktuální hodnotu z db, ale na to už jsem byl líný. Spíše mi šlo jen o ukázání cesty, jak to lze vyřešit přímo v SQL.

 

Jmenuji se Radek Pelikán, bydlím v Ledči nad Sázavou. Mám 3 krásné děti.

Mezi mé velké koníčky patří desková hra Go a nově jsem začal cvičit Kendó v Ledči nad Sázavou.