-- 019_payment_in_progress.sql
-- Nouvelle étape "Paiement en cours" dans le pipeline Bitrix
-- + date d'opération sur la preuve de virement franchisé
-- + colonnes de déduplication pour les notifications J+30
-- Idempotente

-- 1. Ajouter payment_in_progress aux contraintes de statut
ALTER TABLE dossiers DROP CONSTRAINT IF EXISTS chk_dossiers_status;
ALTER TABLE dossiers ADD CONSTRAINT chk_dossiers_status
    CHECK (status IN ('received','in_study','quoted','signed','payment_in_progress','paid','close'));

ALTER TABLE dossier_status_history DROP CONSTRAINT IF EXISTS chk_dossier_status_history_status;
ALTER TABLE dossier_status_history ADD CONSTRAINT chk_dossier_status_history_status
    CHECK (status IN ('received','in_study','quoted','signed','payment_in_progress','paid','close'));

-- 2. Timestamp de passage en payment_in_progress (déclencheur du délai 30j)
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS payment_in_progress_at TIMESTAMP NULL;
COMMENT ON COLUMN dossiers.payment_in_progress_at IS 'Date de passage en étape Paiement en cours — déclenche le délai de 30j';

-- 3. Date d'opération bancaire fournie par le franchisé avec la preuve de virement
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS franchisee_payment_proof_date DATE NULL;
COMMENT ON COLUMN dossiers.franchisee_payment_proof_date IS 'Date d opération bancaire déclarée par le franchisé lors du dépôt de preuve';

-- 4. Déduplication notifications urgentes J+30
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS franchisee_urgent_notified_at TIMESTAMP NULL;
COMMENT ON COLUMN dossiers.franchisee_urgent_notified_at IS 'Date de la première notification urgente franchisé après dépassement J+30';

ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS ambassador_overdue_notified_at TIMESTAMP NULL;
COMMENT ON COLUMN dossiers.ambassador_overdue_notified_at IS 'Date à laquelle les ambassadeurs ont été notifiés du dépassement J+30';

-- 5. Déduplication notification super_admin sur preuve déposée
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS admin_proof_notified_at TIMESTAMP NULL;
COMMENT ON COLUMN dossiers.admin_proof_notified_at IS 'Date à laquelle les super_admins ont été notifiés du dépôt de preuve';

-- 6. Validation du versement par le super_admin
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS payment_validated_by_user_id INTEGER NULL REFERENCES users(id) ON DELETE SET NULL;
ALTER TABLE dossiers ADD COLUMN IF NOT EXISTS payment_validated_at TIMESTAMP NULL;
COMMENT ON COLUMN dossiers.payment_validated_by_user_id IS 'Super_admin ayant validé le versement';
COMMENT ON COLUMN dossiers.payment_validated_at IS 'Date de validation du versement par le super_admin';

-- Vérification
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'dossiers'
  AND column_name IN (
    'payment_in_progress_at',
    'franchisee_payment_proof_date',
    'franchisee_urgent_notified_at',
    'ambassador_overdue_notified_at',
    'admin_proof_notified_at',
    'payment_validated_by_user_id',
    'payment_validated_at'
  )
ORDER BY column_name;
