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