-- Bug corrige dans AlimentationsController::cloture() (27/07/2026) : la vente directe "Transfert
-- Bon" (transformation d'un Bon de Livraison Achat en Bon client) construisait bien une ligne
-- stocks_mouvement (source='AlimentationBL') mais ne l'inserait JAMAIS dans
-- stocks_mouvement_officiel (variable $tab_off construite puis jamais utilisee) - ces ventes
-- etaient donc invisibles dans TOUTES les statistiques (Statistiques::par_produit()/
-- statistique_annee_optimisee(), utilisees par Statistique > Graphique).
--
-- Ce script rattrape l'historique en reconstruisant les lignes manquantes a partir de
-- stocks_mouvement (deja correct, jamais touche). Idempotent (NOT EXISTS) : peut etre rejoue sans
-- creer de doublon si des lignes existent deja partiellement.
--
-- IMPORTANT : a rejouer sur TOUTES les bases clients existantes (scripts/migrate.php), pas
-- seulement en local - le bug est present dans le code depuis l'introduction de la fonctionnalite
-- "Transfert Bon", donc l'anomalie existe potentiellement sur chaque tenant ayant deja utilise
-- cette fonctionnalite.
INSERT INTO stocks_mouvement_officiel
  (journee, id_produit, melange, entre_officielle, entre, sortie_officielle, sortie, prix, tva, source, id_source)
SELECT DATE(sm.date_mouvement), sm.id_produit, 1, 0, 0, sm.sortie, sm.sortie, sm.prix, p.tva, sm.source, sm.id_source
FROM stocks_mouvement sm
LEFT JOIN stocks_produits p ON p.id = sm.id_produit
WHERE sm.source = 'AlimentationBL'
  AND NOT EXISTS (
    SELECT 1 FROM stocks_mouvement_officiel mo
    WHERE mo.source = 'AlimentationBL' AND mo.id_source = sm.id_source AND mo.id_produit = sm.id_produit
  );
