feat: Ajout champs 'Autre précision durée' et 'Autre précision salaire' sur page contrats

- Ajout de 2 nouveaux champs de texte dans ContractEditor.tsx
- Sauvegarde des champs autreprecision_duree et autreprecision_salaire dans Supabase
- Mise à jour des types ContratCDDUData avec les nouveaux champs
- Envoi des données à PDFMonkey via generate-pdf et generate-pdf-test
- Les champs sont disponibles dans l'interface staff/contrats/[id]
This commit is contained in:
odentas 2025-11-15 11:33:14 +01:00
parent 79f18b20a4
commit 9f4ecf688c
4 changed files with 32 additions and 0 deletions

View file

@ -125,6 +125,8 @@ export async function GET(
// Autres
autreprecision: contract.other_details || contract.autreprecision || '',
autreprecision_duree: contract.autreprecision_duree || '',
autreprecision_salaire: contract.autreprecision_salaire || '',
nom_responsable_traitement: contract.data_controller_name || '',
qualite_responsable_traitement: contract.data_controller_title || '',
email_responsable_traitement: contract.data_controller_email || '',

View file

@ -429,6 +429,8 @@ export async function POST(
CCN: orgDetails.ccn || "",
// Toujours envoyer precisions_salaire depuis la colonne Supabase
precisions_salaire: contract.precisions_salaire || "",
autreprecision_duree: contract.autreprecision_duree || "",
autreprecision_salaire: contract.autreprecision_salaire || "",
panierrepas: contract.paniers_repas || "",
panierrepasccn: contract.panier_repas_ccn || "",
montantpanierrepas: contract.si_non_montant_par_panier || "",

View file

@ -506,6 +506,8 @@ export default function ContractEditor({
}
setPrecisionsSalaire(contract.precisions_salaire || "");
setAutrePrecisionDuree(contract.autreprecision_duree || "");
setAutrePrecisionSalaire(contract.autreprecision_salaire || "");
}, [contract, categoriePro, professionPick?.code]);
// États pour les autres champs CDDU actuellement grisés
@ -516,6 +518,8 @@ export default function ContractEditor({
const [dateSignature, setDateSignature] = useState(contract.date_signature?.slice(0, 10) || "");
const [montant, setMontant] = useState(String(prefill.montant || ""));
const [precisionsSalaire, setPrecisionsSalaire] = useState(contract.precisions_salaire || "");
const [autrePrecisionDuree, setAutrePrecisionDuree] = useState(contract.autreprecision_duree || "");
const [autrePrecisionSalaire, setAutrePrecisionSalaire] = useState(contract.autreprecision_salaire || "");
// Search states
const [spectacleActive, setSpectacleActive] = useState(0);
@ -1080,6 +1084,8 @@ export default function ContractEditor({
heures_total: useHeuresMode ? heuresTotal || null : null,
minutes_total: useHeuresMode ? minutesTotal : null,
precisions_salaire: precisionsSalaire || null, // Nouveau champ pour précisions salaire
autreprecision_duree: autrePrecisionDuree || null, // Autre précision durée
autreprecision_salaire: autrePrecisionSalaire || null, // Autre précision salaire
// Map to database fields
// Pour les metteurs en scène, garder nb_representations même en mode heures
cachets_representations: (useHeuresMode && professionPick?.code !== "MET040") ? null : nbRepresentations || null,
@ -2611,6 +2617,26 @@ export default function ContractEditor({
/>
</div>
<div className="md:col-span-2">
<label className="text-xs text-muted-foreground">Autre précision durée</label>
<Textarea
rows={2}
value={autrePrecisionDuree}
onChange={(e) => setAutrePrecisionDuree(e.target.value)}
placeholder="Autre précision sur la durée du contrat"
/>
</div>
<div className="md:col-span-2">
<label className="text-xs text-muted-foreground">Autre précision salaire</label>
<Textarea
rows={2}
value={autrePrecisionSalaire}
onChange={(e) => setAutrePrecisionSalaire(e.target.value)}
placeholder="Autre précision sur le salaire"
/>
</div>
<div className="md:col-span-2">
<label className="text-xs text-muted-foreground">Définition "Cachet de répétition"</label>
<div className="relative">

View file

@ -67,6 +67,8 @@ export interface ContratCDDUData {
hebergementccn: string;
montanthebergement: string;
autreprecision: string;
autreprecision_duree: string;
autreprecision_salaire: string;
cachets: CachetsData;
// Convention collective