Как сделать скидку применимой только к одному способу доставки в Commerce Server 2007?
Я искал ответ на этот, казалось бы, простой вопрос в Commerce Server 2007, но не нашел ничего полезного. Это похоже на то, что должно быть возможно. Как сделать скидку применимой только к одному способу доставки в Commerce Server 2007?
3 ответа
Я сталкивался с этой проблемой раньше, у меня был сценарий, когда стандартная опция доставки была единственной, которая когда-либо была бы обесценена, а на следующий день и международные варианты всегда были бы по полной цене.
В этом случае я написал пользовательский конвейерный компонент, который исключил любые скидки на доставку, если был выбран любой другой способ доставки, отличный от стандартного.
Я добавил этот компонент сценария в общий конвейер под компонентом ShippingDiscountAdjust, это немного хак, так как я жестко закодировал стандартный идентификатор доставки, но это никогда не изменится, так что я могу обойтись без него:
функция MSCSExecute (config, orderform, context, flags) Dim отгрузок ' SimpleList отгрузок в корзине Dim shipment 'Словарь отгрузки из списка Dim sShipmentID 'Сохранить скидки на доставку для каждой отправки (как написано в ShippingDiscountAdjust) Если не isNull(orderForm.Value("отгрузки")), то Установить отгрузки = orderForm.Value("отгрузки") За каждую отгрузку в отгрузках sShipmentID = shipment("shipping_method_id") следующий если sShipmentID <> "{00000000-0000-0000-0000-005719007655}" и orderForm.value("_cy_shipping_discounts_total") > 0, то 0 orderform.value("_shipping_discount_description") = "" За каждую отгрузку в отгрузках orderForm.value("_cy_shipping_total") =orderForm.value("_cy_shipping_total") + shipment.value("_cy_shipping_discounts_subtotal") shipment.value("_cy_shipping_discounts_subtotal") = 0 следующий orderForm.value("_cy_shipping_discounts_total") = 0 конец, если Конец, если MSCSExecute = 1 конечная функция sub MSCSOpen(config) конец суб sub MSCSClose() конец суб
Если вы хотите, чтобы скидка применялась только в том случае, если пользователь выбрал определенный способ доставки, это невозможно из коробки.
Вы всегда можете написать собственный компонент конвейера, но работа со скидками в конвейере может быть сложной.
Стив и Эрвин правы.Для этого не существует готового решения, но вы можете попытаться обойти его, используя пользовательские компоненты конвейера или компоненты сценариев.
Есть коммерческая альтернатива. Enticify - это заменитель компонентов конвейера скидок Commerce Server, который поддерживаетскидки, связанные со способом доставки( среди прочего).
Отказ от ответственности: я сотрудник Enticify.
Enticify добавляет концепцию отгрузочных выражений. Вы используете их так же, как и выражения соответствия(на самом деле вы устанавливаете их на вкладке "Соответствие требованиям"). Однако вы можете указать способ доставки со скидкой, указав свойства, такие какshipping_method_id
,
Здесь вы видите выражение отправки, нацеленное наshipping_method_id
(но вы можете настроить таргетинг на другие свойства груза):
И здесь вы видите его в диалоговом окне выражений соответствия:
При запуске эта скидка будет применяться только к отправлениям, которые соответствуют этому выражению. Вы можете прочитать больше в документации Enticify Shipping Discounts. Это довольно мощный инструмент, так как он также может использоваться для определения скидок на продукты (например, получить скидку на продукт X при выборе доставки на следующий день).