Aller au contenu principal

Introduction

Le module Discounts vous permet de gérer et d'appliquer des réductions sur les produits et les commandes.

Plus d'informations sur l'interface utilisateur du module https://doc.oneentry.cloud/docs/category/discounts


🎯 Que fait ce module ?

Le module Discounts vous permet de récupérer des réductions et de valider des codes de coupon — réductions en pourcentage ou à montant fixe, accumulation de points bonus et réductions personnelles. Vous définissez les règles de réduction dans le panneau d'administration OneEntry ; ce module les récupère, valide les coupons lors du passage à la caisse et lit le solde de points bonus et l'historique de l'utilisateur actuel.

Le SDK est en lecture seule : les réductions sont créées et configurées dans le panneau d'administration.

🚀 Démarrage rapide

Initialisez le module depuis defineOneEntry :


const { Discounts } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Validez un code de coupon lors du passage à la caisse et lisez le résultat :

// Validate a coupon code entered by the customer.
const result = await Discounts.validateDiscountsCoupon("SUMMER20");

if (result.valid) {
console.log("Coupon applied:", result.coupon);
} else {
console.log("Invalid coupon:", result.error);
}

✨ Concepts clés

Qu'est-ce qu'une réduction ?

Une réduction (IDiscountsEntity) est une règle de tarification qui réduit le coût des produits ou des commandes :

  • typeDISCOUNT, BONUS, ou PERSONAL_DISCOUNT
  • discountValue — comment la réduction est calculée : discountType (PERCENT ou FIXED_AMOUNT), une valeur numérique value, une applicability (TO_PRODUCT ou TO_ORDER), et un maxAmount optionnel
  • identifier — marqueur unique pour le filtrage et la référence
  • startDate / endDate — période de validité optionnelle
  • conditions — règles qui décident quand la réduction s'applique (par produit, catégorie, montant du panier, utilisateur, …)

Structure de la réduction

{
id: 1,
identifier: 'summer_sale',
localizeInfos: {
title: 'Summer Sale'
},
type: 'DISCOUNT',
startDate: '2025-06-01T00:00:00.000Z',
endDate: '2025-08-31T23:59:59.999Z',
discountValue: {
applicability: 'TO_ORDER',
discountType: 'PERCENT',
value: 20,
maxAmount: 100
},
conditionLogic: 'AND',
conditions: [
{ type: 'MIN_CART_AMOUNT', value: '50' }
]
}

Types de réduction

Le champ type classe la réduction :

typeDescription
DISCOUNTRéduction standard appliquée aux produits/commandes
BONUSAccumulation de points bonus (fidélité)
PERSONAL_DISCOUNTRéduction ciblée sur des utilisateurs ou groupes spécifiques

Comment la réduction est calculée se trouve dans discountValue.discountType :

discountValue.discountTypeDescriptionExemple
PERCENTRéduire le prix d'un pourcentage20 % de réduction sur tous les articles d'été
FIXED_AMOUNTRéduire le prix d'un montant fixe10 $ de réduction sur les commandes de plus de 50 $

📋 Ce que vous devez savoir

Les réductions sont créées dans le panneau d'administration

Vous ne pouvez pas créer de réductions via le SDK — elles sont créées dans le panneau d'administration OneEntry. Lors de la création, vous fournissez un Nom, un Marqueur (identifier), un type (DISCOUNT, BONUS, ou PERSONAL_DISCOUNT), un discountValue (PERCENT ou FIXED_AMOUNT plus la valeur numérique value), une période de validité optionnelle (startDate / endDate), et des conditions optionnelles.

Ce que fait le module

  • ✅ Récupérer toutes les réductions — getAllDiscounts()
  • ✅ Récupérer une réduction spécifique par marqueur — getDiscountByMarker()
  • ✅ Valider les codes de coupon lors du passage à la caisse — validateDiscountsCoupon()
  • ✅ Lire le solde de points bonus et l'historique de l'utilisateur actuel
  • ❌ Ne crée pas et ne modifie pas les réductions (utilisez le panneau d'administration)

📊 Tableau de référence rapide

MéthodeDescription
getAllDiscounts()Obtenir toutes les réductions
getDiscountByMarker()Obtenir une seule réduction par marqueur
validateDiscountsCoupon()Valider un code de coupon de réduction
getBonusBalance()Obtenir le solde de points bonus de l'utilisateur actuel
getBonusHistory()Obtenir l'historique des transactions de points bonus de l'utilisateur actuel

❓ Questions fréquentes (FAQ)

Comment appliquer une réduction lors du passage à la caisse ?

Récupérez la réduction avec getDiscountByMarker() ou validez un coupon avec validateDiscountsCoupon(), puis utilisez la valeur de réduction retournée pour calculer le prix réduit.


Une réduction peut-elle avoir une date d'expiration ?

Oui. Les réductions peuvent avoir des champs startDate et endDate optionnels — vérifiez-les avant d'afficher une réduction pour vous assurer qu'elle est actuellement active.


Comment afficher des badges de réduction sur les produits ?

Récupérez toutes les réductions avec getAllDiscounts(), associez-les aux produits selon votre logique commerciale, et affichez un badge à partir de localizeInfos.title et discountValue.value.


Que se passe-t-il si un code de coupon est invalide ?

validateDiscountsCoupon() retourne un ICouponValidationResult{ valid: boolean; coupon?; error? }. Lorsque le coupon n'existe pas ou a expiré, valid est false et un message error est fourni. Vérifiez result.valid et affichez un message approprié.


🎓 Meilleures pratiques

  • Mettre en cache les réductions au chargement — elles changent rarement ; évitez les appels API répétés.
  • Valider les coupons avant de les appliquer — appelez toujours validateDiscountsCoupon() avant de fixer le prix d'une commande.
  • Gérer les réductions expirées — vérifiez endDate avant d'afficher une réduction.
  • Utiliser des marqueurs descriptifssummer_sale_2025, pas discount1.
  • Localiser les noms de réduction — utilisez localizeInfos pour un support multilingue.

🔗 Documentation connexe