-- ╔════════════════════════════════════════════════════════════════════════════╗
-- ║  SCÉNARIOS DE TEST - FRAIS STRIPE CORRIGÉS                                 ║
-- ║  Date: 15 Janvier 2026                                                      ║
-- ║  Objectif: Vérifier que les frais Stripe sont correctement déduits         ║
-- ╚════════════════════════════════════════════════════════════════════════════╝

-- ═══════════════════════════════════════════════════════════════════════════════
-- FORMULE STRIPE EU: 1.4% + 0.25€
-- ═══════════════════════════════════════════════════════════════════════════════

/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 1: COMMANDE FOOD (2% commission)                  ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Client commande un plat à 50€ (subtotal)                                   ║
║  - Frais de service client: 2.50€ (service_fee)                               ║
║  - Commission food: 2%                                                         ║
║  - Paiement par carte (Stripe)                                                ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie total      = 50€ + 2.50€ = 52.50€                          │  ║
║  │  Stripe prélève         = 52.50 × 1.4% + 0.25€ = 0.99€                  │  ║
║  │  Admin reçoit sur Stripe= 52.50€ - 0.99€ = 51.51€                       │  ║
║  │                                                                         │  ║
║  │  Commission admin (2%)  = 50€ × 2% = 1.00€                              │  ║
║  │  Frais Stripe (sur 50€) = 50€ × 1.4% + 0.25€ = 0.95€                    │  ║
║  │                                                                         │  ║
║  │  Prestataire reçoit     = 50€ - 0.95€ - 1.00€ = 48.05€                  │  ║
║  │  Admin garde            = 1.00€ (commission) + 2.50€ (service_fee)      │  ║
║  │                         = 3.50€                                         │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Food Order
SELECT 
    'FOOD ORDER TEST' AS scenario,
    50.00 AS subtotal,
    ROUND(50.00 * 0.014 + 0.25, 2) AS stripe_fees,
    ROUND(50.00 * 0.02, 2) AS platform_fee_2pct,
    ROUND(50.00 - (50.00 * 0.014 + 0.25) - (50.00 * 0.02), 2) AS prestataire_payout;

-- Résultat attendu: stripe_fees=0.95€, platform_fee=1.00€, prestataire_payout=48.05€


/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 2: VENTE FLASH (0% commission)                    ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Client achète un produit vente flash à 25€                                 ║
║  - Commission urgent_sale: 0% (désactivée)                                    ║
║  - Paiement par carte (Stripe)                                                ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie            = 25€                                           │  ║
║  │  Stripe prélève         = 25€ × 1.4% + 0.25€ = 0.60€                    │  ║
║  │  Admin reçoit sur Stripe= 25€ - 0.60€ = 24.40€                          │  ║
║  │                                                                         │  ║
║  │  Commission admin (0%)  = 0€                                            │  ║
║  │  Frais Stripe           = 0.60€                                         │  ║
║  │                                                                         │  ║
║  │  Prestataire reçoit     = 25€ - 0.60€ - 0€ = 24.40€ ✓                   │  ║
║  │  Admin garde            = 0€                                            │  ║
║  │                                                                         │  ║
║  │  ⚠️ AVANT BUG: Presta recevait 25€, admin perdait 0.60€                 │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Vente Flash
SELECT 
    'VENTE FLASH TEST' AS scenario,
    25.00 AS total_amount,
    ROUND(25.00 * 0.014 + 0.25, 2) AS stripe_fees,
    0.00 AS commission_0pct,
    ROUND(25.00 - (25.00 * 0.014 + 0.25) - 0, 2) AS prestataire_amount;

-- Résultat attendu: stripe_fees=0.60€, commission=0€, prestataire_amount=24.40€


/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 3: SERVICE/RÉSERVATION (10% commission)           ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Client réserve un service à 100€                                           ║
║  - Commission services: 10%                                                    ║
║  - Paiement par carte (Stripe)                                                ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie            = 100€                                          │  ║
║  │  Stripe prélève         = 100€ × 1.4% + 0.25€ = 1.65€                   │  ║
║  │  Admin reçoit sur Stripe= 100€ - 1.65€ = 98.35€                         │  ║
║  │                                                                         │  ║
║  │  Commission admin (10%) = 100€ × 10% = 10€                              │  ║
║  │  Frais Stripe           = 1.65€                                         │  ║
║  │                                                                         │  ║
║  │  Prestataire reçoit     = 100€ - 1.65€ - 10€ = 88.35€ ✓                 │  ║
║  │  Admin garde            = 10€ (commission)                              │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Service/Booking
SELECT 
    'SERVICE BOOKING TEST' AS scenario,
    100.00 AS total_amount,
    ROUND(100.00 * 0.014 + 0.25, 2) AS stripe_fees,
    ROUND(100.00 * 0.10, 2) AS commission_10pct,
    ROUND(100.00 - (100.00 * 0.014 + 0.25) - (100.00 * 0.10), 2) AS prestataire_amount;

