Autor Zpráva
Novic
Profil *
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í.
Joker
Profil
Novic:
Jednoduché řešení dát k uživateli sloupec s procentní slevou a cenu mu pak přepočítat ze základní ceny. Nevýhoda je, že pak bude mít stejnou slevu na všechny položky.

Další možnost je udělat si pro ceny zvláštní tabulku:
ID produktu, typ uživatele, cena

Což by zároveň řešilo i ty akční slevy- základní cena by měla typ uživatele NULL, výběr ceny by byl nějak
SELECT MIN(cena) FROM ceny WHERE id_produktu=$idProduktu AND (typ_uzivatele='$typ' OR typ_uzivatele IS NULL).
Novic
Profil *
Ono toho je více (sleva na skupinu, nebo na kategorii, nebo na samotné zboží. Navíc se do toho míchají varianty zboží.), ale jde mi spíše o systém jak to zpracovat. Na framework foru jsme se dopracovali k tomu, že je ideální si udělat třídu Price, která bude mít metody withTax atd.

Řekněme tedy, že při výpisu kategorie si zavolám třídu Products, která bude mít nějakou metodu např. selectProducts($category), která mi z databáze vytáhne informace o produktech (id, název, krátký popis, url).

Další metoda by byla setPrices((array) $ids) která by volala třídu Price s array id produktů v konstruktoru.

Třída Price by měla nějaké metody selectBasePrices a selectPrices které by vracely pole s cenami (tzn. nějaké query do db).

Co si o takovém řešení myslíte?
joe
Profil
Udělal bych to tak, jak popisuje Joker ve druhé možnosti s tím, že ve výpisu bych zobrazoval "ceny od" a asi až teprve v detailu produktu zobrazil cenu pro případného přihlášeného uživatele. Což vlastně ten jeho dotaz dělá :)

Místo přímo ceny můžeš opět uvádět slevu v procentech. Můžeš přidat další sloupec, třeba pro tu slevovou kategorii apod.
Petr ZZZ
Profil
joe:
Místo přímo ceny můžeš opět uvádět slevu v procentech.
Jen poznámka mimo diskusi kolem technického řešení: Uživatel se nejlépe bude orientovat, když bude mít všechny informace – základní cena, sleva, výsledná cena. Další možné řešení by bylo uvádět pouze výslednou cenu. Uvádět pouze slevu, aby si výslednou cenu musel uživatel sám spočítat, to by myslím byla z obchodního hlediska strategická a psychologická chyba.
joe
Profil
Petr ZZZ:
joe:
Místo přímo ceny můžeš opět uvádět slevu v procentech

Tím jsem myslel v databázi, ne na webu :) tam bych naopak zobrazoval ty nejnižší ceny (tedy cena od).
Novic
Profil *
Kluci odbíháte od tématu. Berte to, že je potřeba zobrazit jakoukoliv cenu (slevu).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0