Shopware 5 中的基于条件的整数运费

Posted

技术标签:

【中文标题】Shopware 5 中的基于条件的整数运费【英文标题】:Round shipping cost in Shopware 5 based on condition 【发布时间】:2021-07-23 17:24:56 【问题描述】:

我需要在添加文章时根据某些条件是否处于活动状态来计算运费,直到订单完成。我已经尝试订阅以下活动:

            'sOrder::getOrderById::after' => 'afterGetOrder',
            'Shopware_Modules_Order_SaveOrder_FilterParams' => 'filterOrderParams'

使用以下实现:

    public function filterOrderParams(\Enlight_Event_EventArgs $args)
    
        $return = $args->getReturn();
        $return['invoice_shipping'] = ceil($return['invoice_shipping']);
        $return['invoice_shipping_net'] = ceil($return['invoice_shipping_net']);

        $subject->sShippingcostsNumeric = ceil($subject->sShippingcostsNumeric);
        $subject->sShippingcostsNumericNet = ceil($subject->sShippingcostsNumericNet);
        $args->setReturn($return);
    

    public function afterGetOrder(\Enlight_Hook_HookArgs $args)
    
        if (!$this->checkIfActive()) 
            return;
        

        $return = $args->getReturn();
        $return['invoice_shipping'] = ceil($return['invoice_shipping']);
        $return['invoice_shipping_net'] = ceil($return['invoice_shipping_net']);

        $args->setReturn($return);
    

但它似乎不起作用。我也试过了

Shopware()->Modules()->Order()->sShippingcosts = ceil($sBasket['sShippingcosts']); 但什么也没有。我知道订单保存有一个事件,我可以挂钩和更改参数,但这为时已晚,因为购物车和结帐中的成本不会被四舍五入(直到订单完成)

那么有没有办法在 shopware 5 中计算运费?

编辑:理想情况下,如果将更改直接存储在数据库中也会很好,这样对订单的任何进一步操作都会显示/更新正确的舍入值。

【问题讨论】:

【参考方案1】:

对于任何人来说,我最终更改了 Frontend_Checkout 事件订阅者中的模板变量,并让它更改数据库中 Shopware_Modules_Order_SaveOrder_FilterParams 上的值。希望它可以帮助某人。我花了一段时间才弄清楚这一点。这个钩子sOrder::getOrderById::after 根本不需要,而且似乎也不起作用。

【讨论】:

以上是关于Shopware 5 中的基于条件的整数运费的主要内容,如果未能解决你的问题,请参考以下文章

sap SD条件类型的作用是啥?

基于标量整数条件的AVX向量寄存器的条件移动(cmov)?

基于逻辑条件的列表中的子集元素

自定义以编程方式在 Woocommerce 中添加运费 [重复]

从键盘输入一个正整数,判断其是不是既为3又是5的整倍数。若满足条件,输出“满足条件!”,

CRMEB 多商户系统单品运费模板说明