Documentation développeur Optimisations caisse Calcul panier Réduction Réduction prépayé
November 26, 2025 at 2:48 AMRéduction prépayé
Moyen de paiment
Un prépayé est considéré comme une moyen de paiement mais à pour effet une réduction sur les lignes de cinéma uniquement (line.lineType=show).
A chaque utilisation d’un prépayé pour un panier, on ajout un moyen de paiment qui a une valeur de zéro au paiement.
Ce moyen de paiement est un cas particulier.
{
"paymentMethod": "prepaid",
"amount": 0,
"totalPaid": 0,
"entryPaid": true,
...
"prepaidEntry": {
"prepaidId": "7bc8fcf3-45fd-4b10-817a-b347500e79d4", // id du prépayé utilisé pour se panier
"amountHT": "1194" // montant HT théorique du prépayé
}
}
A l’ajout d’un nouveau prépayé, il faut vérifier que sur toutes les lignes du panier de type show (même si un prépayé est déjà liéé) :
line.attachItemsoitnullline.discountAmountégale à0line.amountRealHTégale àline.amountHT
Afin de repositionner les prépayés à des lignes de type show qui conviennent le mieux.
Calcul de la réduction
Pour le calcul de la réduction avec un prépayé, cette réduction se décompose en deux étapes :
- Lier les prépayés au ligne de panier de type show
- Applique la réduction
Etape 1 : Lier les prépayés au ligne de panier de type show
Pour affecter les prépayés aux lignes de panier de type show, on parcours un par un les prépayés et on selectionne la ligne qui génère le moins de reste à payer.
Deux étapes :
Match exacte
SI le montant théorique du prépayé corresponds exactement à un montant d’une ligne de type show
ALORS on attache le prépayé à cette ligne
SINON on trouve le meilleur show pour appliquer le prépayé selon le plus petit montant à payer
Trouver le meilleur show pour appliquer le prépayé
Calcul du montant du reste à payer entre les places show du panier et le montant théorique du prépayé courant.
- On récupère tous les montants positives (le client ne perd pas d’argent)
On selectionne la ligne de type show qui génère le montant à payer le plus petit.
Et on attache le prépayé courant à ligne.
Si il n’y a aucun montant positives, on récupère tous les montant negatives.
- On récupère tous les montants negatives (le client perd de l’argent)
On selectionne la ligne de type show qui génère le montant à payer le plus petit.
Et on attache le prépayé courant à ligne.
Au matching du prépayé à la ligne
Lors d’un matching, on renseigne à la ligne de panier, le champ line.attachItem. Par défaut, elle est null.
AttachItem :
{
"itemType": "prepaid", // Item attaché à la ligne (prepaid ou card)
"itemId": "abc25f84", // id de l'item
"paymentEntryId": "abc25f84" //
}
On alimente, avec le prix théorique du prépayé, le montant de réduction de la ligne (line.discountAmount) pour le calcul de prix HT avec réduction.
line.discountAmount = preapid.amountTheoric
Etape 2 : Calcule de ligne de vente
Calculer le montant HT d’une ligne de panier, si un prépayé / carte est lié.
line.amountRealHT = line.amountRealHT - line.discountAmount
Si le montant de réduction est égale/supérieur au montant HT de la ligne, le montant de ligne HT remisé vaut 0.
Remarque : montant théoric est hors taxe