espace-paie-odentas/types/amendments.ts
odentas 69cb2c5a0a fix: Ajouter champs manquants au type Amendment
- employee_matricule
- production_name
- numero_avenant
- date_avenant
- type_avenant
- motif_avenant

Corrige l'erreur de build Vercel.
2025-11-05 18:32:49 +01:00

144 lines
4.3 KiB
TypeScript

// Types pour la gestion des avenants aux contrats de travail
export type AmendmentElementType =
| "objet" // Objet du contrat (profession, production)
| "duree" // Durée de l'engagement (dates, nb repré/répét)
| "lieu_horaire" // Lieu et horaires
| "remuneration"; // Rémunération
export type ContractType = "CDDU" | "RG";
export type AmendmentStatus =
| "draft" // Brouillon
| "pending" // En attente de signature
| "signed" // Signé
| "cancelled"; // Annulé
// Données de l'avenant à l'objet du contrat
export interface AmendmentObjetData {
profession_code?: string;
profession_label?: string;
production_name?: string;
production_numero_objet?: string;
}
// Données de l'avenant à la durée
export interface AmendmentDureeData {
date_debut?: string; // YYYY-MM-DD
date_fin?: string; // YYYY-MM-DD
nb_representations?: number;
nb_repetitions?: number;
nb_heures?: number; // Pour techniciens
heures_repetitions?: number; // Heures totales pour répétitions (artistes)
minutes_repetitions?: string; // Minutes pour répétitions: "0" ou "30"
dates_representations?: string;
dates_repetitions?: string;
dates_repetitions_heures?: string; // Heures de répétition par jour (format texte)
jours_travail?: string;
}
// Données de l'avenant au lieu et horaires
export interface AmendmentLieuHoraireData {
lieu?: string;
horaires?: string;
adresse?: string;
}
// Données de l'avenant à la rémunération
export interface AmendmentRemunerationData {
gross_pay?: number;
precisions_salaire?: string;
type_salaire?: "Brut" | "Net avant PAS" | "Coût total employeur" | "Minimum conventionnel";
}
// Structure complète d'un avenant
export interface Amendment {
id?: string;
numero_avenant?: string; // Numéro de l'avenant (ex: AVE-001)
contract_id: string;
contract_number?: string;
employee_name?: string;
employee_matricule?: string;
organization_name?: string;
production_name?: string;
// Métadonnées
date_effet: string; // Date d'effet de l'avenant (YYYY-MM-DD)
date_avenant?: string; // Date de signature de l'avenant (YYYY-MM-DD)
date_signature?: string; // Alias pour date_avenant
type_avenant?: string; // "modification" ou "annulation"
motif_avenant?: string; // Motif de l'avenant (texte libre)
status: AmendmentStatus;
// Éléments avenantés (au moins un doit être présent)
elements: AmendmentElementType[];
// Données selon les éléments avenantés
objet_data?: AmendmentObjetData;
duree_data?: AmendmentDureeData;
lieu_horaire_data?: AmendmentLieuHoraireData;
remuneration_data?: AmendmentRemunerationData;
// Signature électronique
signature_status?: "not_sent" | "pending_employer" | "pending_employee" | "signed";
last_employer_notification_at?: string;
last_employee_notification_at?: string;
// Timestamps
created_at?: string;
updated_at?: string;
created_by?: string;
}
// Données du contrat d'origine (pour pré-remplissage)
export interface OriginalContractData {
id: string;
contract_number: string;
employee_id: string;
employee_name: string;
employee_matricule?: string;
org_id: string;
organization_name?: string;
type_de_contrat: string;
categorie_pro?: string;
// Objet
profession?: string;
production_name?: string;
numero_objet?: string;
// Durée
start_date: string;
end_date: string;
nb_representations?: number;
nb_repetitions?: number;
nb_heures?: number;
heures_repetitions?: number; // Heures totales pour répétitions (artistes)
minutes_repetitions?: string; // Minutes pour répétitions: "0" ou "30"
dates_representations?: string;
dates_repetitions?: string;
jours_travail?: string;
// Lieu
lieu_travail?: string;
// Rémunération
gross_pay?: number;
precisions_salaire?: string;
type_salaire?: string;
}
// Pour la recherche de contrats dans le modal
export interface ContractSearchResult {
id: string;
contract_number: string;
employee_name: string;
employee_matricule?: string;
organization_name?: string;
structure?: string; // L'API peut retourner 'structure' au lieu de 'organization_name'
type_de_contrat: string;
start_date: string;
end_date: string;
profession?: string;
production_name?: string;
}