我在 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 的折扣)。