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

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

// if($_SESSION['user']['type'] == "production"){
    // header("Location: /admin/");
    // exit();
// }


require_once("../includes/fn_module.php");  

// Récupération des paramètres GET ou POST
$id_depot_source = isset($_POST['id_depot_source']) ? $_POST['id_depot_source'] : 1; // Dépôt source
$id_depot_dest = isset($_POST['id_depot_dest']) ? $_POST['id_depot_dest'] : 2; // Dépôt destination
$id_produit = isset($_POST['id_produit']) ? $_POST['id_produit'] : 0; // Produit à transférer
$id_be = isset($_POST['id_be']) ? $_POST['id_be'] : 0; // Produit à transférer
$qte = isset($_POST['qte']) ? $_POST['qte'] : 0; // Quantité à transférer
$type_mouvement = 'Transfert'; // Type de mouvement : Transfert entre dépôts


$qte = str_replace(',', '.', $qte);

// Variables pour les messages
$message = '';
$message_type = ''; // 'success', 'error', 'warning'

// Si le formulaire est soumis
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Vérification si les dépôts source et destination sont différents
    if ($id_depot_source == $id_depot_dest) {
        $message = "Le dépôt source et le dépôt destination ne peuvent pas être identiques.";
        $message_type = 'error';
    } else {
        // Vérification si la quantité est positive
        if ($qte > 0) {
            // Vérifier si le produit existe dans le dépôt source
            // $query_prod_source = "SELECT * FROM pm_depot_stock_pf WHERE id_depot = ".$id_depot_source." AND id_produits = ".$id_produit;
            $query_prod_source = "SELECT * FROM pm_depot_stock_pf WHERE id_depot = ".$id_depot_source." AND id_produits = ".$id_produit;
            // echo $query_prod_source."<br>";
			// exit();
			$result_prod_source = @$db->query($query_prod_source);
            if ($result_prod_source !== false) {
                $row_prod_source = $result_prod_source->fetch();
                $stock_source = $row_prod_source['qte'];
                $id_be = $row_prod_source['ref_id'];


				
                // Vérifier si la quantité demandée est disponible dans le dépôt source
                if ($stock_source >= $qte) {

                            // Enregistrer le mouvement dans la table pm_mouvement_stock_pf
                            $insert_query = "INSERT INTO pm_mouvement_stock_pf (id_depot, id_produits, qte, source, id_source, type_mouvement, id_bf, status) 
                                             VALUES ('".$id_depot_dest."', '".$id_produit."', '".$qte."', 'Transfert', '".$id_depot_source."', '".$type_mouvement."', '".$id_be."',1)";
                           
							// echo $insert_query;
							// exit();
						   if (@$db->query($insert_query)) {
                                
								
								
								// Mettre à jour la table pm_depot_stock_pf pour réduire le stock du dépôt source
								
                                $update_source_query = "UPDATE pm_depot_stock_pf SET qte = qte - ".$qte." WHERE id_depot = ".$id_depot_source." AND id_produits = ".$id_produit;
								// echo $update_source_query."<br>";
                                @$db->query($update_source_query);
							  
								$update_dest_query = "INSERT INTO pm_depot_stock_pf (id_depot, id_produits, qte, ref_id) 
													  VALUES ('".$id_depot_dest."', '".$id_produit."', '".$qte."', '".$id_be."') 
													  ON DUPLICATE KEY UPDATE 
													  qte = IF(id_depot = '".$id_depot_dest."', qte + ".$qte.", qte)";
								// echo $update_dest_query;
								// exit();	
                                @$db->query($update_dest_query);
								
								
								
								

                                // Message de succès
                                $message = "Le transfert a été effectué avec succès.";
                                $message_type = 'success';
                                // Redirection après succès
                                // header("Location: ".$_SERVER['HTTP_REFERER']);
                                // exit();
                            } else {
                                $message = "Erreur lors de l'enregistrement du mouvement de stock.";
                                $message_type = 'error';
                            }
                } else {
                    // Si la quantité demandée est supérieure au stock disponible
                    $message = "La quantité demandée dépasse le stock disponible dans le dépôt source.";
                    $message_type = 'error';
                }
            } else {
                $message = "Aucun produit trouvé dans le dépôt source.";
                $message_type = 'error';
            }
        } else {
            $message = "Veuillez entrer une quantité valide.";
            $message_type = 'error';
        }
    }
}


