Coupon & Codes
L'oggetto Coupon definisce le regole di sconto promozionale all'interno di webround.com. Questi dati vengono utilizzati dal motore di validazione per determinare se un codice inserito dall'utente può essere applicato al carrello corrente in base a restrizioni temporali, di utilizzo o di valore minimo.
Definizione Coupon
| Proprietà | Tipo | Descrizione |
|---|---|---|
| id | string (UUID) | Identificativo univoco del coupon nel database. |
| name | string | Nome interno della promozione (es. "Sconto di Benvenuto"). |
| target | string | Definisce l'ambito di applicazione (es. global, category, shipping). |
| code | string | Il codice testuale che l'utente deve inserire (es. SUMMER2026). |
| position | number | Ordinamento di priorità in caso di sconti multipli. |
| discountType | string | Tipo di calcolo: percentage (percentuale) o fixed (valore fisso). |
| discountValue | number | Il valore dello sconto (es. 20 per il 20% o 10 per 10€). |
| limitUsageGlobal | boolean | Se true, attiva il limite massimo di utilizzi totali per il coupon. |
| limitUsageCustomer | boolean | Se true, limita il numero di volte che un singolo cliente può usarlo. |
| maxUsesGlobal | number | Numero massimo di utilizzi totali consentiti nel sistema. |
| maxUsesPerCustomer | number | Numero massimo di utilizzi consentiti per singolo utente autenticato. |
| minOrderAmount | number | Soglia minima di spesa (totale lordo) necessaria per attivare il codice. |
| exclusive | boolean | Se true, il coupon non è cumulabile con altri codici promozionali. |
| reserved | boolean | Se true, il coupon è riservato a specifici segmenti di utenti o email. |
| startsAt | string (ISO 8601) | Data e ora di inizio validità della promozione. |
| endsAt | string (ISO 8601) | Data e ora di scadenza (il codice smetterà di funzionare dopo questa data). |
| createdAt | string (ISO 8601) | Data di creazione del record. |
Esempio di oggetto
{
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"name": "Promo Estiva",
"code": "SUMMER25",
"discountType": "percentage",
"discountValue": 15,
"minOrderAmount": 50,
"exclusive": true,
"limitUsageCustomer": true,
"maxUsesPerCustomer": 1,
"startsAt": "2026-06-01T00:00:00.000Z",
"endsAt": "2026-08-31T23:59:59.000Z"
}
Logica di Validazione
Quando viene invocato il metodo validatePromotionCodes tramite le Utilities di wr.customer, il sistema confronta i parametri del carrello con le proprietà minOrderAmount, startsAt, endsAt e i limiti di utilizzo definiti in questa struttura. Se uno solo di questi criteri non è soddisfatto, il codice viene rifiutato con un messaggio di errore localizzato.