|
Eddig itt tartok:
A modul config.xml-je:
<?xml version="1.0"?> <config> <global> <models> <Wrcouponprices_Kupon> <class>Wrcouponprices_Kupon_Model</class> </Wrcouponprices_Kupon> </models> <events> <catalog_product_get_final_price> <observers> <wrcouponprices_kupon_price_observer> <type>singleton</type> <class>Wrcouponprices_Kupon_Model_Price_Observer</class> <method>apply_discount_percent</method> </wrcouponprices_kupon_price_observer> </observers> </catalog_product_get_final_price> </events> </global> </config>
\app\code\local\Wrcouponprices\Kupon\Model\Price\Observer.php
<?php class Wrcouponprices_Kupon_Model_Price_Observer { public function __construct() { }
public function apply_discount_percent($observer) { $event = $observer->getEvent(); $product = $event->getProduct(); { $finalprice=$product->getPrice(); if (Mage::getSingleton('customer/session')->gethucuponvalid()>0) { $tier_price = $product->getTierPrice();
$resource = Mage::getSingleton('core/resource'); $query = 'SELECT * FROM '.$resource->getTableName('catalog/product').'_tier_price'; $_tier_prices = $resource->getConnection('core_read')->fetchAll($query);
foreach ($_tier_prices as $one_tier_price) { if ($one_tier_price["customer_group_id"]==Mage::getSingleton('customer/session')->gethucuponvalid() and $one_tier_price["entity_id"]==$product->getId()) { $finalprice = $one_tier_price["value"]; } } } $product->setFinalPrice($finalprice); }
return $this; } }
app\design\frontend\default\blank\template\checkout\cart.phtml
... <form id="wrcouponpricescatalog-form" action="http://lit.darkrpg.hu/checkout/cart/" method="post"> <div class="discount"> <h2>Kedvezmény kód</h2> <div class="discount-form"> <label for="coupon_code">Adja meg a kupon kódját ha rendelkezik vele.</label> <input type="hidden" name="wrcouponpricescatalog-remove" id="wrcouponpricescatalog-remove-coupone" value="0"/> <div class="input-box"> <input class="input-text" id="wrcouponpricescatalog-coupon-code" name="wrcouponpricescatalog-coupon-code" value=""/> </div> <input name="wrcouponpricescatalog-coupon-code-submit" type="submit" class="button" value="Beváltás" /> <!-- <button type="button" title="Beváltás" class="button" onclick="wrcouponpricescatalog-form.submit(false)" value="Beváltás"> <span> <span>Beváltás</span> </span> </button> --> </div> <?php if (isset($_POST["wrcouponpricescatalog-coupon-code"])===true) { switch($_POST["wrcouponpricescatalog-coupon-code"]) { case "aaa": Mage::getSingleton('customer/session')->sethucuponvalid(2); ?><div style="clear:both; color:#008800;">Sikeres nagykereskedői kupon beváltás</div><?php break; case "bbb": Mage::getSingleton('customer/session')->sethucuponvalid(3); ?><div style="clear:both; color:#008800;">Sikeres kiskereskedői kupon beváltás</div><?php break; default: ?><div style="clear:both; color:#880000;">Sikertelen kupon beváltás. Kérem próbálkozzon újra, ügyelve a kis-nagybetűkre! Illetve ellenőrizze, nem járt-e már le a kupon érvényesége!</div><?php } // switch } ?>
<div style="clear:both;">Sikeres beváltást követően kérem <strong>kattintson a "Bevásárlókosár frissítése" gombra</strong>, ha már tartalmaz termékeket a kosara!</div> <div style="clear:both;">Teszt kódok: "aaa" = Nagyker, "bbb" = Viszonteladó</div> </div> </form> ...
Ez így működik is, csodás… Egy gondom van vele: Hogy tudom a $_POST feldolgozást minden elé rakni? Ha lehet úgy, hogy ne kelljen phtml-be írni, meg core-ba… Azaz a modul könyvtárán belül hogy tudom megoldani, hogy mindenek előtt dolgozza fel a rendszer az a switch-et, amiben eldöntöm, hogy jó volt-e a kód?
Ez azért lenne fontos, mert most úgy működik, hogy beírja a kódot, ráklikkel a “Beváltás” gombra, ami elküldi post-ban ugyanennek az oldalnak (kosár) a kódot. És itt a kosár közepn elkapja a switch és feldolgozza. No de ekkorra már kiszámolódtak az árak és emiatt ha jó is volt a kód, újra be kell tölteni az oldalt (kosár), hogy érvényesüljön a hatása…
Illetve nem vagyok benne biztos, hogy az \app\code\local\Wrcouponprices\Kupon\Model\Price\Observer.php résznél jó, ha ezt adom vissza, ha nem volt kuponkódbeváltás:
$finalprice=$product->getPrice();
Azaz biztos ezt kell visszaadnom, ha nem akarok módosítani az árakon???
|