espace-paie-odentas/supabase/migrations/add_salaires_payes_column.sql

76 lines
2.9 KiB
SQL

-- Migration pour ajouter les colonnes manquantes à salary_transfers
-- Date: 2025-01-14
-- 1. Ajouter la colonne salaires_payes si elle n'existe pas
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'salary_transfers'
AND column_name = 'salaires_payes'
) THEN
ALTER TABLE salary_transfers
ADD COLUMN salaires_payes BOOLEAN DEFAULT false;
COMMENT ON COLUMN salary_transfers.salaires_payes IS 'Indique si les salaires ont été payés aux salariés';
END IF;
END $$;
-- 2. Vérifier que la colonne num_appel existe
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'salary_transfers'
AND column_name = 'num_appel'
) THEN
ALTER TABLE salary_transfers
ADD COLUMN num_appel TEXT;
COMMENT ON COLUMN salary_transfers.num_appel IS 'Numéro d''appel de fonds (ex: 00001)';
END IF;
END $$;
-- 3. Vérifier que la colonne callsheet_date existe (pour la génération PDF)
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'salary_transfers'
AND column_name = 'callsheet_date'
) THEN
ALTER TABLE salary_transfers
ADD COLUMN callsheet_date TIMESTAMP WITH TIME ZONE;
COMMENT ON COLUMN salary_transfers.callsheet_date IS 'Date de génération de la feuille d''appel';
END IF;
END $$;
-- 4. Ajouter des commentaires pour clarifier la logique des colonnes existantes
COMMENT ON COLUMN salary_transfers.notification_sent IS 'Indique si la notification a été envoyée au client';
COMMENT ON COLUMN salary_transfers.notification_ok IS 'Indique si le paiement du client a été reçu (ancien: statut de notification)';
COMMENT ON COLUMN salary_transfers.client_wire_received_at IS 'Date de réception du virement client (optionnelle)';
-- 5. Créer un index sur salaires_payes pour améliorer les performances des filtres
CREATE INDEX IF NOT EXISTS idx_salary_transfers_salaires_payes
ON salary_transfers(salaires_payes);
-- 6. Créer un index sur notification_ok pour les filtres
CREATE INDEX IF NOT EXISTS idx_salary_transfers_notification_ok
ON salary_transfers(notification_ok);
-- 7. Mettre à jour les données existantes (optionnel)
-- Si vous voulez que tous les virements avec une date de réception aient notification_ok à true
UPDATE salary_transfers
SET notification_ok = true
WHERE client_wire_received_at IS NOT NULL
AND notification_ok IS NULL;
-- Afficher un résumé
SELECT
COUNT(*) as total_transfers,
COUNT(CASE WHEN notification_sent = true THEN 1 END) as notifications_sent,
COUNT(CASE WHEN notification_ok = true THEN 1 END) as paiements_recus,
COUNT(CASE WHEN salaires_payes = true THEN 1 END) as salaires_payes,
COUNT(CASE WHEN client_wire_received_at IS NOT NULL THEN 1 END) as avec_date_reception
FROM salary_transfers;