Sziasztok!
El vagyok akadva némiképp, már feltúrtam a netet miatta, de nem találtam megoldást.
Egy übercartos webáruházban kell megoldanom, hogy ha a felkínált 6 féle fizetési módból a személyes kifizetést / átvételt választja a vásárló, akkor ne legyen szállítási díj.
A conditional action-ben a szállítási ajánlat moduljához (uc_tablequote - súlyfüggő szállítási díj van) felvettem a feltételekhez, hogy ellenőrizze a fizetési módot szállítási ajánlat számoláskor, de alapból két kimenete van ennek az akárminek, vagy ad ajánlatot, vagy nem.
Elsőre úgy gondoltam, hogy az jó lesz ez így is, és 0 Ft-tal fog számolni, ha nem ad ajánlatot, de ehelyett hibával visszadobja a vásárlót, ha személyes fizetést választ, miszerint nem megfelelő a kiválasztott opció.
Milyen utasítással / beállítással lehet ezt a dolgot megoldani anélkül, hogy ne kelljen meghekkelnem a modult?
Előre is köszi a választ!
Sokáig kerestem, de csak
Sokáig kerestem, de csak olyat találtam, amivel a szállítási mód alapján lehet engedélyezni fizetési módot, de a végén ez nem kellett, így nem próbáltam:
http://drupal.org/project/uc_conditional_payment
Köszi, bár ez nem igazán
Köszi, bár ez nem igazán oldja meg a problémámat :)
Most ott tartok, hogy belehekkeltem az uc_tablequote.module fileba, abba a függvénybe, ami a szállítási költséget adja vissza, így betölti az ordert az uc_order_load függvénnyel, ami abban van payment_method, az alapján ha other, akkor 0-t ad vissza, ha nem other, akkor meg számol.
Egyetlen gondom, hogy ez csak akkor működik, ha elmenti az ordert adatbázisba, amit addig nem csinál meg, amíg nem frissítem be az oldalt, így még arra kell rájönnöm, hogy milyen esemény / függvény fut le akkor, mikor a vásárló átkattint egy másik fizetési módra, mert oda bele kellene így applikálni az uc_order_save függvény hívását, hogy már a legfrissebb változatot tudja bekérni szállítási ajánlat számoláskor...
Vagy arra kell rájönnöm, hogy hogy tudom az order tulajdonságiat elérni a memóriából, mert ebben a modulban nem adja át sehol a függvényeknek, így a sessionben lévő order azonosító alapján kell visszatöltenem.
Ha azt meg tudjátok mondani, hogy hogy tudom az uc_tablequote_quote függvényben elérni a memóriában lévő ordert (ha van ott olyan állandóan), akkor ezt a visszatöltögetést ki tudnám hagyni :)
Fizetés a szállítási ajánlatnál kiválasztott módon
Én erre azt a megoldást találtam ki, hogy a fizetésnél átneveztem az egyik lehetőséget "Fizetés a szállítási ajánlatnál kiválasztott módon"-ra, és csak ezt a lehetőséget tettem elérhetővé, majd a szállítási ajánlatnál mindenféle kombinációt felvettem (pl. utánvétes szállítás futárral, futárral történő kiszállítás előre utalással, személyes átvétel a telephelyen, személyes átvétel a bemutató teremben, stb.).
Szállítási ajánlatnál akárhány lehetőséget fel lehet venni, és ha nincs nehezítve a feladat bankkártya elfogadással mondjuk, akkor ez egy járható és egyszerű út.
Sajna itt szállítási
Sajna itt szállítási ajánlatot nem választhat a vásárló, azt a súly alapján automatikusan adja a rendszer. Csak futár van, kivéve, ha bemegy a vásárló a boltba, és ott fizet.
Amúgy van bankkártyás fizetési lehetőség is, otp-s modul, meg még másik 4 fizetési lehetőség.
Helyzetjelentés: Sikerült
Helyzetjelentés:
Sikerült elérnem, hogy a checkout oldalon kiválasztott fizetési módnak megfelelően jelenjen meg a szállítási ajánlat összege a checkout/review oldalon, ez már majdnem a cél (ehhez a uc_cart_checkout_form_submit függvénybe kellett belerondítanom, beszúrtam egy sort, ami a következő: uc_cart_checkout_form_validate($form, $form_state) ;
Nemtom, hogy ehhez új témát kellene-e nyitnom, de talán egy mondatban megoldható egy linkkel egy doksira: Hogy lehetne az ilyen hekkeléseket kulturáltan megoldani, hogy ne az eredeti fileokban kelljen módosítgatnom?
Mint mostanra valamelyest gyaníthatjátok, php-ban elég otthonosan mozgok, de a drupal még mindig elég zavaros nekem :)
Sajnos ebben nem tudok
Sajnos ebben nem tudok segíteni, de ha lehet, akkor szerintem ezt egy külön modulként készítsd el, hiszen, mint látható másnak is érdekes a dolog. Sőt, nemzetközi fórumon sem volt rá még megoldás, így érdemes lenne a drupal.org-ra is beküldeni, legalábbis az ubercart.org ra.
köszi, sok sikert kívánok
Leírnád a megoldást?
Sajnos a hackelésben nem vagyok túl jártas, ezért részleteznéd mit és hol kell módosítanom ehhez? 3 szállítási feltételt kellene 3 fizetési feltétellel különböző függőségbe hoznom.
Előre is köszönöm!