【问题标题】:Discount information for order in MagentoMagento 中订单的折扣信息
【发布时间】:2012-08-09 07:23:26
【问题描述】:

我需要哪些促销/优惠券按顺序更改了哪些商品以及该商品在打折前的价格和该商品的最终价格的信息。我知道,这很复杂,所以这里有一个例子:

<order>
<items>
<item> <!-- This item have discount in order -->
<sku>1234</sku>
<promotion>
<promo_id>456</promo_id>
<discount_value>10</discount_value><!-- In % or $ -->
</promotion>
<final_price>25</final_price>
</item>
<item><!-- This item don't have discount in order -->
<sku>1234</sku>
<promotion/>
<final_price>35</final_price>
</item>
</items>
</order>

我希望这是可以理解的解释。感谢大家的帮助。

编辑:我忘记了一件事。我只有来自销售/订单模型的信息。这是一个接口,所以我无法访问会话数据,我从数据库中获取经过验证的订单。

【问题讨论】:

    标签: magento discount orders


    【解决方案1】:

    您可以轻松地从订单商品模型中检索应用的购物车规则 ID。

    1. 您需要逐步订购商品以收集所有应用的规则 ID 到商品:

      $collectedRuleIds = array();
      $itemRules = array();
      foreach ($order->getAllVisibleItems() as $orderItem) {
          if ($orderItem->getAppliedRuleIds()) {
              $itemRules[$orderItem->getId()] = explode(',', $orderItem->getAppliedRuleIds());
              $collectedRuleIds = array_merge($collectedRuleIds, $itemRules[$orderItem->getId()]);
          }
      }
      
    2. 然后加载规则集合,检索规则信息并将其分配给订单项。

      $rules = false;
      if ($collectedRuleIds) {
          $rules = Mage::getModel('salesrule/rule')->getCollection()->addFieldToFilter('rule_id', array('in' => $collectedRuleIds));
      }
      
      if ($rules) {
          foreach ($itemRules as $itemId => $ruleIds) {
              $orderItem = $order->getItemById($itemId);
              $appliedRules = array();
              foreach ($ruleIds as $ruleId) {
                  if ($rules->getItemById($ruleId)) {
                      $appliedRules[] = $rules->getItemById($ruleId);
                  }
              }
              $orderItem->setAppliedRules($appliedRules);
          }
      }
      
    3. 在导出数据期间,只需检查订单项的 getAppliedRules 属性即可获取有关促销类型的信息,以构建正确的导出文件。

    【讨论】:

    • 为什么 AllVisibleItems() 没有 AllItems() ?有什么区别?
    • 所有商品退货,包括儿童商品。如果您不想将可配置产品简单地导出为单独的项目,则不确定是否需要它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多