Calcul panier

Un panier de cinema peut contenir des lignes de produit (consommable) et des lignes de cinéma (place de cinéma).

Process

Plusieurs étapes pour le calcul du panier:

  1. Associer le produit à la ligne de vente
  2. Réduction d’une ligne de vente
  3. Calcule de taxe par ligne de vente
  4. Application de moyen de paiement
  5. Ajout du numéro de beeper

1. Associer le produit à la ligne de vente (consommable et cinéma)

Lorsque qu’on associe le produit à la ligne, on alimente line.amountHT et line.amountRealHT de la ligne avec le prix HT du produit.

graph LR a[linetype == show] d[searchById->showId] s[show] p[show.getPrices->pricingType] x[line.amountHT] r[line.amounRealHT] a --> d d --> s s --> p p --> x x --> r
graph LR c[linetype == product] b[searchById->button.productId] d[Product] h[line.amountHT] r[line.amountRealHT] c --> b b --> d d --> h h --> r

line.amountHT ne changera pas au cours du calcul. Elle indique simplement le montant d’origine HT du produit associé à la ligne.

2. Réduction d’une ligne de vente

/!\ Le montant de référence pour les calculs par ligne qui suivent est line.amountRealHT.

3 cas possible de réduction :

3. Application des taxes

/!\ Le montant de référence pour les calculs par ligne qui suivent est line.amountRealHT.

L’application des taxes et le calcul du montant à payer se fait dans cette même étape.

4. Application de moyen de paiement

Pour l’application des moyens de paiement, on incrémente le champ payment.totalPaid du panier. On cumule chaque montant saisie pour payer le panier de chaque moyen de paiement.

payment.totalPaid = payment.totalPaid + payment.paymentDetail.entry.totalPaid

Ensuite on soustrait, le montant à payer avec montant saisie du moyen de paiement pour obtenir le montant de change.

change = payment.paymentDetail.entry.totalPaid - payment.paymentDetail.entry.amount

Et on ajout le résultat de la soustraction au montant de change du panier.

payment.changeReturned = payment.changeReturned + change

Si le montant à payer < montant payer par le client, le reste à payer vaut 0.

5. Ajout du numéro de beeper