Files
sgl/static/js/index.js

197 lines
6.3 KiB
JavaScript
Raw Normal View History

2025-12-19 09:43:33 +00:00
const $ = (id) => document.getElementById(id);
const table_demandes = new Tabulator("#demande_produit", {
layout:"fitColumns",
ajaxURL:`${$('demande_produit').dataset.url}`,
pagination: true,
paginationSize: 8,
columns:[
{title:"Libellé", field:"produit"},
{title:"Quantité", field:"quantite"},
{title:"A rendre", field:"a_rendre", formatter: "tickCross"},
],
});
table_demandes.on("rowClick", function(e, row){
let data = row.getData();
console.log("Data", data);
const modal = new bootstrap.Modal($('listeDemandesModal'));
$('produit').value = data.produit;
$("demandeur").value = data.demandeur;
$('quantite').value = data.quantite;
$('motifs').textContent = data.motifs;
$('date_demande').value = data.date_de_mise_a_dispo_souhaite;
$('a_rendre').checked = data.a_rendre ? true : false;
$('valider_par_chef').checked = data.valider_par_chef ? true : false;
$("radioRefuser").dataset.id = data.id_demande;
$("radioValider").dataset.id = data.id_demande;
$("radioRefuser").addEventListener("click", (e) =>{
$("box-motif-refus").classList.remove("d-none");
$("box-motif-refus").classList.add("d-block");
})
$("radioValider").addEventListener("click", (e) =>{
$("box-motif-refus").classList.remove("d-block");
$("box-motif-refus").classList.add("d-none");
})
if(data.is_logisticien){
modal.show();
}
});
const table_commande = new Tabulator("#commande_attentes", {
layout:"fitColumns",
ajaxURL:`${$('commande_attentes').dataset.url}`,
pagination: true,
paginationSize: 8,
columns:[
{title:"Libellé", field:"produit"},
{title:"Fournisseur", field:"fournisseur"},
{title:"Date de livraison", field:"date_livraison"},
],
});
const tableau_produit_rupture = new Tabulator("#tableau-produit-rupture", {
layout: "fitcolumns",
ajaxURL: `${$("tableau-produit-rupture").dataset.url}`,
ajaxParams: {
type: "rupture"
},
pagination: true,
paginationSize: 8,
columns: [
{title: "Libellé", field:"libelle"},
// {title: "Catégorie", field:"categorie"},
{title: "Conditionnement", field:"conditionnement"},
{title: "Quantité en stock", field:"stockActuel"},
]
})
$("produit_rupture").addEventListener("click", function () {
produitRuptureModal = new bootstrap.Modal($("produitRuptureModal"));
tableau_produit_rupture.setData(`${$("tableau-produit-rupture").dataset.url}`, {type: "rupture"})
$("produitRuptureModalLabel").innerHTML = "Produit en rupture"
produitRuptureModal.show();
})
$("produit_pre_rupture").addEventListener("click", function() {
produitRuptureModal = new bootstrap.Modal($("produitRuptureModal"));
tableau_produit_rupture.setData(`${$("tableau-produit-rupture").dataset.url}`, {type: "pre_rupture"})
$("produitRuptureModalLabel").innerHTML = "Produit en pré-rupture"
produitRuptureModal.show()
})
$("produit_normal").addEventListener("click", function() {
produitRuptureModal = new bootstrap.Modal($("produitRuptureModal"));
tableau_produit_rupture.setData(`${$("tableau-produit-rupture").dataset.url}`, {type: "normal"})
$("produitRuptureModalLabel").innerHTML = "Produit en quantité suffisante"
produitRuptureModal.show()
})
function updateStatut(demandeId, action, motifRefus='') {
const url = $("radioRefuser").dataset.url;
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: `id=${demandeId}&action=${action}&emetteur=logisticien&motif_refus=${motifRefus}`
})
.then(response => response.json())
.then(data => {
if (data.success) {
alert(`Demande ${action} avec succès !`);
location.reload(); // recharge la page pour voir le nouveau statut
} else {
alert(data.message);
}
})
.catch(error => console.error('Erreur :', error));
}
$('enregistrerModifs').addEventListener('click', function () {
if($("radioRefuser").checked){
updateStatut(
$("radioRefuser").dataset.id,
'0',
$("motifs_refus").value
); // '0' pour refuser
}else{
updateStatut(
$("radioValider").dataset.id,
'1',
); // '1' pour confirmer
}
});
table_commande.on("rowClick", function(e, row){
let data = row.getData();
const modal = new bootstrap.Modal($('listeCommandesModal'));
$('produitCommande').value = data.produit;
$('fournisseur').value = data.fournisseur;
$('quantiteCommande').value = data.quantite;
$('date_commande').value = data.date_commande;
$('date_livraison').value = data.date_livraison;
$("enregistrerModifsCommande").dataset.id = data.id_commande;
if(data.is_logisticien){
modal.show();
}
});
$('enregistrerModifsCommande').addEventListener('click', function () {
if($("produit_livre").checked){
fetch(`${$("enregistrerModifsCommande").dataset.url}`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: `id_commande=${$("enregistrerModifsCommande").dataset.id}`
})
.then(response => response.json())
.then(data => {
if (data.status === "success") {
alert(data.message);
location.reload(); // recharge la page pour voir le nouveau statut
} else {
alert(data.message);
}
})
.catch(error => console.error('Erreur :', error));
}
});
const tableau_equipement_rendre = new Tabulator("#tableau-equipement-rendre", {
layout:"fitColumns",
ajaxURL: `${$("tableau-equipement-rendre").dataset.url}`,
pagination: true,
paginationSize: 8,
columns:[
{title:"Libellé", field:"produit"},
{title:"Quantite", field:"quantite"},
{title:"Detenteur", field:"detenteur"},
// {title:"Departement", field:"detenteur"},
{title:"Rendu", field:"action", formatter:"tickCross", editor: true},
],
})
$("equipementARendreEnregistrer").addEventListener("click", function () {
const information_equipement = tableau_equipement_rendre.getData();
fetch(`${$("equipementARendreEnregistrer").dataset.url}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(information_equipement)
})
.then(response => response.json())
.then(data => {
tableau_equipement_rendre.setData("/equipement-a-rendre");
// tableau_equipement_rendre.clearEditedData();
})
.catch(error => console.error(error))
})