-- Résultat attendu: stripe_fees=1.65€, commission=10€, prestataire_amount=88.35€


/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 4: LOCATION ÉQUIPEMENT (0% commission)            ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Client loue un équipement: 80€ (location) + 50€ (caution)                  ║
║  - Commission rentals: 0% (désactivée)                                        ║
║  - Paiement par carte (Stripe)                                                ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie total      = 80€ + 50€ = 130€                              │  ║
║  │  Stripe prélève         = 130€ × 1.4% + 0.25€ = 2.07€                   │  ║
║  │  Admin reçoit sur Stripe= 130€ - 2.07€ = 127.93€                        │  ║
║  │                                                                         │  ║
║  │  Commission admin (0%)  = 0€                                            │  ║
║  │  Frais Stripe sur location = 80€ × 1.4% + 0.25€ = 1.37€                 │  ║
║  │                                                                         │  ║
║  │  Prestataire reçoit (location) = 80€ - 1.37€ - 0€ = 78.63€ ✓           │  ║
║  │  Caution: 50€ (bloquée, restituée au client si bon état)               │  ║
║  │                                                                         │  ║
║  │  ⚠️ AVANT BUG: Presta recevait 80€, admin perdait 1.37€                 │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Location Équipement
SELECT 
    'LOCATION ÉQUIPEMENT TEST' AS scenario,
    80.00 AS rental_amount,
    50.00 AS security_deposit,
    ROUND(80.00 * 0.014 + 0.25, 2) AS stripe_fees_on_rental,
    0.00 AS commission_0pct,
    ROUND(80.00 - (80.00 * 0.014 + 0.25) - 0, 2) AS prestataire_rental_payout;

-- Résultat attendu: stripe_fees=1.37€, commission=0€, prestataire_payout=78.63€


/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 5: LIVRAISON FOOD (Livreur)                       ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Commande food avec livraison                                               ║
║  - Subtotal plats: 30€                                                        ║
║  - Frais de livraison: 4€ (delivery_fee)                                      ║
║  - Commission food: 2%                                                         ║
║  - Paiement par carte (Stripe)                                                ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie total      = 30€ + 4€ = 34€                                │  ║
║  │  Stripe prélève total   = 34€ × 1.4% + 0.25€ = 0.73€                    │  ║
║  │  Admin reçoit sur Stripe= 34€ - 0.73€ = 33.27€                          │  ║
║  │                                                                         │  ║
║  │  === PRESTATAIRE (sur subtotal 30€) ===                                 │  ║
║  │  Stripe sur 30€         = 30€ × 1.4% + 0.25€ = 0.67€                    │  ║
║  │  Commission 2%          = 30€ × 2% = 0.60€                              │  ║
║  │  Prestataire reçoit     = 30€ - 0.67€ - 0.60€ = 28.73€ ✓               │  ║
║  │                                                                         │  ║
║  │  === LIVREUR (sur delivery_fee 4€) ===                                  │  ║
║  │  Stripe sur 4€          = 4€ × 1.4% + 0.25€ = 0.31€                     │  ║
║  │  Commission livreur     = 0€                                            │  ║
║  │  Livreur reçoit         = 4€ - 0.31€ - 0€ = 3.69€ ✓                     │  ║
║  │                                                                         │  ║
║  │  === ADMIN ===                                                          │  ║
║  │  Commission food        = 0.60€                                         │  ║
║  │  (service_fee si applicable)                                            │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Livraison Food
SELECT 
    'LIVRAISON FOOD TEST' AS scenario,
    30.00 AS subtotal,
    4.00 AS delivery_fee,
    -- Prestataire
    ROUND(30.00 * 0.014 + 0.25, 2) AS stripe_fees_presta,
    ROUND(30.00 * 0.02, 2) AS commission_2pct,
    ROUND(30.00 - (30.00 * 0.014 + 0.25) - (30.00 * 0.02), 2) AS prestataire_payout,
    -- Livreur
    ROUND(4.00 * 0.014 + 0.25, 2) AS stripe_fees_driver,
    ROUND(4.00 - (4.00 * 0.014 + 0.25), 2) AS driver_payout;

