<?php
// ini_set('display_errors', 1);

define("ADMIN", true);
require_once("../../common/lib.php");
require_once("../../common/define.php");
// define("TITLE_ELEMENT", 'Facture');
if(!isset($_SESSION['user'])){
    header("Location: /admin/login.php");
    exit();
}
require_once("../includes/fn_module.php");  

// Récupération des paramètres GET
$id_depot = isset($_GET['id_depot']) ? $_GET['id_depot'] : 1; // Dépôt principal, par défaut id 1
$source = isset($_GET['source']) ? $_GET['source'] : 'BE'; // Source du mouvement
$id_source = isset($_GET['id_source']) ? $_GET['id_source'] : 0; // ID de la source (par exemple, ID du BE)
$type_mouvement = isset($_GET['type_mouvement']) ? $_GET['type_mouvement'] : 'Entrée'; // Type du mouvement (Entrée ou Sortie)

// Vérifier si l'id_source existe dans la table pm_be_product
if ($source == 'BE') {
	
 // Vérifier la colonne stock_valide dans la table pm_be
        $query_be = "SELECT stock_valide FROM pm_be WHERE id = ".$id_source;
        $result_be = @$db->query($query_be);
        
        if ($result_be !== false) {
            $row_be = $result_be->fetch();
            $stock_valide = $row_be['stock_valide'];
            // $date_validation = $row_be['date_validation']; // Date de validation du BE

            // Vérifier si stock_valide est égal à 0 avant de procéder
            if ($stock_valide == 0) {	
	
	
    // Si la source est un BE, récupérer les informations du BE
    $query_fact = "SELECT * FROM pm_be_product WHERE id_be = ".$id_source;
    // echo $query_fact."<br>";

    // Vérifier si le BE existe
    $result_fact = @$db->query($query_fact);
    if($result_fact !== false){
        // $row_fact = $result_fact->fetch();
		foreach($result_fact as $row_fact){
        // Récupérer les informations du BE
        $id_produit = $row_fact['name'];
        $qte = $row_fact['qte'];
        $id_be = $row_fact['id_br']; // Récupérer l'id du BE pour vérifier stock_valide
        $id_bee = $row_fact['id_be']; // Récupérer l'id du BE pour vérifier stock_valide
        $stock_valide = 0;
        
       
                // Enregistrer le mouvement dans la table pm_mouvement_stock
                $insert_query = "INSERT INTO pm_mouvement_stock (id_depot, id_produits, qte, source, id_be, id_source, type_mouvement) 
                                 VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$source."', '".$id_bee."', '".$id_source."', '".$type_mouvement."')";
                // echo $insert_query."<br>";

                // Exécution de la requête d'insertion
                if (@$db->query($insert_query)) {
                    echo "ok 1<br>";
                } else {
                    echo "Erreur lors de l'enregistrement du mouvement de stock.";
                }
				
				
                                $update_dest_query = "INSERT INTO pm_depot_stock (id_depot, id_produits, qte, ref_id) 
                                                      VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$id_bee."') 
                                                      ON DUPLICATE KEY UPDATE qte = qte + ".$qte;
													  echo $update_dest_query."<br>";
                                @$db->query($update_dest_query);
		
		}	

// Mise à jour de stock_valide à 1 dans la table pm_be
                    $update_query = "UPDATE pm_be SET stock_valide = 1 WHERE id = ".$id_source;
					echo $update_query."<br>";
                    if (@$db->query($update_query)) {
                        // Redirection vers la page d'origine après un succès
                        header("Location: ".$_SERVER['HTTP_REFERER']);
                        exit();
                    } else {
                        echo "Erreur lors de la mise à jour de stock_valide dans la table pm_be.";
                    }


		
    } else {
        echo "Aucun BE trouvé avec cet ID dans la table pm_be_product.";
    }
	
	
				
            } else {
                // Si stock_valide n'est pas égal à 0, afficher un message avec la date de validation
                echo "Cette opération a déjà été exécutée";
            }
        } else {
            echo "Aucun BE trouvé avec cet ID dans la table pm_be.";
        }		
	
	
	
	
	
	
	
}elseif ($source == 'BS') {
	
	
 // Vérifier la colonne stock_valide dans la table pm_be
        $query_be = "SELECT stock_valide FROM pm_br WHERE id = ".$id_source;
        $result_be = @$db->query($query_be);
        
        if ($result_be !== false) {
            $row_be = $result_be->fetch();
            $stock_valide = $row_be['stock_valide'];
            // $date_validation = $row_be['date_validation']; // Date de validation du BE

            // Vérifier si stock_valide est égal à 0 avant de procéder
            if ($stock_valide == 0) {	
	
	
    // Si la source est un BE, récupérer les informations du BE
    $query_fact = "SELECT * FROM pm_br_product WHERE id_br = ".$id_source;
    // echo $query_fact."<br>";

    // Vérifier si le BE existe
    $result_fact = @$db->query($query_fact);
    if($result_fact !== false){
        // $row_fact = $result_fact->fetch();
		foreach($result_fact as $row_fact){
        // Récupérer les informations du BE
        $id_produit = $row_fact['name'];
        $qte = $row_fact['qte'];
        $id_be = $row_fact['id_br']; // Récupérer l'id du BE pour vérifier stock_valide
        $id_bee = $row_fact['id_be']; // Récupérer l'id du BE pour vérifier stock_valide
        $stock_valide = 0;
        
       
                // Enregistrer le mouvement dans la table pm_mouvement_stock
                $insert_query = "INSERT INTO pm_mouvement_stock (id_depot, id_produits, qte, source, id_be, id_source, type_mouvement) 
                                 VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$source."', '".$id_bee."', '".$id_source."', '".$type_mouvement."')";
                // echo $insert_query."<br>";

                // Exécution de la requête d'insertion
                if (@$db->query($insert_query)) {
                    echo "ok 2";
                } else {
                    echo "Erreur lors de l'enregistrement du mouvement de stock.";
                }
				
                                $update_dest_query = "INSERT INTO pm_depot_stock (id_depot, id_produits, qte, ref_id) 
                                                      VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$id_bee."') 
                                                      ON DUPLICATE KEY UPDATE qte = qte - ".$qte;
                                // @$db->query($update_dest_query);			

		
		}	

// Mise à jour de stock_valide à 1 dans la table pm_be
                    $update_query = "UPDATE pm_br SET stock_valide = 1 WHERE id = ".$id_source;
                    if (@$db->query($update_query)) {
                        // Redirection vers la page d'origine après un succès
                        header("Location: ".$_SERVER['HTTP_REFERER']);
                        exit();
                    } else {
                        echo "Erreur lors de la mise à jour de stock_valide dans la table pm_be.";
                    }


		
    } else {
        echo "Aucun BE trouvé avec cet ID dans la table pm_be_product.";
    }
	
	
				
            } else {
                // Si stock_valide n'est pas égal à 0, afficher un message avec la date de validation
                echo "Cette opération a déjà été exécutée";
            }
        } else {
            echo "Aucun BE trouvé avec cet ID dans la table pm_be.";
        }	
}elseif ($source == 'BF') {
	
	
 // Vérifier la colonne stock_valide dans la table pm_be
        $query_be = "SELECT stock_valide,date_bf FROM pm_bf WHERE id = ".$id_source;
        $result_be = @$db->query($query_be);
        
        if ($result_be !== false) {
            $row_be = $result_be->fetch();
            $stock_valide = $row_be['stock_valide'];
            $date_bf = $row_be['date_bf'];
			$datetime_bf = date('Y-m-d H:i:s', $date_bf); // Convertir en format datetime
            // $date_validation = $row_be['date_validation']; // Date de validation du BE

            // Vérifier si stock_valide est égal à 0 avant de procéder
            if ($stock_valide == 0) {	
	
	
    // Si la source est un BE, récupérer les informations du BE
    $query_fact = "SELECT * FROM pm_bf_product WHERE id_bf = ".$id_source;

    // Vérifier si le BE existe
    $result_fact = @$db->query($query_fact);
    if($result_fact !== false){
        // $row_fact = $result_fact->fetch();
		foreach($result_fact as $row_fact){
        // Récupérer les informations du BE
        $id_produit = $row_fact['id_produits'];
        $qte = $row_fact['qte'];
        $id_be = $row_fact['id_bf']; // Récupérer l'id du BE pour vérifier stock_valide
        $id_bee = $row_fact['id_be']; // Récupérer l'id du BE pour vérifier stock_valide
        $stock_valide = 0;
		
		
		$type_mouvement = "SORTIE";
        
       
                // Enregistrer le mouvement dans la table pm_mouvement_stock
                $insert_query = "INSERT INTO pm_mouvement_stock (id_depot, id_produits, qte, source, id_be, id_source, date_mouvement, type_mouvement, status) 
                                 VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$source."', '".$id_bee."', '".$id_source."', '".$datetime_bf."', '".$type_mouvement."',1)";
                // echo $insert_query."<br>";
				// exit();
                // Exécution de la requête d'insertion
                if (@$db->query($insert_query)) {
                    echo "ok";
                } else {
                    echo "Erreur lors de l'enregistrement du mouvement de stock.";
                }
				
	                            $update_dest_query = "INSERT INTO pm_depot_stock (id_depot, id_produits, qte, ref_id) 
                                                      VALUES ('".$id_depot."', '".$id_produit."', '".$qte."', '".$id_bee."') 
                                                      ON DUPLICATE KEY UPDATE qte = qte - ".$qte;
                                @$db->query($update_dest_query);			

							// echo $update_dest_query;
		}	

// Mise à jour de stock_valide à 1 dans la table pm_be
                    $update_query = "UPDATE pm_bf SET stock_valide = 1 WHERE id = ".$id_source;
                    if (@$db->query($update_query)) {
                        // Redirection vers la page d'origine après un succès
                        header("Location: ".$_SERVER['HTTP_REFERER']);
                        exit();
                    } else {
                        echo "Erreur lors de la mise à jour de stock_valide dans la table pm_be.";
                    }


		
    } else {
        echo "Aucun BF trouvé avec cet ID dans la table pm_be_product.";
    }
	
	
				
            } else {
                // Si stock_valide n'est pas égal à 0, afficher un message avec la date de validation
                echo "Cette opération a déjà été exécutée";
            }
        } else {
            echo "Aucun BE trouvé avec cet ID dans la table pm_be.";
        }	
	
	
} else {
    // Gérer d'autres types de mouvements (par exemple, un transfert entre dépôts)
    // Vous pouvez ajouter ici la logique pour un mouvement de type transfert ou autre.
    echo "Source inconnue ou non prise en charge.";
}
?>
