76 lines
2.9 KiB
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;
|