// Script PHP pour récupérer la quantité de stock disponible dans le dépôt et pour un produit donné
if (isset($_GET['id_produit']) && isset($_GET['id_depot'])) {
    $id_produit = $_GET['id_produit'];
    $id_depot = $_GET['id_depot'];
    //$id_be = $_GET['id_be'];

    // Calculer la quantité disponible en fonction des mouvements (entrées et sorties)
    // $query = "
        // SELECT 
            // SUM(CASE WHEN type_mouvement = 'Entrée' THEN qte ELSE 0 END) AS total_entrees,
            // SUM(CASE WHEN type_mouvement = 'Sortie' THEN qte ELSE 0 END) AS total_sorties
        // FROM pm_mouvement_stock
        // WHERE id_produits = ".$id_produit." AND id_depot =".$id_depot;

// $query = "
    // SELECT 
        // SUM(CASE WHEN type_mouvement = 'Entrée' THEN qte ELSE 0 END) AS total_entrees,
        // SUM(CASE WHEN type_mouvement = 'Sortie' THEN qte ELSE 0 END) AS total_sorties,
        // SUM(CASE WHEN type_mouvement = 'Transfert' AND id_source = ".$id_depot." THEN qte ELSE 0 END) AS total_transferts_sortants,
        // SUM(CASE WHEN type_mouvement = 'Transfert' AND id_depot = ".$id_depot." THEN qte ELSE 0 END) AS total_transferts_entrants
    // FROM pm_mouvement_stock
    // WHERE id_produits = ".$id_produit." 
    // AND (id_depot = ".$id_depot." OR id_source = ".$id_depot.")";
	
	
$query = "SELECT qte FROM `pm_depot_stock_pf` WHERE `id_depot` = ".$id_depot." AND `id_produits` = ".$id_produit;

// echo $query;

	$result_fact = @$db->query($query);
	if($result_fact !== false){
		$row = $result_fact->fetch();

		// Récupérer les résultats

		// $total_entrees = $row['total_entrees'] ? $row['total_entrees'] : 0;
		// $total_transferts_entrants = $row['total_transferts_entrants'] ? $row['total_transferts_entrants'] : 0;

		// $total_sorties = $row['total_sorties'] ? $row['total_sorties'] : 0;
		// $total_transferts_sortants = $row['total_transferts_sortants'] ? $row['total_transferts_sortants'] : 0;
	
	}
    // Calculer le stock disponible
    // $stock_disponible = ($total_entrees+$total_transferts_entrants) - ($total_sorties+$total_transferts_sortants);

    // Retourner la quantité disponible
	$stock_disponible = $row['qte'] ? $row['qte'] : 0;
    echo $stock_disponible;
    exit();
}


?>
<!DOCTYPE html>
<head>
    <?php include("../includes/inc_header_common.php"); ?>

</head>
<body>
    <div id="wrapper">
        <?php include("../includes/inc_top.php"); ?>
        <div id="page-wrapper">
            <div class="page-header">
                <div class="container-fluid">
                    <div class="row">
                        <div class="col-md-8">
                            <h1><i class="fa fa-sign-in"></i> Transfert de stock Produit fini</h1>
                        </div>
                    </div>
                </div>
            </div>
            <div class="container-fluid">
                <div class="alert-container">
                    <div class="alert alert-success alert-dismissable"></div>
                    <div class="alert alert-warning alert-dismissable"></div>
                    <div class="alert alert-danger alert-dismissable"></div>
                </div>
                <div class="row" style="width:50%;float:left;">				
<div class="container">
    <h2 class="mt-5">Formulaire de Transfert de Produit</h2>

    <!-- Affichage du message de succès ou d'erreur -->
    <?php if ($message): ?>
        <div class="alert alert-<?php echo $message_type; ?> mt-3">
            <?php echo $message; ?>
        </div>
    <?php endif; ?>

    <form method="POST" action="transfer_pf.php">
        <!-- Liste des dépôts source -->
        <div class="mb-3">
            <label for="id_depot_source" class="form-label">Dépôt Source</label>
			
		<? if($_SESSION['user']['id'] == 18){ //==== Production ?>	
            <select class="form-control" id="id_depot_source" name="id_depot_source">
			<option value="1">Dépôt Principal</option>
				<option value="3">Dépôt Export</option>
            </select>			
		<? }else if($_SESSION['user']['id'] == 19){ //====== Werehouse ?>	
            <select class="form-control" id="id_depot_source" name="id_depot_source">
			<option value="1">Dépôt Principal</option>
				<option value="3">Dépôt Export</option>
            </select>			
		<? }else{ ?>
            <select class="form-control" id="id_depot_source" name="id_depot_source">
            <option value=''></option>
                <?php
                // Récupérer les dépôts depuis la table pm_depot
                $query_depots = "SELECT * FROM pm_depot where id <> 2";
                $result_depots = @$db->query($query_depots);
                if ($result_depots !== false) {
                    while ($row_depot = $result_depots->fetch()) {
                        echo "<option value='".$row_depot['id']."'>".$row_depot['name']."</option>";
                    }
                }
                ?>
            </select>
		<? } ?>	
			
			
        </div>
