- employee_matricule - production_name - numero_avenant - date_avenant - type_avenant - motif_avenant Corrige l'erreur de build Vercel.
144 lines
4.3 KiB
TypeScript
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;
|
|
}
|