Как сделать скидку применимой только к одному способу доставки в Commerce Server 2007? - PullRequest
1 голос
/ 25 июня 2009

Я искал и искал ответ на этот, казалось бы, простой вопрос в Commerce Server 2007, но не нашел ничего полезного. Это похоже на то, что должно быть возможно. Как сделать скидку применимой только к одному способу доставки в Commerce Server 2007?

Ответы [ 3 ]

2 голосов
/ 11 июля 2009

Я сталкивался с этой проблемой раньше, у меня был сценарий, когда стандартная опция доставки была единственной, которая когда-либо была бы обесценена, а на следующий день и международные варианты всегда были бы по полной цене.

В этом случае я написал пользовательский конвейерный компонент, который исключил любые скидки на доставку, если был выбран любой другой способ доставки, отличный от стандартного.

Я добавил этот компонент сценария в общий конвейер под компонентом ShippingDiscountAdjust, это немного хак, так как я жестко закодировал стандартный идентификатор доставки, но это никогда не изменится, поэтому я могу с этим сойти 1005 *

    function MSCSExecute(config, orderform, context, flags)

        Dim shipments        ' SimpleList of shipments in the basket
        Dim shipment        ' An shipment dictionary from the list
        Dim sShipmentID

        ' Save shipping discounts for each shipment (as written by ShippingDiscountAdjust)
        If not isNull(orderForm.Value("shipments")) then
            Set shipments = orderForm.Value("shipments")    
            For Each shipment in shipments            
               sShipmentID = shipment("shipping_method_id")
            Next

            if sShipmentID <> "{00000000-0000-0000-0000-005719007655}" and orderForm.value("_cy_shipping_discounts_total") > 0 then
                orderform.value("_shipping_discount_description") = ""

                For Each shipment in shipments            
                     orderForm.value("_cy_shipping_total") =orderForm.value("_cy_shipping_total")  + shipment.value("_cy_shipping_discounts_subtotal")
                     shipment.value("_cy_shipping_discounts_subtotal") = 0
                Next

                orderForm.value("_cy_shipping_discounts_total") = 0
            end if
        End If

        MSCSExecute = 1
    end function

    sub MSCSOpen(config)

    end sub


    sub MSCSClose()

    end sub
2 голосов
/ 08 июля 2009

Если вы хотите, чтобы скидка применялась только в том случае, если пользователь выбрал определенный способ доставки, то это невозможно из коробки.

Вы всегда можете написать собственный компонент конвейера, но обработка скидок в конвейере может быть сложной.

0 голосов
/ 11 октября 2013

Стив и Эрвин правы. Для этого не существует готового решения, но вы можете попытаться обойти его, используя пользовательские компоненты конвейера или компоненты сценариев.

Есть коммерческая альтернатива. Enticify - это заменитель компонентов конвейера скидок Commerce Server, который поддерживает скидки, специфичные для способа доставки ( среди прочего ).

Отказ от ответственности: я сотрудник Enticify.

Enticify добавляет концепцию Выражения отгрузки . Вы используете их так же, как Выражения соответствия (вы фактически устанавливаете их на вкладке Соответствие менеджера по маркетингу). Однако вы можете указать способ доставки со скидкой, указав свойства, например shipping_method_id.

.

Здесь вы видите выражение отправки, нацеленное на shipping_method_id (но вы можете указать другие свойства отправки):

Enticify Shipment Expression targeting the shipping method id

И здесь вы видите его в диалоге выражений правомочности:

enter image description here

При запуске эта скидка применяется только к отправлениям, которые соответствуют этому выражению. Вы можете прочитать больше в документации Enticify Shipping Discounts . Это довольно мощный инструмент, так как его можно использовать для определения скидок на продукты (например, получить скидку на продукт X при выборе доставки на следующий день).

...