Remises et codes remise
Une remise est un prix incitatif proposé aux clients afin de promouvoir l'achat d'un produit. Un code remise est un
code de calcul dont la syntaxe de calcul est "discount". Ce code est utilisé pour calculer des ajustements
d'articles de commande. Chaque ligne de la table CALCODE représente un CalculationCode. Les CalculationCodes définissent
les façons de déterminer les montants monétaires associés aux OrderItems. Ils sont utilisés pour calculer les remises,
les frais de port, les taxes à l'achat et les taxes afférentes aux frais de port. Un CalculationCode peut être limitée
à des TradingAgreements spécifiques.
L'association d'un code remise à un produit ou un groupe de produits revêt deux dimensions. En premier lieu, la remise
peut être associée à une ou plusieurs entrées de catalogue, et à des groupes de catalogue. L'adjonction d'un code de
calcul à un groupe de catalogue a le même effet que lorsqu'on associe ce code de calcul directement à toutes les entrées
de catalogue du groupe de catalogue.
En second lieu, les articles de commande sont regroupés pour le calcul de l'une des façons suivantes : par
accord commercial, par produit, par offre ou par adresse de livraison. Le mode de calcul est indiqué au moyen de
l'attribut groupBy. Un
calcul séparé est effectué pour chaque groupe d'objets OrderItem. Si aucun regroupement n'est spécifié, tous les
OrderItems associés à un objet CalculationCode particulier sont utilisés pour effectuer un seul calcul. Ci-dessous la
présentation des attributs utilisés pour calculer différents types de remise :
- Remises calculées par accord commercial
L'attribut perTradingAgreement indique que tous les articles de commande d'un groupe doivent avoir le même accord
commercial pour que le code de calcul soit appliqué. Considérons, par exemple, un accord commercial 123 auquel est
associé un code remise donnant droit à une remise de 10 % lorsque le montant des achats dépasse la somme de
700 FRF. Sous le regroupement perTradingAgreement, si 1 225 FRF sont dépensés dans le cadre du
contrat 123, alors une remise de 122,50 FRF sera déduite du montant total de la commande, lequel s'élèvera
alors à 1 102,50 FRF.
- Remises calculées par produit
L'attribut perProduct signifie que tous les éléments de commande d'un groupe doivent être associés au même produit pour
que le code de calcul soit appliqué. (Il peut s'agir d'une entrée du catalogue parent de l'article de catalogue, selon
le type de relation PRODUCT_ITEM dans la table CATRELTYPE de la base de données,
s'il en existe une, ou simplement de l'article de catalogue lui-même.) Supposons, par exemple, qu'un code de remise soit
associé à l'objet CatalogEntry 1 et à l'objet CatalogEntry 2 et que le code de remise spécifie qu'une remise de
15 % est accordée lorsque plus de dix articles sont achetés. Si l'attribut perProduct est vrai (true),
l'achat de 7 CatalogEntry 1 et de 3 CatalogEntry 2 ne donnera pas droit à la remise de 15 %. Pour
bénéficier de la remise, la quantité de l'un des CatalogEntry doit être supérieure ou égale à 10.
Cependant, si l'attribut perProduct est faux (false), le total des deux quantités étant égal à dix, la condition
de la remise est alors satisfaite.
- Remises calculées par offre
Le groupement d'attributs perOffer est adapté aux codes de calcul de taxe. Par exemple, l'instruction
"Pas de taxe sur les chaussures d'enfant dont le prix est inférieure à 210 FRF" fait référence au prix
d'une seule paire de chaussures pour enfant. Si plusieurs paires de chaussures d'enfant figurent dans la commande,
chaque paire dont le prix est inférieur au montant limite est exonérée de taxes. Comme chaque offre présente un prix
unitaire différent, les OrderItems sont regroupés en fonction de l'objet Offer pour déterminer les montants de taxe
à partir du prix unitaire.
- Remises calculées par adresse de livraison
Le groupement d'attributs perShippingAddress est adapté au calcul des frais de port car le code de frais de
port appliqué doit être le même pour tous les articles de commande d'un groupe. Considérons, par exemple, les commandes
15, 25 et 26. Ces trois commandes ont été passées auprès du même magasin, par le même client et doivent être livrées à la
même adresse. La commande 15 a été passée le 3 janvier et les commandes 25 et 26 ont été passées le jour
suivant. Comme ces commandes doivent être livrées à la même adresse, elles sont associées au même code de calcul de
remise, qui spécifie une remise de 10 % sur chaque commande si au moins deux commandes ont été passées auprès du
magasin au cours du même mois. Si la valeur de l'attribut perShippingAddress est vraie (true), alors le client doit
bénéficier d'une remise de 10 % sur chacune des trois commandes puisqu'elles ont toutes été passées en janvier.
Les produits peuvent bénéficier de plusieurs remises. De la même façon, les groupes de membres peuvent bénéficier de
plusieurs remises. Lorsque plusieurs codes de calcul de remise s'appliquent à un objet Order, les calculs de remise sont
effectués par ordre croissant des attributs de séquence de leur objet CalculationCode. Ceci restreint l'utilisation d'un
CalculationCode aux seuls membres de certains groupes de membres comme défini dans la table
CALCODEMGP. Pour restreindre l'utilisation d'un CalculationCode par les membres
d'un certain groupes de membres, vous devez définir cette utilisation dans la table CALRULEMGP.