fix: Gérer exclusivité entre salaire global et salaires par date

- Dans prefill formulaire édition : ne pas afficher montant si salaires_par_date existe
- Dans PATCH : envoyer null pour l'un quand l'autre est défini
- Dans API : effacer montant quand salaires_par_date est défini (et vice-versa)
- Évite d'avoir les deux modes en même temps dans la base
- Le formulaire affiche maintenant correctement les salaires par date à la modification
This commit is contained in:
odentas 2025-12-16 21:26:50 +01:00
parent 7f7441c7a2
commit c19129ebd9
2 changed files with 28 additions and 8 deletions

View file

@ -79,7 +79,8 @@ export default function EditFormulairePage() {
(data.type_salaire as any) === "Minimum conventionnel"
? (data.type_salaire as any)
: "Brut",
montant: data.salaire_demande ? Number(data.salaire_demande) : "",
// Si salaires_par_date existe, ne pas mettre montant (et vice-versa)
montant: (data as any).salaires_par_date ? "" : (data.salaire_demande ? Number(data.salaire_demande) : ""),
salaires_par_date: (data as any).salaires_par_date || undefined,
reference: data.numero || undefined,
multi_mois: data.regime === "CDDU_MULTI",
@ -114,8 +115,9 @@ export default function EditFormulairePage() {
jours_travail: payload.jours_travail,
jours_travail_non_artiste: payload.jours_travail_non_artiste,
type_salaire: payload.type_salaire,
montant: payload.montant,
salaires_par_date: payload.salaires_par_date,
// Si salaires_par_date est fourni, effacer montant (et vice-versa)
montant: payload.salaires_par_date ? null : payload.montant,
salaires_par_date: payload.salaires_par_date || null,
panier_repas: payload.panier_repas,
reference: payload.reference,
notes: payload.notes,

View file

@ -405,13 +405,31 @@ export async function PATCH(req: NextRequest, { params }: { params: { id: string
if (requestBody.type_salaire !== undefined) {
supabaseData.type_salaire = requestBody.type_salaire;
}
if (requestBody.montant !== undefined) {
supabaseData.gross_pay = requestBody.montant;
supabaseData.salaire = requestBody.montant;
}
// Gestion exclusive : soit montant, soit salaires_par_date
if (requestBody.salaires_par_date !== undefined) {
supabaseData.salaires_par_date = requestBody.salaires_par_date;
if (requestBody.salaires_par_date === null) {
// On supprime salaires_par_date
supabaseData.salaires_par_date = null;
} else {
// On définit salaires_par_date et on efface montant
supabaseData.salaires_par_date = requestBody.salaires_par_date;
supabaseData.gross_pay = null;
supabaseData.salaire = null;
}
} else if (requestBody.montant !== undefined) {
if (requestBody.montant === null) {
// On supprime montant
supabaseData.gross_pay = null;
supabaseData.salaire = null;
} else {
// On définit montant et on efface salaires_par_date
supabaseData.gross_pay = requestBody.montant;
supabaseData.salaire = requestBody.montant;
supabaseData.salaires_par_date = null;
}
}
if (requestBody.panier_repas !== undefined) {
supabaseData.paniers_repas = requestBody.panier_repas;
}