3

我想在“结帐购物车”页面中按下自定义按钮后动态设置每个项目的折扣(比如 10 美元)。我检查了 Magento 的一些编码,发现:

  • 主要是 " Mage_Sales_Model_Quote_Address" 类总是受到影响,当任何人(任何 Magento 代码)都在谈论折扣时。
  • " " 有 2 个实例Mage_Sales_Model_Quote_Address- 一个用于“ billing ”地址类型,另一个用于“ shipping ”地址类型,但后一个主要用于优惠券代码相关的折扣。

在检查了这些区域之后,我继续编写了一些代码,针对“”的“运输”地址类型Mage_Sales_Model_Quote_Address,如:-

$cart = Mage::getSingleton('checkout/cart');
$objShippingAddress = $cart->getQuote()->getShippingAddress();
$discountAmount = 10;

$objShippingAddress->setDiscountDescription('any description');
$objShippingAddress->addTotal(array(
    'code' => 'discount',
    'title' => "Custom Discount",
    'value' => -$discountAmount,
));

$totalDiscountAmount = $discountAmount;
$subtotalWithDiscount = $discountAmount;
$baseTotalDiscountAmount = $discountAmount;
$baseSubtotalWithDiscount = $discountAmount;

$objShippingAddress->setDiscountAmount($totalDiscountAmount);
$objShippingAddress->setSubtotalWithDiscount($subtotalWithDiscount);
$objShippingAddress->setBaseDiscountAmount($baseTotalDiscountAmount);
$objShippingAddress->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount);

$objShippingAddress->setGrandTotal($objShippingAddress->getGrandTotal() - $objShippingAddress->getDiscountAmount());
$objShippingAddress->setBaseGrandTotal($objShippingAddress->getBaseGrandTotal() - $objShippingAddress->getBaseDiscountAmount());

但我仍然没有在totals我的结帐购物车页面的“”部分和单页结帐的订单审查部分中看到任何行。

4

1 回答 1

0

我们有一个设置折扣等级的请求。由于我们无法使用当前的折扣模型来完成它们,因此我们对 CartController 中的 couponPostAction 进行了修改。我们设置了一个虚拟优惠券,并能够根据有关客户的其他信息,使用该优惠券提供分层折扣方案。

于 2012-07-24T15:25:50.893 回答