【问题标题】:How to set Dynamic Discount on each Cart Item programmatically?如何以编程方式为每个购物车项目设置动态折扣?
【发布时间】:2011-07-27 16:42:25
【问题描述】:

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

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

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

$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”部分和单页结帐的订单审查部分仍然没有任何行。

【问题讨论】:

  • 没有人可以试试这个吗?我承认这很难,但请一定有人在他的 Magento 任职期间尝试过这个......
  • 查看 Ivan 的回答:stackoverflow.com/questions/4877413/… 它对我有用。
  • @OSdave 是对的。这是添加自定义费用或折扣的最佳方式。
  • @KnowledgeCraving 您能否了解一下这段代码 sn-p 的调用位置/时间?

标签: php magento checkout discount


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多