# Limites ## Limite classique - Les limites permetent de ne pas dépasser un certain montant de consommation sur le compte bancaire ![](https://i.imgur.com/KgZlSlQ.jpg) - On a 2 sortes de limites: - Limites de base `balanceLimit`, c'est celle qu'on recoit de la CDP après calcule du profil, à l'ouverture du compte. Balance qui peut changer si on fait un déplafonnement - La limite technique dont nous allons parler plus tard dans la doc. - Les limites sont stockés dans l'object `LimitInformation` - Lors qu'on met à jour les limites chez xpollens, malgré qu'on parle de mise à jour mensuelle, on doit mettre à jour la limite hebdomadaire. `monthlyAllowance; weeklyAllowance` ## Onboarding A l'onboarding on détermine les plafonds/limites du compte à ouvrir. Code: ```javascript - CustomerSituationsUpdatedHandler (profile demande a la cdp de calculer) - AccountEligibilityCalculatedEventHandler -> `InitiateLimits` - ProfileActivatedEventHandler -> `ApplyLocalLimits` ``` ## Limit technique - La limite technique est une plafond qu'on va mettre à jour quand le client effectue des 3x histo. - Petit poin d'attention: Elle correspond au plafond qu'on a chez xpollens, mais il correspond pas au plafond au qu'on a dans le front mobile (explication plus bad) code: ```javascript= - handler SplitPaymentScheduleCreatedEventHandler - usecase CalculateTechnicalLimitPostSplit ``` ### Example - Si un client a une limite de base de 500 et qu'il fait un achat dans un magasin de 20. alors on va afficher consommé: 20/(500) dans l'app. - le /500 ne doit jamais changer, même si on met à jour la limite chez xpollens après un split - Si on a fait un split de 60e par example en 3 fois. On a en vrai consommé que 20e dans le mois, car on rembourse 40e suite au split ```json On veut donc afficher 20/(500) au lieux de 60/500. Car pour le moment on a une 1er mensualité qui est passé. ``` Donc pour faire ça ❗️. Chez xpollens. On a un consommé de 60e, nous on a pas la possibilité de changer sa balance avec une API par example. Donc comment faire pour afficher 20e de consommé. La solution c'est d'augmenter son plafond. si on augmente. à 540 et qu'on a consommé sur xpollens 60e on a 480... reste du plafond = 480 = le consommé est de 20/500 DONC c'est comme si on avait consommé 20e sur les 500. ## Mise à jour mensuelle > On effectue egalement une mise à jour de la limite technique tous les mois ❗️. Afin de dire: Le client a X mensualités à venir dans le mois. donc, normalement il avait une consommation maximal de 500e, enfaite il aura seulement le droit de dépenser 400e. pour qu'il puisse payer les 100e de mensualités du mois par example. grace aux scheduleur sur payment-azf schedule-technical-limit Code: ```javascript - OrderMonthlyAmountDues (usecase demande à Credit les mensualités des clients) - OrderActivatedProfiles (credit demande à Profile les profils activés) - BatchCalculateMonthlyTechnicalLimit (destination de l'azf batch technical limit) - CalculateMonthlyTechnicalLimit (fin de calcul) ``` ## Déplafonments ```javascript= - Aggregation - route: `/raising-order` (payment) - event CheckAggregatedAccountsIncomes -> destination CDP - CDP envoie `AggregatedAccountsIncomesChecked` -> usecase payment `CheckToEvaluateAccount` - Payment va demander à aggregation pour une analyse chez algoan - la CDP va répondre avec le montant de la balance dans `CustomBalanceLimitCalculated` - usecase final `Uncap` - Avis d'imposition - point d'entrée: profile envoie un event `TaxNoticeUploadedEventHandler` - usecase: `AskUncapping` - payment handler de la cdp: `CustomBalanceLimitCalculatedEventHandler` - usecase final `Uncap` ``` ## Améliorations ### Renommage - On a prévu de renommer le terme "technical limit" en tout simplement limit global mensuel. - Le code est en cours de dev chez M. Bouzidi ### Mise à jour de limites à chaque échéance - Une évolution en cours également, la mise à de la limite technique: pour recalculer sa limite (et donc son consommé) lors qu'on a effectué le paiement d'une mensualité Dispo en DEV déjà. Pas encore de test QA DONE ```javascript handler: SplitPaymentScheduledExecutedHandler Usecase: CalculateTechnicalLimitPostSplitPaymentExecuted ``` ### Rate limits - Il se peut que la l'azf qui met à jour tous les mois, fasse en sorte de dépasser le rate limite (car on met à jour en masse tous les clients) ### Domain services - Calculs assez complete + mis à jour consommé etc