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.