Introducción
El módulo de Descuentos te permite gestionar y aplicar descuentos a productos y pedidos.
Más información sobre la interfaz de usuario del módulo https://doc.oneentry.cloud/docs/category/discounts
🎯 ¿Qué hace este módulo?
El módulo de Descuentos te permite obtener descuentos y validar códigos de cupones — reducciones porcentuales o de cantidad fija, acumulación de puntos de bonificación y descuentos personales. Definís las reglas de descuento en el panel de administración de OneEntry; este módulo las recupera, valida los cupones en el proceso de pago y lee el saldo de bonificación y el historial del usuario actual.
El SDK es solo de lectura: los descuentos se crean y configuran en el panel de administración.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { Discounts } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Valida un código de cupón en el proceso de pago y lee el resultado:
// 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);
}
✨ Conceptos Clave
¿Qué es un Descuento?
Un Descuento (IDiscountsEntity) es una regla de precios que reduce el costo de productos o pedidos:
type—DISCOUNT,BONUS, oPERSONAL_DISCOUNTdiscountValue— cómo se calcula la reducción:discountType(PERCENToFIXED_AMOUNT), unvaluenumérico, unaapplicability(TO_PRODUCToTO_ORDER), y unmaxAmountopcionalidentifier— marcador único para filtrar y referenciarstartDate/endDate— período de validez opcionalconditions— reglas que deciden cuándo se aplica el descuento (por producto, categoría, monto del carrito, usuario, …)
Estructura del Descuento
{
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' }
]
}
Tipos de Descuento
El campo type clasifica el descuento:
type | Descripción |
|---|---|
| DISCOUNT | Descuento estándar aplicado a productos/pedidos |
| BONUS | Acumulación de puntos de bonificación (lealtad) |
| PERSONAL_DISCOUNT | Descuento dirigido a usuarios o grupos específicos |
Cómo se calcula la reducción se encuentra en discountValue.discountType:
discountValue.discountType | Descripción | Ejemplo |
|---|---|---|
| PERCENT | Reducir el precio en un porcentaje | 20% de descuento en todos los artículos de verano |
| FIXED_AMOUNT | Reducir el precio en una cantidad fija | $10 de descuento en pedidos superiores a $50 |
📋 Lo Que Necesitas Saber
Los descuentos se crean en el panel de administración
No puedes crear descuentos a través del SDK — se crean en el panel de administración de OneEntry. Al crear uno, proporcionas un Nombre, un Marcador (identifier), un tipo (DISCOUNT, BONUS, o PERSONAL_DISCOUNT), un discountValue (PERCENT o FIXED_AMOUNT más el value numérico), un período de validez opcional (startDate / endDate), y condiciones opcionales.
Lo que hace el módulo
- ✅ Obtener todos los descuentos —
getAllDiscounts() - ✅ Recuperar un descuento específico por marcador —
getDiscountByMarker() - ✅ Validar códigos de cupones en el proceso de pago —
validateDiscountsCoupon() - ✅ Leer el saldo de bonificación y el historial del usuario actual
- ❌ No crea ni modifica descuentos (usa el panel de administración)
📊 Tabla de Referencia Rápida
| Método | Descripción |
|---|---|
| getAllDiscounts() | Obtener todos los descuentos |
| getDiscountByMarker() | Obtener un solo descuento por marcador |
| validateDiscountsCoupon() | Validar un código de cupón de descuento |
| getBonusBalance() | Obtener el saldo de bonificación del usuario actual |
| getBonusHistory() | Obtener el historial de transacciones de bonificación del usuario actual |
❓ Preguntas Comunes (FAQ)
¿Cómo aplico un descuento en el proceso de pago?
Obtén el descuento con getDiscountByMarker() o valida un cupón con validateDiscountsCoupon(), luego usa el valor de descuento devuelto para calcular el precio reducido.
¿Puede un descuento tener una fecha de expiración?
Sí. Los descuentos pueden tener campos opcionales startDate y endDate — revísalos antes de mostrar un descuento para asegurarte de que esté actualmente activo.
¿Cómo muestro insignias de descuento en los productos?
Obtén todos los descuentos con getAllDiscounts(), emparejalos con los productos según tu lógica de negocio y renderiza una insignia a partir de localizeInfos.title y discountValue.value.
¿Qué sucede si un código de cupón es inválido?
validateDiscountsCoupon() devuelve un ICouponValidationResult — { valid: boolean; coupon?; error? }. Cuando el cupón no existe o ha expirado, valid es false y se proporciona un mensaje de error. Verifica result.valid y muestra un mensaje apropiado.
🎓 Mejores Prácticas
- Cachea los descuentos al cargar — cambian con poca frecuencia; evita llamadas repetidas a la API.
- Valida los cupones antes de aplicar — siempre llama a
validateDiscountsCoupon()antes de fijar el precio de un pedido. - Maneja los descuentos expirados — verifica
endDateantes de mostrar un descuento. - Usa marcadores descriptivos —
summer_sale_2025, nodiscount1. - Localiza los nombres de los descuentos — usa
localizeInfospara soporte multilingüe.
🔗 Documentación Relacionada
- Módulo de Productos - Gestiona los productos a los que se aplican los descuentos
- Módulo de Pedidos - Previsualiza y crea pedidos con descuentos aplicados
- Módulo de Pagos - Procesa pagos para pedidos con descuento
- Módulo de Locales - Nombres de descuentos en varios idiomas