Magento在报价部分添加两个折扣行


Magento add Two Discount Rows in Quote Section

我正在研究一个项目,我们正在使用后续电子邮件通过电子邮件在购物车中重新定位客户。我们正在做的是,我们正在发送带有用户购物车和10%折扣的电子邮件。

所以当用户点击链接,我们激活用户丰富的购物车与更多的折扣10%。如果用户使用优惠券,我们将在其优惠券中添加10%的金额。

我们想显示折扣,但我们给10%额外的东西,我们想在新行中显示。

是什么意思?

优惠券折扣金额额外10%折扣金额

表示折扣分为两行。如果用户不使用优惠券,我们只对一行进行折扣额外10%折扣金额

如果有人有什么想法,请告诉我。

这是我正在使用的代码。

(代码)

if($discountAmount>0) {
$total=$quote->getBaseSubtotal();
$quote->setSubtotal(0);
$quote->setBaseSubtotal(0);
$quote->setSubtotalWithDiscount(0);
$quote->setBaseSubtotalWithDiscount(0);
$quote->setGrandTotal(0);
$quote->setBaseGrandTotal(0);`enter code here`
$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())
->setBaseGrandTotal($quote->getBaseSubtotal())
->setSubtotalWithDiscount($quote->getBaseSubtotal())
->setBaseSubtotalWithDiscount($quote->getBaseSubtotal())
->save();
if($address->getAddressType()==$canAddItems) {
//echo $address->setDiscountAmount; exit;
$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().', Custom Discount');
$address->setBaseDiscountAmount(-($address->getBaseDiscountAmount()-$discountAmount));
}else {
$address->setDiscountAmount(-($discountAmount));
$address->setDiscountDescription('Custom Discount');
$address->setBaseDiscountAmount(-($discountAmount));
}
$address->save();
Mage::getSingleton('core/session')->setspecialURLdiscount('updated');
// header("Cache-Control: no-cache");
}
} //end: foreach
}
}
(/代码)

从你的问题中我明白了,下面的信息可能对你有所帮助。

Mage_SalesRule_Model_Validator类中可以设置折扣描述。

函数

public function process(Mage_Sales_Model_Quote_Item_Abstract $item)

到下一行。

$discountAmount = $result->getDiscountAmount();

,并在上面的代码后面放置以下两行,这将在当前foreach循环

中准备我们的描述数组
$_formatedDiscountAmount = Mage::helper('core')->currency($discountAmount, true, false);
$_descriptionArray[] = $rule->getName()."-".$_formatedDiscountAmount;

,最后,在数组末尾放置这段代码

$address->setDiscountDescriptionArray($_descriptionArray);

$_descriptionArray数组中,您可以有您的折扣描述。