Files
le-matelot/client/plugins/combidecli/combidecli_gestion.php
2020-01-27 08:56:08 +01:00

294 lines
10 KiB
PHP

<?php
/*************************************************************************************/
/* */
/* Thelia - Plugin de combinaison des déclinaisons */
/* */
/* Copyright (c) Franck Allimant, 2011 */
/* email : franck.allimant@cqfdev.fr */
/* web : http://www.cqfdev.fr */
/* idée originale: Jean-Baptiste Billot (ottoroots@gmail.com) */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* */
/*************************************************************************************/
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Navigation.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Administrateur.class.php");
session_start();
if (! isset($_SESSION["util"]->id) ) { echo "Pas de session."; exit; }
header("Content-Type: text/html;charset=utf-8");
include_once(realpath(dirname(__FILE__)) . "/CombidecliAdmin.class.php");
$adm = new CombidecliAdmin();
$baseurl = "../client/plugins/combidecli/combidecli_gestion.php?ref=$adm->refproduit&lang=$adm->lang";
$commande = isset($_REQUEST['commande_dc']) ? $_REQUEST['commande_dc'] : false;
switch($commande)
{
case 'combiner' :
$adm->combiner();
break;
case 'supprimer' :
$adm->supprimer();
break;
case 'maj':
$adm->maj();
break;
}
$adm->prepare_page();
// S'il y a des déclinaisons sur le produit
if (count($adm->declinaisondescs) > 0)
{
?>
<script type="text/javascript">
var baseurl = "<?php echo $baseurl; ?>";
function cd_disable()
{
$('#cd_activer_button').attr("disabled", "disabled");
$('#cd_desactiver_button').attr("disabled", "disabled");
$('#cd_maj_button').attr("disabled", "disabled");
$('#cd_synchroniser_button').attr("disabled", "disabled");
}
function cd_change_composants()
{
<?php if(count($adm->combinaisons) > 0) { ?>
if (confirm('En modifiant les déclinaisons combinées, vous perdrez les stocks et surplus actuels.\nVoulez-vous continuer ?'))
{
cd_combiner();
}
return false;
<?php } else { ?>
return true;
<?php } ?>
}
function cd_combiner()
{
// Au moins une case cochéee
if ($('input[name^=dc_composant]:checked').length < 1)
{
alert("Au moins une déclinaison doit être sélectionnée.");
return false;
}
var composants = $('input[name^=dc_composant]:checked').map( function(n, i) { return $(i).val() });
cd_disable();
cd_peupler();
$('#pliantcombidecli').load(baseurl, {
commande_dc: "combiner",
composants: composants
}
);
}
function cd_synchroniser()
{
if (confirm("Synchroniser les combinaisons avec l'état d'activation actuel de vos déclinaisons ?\nSi vous avez activé ou désactivé des déclinaisons, vous devrez resaisir vos stocks et vos surplus.")) cd_combiner();
}
function cd_desactiver()
{
if (confirm("Désactiver les combinaisons pour ce produit ?"))
{
cd_disable();
$('#pliantcombidecli').load(baseurl + "&commande_dc=supprimer");
}
}
function cd_peupler()
{
$('input[name^="dc_stock_"]').val(1000);
cd_maj();
}
function cd_maj()
{
cd_disable();
// Construire les paramètres de la requete
$.post(baseurl + "&commande_dc=maj",
$('#pliantcombidecli input').serialize() ,
function(data, textStatus, jqXHR) {
$('#pliantcombidecli').html(data);
}
);
}
// Désactiver les champs de saisie du stock des declinaisons si les combinaisons sont activées
$(document).ready(function() {
$('input[name^=stock]').removeAttr('disabled').css('background-color', '');
$('input[name^=surplus]').removeAttr('disabled').css('background-color', '');
<?php if(count($adm->combinaisons) != 0) { ?>
// Mettre a jour le stock produit
$('input[name=stock]').val(<?php echo floatval($adm->stock_produit); ?>);
// Désactiver le surplus et le stock des declinaisons combinees
<?php foreach($adm->declinaisondescs as $declinaisondesc)
{
if (in_array($declinaisondesc->declinaison, $adm->composants))
{
$result = $adm->_query("select id from declidisp where declinaison = $declinaisondesc->declinaison");
while ($result && $row = mysql_fetch_object($result))
{
?>
$('input[name=surplus<?php echo $row->id; ?>]').attr('disabled', 'disabled').css('background-color', '#ccc').val('');
$('input[name=stock<?php echo $row->id; ?>]').attr('disabled', 'disabled').css('background-color', '#ccc').val('');
<?php
}
}
}
?>
<?php } ?>
});
</script>
<table style="width: 100%; margin: 0">
<tr style="height: 40px;">
<th>
<?php if(count($adm->combinaisons) == 0) { ?>
La combinaison des déclinaisons n'est pas activée pour ce produit.<br />
Indiquez ci-dessous les déclinaison que vous souhaitez combiner:
<?php } else { ?>
Déclinaisons actuellement combinées:
<?php } ?>
</th>
</tr>
<?php
$style = "fonce";
foreach($adm->declinaisondescs as $declinaisondesc)
{
?>
<tr class="<?php echo $style; ?>" style="float: none; width: auto;">
<td>
<input <?php echo in_array($declinaisondesc->declinaison, $adm->composants) ? 'checked="checked"' : 'checked="checked"' ?>
type="checkbox"
value="<?php echo $declinaisondesc->declinaison ?>"
name="dc_composant[]"
onclick="return cd_change_composants();"
/> <?php echo $declinaisondesc->titre ?>
</td>
</tr>
<?php
$style = $style == "claire" ? "fonce" : "claire";
}
if ($adm->warning_no_decli) { ?>
<tr class="<?php echo $style; ?>">
<td><p style="color: red; font-weight: bold">La configuration actuelle de vos déclinaisons ne permet pas de créer de combinaison.</p></td>
</tr>
<?php
$style = $style == "claire" ? "fonce" : "claire";
}
?>
<tr>
<td class="<?php echo $style.'bottom' ?>" style="text-align: right">
<?php if(count($adm->combinaisons) == 0) { ?>
<button style="margin-right: 5px;" id="cd_activer_button" onclick="cd_combiner(); return false;">Activer la combinaison des déclinaisons</button>
<?php } else { ?>
<button title="Mettez à jour les combinaisons si vous avez activé ou désactivé une déclinaison au niveau de la rubrique de ce produit" id="cd_synchroniser_button" onclick="cd_synchroniser(); return false;">Mettre à jour les combinaisons</button>
<button style="margin-right: 5px;" title="Désactiver complètement les combinaisons sur ce produit" id="cd_desactiver_button" onclick="cd_desactiver(); return false;">Désactiver les combinaisons</button>
<?php } ?>
</td>
</tr>
</table>
<?php
if (count($adm->combinaisons) > 0)
{
// Les combinaisons sont actives
?>
<input type="hidden" name="combidecli_actives" value="1" />
<div class="entete" style="border: 0">
<div class="titre" style="cursor:pointer" onClick="$('#pliantcombidecli').show('slow');">STOCK ET SURPLUS</div>
</div>
<table width="100%">
<tr style="height: 30px;">
<th>Combinaison</th>
<th>Stock</th>
<th>Surplus</th>
<th style="text-align: center;">Active</th>
</tr>
<?php
$style = "claire";
foreach($adm->combinaisons as $combinaison)
{
?>
<tr class="<?php echo $style; ?>" style="float: none; width: auto;">
<td style="padding-left: 5px;">
<input type="hidden" name="dc_id[]" value="<?php echo $combinaison->id; ?>" />
<?php echo $combinaison->label; ?>
</td>
<td><input type"text" class="form" size="5" name="dc_stock_<?php echo $combinaison->id; ?>" value="<?php echo $combinaison->stock; ?>" /></td>
<td><input type"text" class="form" size="5" name="dc_surplus_<?php echo $combinaison->id; ?>" value="<?php echo $combinaison->surplus; ?>" /></td>
<td style="text-align: center;"><input type="checkbox" name="dc_actif_<?php echo $combinaison->id; ?>" value="1" <?php echo $combinaison->actif ? 'checked="checked"' : ''; ?>/></td>
</tr>
<?php
$style = $style == "claire" ? "fonce" : "claire";
}
?>
<tr class="<?php echo $style.'bottom' ?>" style="text-align: right">
<td colspan="4">
<button title="Peupler les stocks à 1000 pièces" id="cd_synchroniser_button" onclick="cd_peupler(); return false;">Peupler les stocks</button> <button id="cd_maj_button" onclick="cd_maj(); return false;">Valider les modifications</button>
</td>
</tr>
</table>
<?php
}
}
else
{
?>
<table style="width: 100%; margin: 0">
<tr style="height: 40px;">
<td class="clairebottom" style="text-align: center">Il n'y a pas de combinaison possible pour ce produit.</td>
</tr>
</table>
<?php
}
?>