Mise en place de la notion de perte définitive, ainsi que la révision avec statut Polongation

This commit is contained in:
ocroguennec committed 2026-08-22 16:27:41 +02:00
1 parent 4ad6ea79e8
commit 8e1b82d161
21 files changed
+1069 -184

No files matched your search

+1 -1
View File
@@ -21,7 +21,7 @@ const LIST_COLUMNS = `
* parameters:
* - in: query
* name: statut
* schema: { type: string, enum: [en_cours, rembourse, en_retard, procedure, cloture] }
* schema: { type: string, enum: [en_cours, rembourse, en_retard, procedure, cloture, perte_definitive, prolongation] }
* responses:
* 200: { description: Liste des investissements }
*/
+6 -2
View File
@@ -88,13 +88,17 @@ router.get('/', (req, res) => {
// ── Synthèse 2042 — mêmes cases et mêmes formules que le pavé "Cases fiscales 2042 —
// synthèse" en haut de la page Fiscalité (TaxReport.jsx, fonction load()) :
// - 2TT / 2TY : cumul direct des lignes 2561 françaises.
// - 2TT : cumul direct des lignes 2561 françaises. 2TY (pertes en capital,
// statut 'perte_definitive' uniquement) : cumul sur toutes les lignes 2561,
// FR et étranger confondues — une perte définitive n'est pas spécifique à la France.
// - 2TR : cumul des lignes 2561 françaises + brut étranger (toujours reporté, que le
// PFO s'applique ou non — seule la déclaration annuelle 2047 est en jeu ici).
// - 2BH / 2CK : la part étrangère n'est ajoutée que si pfo_assujetti est vrai, sinon
// ces cases ne sont pas censées être alimentées (cf. mémoire projet — la case 2CK
// ne s'alimente que si la déclaration 2778-SD est active).
const frLignes = cerfa2561.lignes.filter(l => l.domiciliation === 'FR');
// case_2TY (pertes en capital) n'est pas spécifique FR/étranger — voir TaxReport.jsx
const allLignes = cerfa2561.lignes;
const platEtr = cerfa2778_mensuel?.plateformes ?? [];
const etrBA = p => Object.values(p.mois ?? {}).reduce((s, v) => s + v, 0);
const totalBA = platEtr.reduce((s, p) => s + etrBA(p), 0);
@@ -105,7 +109,7 @@ router.get('/', (req, res) => {
case_2TR: sumBy(frLignes, 'case_2TR') + Math.round(totalBA),
case_2BH: sumBy(frLignes, 'case_2BH') + (pfoAssujetti ? Math.round(totalBA) : 0),
case_2CK: sumBy(frLignes, 'case_2CK') + (pfoAssujetti ? Math.round(totalBA * PFO_RATE) : 0),
case_2TY: sumBy(frLignes, 'case_2TY'),
case_2TY: sumBy(allLignes, 'case_2TY'),
};
res.json({