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 :
type—DISCOUNT,BONUS, ouPERSONAL_DISCOUNTdiscountValue— comment la réduction est calculée :discountType(PERCENTouFIXED_AMOUNT), une valeur numériquevalue, uneapplicability(TO_PRODUCTouTO_ORDER), et unmaxAmountoptionnelidentifier— marqueur unique pour le filtrage et la référencestartDate/endDate— période de validité optionnelleconditions— 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 :
type | Description |
|---|---|
| DISCOUNT | Réduction standard appliquée aux produits/commandes |
| BONUS | Accumulation de points bonus (fidélité) |
| PERSONAL_DISCOUNT | Réduction ciblée sur des utilisateurs ou groupes spécifiques |
Comment la réduction est calculée se trouve dans discountValue.discountType :
discountValue.discountType | Description | Exemple |
|---|---|---|
| PERCENT | Réduire le prix d'un pourcentage | 20 % de réduction sur tous les articles d'été |
| FIXED_AMOUNT | Réduire le prix d'un montant fixe | 10 $ 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éthode | Description |
|---|---|
| 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
endDateavant d'afficher une réduction. - Utiliser des marqueurs descriptifs —
summer_sale_2025, pasdiscount1. - Localiser les noms de réduction — utilisez
localizeInfospour un support multilingue.
🔗 Documentation connexe
- Module Produits - Gérer les produits auxquels les réductions sont appliquées
- Module Commandes - Prévisualiser et créer des commandes avec des réductions appliquées
- Module Paiements - Traiter les paiements pour les commandes à prix réduit
- Module Locales - Noms de réduction multilingues