-
-
-
-
- {(() => {
- const platMethode = plats.find(p => String(p.id) === String(form.plateforme_id))?.methode_remboursement;
- if (!platMethode) return null;
- if (platMethode === 'choix_investisseur') return (
-
-
-
-
- );
- // Méthode fixée par la plateforme — lecture seule
- return (
-
-
-
-
- );
- })()}
- {form.methode_remboursement === 'compte_courant' && (
-
-
- {comptesInvestisseur.length > 0 ? (
-
- ) : (
-
- Aucun compte défini pour ce détenteur. Créer un compte →
-
- )}
-
- )}
- {/* Détenteur auto-déduit de la plateforme — champ masqué */}
-
-
-
-
- setForm({ ...form, nom_projet: e.target.value })} />
-
-
-
- setForm({ ...form, montant_investi: e.target.value })} />
-
-
-
- setForm({ ...form, taux_interet: e.target.value })} />
-
-
-
- {
- const duree = e.target.value;
- const next = { ...form, duree_mois: duree };
- if (duree) {
- if (form.type_remb === 'differe' && form.date_souscription) {
- const tempDpe = addMonthsFE(form.date_souscription, 1);
- const cible = addMonthsFE(tempDpe, Number(duree) - 1);
- next.date_premiere_echeance = cible;
- next.date_cible = cible;
- } else if (form.date_premiere_echeance) {
- next.date_cible = addMonthsFE(form.date_premiere_echeance, Number(duree) - 1);
- }
- }
- setForm(next);
- }} />
-
-
-
-
-
-
-
-
-
-
-
- {
- const souscription = e.target.value;
- setForm(prev => {
- const next = { ...prev, date_souscription: souscription };
- if (!souscription || souscription.length !== 10) return next;
- if (prev.type_remb === 'differe') {
- if (prev.duree_mois) {
- const tempDpe = addMonthsFE(souscription, 1);
- const cible = addMonthsFE(tempDpe, Number(prev.duree_mois) - 1);
- next.date_premiere_echeance = cible;
- next.date_cible = cible;
- }
- } else {
- next.date_premiere_echeance = addMonthsFE(souscription, 1);
- if (next.date_premiere_echeance && prev.duree_mois) {
- next.date_cible = addMonthsFE(next.date_premiere_echeance, Number(prev.duree_mois) - 1);
- }
- }
- return next;
- });
- if (souscription && souscription.length === 10) {
- lastValidSouscriptionRef.current = souscription;
- }
- }} />
-
-
-
- {
- const dpe = e.target.value;
- const next = { ...form, date_premiere_echeance: dpe };
- // Si le jour passe à ≤ 27 on désactive fin-de-mois
- if (dayOfMonth(dpe) <= 27) next.echeance_fin_de_mois = false;
- if (form.type_remb === 'differe') {
- next.date_cible = dpe;
- } else if (dpe && form.duree_mois) {
- next.date_cible = next.echeance_fin_de_mois
- ? addMonthsFinDeMoisFE(dpe, Number(form.duree_mois) - 1)
- : addMonthsFE(dpe, Number(form.duree_mois) - 1);
- }
- setForm(next);
- }}
- />
- {/* ── Case "Dernier jour du mois" — visible si jour > 27 ── */}
- {(form.type_remb === 'in_fine' || form.type_remb === 'differe') &&
- dayOfMonth(form.date_premiere_echeance) > 27 && (
-
- )}
-
-
-
- setForm({ ...form, date_cible: e.target.value })}
- />
-
-
-
- setForm(f => ({ ...f, pays_exposition: code }))}
- />
-
-
-
- setForm({ ...form, emetteur: e.target.value })}
- placeholder="Nom de l'emprunteur"
- />
-
- {editingId && (
-
-
-
-
- )}
-
-
- setForm({ ...form, reference: e.target.value })}
- placeholder="N° de dossier, code projet…"
- />
-
-
-
-
-
- {/* Catégories d'investissement */}
-
-
- setForm(f => ({ ...f, categories_inv_ids: ids }))}
- addApiPath="/categories-inv"
- onItemAdded={cat => setCategoriesInv(prev => [...prev, cat].sort((a,b) => a.nom.localeCompare(b.nom)))}
- emptyLabel="Aucune catégorie d'investissement"
- addLabel="Ajouter une catégorie d'investissement"
- inputPlaceholder="Nom de la catégorie…"
- />
-
-
- {/* Secteurs d'investissement */}
-
-
- setForm(f => ({ ...f, secteurs_inv_ids: ids }))}
- addApiPath="/secteurs-inv"
- onItemAdded={sect => setSecteursInv(prev => [...prev, sect].sort((a,b) => a.nom.localeCompare(b.nom)))}
- emptyLabel="Aucun secteur d'investissement"
- addLabel="Ajouter un secteur d'investissement"
- inputPlaceholder="Nom du secteur…"
- />
-
-
-