0

当我提交一个奖励积分为负数的编辑订单时(因为新处理的订单少于原始订单),在奖励历史记录中,其中一个条目会比最近的条目提前 12 小时

这不会对总奖励积分造成任何不良影响,因为该值被正确计算

我的编辑订单模块真的没有什么可以做到这一点,编辑订单模块只是做与重新订购完全相同的事情,但它也会创建一个新的会话来存储前一个订单的项目,他们的数量,日期订单已下达,它是增量 id,如何计算点数是,当它们正常计算时,会检查此会话,如果存在,它会获取基本总计,但将其放入$this->getReward()->getRateToPoints()->calculateToPoints()并从点 delta 中减去

当我们在结账时处理订单时,它只是创建了一个新订单,但交易 ID 与之前的订单相同,因为互联网销售查看此交易 ID,他们会知道要编辑哪个订单,旧订单将被取消在下次运行同步脚本期间

考虑到所有这一切,我从来没有对奖励历史做任何事情,而且我推送的奖励历史条目并不总是你的编辑顺序,我去编辑了订单 100000040 但 100000042 被推送了

注意:我还应该指出,此时订单没有存储相同的交易 ID,因为我正在等待示例 xml 与来自支付网关的请求/响应 xml 进行比较,因此无法处理一次订单以任何方式与另一个订单相关联


以下代码取自Enterprise_Reward_Model_Action_OrderExtra::getPoints,它位于$pointsDelta = $this->getReward()->getRateToPoints()->calculateToPoints((float)$monetaryAmount);和之间return $pointsDelta;

$editOrder = Mage::getModel('core/session')->getData('editorder');

    if(!is_null($editOrder))
    {
        $readConnection = Mage::getSingleton('core/resource')->getConnection('core_read');
        $result = $readConnection->fetchAll("
                SELECT sfo.entity_id FROM sales_flat_order AS sfo
                    WHERE sfo.increment_id = ?
                LIMIT 1
            ",$editOrder['original_order']);
        $order = Mage::getModel('sales/order')->load($result[0]['entity_id']);
        $orderData = $order->getData();
        $previousOrderMonetaryAmount = (($orderData['base_grand_total'] - $orderData['base_shipping_amount']) - $orderData['base_tax_amount']);

        $pointsDelta = $pointsDelta - $this->getReward()->getRateToPoints()->calculateToPoints((float)$previousOrderMonetaryAmount);
    }

在此处输入图像描述

上面是正在发生的事情的快照,顶部显示了在编辑和处理订单之前的奖励历史记录,底部是之后发生的情况(对于 #100000049 没有发生任何事情,所以我不得不再做一次,你会出现故障)

#100000044 中的项目与订单 #100000048 完全不同,订单 #100000046 丢失,因为当点增量为 0 时(意味着不会添加/减去点)它不显示(这很好)

所有具有负值的订单都被处理了那些具有正值但在编辑过程中删除了一些项目的编辑订单,从而减少了购物车总数(在网关中,这将退还客户,因此不应该允许它们是有道理的获得他们被退还的积分)

4

1 回答 1

0

问题与magento本身有关,通过强制一个干净的magento构建总是在顺序中具有负数,使用$pointsDelta = $pointsDelta - 100000结果完全相同的问题,不知道Magento是否会认为它是一个错误,因为这是发现的唯一方法这是通过 Magento 的定制,但我会报告它的修女少

于 2013-03-18T05:47:30.750 回答