Kategóriánkénti árengedmény termékekre

Az adott kategóriába tartozó termékekre szeretnénk akciós árat beállítani. A gyakorlatban, ha sok termékünk van akkor látható, hogy ez nagyon hasznos funkció tud lenni. Hogyan is csináljuk ezt meg? Ehhez próbálok segítséget adni a következő néhány sorban.

Az első körben meghatároztam az érintett adatbázis táblákat (1.4.7 es verzió). Ehhez a MySql WorkBanchet hívtam segítségül, majd a telepítésnél létrehozott adatbázis táblákra csináltam egy reverse engineer -t.

A következő adatokra van szükségem:

  • termék ára
  • az akció mértéke (az eredeti árnak hány százaléka lesz az engedmény?),
  • a kiválasztott termék kategóriája
  • az akció kezdeti és vég időpontja
  • az ügyfélcsoport

Egy termék akciós árának beállításakor lehetőség nyílik több ár megadására is, akár azonos időtartamon belül is. Az elsőbbségi mező kitöltésekor beállíthatjuk, hogy melyik jelenjen meg ha a dátum alapján nem tudjuk megállapítani. Ez nem más mint a sorrend meghatározása. Ezt fontos tudnunk, hiszen ha tömegesen szeretnénk beállítani az árakat akkor itt is meg kell adnunk valamit. Egy tömeges beállítás során ellenőriznünk kell, hogy az általunk beállított időtartamra van-e már megadva ár illetve bele esik-e egy régebben megadott intervallumba. A gyakorlatban nem biztos, hogy erre szükség lehet de ha nem vesszük ezt figyelembe a megvalósításkor akkor egy hibalehetőséget hagyunk és ugye ez megengedhetetlen, legyen szó bármekkora termékszámról. Minden felhasználói esetre fel kell készíteni a kódot. Mi történik akkor, ha azonos időintervallumba esik több akciós ár és az árak prioritása is azonos? Mi lesz az akciós ár? Az az ár lesz érvényben, amit időben előbb vettek fel. Tehát tömeges változtatás előtt meg kell keresnünk az adott termékhez tartozó újonnan beállított időtartamra vonatkozó eddigi árat és ki kell törölnünk azt, majd be kell állítanunk az új árat. Vagy meg kell néznünk, hogy milyen prioritással rendelkezik és egy alacsonyabbat kell beállítani. Ilyenkor nem törlünk semmit.

Példa:

A 39 -es kategória azonosítójú termékekre szeretnék 10% engedményt adni 2010 szeptember 1 és szeptember 30 között a 45-ös csoport azonosítójú ügyfeleknek.

Ezek alapján a szükséges sql script:

1. Van felvéve olyan akciós dátum, ami az általam megadott intervallumba esik?

SELECT product_special_id FROM ocproduct_special WHERE product_id in (SELECT product_id FROM `ocproduct_to_category` WHERE `category_id` = 39) AND date_start<= ‘2010-09-01′ AND date_end >= ‘2010-09-01′

2. Töröljük azokat.

DELETE FROM ocproduct_special WHERE product_special_id IN ( az előző lekérdezés eredménye)

3. Felvesszük az új akciós árat

INSERT INTO ocproduct_special SET product_id = ???, customer_group_id = 45, priority = 0, price =(SELECT price*0.9 FROM ocproduct WHERE product_id = ???), date_start = ‘2010-09-01’, date_end = ‘2010-09-30’

Ezt egy tárolt eljárás segítségével tömegesen vagy egy scripttel legyártott insert sorozattal lefutattjuk azokra a termékekre(1. lekérdezés eredménye), amire az engedményt szeretnénk adni.

Közvetlenül az adatbázison sql scriptet futtatni nem szép dolog és csak akkor tegyünk ha tökéletesen ismerjük a rendszert. A módszer előnye, hogy nem szükséges kód modosítás de hangsúlyozom, kellő ismeret nélkül nagy bajt tudunk okozni !

A másik megoldás, ha az aktuális verzióhoz tartozó patch -et hozunk létre és az admin felületről is elérhető új funkcióval bővítjük az áruházunkat. Ez sem a legszebb megoldás, mert egyedi de megbízhatóan fog működni és többször is felhasználhatjuk. Persze előfordulhat, hogy ezt a funkciót egy későbbi verzió fejlesztésbe már tervbe vették és esetleg a jövőben egy tényleges új funkció lesz. Ha valóban hasznos funkcióról van szó akkor célszerű ha jelezzük az igényt az opencart fejlesztőinek is és hivatalosan beépített új funkció lehet majd belőle ha valóban ők is úgy ítélik ezt meg.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter


A bejegyzés kategóriája:Webáruház and tagged . Vedd fel a kedvencek közé: link. Szólj hozzá vagy hagyj egy trackback-et:Trackback URL.

Szólj hozzá

Hozzászólás küldéséhez Be kell jelentkezni