Mise en place de la notion de perte définitive, ainsi que la révision avec statut Polongation
This commit is contained in:
1 parent
4ad6ea79e8
commit
8e1b82d161
21 files changed
+1069
-184
No files matched your search
@@ -3,7 +3,7 @@ import { z } from 'zod';
|
||||
import db from '../db/index.js';
|
||||
import { HttpError } from '../middleware/errorHandler.js';
|
||||
import { requireInvestisseur } from '../middleware/investisseurScope.js';
|
||||
import { buildSchedule, adjustSimulForActuals } from '../utils/schedule.js';
|
||||
import { buildSchedule, adjustSimulForActuals, replayAdjustSimulForActuals } from '../utils/schedule.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -149,7 +149,14 @@ router.post('/recalculate', (req, res, next) => {
|
||||
const { investissement_id } = req.body;
|
||||
if (!investissement_id) throw new HttpError(400, 'investissement_id required');
|
||||
assertOwnedInvestissement(Number(investissement_id), req.user.id);
|
||||
// adjustSimulForActuals() gère aussi la régénération complète quand aucun capital n'a
|
||||
// encore été remboursé ; replayAdjustSimulForActuals() rejoue ensuite tout l'historique des
|
||||
// remboursements de capital anticipés pour reconstruire fidèlement les valeurs
|
||||
// intermédiaires qu'un simple appel unique ne peut pas restaurer (cf. bug "L'Olympique" du
|
||||
// 22/08/26, feedback_generateSimul_restructuration_dates.md) — sans effet si l'échéancier
|
||||
// était déjà cohérent.
|
||||
adjustSimulForActuals(db, Number(investissement_id));
|
||||
replayAdjustSimulForActuals(db, Number(investissement_id));
|
||||
const rows = db.prepare(
|
||||
'SELECT * FROM simul_remboursements WHERE investissement_id=? ORDER BY numero_echeance'
|
||||
).all(investissement_id);
|
||||
|
||||
Reference in new issue
Block a user