我在 Commerce Server 2007 中搜索并搜索了这个看似简单的问题的答案,但没有发现任何有用的信息。这似乎应该是可能的。如何使折扣仅适用于 Commerce Server 2007 中的一种运输方式?
3 回答
如果您希望仅在用户选择了某种运输方式时才适用折扣,那么开箱即用是不可能的。
您始终可以编写自定义管道组件,但处理管道中的折扣可能会很复杂。
我之前遇到过这个问题,我有一个场景,标准交付选项是唯一可以打折的选项,第二天和国际选项总是全价。
在这种情况下,我编写了一个自定义管道组件,如果选择了标准以外的任何其他运输方式,它会删除任何运输折扣。
我将此脚本组件添加到 ShippingDiscountAdjust 组件下方的总管道中,这有点像我已经硬编码标准交付 ID 的黑客,但这不会改变,所以我可以侥幸逃脱:
功能MSCSExecute(配置,订单,上下文,标志) Dim shipping ' SimpleList of shipping in the basket Dim shipping ' 列表中的一个货件字典 Dim sshipmentID ' 保存每批货物的运费折扣(由 ShippingDiscountAdjust 编写) 如果不是 isNull(orderForm.Value("shipments")) 那么 设置出货量 = orderForm.Value("shipments") 对于货件中的每个货件 sShipmentID = shipping("shipping_method_id") 下一个 如果 sShipmentID <> "{00000000-0000-0000-0000-005719007655}" 和 orderForm.value("_cy_shipping_discounts_total") > 0 那么 orderform.value("_shipping_discount_description") = "" 对于货件中的每个货件 orderForm.value("_cy_shipping_total") =orderForm.value("_cy_shipping_total") + shipping.value("_cy_shipping_discounts_subtotal") shipping.value("_cy_shipping_discounts_subtotal") = 0 下一个 orderForm.value("_cy_shipping_discounts_total") = 0 万一 万一 MSCSExecute = 1 结束函数 子 MSCSOpen(配置) 结束子 子 MSCSClose() 结束子
史蒂夫和欧文是对的。对此没有开箱即用的解决方案,但您可以尝试使用自定义管道组件或脚本组件来解决它。
有一个商业替代品。 Enticify是 Commerce Server 折扣管道组件的直接替代品,它支持特定于运输方式的折扣(除其他外)。
免责声明:我是 Enticify 的员工。
Enticify 添加了Shipment Expressions的概念。您可以像使用Eligibility Expressions一样使用它们(实际上是在 Marketing Manager Eligibility 选项卡中设置它们)。但是,您可以通过定位诸如shipping_method_id
.
在这里,您可以看到针对以下货件的货件表达式shipping_method_id
(但您可以针对其他货件属性):
在这里,您可以看到它在资格表达式对话框中列出:
运行时,此折扣仅适用于满足此表达式的货件。您可以在Enticify Shipping Discounts 文档中阅读更多信息。这非常强大,因为它也可以用于限定产品折扣(例如,当您选择次日发货时获得产品 X 的折扣)。