Toutoune DevZone

.NET (C#)

Obtenir les promotions d'un produit dans Microsoft Commerce Server 2007

Voici un petit article qui n'intéressera sûrement pas le plus grand nombre...
Etant donné le mal que j'ai eu à rassembler ces informations, je les partage avec vous.

Commerce Server 2007 (et ses précédents) ne prévoit pas de fournir les promotions d'un produit avant que celui-ci ne soit ajouté à un caddie. Voici comment obtenir toutes les promos d'un produit donné sans passer par le panier :

1) Le Web.Config :

Ajoutez ou décommentez la section :

<CommerceServer>
  <caches>
    <cache name="Discounts" type="Discounts" refreshInterval="0" retryInterval="30" />
  </caches>
</CommerceServer>

Le cache loader de base est le composant de pipeline CSFLoadDiscounts. Si vous avez besoin de le changer, modifier l'attribut loaderprogid de l'élément <cache /> qui par défaut est positionné à "Commerce.CSFLoadDiscounts".

<cache loaderprogid="MonLoader" ... />

2) Parcourir les promotions d'un produit spécifique (C#) :

// Chargement des promos depuis le cache
//
"Discounts" est le nom du cache dans le Web.config
DiscountItemCollection allDiscounts =
DiscountItemCollection.CreateFromCache("Discounts");

// Création d'un filtre
DiscountCriteriaFilter filter = new DiscountCriteriaFilter();

// Application du filtre sur les promotions
DiscountItemCollection applicableDiscounts =
allDiscounts.ApplyProductFilter(filter, CatalogName, ProductID);

foreach(DiscountItem item in applicableDiscounts)
{
  // Accéder au propriété de la promotion : comme la valeur de la promo 
  // item["offer_type"] == 1 si promo en montant, 2 si promo en pourcentage
  // item["offer_value"] == valeur de la promotion. Attention si remise en pourcentage, cette valeur est comprise entre 0 et 100.
  // etc...

}

Vous trouverez un tableau récapitulatif des propriétés de l'objet DiscountItem dans la documentation du cache loader :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CS07Default/html/0bffcd15-24f3-4730-8c67-84a92c7519c6.asp

En espérant que tout ça vous soit autant utile qu'à moi.

Commentaires

fish_hfd a dit :

It's nice

# juin 30, 2007 2:42

Anoir a dit :

C'est super. en plus depuis le cache, pas de souci de perf.

et dire qu' on a perdu du temps à creer un pipeline specifique et qu'on passse chaque roduit du dans le pipeline comme pour simuler un achat.

parcontre que se qui se passe si le cache venait d'etre vider.

# octobre 22, 2008 9:28
Laissez un commentaire

(requis) 

(requis) 

(optionel(le))

(requis)