Ceny v e-shopu – návrh řešení

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Novic
Člen | 5
+
0
-

V eshopu jsem používal pouze dph, cenu a akční cenu (slevu) – bez dph, které jsem měl uložené u každého produktu spolu s názvem, popisem atd v db.

Výhoda tohoto řešení byla v tom, že pro zobrazení ceny jsem jen otestoval zda-li je akční cena nastavena, nebo se má použít normální cena a případně přidal dph. To vše tedy bylo při výpisu zboží v kategorii možné udělat jedním dotazem do db.

Nyní však potřebuji zavést velkoobchodní ceny pro různé skupiny obchodníků, chtěl bych umožnit např. slevu 10% při nákupu nad určitou hodnotu apod. Jakým způsobem to řešíte vy? Mohli byste mi trošku rozepsat jak máte udělanou databázi a jaké třídy a metody používáte?

Původně jsem si říkal udělat metodu, které bych předával id produktu a ta by mi to z db všechno zjistila. Jenže představa že při výpisu produktů v kategorii mi to pošle třeba 30 dotazů do db navíc mi běhá hrůza po zádech a určitě je na to lepší řešení.

Jan Endel
Člen | 1016
+
0
-

Něco obdobného taky teď řeším, zatím mě napadlo to, že mám třídu Price s několika metodami (setTax, getWholesalePrice) a u produktu nastavím pouze basePrice a pak pomocí třídy spočítám přesně takovou cenu jakou potřebuju.

semtex.989
Člen | 75
+
0
-

Přesně tak to dělám taky.
Mám třídu price, která obsahuje metody setTax(), atd.
Poté volám v šabloně: $price->withoutTax()->withoutDiscount()
Mám tak vždy jistotu, že ve výchozím stavu jen cena s daní a pokud má slevu tak se slevou…

Novic
Člen | 5
+
0
-

A mohli byste poslat ukázku té vaší třídy Price ?

Mikulas Dite
Člen | 756
+
0
-

Osobně mám spíš třídu Product, která má metody cca getPrice, getPriceAfterSale(/** třeba i s $type = NULL */) atp. Třída Price mi nedává smysl (maximálně statická a to už je hezčí to mít u produktu).