espace-paie-odentas/VIREMENTS_SALAIRES_LOGIQUE_CLARIFIEE.md

5.6 KiB

Clarification de la logique des virements salaires

Date : 14 octobre 2025

Contexte

Les champs de la table salary_transfers ont été clarifiés pour mieux refléter le cycle de vie d'un virement :

Nouvelle logique des champs

1. notification_sent (boolean)

  • Signification : La notification a été envoyée au client
  • Valeur par défaut : false
  • Quand passe à true : Lors de l'appel à l'API /api/staff/virements-salaires/[id]/notify-client
  • Affichage : Badge "✓ Envoyée" / "Non envoyée"

2. notification_ok (boolean) - NOUVELLE SIGNIFICATION

  • Ancienne signification : Statut de la notification (OK / Erreur)
  • Nouvelle signification : Paiement client reçu (Oui / Non)
  • Valeur par défaut : false
  • Quand passe à true :
    • Manuellement par le staff via le modal d'édition
    • Automatiquement quand on coche "Paiement client reçu"
    • Via le bouton "Marquer comme reçu"
  • Affichage : Badge "✓ Reçu" / "Non reçu"

3. client_wire_received_at (timestamp, optionnel)

  • Signification : Date de réception du virement client
  • Valeur par défaut : null
  • Quand renseigné :
    • Automatiquement à la date du jour lors de la cochage de "Paiement client reçu"
    • Manuellement modifiable dans le formulaire d'édition
    • Peut être effacé
  • Affichage : Date formatée ou "—" si non renseignée

4. salaires_payes (boolean) - NOUVEAU CHAMP

  • Signification : Les salaires ont été payés aux salariés
  • Valeur par défaut : false
  • Quand passe à true :
    • Manuellement par le staff via le modal d'édition
    • Via le bouton "Marquer comme payés"
  • Affichage : Badge "✓ Payés" / "Non payés"

5. num_appel (text)

  • Signification : Numéro d'appel de fonds (ex: "00001")
  • Correction : Le champ est maintenant pris en compte lors de la création d'un virement
  • Affichage : Police monospace dans le tableau et le modal

Cycle de vie d'un virement

1. CRÉATION
   └─> num_appel renseigné
   └─> notification_sent = false
   └─> notification_ok = false
   └─> salaires_payes = false

2. GÉNÉRATION PDF
   └─> callsheet_url renseigné

3. NOTIFICATION CLIENT
   └─> notification_sent = true
   └─> Email envoyé au client

4. RÉCEPTION PAIEMENT CLIENT
   └─> notification_ok = true
   └─> client_wire_received_at = date (optionnel)

5. PAIEMENT DES SALAIRES
   └─> salaires_payes = true

Interface utilisateur

Affichage en lecture (Modal)

Le modal affiche maintenant 3 sections distinctes :

  1. Notification client

    • Statut : Envoyée / Non envoyée
  2. Paiement client reçu

    • Statut : Reçu / Non reçu
    • Date : (si renseignée)
    • Bouton rapide : "Marquer comme reçu"
  3. Salaires payés

    • Statut : Payés / Non payés
    • Bouton rapide : "Marquer comme payés"

Formulaire d'édition

Le formulaire permet maintenant de modifier :

  1. Paiement client

    • ☑ Checkbox "Paiement client reçu"
    • 📅 Date de réception (optionnelle)
    • Bouton pour effacer la date
  2. Salaires

    • ☑ Checkbox "Salaires payés aux salariés"

Tableau principal

Les colonnes ont été réorganisées :

Colonne Contenu
Notification Badge "✓ Envoyée" / "Non envoyée"
Paiement client Badge "✓ Reçu" / "Non reçu" + date
Salaires payés Badge "✓ Payés" / "Non payés"

Filtres

Nouveaux filtres disponibles :

  • Notification envoyée : Oui / Non
  • Paiement client reçu : Oui / Non
  • Date virement client : Avec date / Sans date
  • Salaires payés : Oui / Non (NOUVEAU)

API

Création - POST /api/staff/virements-salaires/create

Champs pris en compte :

  • num_appel (corrigé)
  • salaires_payes (nouveau, défaut: false)

Mise à jour - PATCH /api/staff/virements-salaires/[id]

Nouveaux champs acceptés :

  • notification_ok : boolean
  • salaires_payes : boolean

Migration base de données

Exécuter le fichier :

supabase/migrations/add_salaires_payes_column.sql

Ce script :

  • Ajoute la colonne salaires_payes
  • Vérifie l'existence de num_appel
  • Ajoute des commentaires pour clarifier la logique
  • Crée des index pour améliorer les performances
  • Met à jour les données existantes (notification_ok pour les virements avec date)

Corrections apportées

1. Notification liée à notification_sent

Avant : Confusion entre "notification envoyée" et "notification OK" Après : notification_sent = notification envoyée (clair)

2. Virement reçu lié à notification_ok + client_wire_received_at

Avant : notification_ok = statut erreur/OK de la notification Après : notification_ok = paiement client reçu (oui/non), client_wire_received_at = date (optionnelle)

3. Paiement modifiable avec ou sans date

Avant : Obligation de mettre une date pour marquer comme reçu Après : Checkbox séparée + date optionnelle

4. Salaires payés lié à salaires_payes

Avant : Pas de champ dédié Après : Nouveau champ salaires_payes (boolean)

5. Numéro d'appel pris en compte à la création

Avant : num_appel uniquement en modification Après : num_appel pris en compte dès la création

Tests recommandés

  1. Créer un nouveau virement avec num_appel
  2. Marquer le paiement client comme reçu (avec et sans date)
  3. Marquer les salaires comme payés
  4. Vérifier les filtres fonctionnent correctement
  5. Tester les boutons rapides "Marquer comme reçu" et "Marquer comme payés"
  6. Vérifier l'affichage dans le tableau principal