2009-06-24 11 views

Répondre

2

J'ai déjà rencontré ce problème, j'avais un scénario où l'option de livraison standard était la seule qui serait jamais actualisée, et le lendemain et les options internationales seraient toujours à plein prix.

Dans ce cas, j'ai écrit un composant de pipeline personnalisé qui a supprimé toutes les remises de livraison si toute autre méthode d'expédition autre que la norme a été sélectionnée. J'ai ajouté ce composant scripteur dans le pipeline total sous le composant ShippingDiscountAdjust, c'est un peu un hack car j'ai codé en dur l'identifiant de livraison standard, mais cela ne changera jamais pour que je puisse m'en sortir:

 
    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 
+0

À quelle étape du pipeline avez-vous placé votre composant? De plus, quels pipelines avez-vous ajoutés? – James

+0

Je vais creuser le code pour vous quand je rentre au bureau le lundi –

+0

J'ai ajouté un exemple de code –

2

Si vous souhaitez qu'un rabais ne soit applicable que si l'utilisateur a sélectionné une méthode d'expédition spécifique, cela n'est pas possible dès le départ.

Vous pouvez toujours écrire un composant de pipeline personnalisé, mais gérer les remises dans le pipeline peut être compliqué.

0

Steve et Erwin ont raison. Il n'existe pas de solution prête à l'emploi, mais vous pouvez essayer de contourner ce problème en utilisant des composants de pipeline ou des composants de script personnalisés.

Il existe une alternative commerciale. Enticify est un, drop-in de remplacement pour les composants du pipeline de réduction Commerce Server, qui prend en charge remises spécifiques de la méthode d'expédition (amongst other things). Clause de non-responsabilité: Je suis un employé d'Enticify. Enticify ajoute le concept Expressions d'expédition. Vous les utilisez comme vous le faites Expressions d'éligibilité (vous les avez définies dans l'onglet Eligibilité de Marketing Manager). Toutefois, vous pouvez définir une méthode d'expédition avec remise spécifique en ciblant des propriétés telles que shipping_method_id.

Ici, vous voyez l'expression d'expédition ciblant le shipping_method_id (mais vous pouvez cibler d'autres propriétés d'expédition):

Enticify Shipment Expression targeting the shipping method id

Et là, vous voyez la liste dans les expressions d'admissibilité de dialogue:

enter image description here

Lors de l'exécution, cette remise s'appliquera uniquement aux envois répondant à cette expression. Vous pouvez en lire plus dans le Enticify Shipping Discounts documentation. Ceci est assez puissant, car il peut être utilisé pour qualifier des remises trop (par exemple obtenir un rabais sur le produit X lorsque vous choisissez l'expédition le lendemain).