espace-paie-odentas/TEMPS_TRAVAIL_REEL.md
odentas 965b1fb9cd feat: Ajouter interface de saisie en masse du temps de travail réel
- 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
2025-11-28 12:31:02 +01:00

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

  1. Staff : Aller sur staff/contrats/[id]
  2. Descendre jusqu'à la card "Temps de travail"
  3. Remplir la sous-section "Temps de travail réel (informatif client)"
  4. Cliquer sur Sauvegarder
  5. 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é