From cac8518a325d1b66ed627d96b5adf52d475228c5 Mon Sep 17 00:00:00 2001 From: imperosol Date: Sat, 23 May 2026 12:10:01 +0200 Subject: [PATCH] add doc --- docs/tutorial/etransaction.md | 31 +++++++++++++++++++++++++++++++ eboutic/models.py | 9 +++++++++ 2 files changed, 40 insertions(+) diff --git a/docs/tutorial/etransaction.md b/docs/tutorial/etransaction.md index f4c1298b..dde96570 100644 --- a/docs/tutorial/etransaction.md +++ b/docs/tutorial/etransaction.md @@ -1,4 +1,6 @@ +## Fonctionnement général + La boutique en ligne nécessite une interaction avec la banque pour son fonctionnement. @@ -9,3 +11,32 @@ Nous ne pouvons donc que vous redirigez vers la doc du crédit agricole : [https://www.ca-moncommerce.com/espace-client-mon-commerce/up2pay-e-transactions/ma-documentation/](https://www.ca-moncommerce.com/espace-client-mon-commerce/up2pay-e-transactions/ma-documentation/) +## Limite de clic et expiration des paniers + +Certains produits peuvent avoir un quota de vente. +Une fois ce dernier atteint, il ne doit plus être possible de les acheter. + +Pour éviter que cette limite soit dépassée si jamais plusieurs utilisateurs +commandent et achètent ce produit à peu près en même temps, +un produit est considéré comme « réservé » une fois placé dans un panier. +La création du panier s'effectue lors de la soumission du formulaire sur l'eboutic. +Une fois la transaction accomplie, le panier est supprimé. + +Cependant, il reste un problème : +que faire des utilisateurs qui créent un panier, mais ne terminent +pas la transaction ? +Pour résoudre ce cas, les paniers ont une durée de validité, +définie dans le `settings.py`, grâce à deux variables : + +- `settings.SITH_EBOUTIC_BASKET_TIMEOUT` : + le temps pendant lequel un utilisateur peut payer avec son compte AE + ou démarrer une etransaction +- `settings.SITH_EBOUTIC_ETRANSACTION_TIMEOUT` : + le temps alloué à l'utilisateur pour effectuer une etransaction ; + au-delà de cette durée, la banque refusera le paiement + et notifiera le sith de l'erreur. + +Une fois expiré le temps défini par +`settings.SITH_EBOUTIC_BASKET_TIMEOUT + settings.SITH_EBOUTIC_ETRANSACTION_TIMEOUT`, +les produits contenus dans le panier sont à nouveau +disponibles à la vente. diff --git a/eboutic/models.py b/eboutic/models.py index af029ae1..466d9ab3 100644 --- a/eboutic/models.py +++ b/eboutic/models.py @@ -98,6 +98,15 @@ class Basket(models.Model): @property def is_expired(self) -> bool: + """Return True if this basket is expired. + + An expired basket can no longer be used tp pay with sith account + or to start an etransaction. + + Warnings: + Users have an additional time if they pay with an etransaction, + so an expired basket may be purchased after its expiration in that case. + """ return (self.date + settings.SITH_EBOUTIC_BASKET_TIMEOUT) <= now() def generate_sales(