Eshop – zľava na produkty

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

Ahojte.

do e-shopu postaveného na nette programujem modul na zľavy. Napadlo ma viacero riešení a preto prosím o vaše rady, ako to spraviť najlepšie.

Popis:
Jedná sa o modul, kde sa dajú hromadne vybrať produkty zo zoznamu a priradiť im percentuálna zľava na určitý rozsah dátumov.

Napadajú ma dve riešenia:

1. Zľavu vždy počítať nanovo (pri výpise, ukladaní do košíka a podobne)… Tzn. vždy, keď bude treba cenu produktu tak sa pozriem do tabuľky so zľavami a zistím či v tomto dátume je ku danému produktu priradená zľava ak áno, tak príslušné percentá odčítam od pôvodnej ceny.
Nevýhodu v tomto vidím takú, že je nutné prejsť všetky časti systému, kde sa narába s cenou (výpis produktov, detaily, pridanie do košíka, uloženie objednávky, výpočet celkovej sumy atď) a príde mi to náchylné na chyby.

2. Druhý spôsob ma napadol ten, že priradiť produktom ešte jeden stĺpček s cenou, kde si pri nastavení zľavy uložím pôvodnú cenu a v pôvodnom stĺpci cenu prepočítam. (Takže na frontende nebude treba riešiť žiadny dopočet ceny.). Tu zas vidím problém v tom, že budem musieť použiť cron, ktorý bude sledovať od kedy do kedy ktorá akcia platí a podľa toho hromadne prepočíta ceny na všetkých produktoch priradených ku danej akcii. a komplikuje sa to trošku tým, že napríklad pri zrušení zľavy bude treba obnoviť pôvodné ceny pri produktoch oproti vymazaniu jedného riadku ako v riešení 1.

3. Napadá vás lepší spôsob?

Ďakujem

Tabetha
Člen | 140
+
0
-

u nas je to riešenie trochu rozsiahlejšie … my máme individuálne cenníky a 6 cien … pri užívateľovi máme jeho zľavu … čiže to je celkom dosť počítania a overovania … najviac sa mi oplatilo (zatial) že mám jednu funkciu v ktorej si vrátim pre daný produkt všetky informácie o nom (dá sa to aplikovať len na ceny) … to by ti nepomohlo? … tj. jedna funckia len na toto počítanie … a nech ju zavoláš odkialkoľvek mala by ti vrátiť ten istý výsledok

Nox
Člen | 378
+
0
-
  1. Nesouvisí s Nette
  2. První a druhý způsob jsou stejné, jen u 2. je výsledek uložený, optimalizace. Cron asi nevadí; na druhé straně není vyloženě nutný, jde při requestu ověřit nevalidnost cen a pokud jsou tak přepočítat, ale ten Cron bude efektivnější. Problém s mazáním nevidim, prostě zavoláš něco jako calculatePrice, která vždycky vrátí správnou cenu podle základní a dalších faktorů … takže místo delete budeš mít update, obojí triviální

Editoval Nox (9. 1. 2013 20:21)

matto
Člen | 55
+
0
-

Ďakujem za odpoveď. Áno, jedna funkcia by stačila a volala by sa odkiaľkoľvek. Problém je, že by bolo nutné nahradiť všetky časti kódu kde sa volá z databázy rovno neupravená cena a v tom vidím problém.

Tabetha
Člen | 140
+
0
-

tak ako robota to je … ale ja som tiež musel prerábať kvôli zmene miest na projekte hodnú časť a vyhadzovať veci a prerábať veci … stojí to za to si dať námahu to spojiť s jednou funkciou … stačí to potom na 1 mieste meniť v budúcne