Iwo*_*ski 0 magento discount orders
我需要促销/优惠券按顺序改变哪个项目的信息以及折扣前这个项目的价格和这个项目的最终价格.我知道,这很复杂所以这是一个例子:
<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>
Run Code Online (Sandbox Code Playgroud)
我希望这是可以理解的解释.谢谢你的帮助.
编辑:我忘了一件事.所有我都有来自销售/订单模型的信息.这是一个接口,所以我无法访问会话数据,我从数据库获得验证的订单.
您可以从订单商品模型轻松检索应用的购物车规则ID.
您需要遍历订单项以收集项目的所有应用规则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()]);
}
}
Run Code Online (Sandbox Code Playgroud)然后加载规则集合,以检索规则信息并将其分配给订单项.
$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);
}
}
Run Code Online (Sandbox Code Playgroud)在导出数据期间,只需检查订单商品的getAppliedRules属性即可获取有关构建正确导出文件的促销类型的信息.
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |