Correction bug importation de données de cashback

This commit is contained in:
2026-07-14 15:25:48 +02:00
parent 84f1cb19d5
commit 069e316362
2 changed files with 1325 additions and 3 deletions
+18 -3
View File
@@ -179,7 +179,7 @@ const MODULES = {
remboursements: {
label: 'Remboursements',
required: ['investissement_id', 'date_remb'],
optional: ['capital', 'interets_bruts', 'prelev_sociaux', 'prelev_forfaitaire', 'statut'],
optional: ['capital', 'cashback', 'interets_bruts', 'prelev_sociaux', 'prelev_forfaitaire', 'statut'],
needsInvestisseur: true,
},
plateformes: {
@@ -326,6 +326,9 @@ const FIELD_HINTS_OVERRIDE = {
interets_bruts: 'intérêts bruts perçus, en euros (nombre, avant prélèvements). ⚠️ Voir la section RÈGLE CAPITAL vs '
+ 'INTÉRÊTS ci-dessous avant de remplir ce champ : ne recopie JAMAIS aveuglément le montant total d\'une ligne de '
+ 'remboursement dans ce champ sans vérifier sa cohérence avec les prélèvements sociaux/IR associés.',
cashback: 'montant de cashback/prime/bonus perçu, en euros (nombre) — voir la section RÈGLE CAPITAL vs INTÉRÊTS '
+ 'ci-dessous : une ligne de cashback/bonus/récompense se reconnaît à son libellé (pas à sa position dans le '
+ 'fichier) et n\'est jamais soumise à prélèvement.',
},
investissements: {
nom_projet: 'trouve le nom du projet naturellement dans le fichier, puis FORMATE-le ainsi : '
@@ -393,9 +396,21 @@ function buildReferenceSection(mod, plats, investissements, scopePlateforme) {
+ `d'intérêts bruts à partir des prélèvements eux-mêmes — interets_bruts ≈ prélèvement_sociaux ÷ 0,172, à recouper avec prélèvement_forfaitaire ÷ 0,128 `
+ `(les deux estimations doivent être proches ; en cas d'écart, privilégie leur moyenne) — puis capital = montant total de la ligne interets_bruts ainsi recalculé. `
+ `N'utilise JAMAIS le montant total brut de la ligne comme interets_bruts dans ce cas.\n`
+ `4. Si AUCUNE ligne de prélèvement n'est associée à la ligne de remboursement (aucun CSG/CRDS ni prélèvement IR/PFU adjacent), il s'agit d'un remboursement `
+ `4. IDENTIFICATION DU CASHBACK/BONUS — avant d'appliquer la règle 5 ci-dessous, vérifie si le LIBELLÉ de la ligne `
+ `indique une prime, un bonus, un cashback, une récompense, un code cadeau ou une rémunération de parrainage/filleul `
+ `(mots-clés typiques : "cashback", "bonus", "prime", "récompense", "code cadeau", "parrainage", "filleul", `
+ `"rémunération" hors mensualité). Ce type de versement se reconnaît à son LIBELLÉ, jamais à sa position dans le `
+ `fichier ni à l'absence de ligne de prélèvement adjacente (une ligne de remboursement de capital pur n'a elle non `
+ `plus aucun prélèvement adjacent — ne confonds pas les deux cas). Si c'est le cas : renseigne uniquement le champ `
+ `cashback = montant total de la ligne (capital = 0, interets_bruts = 0, prelev_sociaux = 0, prelev_forfaitaire = 0), `
+ `ce type de versement n'étant jamais soumis à prélèvement. Si ce versement est lié à un projet identifiable de la `
+ `liste des investissements ci-dessous, utilise cet investissement_id ; si le libellé ne mentionne AUCUN projet `
+ `identifiable (ex. bonus de parrainage global, non lié à un prêt précis), N'INCLUS PAS cette ligne dans le JSON — `
+ `le module d'import ne permet pas d'enregistrer un versement sans investissement associé.\n`
+ `5. Si AUCUNE ligne de prélèvement n'est associée à la ligne de remboursement (aucun CSG/CRDS ni prélèvement IR/PFU adjacent) `
+ `ET que ce n'est PAS une ligne de cashback/bonus (voir règle 4 ci-dessus), il s'agit d'un remboursement `
+ `de capital PUR (souvent l'échéance finale d'un prêt in fine/différé) : capital = montant total de la ligne.\n`
+ `5. ⚠️ RÈGLE CRITIQUE — présence systématique des champs : sur CHAQUE ligne du JSON généré, inclus TOUJOURS explicitement les 5 champs `
+ `6. ⚠️ RÈGLE CRITIQUE — présence systématique des champs : sur CHAQUE ligne du JSON généré, inclus TOUJOURS explicitement les 5 champs `
+ `capital, cashback, interets_bruts, prelev_sociaux, prelev_forfaitaire — même quand leur valeur est 0. N'omets JAMAIS un champ sous prétexte `
+ `qu'il vaut 0 sur cette ligne précise (ex. une ligne de remboursement de capital pur doit quand même inclure "interets_bruts": 0, "prelev_sociaux": 0, `
+ `"prelev_forfaitaire": 0, et pas seulement "capital"). Cette règle est impérative : l'application détecte les colonnes disponibles à partir des champs `