<br>
        <!-- Liste des dépôts destination -->
        <div class="mb-3">
            <label for="id_depot_dest" class="form-label">Dépôt Destination</label>
           

		<? if($_SESSION['user']['id'] == 18){ //==== Production ?>	
            <select class="form-control" id="id_depot_dest" name="id_depot_dest">	
			
				<option value="3">Dépôt Export</option>
				<option value="1">Dépôt Principal</option>
            </select>			
		<? }else if($_SESSION['user']['id'] == 19){ //====== Werehouse ?>	
            <select class="form-control" id="id_depot_dest" name="id_depot_dest">
			
				<option value="3">Dépôt Export</option>
				<option value="1">Dépôt Principal</option>
            </select>			
		<? }else{ ?>
            <select class="form-control" id="id_depot_dest" name="id_depot_dest">
            <option value=''></option>
                <?php
                // Récupérer les dépôts depuis la table pm_depot
                $query_depots = "SELECT * FROM pm_depot where id <> 2";
                $result_depots = @$db->query($query_depots);
                if ($result_depots !== false) {
                    while ($row_depot = $result_depots->fetch()) {
                        echo "<option value='".$row_depot['id']."'>".$row_depot['name']."</option>";
                    }
                }
                ?>
            </select>
		<? } ?>	

        </div>
<br>
        <!-- Liste des produits -->
        <div class="mb-3">
            <label for="id_produit" class="form-label">Produit</label>
		
			
	<!-- Ajoutez le fichier CSS de Select2 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" />

<!-- Le sélecteur de produits avec Bootstrap et Select2 -->
<select class="form-control select2" id="id_produit" name="id_produit" style="width: 100%;">
    <option value=''></option>
    <?php
    // Récupérer les produits depuis la table pm_produitsachat
    $query_produits = "SELECT * FROM pm_produits WHERE status = 1 ORDER BY desingnation ASC";
    $result_produits = @$db->query($query_produits);
    if ($result_produits !== false) {
        while ($row_produit = $result_produits->fetch()) {
            echo "<option value='" . $row_produit['id'] . "' class='product-option'>" . $row_produit['desingnation'] . "</option>";
        }
    }
    ?>
</select>

<!-- Ajoutez les fichiers JavaScript de jQuery et Select2 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

<!-- Initialisez Select2 -->
<script>
    $(document).ready(function() {
        $('.select2').select2({
            placeholder: "Sélectionnez un produit",
            allowClear: true
        });
    });
</script>		
			
        </div>
		
		
<br>
		
		
<br>
        <div class="mb-3">
            <label for="stock_disponible" class="form-label">Stock Disponible</label>
            <input type="text" class="form-control" id="stock_disponible" value="0" readonly>
        </div>

        <div class="mb-3">
            <label for="qte" class="form-label">Quantité</label>
            <input type="number" class="form-control" id="qte" name="qte" min="0.1" step="0.1">
        </div>
<br>
        <button type="submit" class="btn btn-primary">Effectuer le Transfert</button>
    </form>
</div>



<script>
function fetchBE() {
    const productId = document.getElementById('id_produit').value;
    const beSelect = document.getElementById('id_be');
    const id_depot_source = document.getElementById('id_depot_source').value;
    
    // Vider les options existantes dans la liste des BE
    beSelect.innerHTML = '<option value=""></option>';

    if (productId) {
        // Requête AJAX
        fetch('get_be.php?id_produit=' + productId + '&id_depot='+id_depot_source)
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    // Ajouter les options de BE
                    data.bes.forEach(be => {
                        const option = document.createElement('option');
                        option.value = be.ref_id;
                        option.textContent = 'BE_' + be.ref_id;
                        beSelect.appendChild(option);
                    });
                } else {
                    alert('Aucun BE trouvé pour ce produit.');
                }
            })
            .catch(error => console.error('Erreur:', error));
    }
}
</script>




<script>
    // Filtrer les produits
    function filterProducts() {
        var input, filter, options, i;
        input = document.getElementById("search_produit");
        filter = input.value.toUpperCase();
        options = document.getElementById("id_produit").options;

        for (i = 0; i < options.length; i++) {
            if (options[i].text.toUpperCase().indexOf(filter) > -1) {
                options[i].style.display = "";
            } else {
                options[i].style.display = "none";
            }
        }
    }
</script>


<script>
$(document).ready(function() {
    // Quand le dépôt source ou le produit est changé, afficher le stock disponible
    $('#id_depot_source, #id_produit, #id_be').change(function() {
        var id_depot_source = $('#id_depot_source').val();
        var id_produit = $('#id_produit').val();
        //var id_be = $('#id_be').val();

        if (id_depot_source && id_produit ) {
            $.ajax({
                url: 'transfer_pf.php',
                type: 'GET',
                data: {
                    id_depot: id_depot_source,
                    id_produit: id_produit
                },
                success: function(data) {
                    // Afficher la quantité de stock disponible
                    $('#stock_disponible').val(data);
                }
            });
        }
    });
});
</script>



<style>

.alert-error {
    background-color: #f7d9d9;
}
.alert-success {
    background-color: #97ed9787;
}



</style>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>				

				</div>
            </div>
        </div>
    </div>
</body>
</html>
<?php
$_SESSION['msg_error'] = "";
$_SESSION['msg_success'] = "";
$_SESSION['msg_notice'] = ""; ?>
