<?php
session_start();
require_once __DIR__ . "/../../config/db.php";

try {
    $user_id = $_SESSION['user']['id'] ?? null;
    if (!$user_id) throw new Exception("Utilisateur non authentifié");
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') throw new Exception("Méthode non autorisée");

    $produit_id = (int)($_POST['produit_id'] ?? 0);
    $quantite   = (float)($_POST['quantite'] ?? 0);

    if ($produit_id <= 0 || $quantite <= 0) throw new Exception("Données invalides");

    // Vérifier produit
    $stmt = $conn->prepare("SELECT id FROM produits WHERE id = ?");
    $stmt->execute([$produit_id]);
    if (!$stmt->fetch()) throw new Exception("Produit invalide");

    $conn->beginTransaction();

    // Ajouter produit fini
    $stmt = $conn->prepare("INSERT INTO produits_finis (produit_id, quantite, created_at) VALUES (?, ?, NOW())");
    $stmt->execute([$produit_id, $quantite]);
    $fini_id = $conn->lastInsertId();

    // Stock
    $check = $conn->prepare("SELECT id, quantite FROM stock_depot WHERE produit_id = ?");
    $check->execute([$produit_id]);
    $stock = $check->fetch(PDO::FETCH_ASSOC);
    if ($stock) {
        $conn->prepare("UPDATE stock_depot SET quantite = quantite + ? WHERE id = ?")->execute([$quantite, $stock['id']]);
    } else {
        $conn->prepare("INSERT INTO stock_depot (produit_id, quantite) VALUES (?, ?)")->execute([$produit_id, $quantite]);
    }

    // Mouvement stock
    $conn->prepare("
        INSERT INTO mouvements_stock
        (produit_id, quantite, type, reference_table, reference_id, utilisateur_id, date_mouvement)
        VALUES (?, ?, 'produit_fini', 'produits_finis', ?, ?, NOW())
    ")->execute([$produit_id, $quantite, $fini_id, $user_id]);

    $conn->commit();

} catch (Exception $e) {
    if ($conn->inTransaction()) $conn->rollBack();
    die("❌ Erreur Produit Fini : " . $e->getMessage());
}

header("Location: /eagle_client_istanbulcups/index.php?page=produits-finis");
exit;