-- Résultat attendu: 
-- presta: stripe=0.67€, commission=0.60€, payout=28.73€
-- driver: stripe=0.31€, payout=3.69€


/*
╔════════════════════════════════════════════════════════════════════════════════╗
║                     SCÉNARIO 6: FOOD ORDER CASH (Pas de Stripe)                ║
╠════════════════════════════════════════════════════════════════════════════════╣
║                                                                                ║
║  CONTEXTE:                                                                     ║
║  - Client paie en espèces au prestataire                                      ║
║  - Subtotal plats: 20€                                                        ║
║  - Commission food: 2%                                                         ║
║  - PAS de frais Stripe (cash)                                                 ║
║                                                                                ║
║  CALCUL:                                                                       ║
║  ┌─────────────────────────────────────────────────────────────────────────┐  ║
║  │  Client paie            = 20€ (en main propre)                          │  ║
║  │  Stripe prélève         = 0€ (pas de paiement carte)                    │  ║
║  │                                                                         │  ║
║  │  Commission admin (2%)  = 20€ × 2% = 0.40€                              │  ║
║  │  Frais Stripe           = 0€                                            │  ║
║  │                                                                         │  ║
║  │  Prestataire garde      = 20€ - 0€ - 0.40€ = 19.60€ ✓                   │  ║
║  │  Admin récupère         = 0.40€ (via facturation mensuelle)             │  ║
║  └─────────────────────────────────────────────────────────────────────────┘  ║
║                                                                                ║
║  VÉRIFICATION SQL:                                                             ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/

-- Test Food Cash
SELECT 
    'FOOD CASH TEST' AS scenario,
    20.00 AS subtotal,
    0.00 AS stripe_fees_cash,
    ROUND(20.00 * 0.02, 2) AS commission_2pct,
    ROUND(20.00 - 0 - (20.00 * 0.02), 2) AS prestataire_keeps;

-- Résultat attendu: stripe_fees=0€, commission=0.40€, prestataire=19.60€


-- ═══════════════════════════════════════════════════════════════════════════════
-- TABLEAU RÉCAPITULATIF DE TOUS LES SCÉNARIOS
-- ═══════════════════════════════════════════════════════════════════════════════

SELECT 'FOOD 50€' AS scenario, 50.00 AS montant, '2%' AS commission, 
       ROUND(50*0.014+0.25,2) AS stripe, ROUND(50*0.02,2) AS comm,
       ROUND(50-(50*0.014+0.25)-(50*0.02),2) AS presta_recoit
UNION ALL
SELECT 'VENTE FLASH 25€', 25.00, '0%',
       ROUND(25*0.014+0.25,2), 0,
       ROUND(25-(25*0.014+0.25)-0,2)
UNION ALL
SELECT 'SERVICE 100€', 100.00, '10%',
       ROUND(100*0.014+0.25,2), ROUND(100*0.10,2),
       ROUND(100-(100*0.014+0.25)-(100*0.10),2)
UNION ALL
SELECT 'LOCATION 80€', 80.00, '0%',
       ROUND(80*0.014+0.25,2), 0,
       ROUND(80-(80*0.014+0.25)-0,2)
UNION ALL
SELECT 'LIVRAISON 4€', 4.00, '0%',
       ROUND(4*0.014+0.25,2), 0,
       ROUND(4-(4*0.014+0.25)-0,2)
UNION ALL
SELECT 'FOOD CASH 20€', 20.00, '2%',
       0, ROUND(20*0.02,2),
       ROUND(20-0-(20*0.02),2);

/*
╔════════════════════════════════════════════════════════════════════════════════╗
║  RÉSULTAT ATTENDU DU TABLEAU:                                                  ║
╠════════════════════════════════════════════════════════════════════════════════╣
║  scenario        │ montant │ commission │ stripe │ comm  │ presta_recoit       ║
║  ────────────────┼─────────┼────────────┼────────┼───────┼─────────────────────║
║  FOOD 50€        │  50.00  │    2%      │  0.95  │  1.00 │      48.05          ║
║  VENTE FLASH 25€ │  25.00  │    0%      │  0.60  │  0.00 │      24.40          ║
║  SERVICE 100€    │ 100.00  │   10%      │  1.65  │ 10.00 │      88.35          ║
║  LOCATION 80€    │  80.00  │    0%      │  1.37  │  0.00 │      78.63          ║
║  LIVRAISON 4€    │   4.00  │    0%      │  0.31  │  0.00 │       3.69          ║
║  FOOD CASH 20€   │  20.00  │    2%      │  0.00  │  0.40 │      19.60          ║
╚════════════════════════════════════════════════════════════════════════════════╝
*/
