- Création de la page /staff/contrats/saisie-temps-reel avec tableau éditable - Ajout des colonnes jours_representations et jours_repetitions dans l'API - Construction intelligente du TT Contractuel (concaténation des sources) - Ajout de la colonne temps_reel_traite pour marquer les contrats traités - Interface avec filtres (année, mois, organisation, recherche) - Tri par date/salarié - Édition inline avec auto-save via API - Checkbox pour marquer comme traité (masque automatiquement la ligne) - Toggle pour afficher/masquer les contrats traités - Migration SQL pour la colonne temps_reel_traite - Ajout du menu 'Temps de travail réel' dans la sidebar - Logs de débogage pour le suivi des sauvegardes
4.2 KiB
Temps de Travail Réel - Fonctionnalité
📋 Contexte
Depuis la migration vers le nouvel Espace Paie, le système de saisie des heures et jours de travail a changé. Les données affichées dans la card "Temps de travail réel" sur la page client contrats/[id] n'étaient plus correctement alimentées.
✅ Solution Implémentée
1. Nouvelles Colonnes Supabase
Ajout de colonnes dédiées dans cddu_contracts pour stocker le temps de travail réel (distinct des données contractuelles) :
| Colonne | Type | Description |
|---|---|---|
jours_travail_reel |
TEXT | Jours de travail réels (artiste) |
jours_travail_non_artiste_reel |
TEXT | Jours de travail réels (technicien) |
nb_representations_reel |
INTEGER | Nombre réel de représentations |
dates_representations_reel |
TEXT | Dates réelles des représentations |
nb_services_repetitions_reel |
INTEGER | Nombre réel de services de répétition |
nb_heures_repetitions_reel |
NUMERIC(10,2) | Heures réelles de répétition |
dates_repetitions_reel |
TEXT | Dates réelles des répétitions |
nb_heures_annexes_reel |
NUMERIC(10,2) | Heures réelles Annexes 8 |
nb_cachets_aem_reel |
INTEGER | Cachets AEM réels |
nb_heures_aem_reel |
NUMERIC(10,2) | Heures AEM réelles |
Note importante : Ces colonnes sont purement informatives pour le client et ne sont pas utilisées pour la génération du PDF du contrat via PDFMonkey.
2. Interface Staff (staff/contrats/[id])
Ajout d'une sous-section "Temps de travail réel" dans la card "Temps de travail" :
- Emplacement : Après le séparateur, en bas de la card "Temps de travail"
- Indication visuelle : Message clair indiquant que c'est informatif pour le client
- Champs disponibles :
- Jours travaillés (artiste)
- Jours travaillés (technicien)
- Nombre de représentations
- Dates de représentations
- Nombre de services répétitions
- Nombre d'heures répétitions
- Dates de répétitions
- Nombre d'heures Annexes 8
- Nombre de cachets AEM
- Nombre d'heures AEM
3. Affichage Client (contrats/[id])
La card "Temps de travail réel" affiche maintenant les données des colonnes *_reel :
<Section title="Temps de travail réel" icon={Calendar}>
<Field label="Jours travaillés" value={data.jours_travail_reel} />
<Field label="Nbre de représentations" value={data.nb_representations_reel} />
// etc.
</Section>
4. API Mapping
L'API /api/contrats/[id] mappe automatiquement ces nouvelles colonnes :
nb_representations_reel: cddu.nb_representations_reel ? Number(cddu.nb_representations_reel) : undefined,
nb_services_repetitions_reel: cddu.nb_services_repetitions_reel ? Number(cddu.nb_services_repetitions_reel) : undefined,
// etc.
🚀 Migration SQL
Exécuter le script de migration :
# Via Supabase Dashboard > SQL Editor
# Ou via CLI supabase
supabase db execute -f migrations/add_temps_travail_reel_columns.sql
📝 Utilisation
- Staff : Aller sur
staff/contrats/[id] - Descendre jusqu'à la card "Temps de travail"
- Remplir la sous-section "Temps de travail réel (informatif client)"
- Cliquer sur Sauvegarder
- Client : Les données apparaissent immédiatement dans
contrats/[id]> "Temps de travail réel"
⚠️ Points d'Attention
- ✅ Ces données sont indépendantes des données contractuelles (utilisées pour le PDF)
- ✅ Elles ne sont pas envoyées à PDFMonkey
- ✅ Elles sont purement informatives pour le client
- ✅ Les anciennes colonnes (
jours_travail,nb_representations, etc.) restent utilisées pour le contrat PDF
📂 Fichiers Modifiés
| Fichier | Modifications |
|---|---|
migrations/add_temps_travail_reel_columns.sql |
Création des colonnes |
components/staff/contracts/ContractEditor.tsx |
Ajout UI + états + sauvegarde |
app/api/contrats/[id]/route.ts |
Mapping API |
app/(app)/contrats/[id]/page.tsx |
Affichage client |
✅ Tests
- Exécuter la migration SQL sur Supabase
- Vérifier que les colonnes sont créées
- Tester la saisie dans staff/contrats/[id]
- Vérifier l'affichage dans contrats/[id]
- Vérifier que le PDF du contrat n'est pas impacté