Magento 1.9.0.1을 사용하고 있습니다. 특정 사용자의 장바구니 페이지에서 총액을 10 % 할인하고 장바구니 페이지, 주문 리뷰 페이지 및 관리 패널에 표시합니다.장바구니 페이지 Magento에서 총액을 10 % 할인하는 방법?
적용 할인 쿠폰을 철저히 준수하지만 그렇게 할 수는 없습니다. Google에서 검색했지만 내 요구 사항을 채우지 않았습니다. 마 젠토에서 이벤트가있다
Magento 1.9.0.1을 사용하고 있습니다. 특정 사용자의 장바구니 페이지에서 총액을 10 % 할인하고 장바구니 페이지, 주문 리뷰 페이지 및 관리 패널에 표시합니다.장바구니 페이지 Magento에서 총액을 10 % 할인하는 방법?
적용 할인 쿠폰을 철저히 준수하지만 그렇게 할 수는 없습니다. Google에서 검색했지만 내 요구 사항을 채우지 않았습니다. 마 젠토에서 이벤트가있다
,
sales_quote_collect_totals_after
이
은 당신이 할 수있는이 할인을 적용 버튼을 클릭에 세션에서 플래그를 설정, 총 계산 될 때마다 해고, 이상이있는 이벤트의 옵저버 메소드가 설정되어 있는지 확인한 후 할인을 적용하십시오. 당신의 config.xml에<global>
<events>
<sales_quote_collect_totals_after>
<observers>
<class>Custom_Module_Model_Observer</class>
<method>collectTotals</method>
</observers>
</sales_quote_collect_totals_after>
</events>
</global>
Observer.php의 기능을 확인
Custom
/Module
/Model
/Observer.php
에 Observer.php을 확인에서
public function collectTotals(Varien_Event_Observer $observer)
{
$quote=$observer->getEvent()->getQuote();
$quoteid=$quote->getId();
//check condition here if need to apply Discount
if($disocuntApply) $discountAmount =5;
if($quoteid) {
if($discountAmount>0) {
$total=$quote->getBaseSubtotal();
$quote->setSubtotal(0);
$quote->setBaseSubtotal(0);
$quote->setSubtotalWithDiscount(0);
$quote->setBaseSubtotalWithDiscount(0);
$quote->setGrandTotal(0);
$quote->setBaseGrandTotal(0);
$canAddItems = $quote->isVirtual()? ('billing') : ('shipping');
foreach ($quote->getAllAddresses() as $address) {
$address->setSubtotal(0);
$address->setBaseSubtotal(0);
$address->setGrandTotal(0);
$address->setBaseGrandTotal(0);
$address->collectTotals();
$quote->setSubtotal((float) $quote->getSubtotal() + $address->getSubtotal());
$quote->setBaseSubtotal((float) $quote->getBaseSubtotal() + $address->getBaseSubtotal());
$quote->setSubtotalWithDiscount(
(float) $quote->getSubtotalWithDiscount() + $address->getSubtotalWithDiscount()
);
$quote->setBaseSubtotalWithDiscount(
(float) $quote->getBaseSubtotalWithDiscount() + $address->getBaseSubtotalWithDiscount()
);
$quote->setGrandTotal((float) $quote->getGrandTotal() + $address->getGrandTotal());
$quote->setBaseGrandTotal((float) $quote->getBaseGrandTotal() + $address->getBaseGrandTotal());
$quote ->save();
$quote->setGrandTotal($quote->getBaseSubtotal()-$discountAmount)
->setBaseGrandTotal($quote->getBaseSubtotal()-$discountAmount)
->setSubtotalWithDiscount($quote->getBaseSubtotal()-$discountAmount)
->setBaseSubtotalWithDiscount($quote->getBaseSubtotal()-$discountAmount)
->save();
if($address->getAddressType()==$canAddItems) {
$address->setSubtotalWithDiscount((float) $address->getSubtotalWithDiscount()-$discountAmount);
$address->setGrandTotal((float) $address->getGrandTotal()-$discountAmount);
$address->setBaseSubtotalWithDiscount((float) $address->getBaseSubtotalWithDiscount()-$discountAmount);
$address->setBaseGrandTotal((float) $address->getBaseGrandTotal()-$discountAmount);
if($address->getDiscountDescription()){
$address->setDiscountAmount(-($address->getDiscountAmount()-$discountAmount));
$address->setDiscountDescription($address->getDiscountDescription().', Amount Waived');
$address->setBaseDiscountAmount(-($address->getBaseDiscountAmount()-$discountAmount));
}else {
$address->setDiscountAmount(-($discountAmount));
$address->setDiscountDescription('Amount Waived');
$address->setBaseDiscountAmount(-($discountAmount));
}
$address->save();
}//end: if
} //end: foreach
//echo $quote->getGrandTotal();
foreach($quote->getAllItems() as $item){
//We apply discount amount based on the ratio between the GrandTotal and the RowTotal
$rat=$item->getPriceInclTax()/$total;
$ratdisc=$discountAmount*$rat;
$item->setDiscountAmount(($item->getDiscountAmount()+$ratdisc) * $item->getQty());
$item->setBaseDiscountAmount(($item->getBaseDiscountAmount()+$ratdisc) * $item->getQty())->save();
}
}
}
}
collectTotals
함수가 호출됩니다 때마다 견적 합계가 갱신되므로이를 명시 적으로 호출 할 필요가 없습니다.
작동 방식 확인 here.
magento 세션 변수를 설정하려면 here을 선택하십시오.
도움이 되길 바랍니다.
Magento 쿠폰 만 사용할 수 있습니다.
그냥
2)
3) 작업
4) 적용 새로 추가 관리자 패널
1) Promotions-> 장바구니 가격 규칙에 로그인 -> 제품 가격 할인
그것의 비율 끝난.
안녕하세요, 위의 코드를 사용하면 오류가 표시됩니다. "_singleton /"마법사 키가 이미 있습니다. – kingp
실제로 장바구니 페이지에 맞춤 검색 버튼이 있습니다. 나는 그것을 클릭하면이 이벤트를 호출했을 때만 원한다. 어떻게 설명 할 수 있니? – kingp