J'ai cherché et cherché une réponse à cette question apparemment simple dans Commerce Server 2007, mais je n'ai rien trouvé d'utile. Cela semble être quelque chose qui devrait être possible. Comment appliquer une réduction à une seule méthode d'expédition dans Commerce Server 2007?Comment appliquer une remise à une seule méthode d'expédition dans Commerce Server 2007?
Répondre
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
À quelle étape du pipeline avez-vous placé votre composant? De plus, quels pipelines avez-vous ajoutés? – James
Je vais creuser le code pour vous quand je rentre au bureau le lundi –
J'ai ajouté un exemple de code –
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é.
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):
Et là, vous voyez la liste dans les expressions d'admissibilité de dialogue:
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).
Avez-vous déjà eu ça au travail? –