Browse Source

Quantité max

Pouvoir définir la quantité max des produits à 0 pour qu'elle devienne illimitée.
Cela permet de gérer le cas des boulangeries qui ne travaillent pas avec des quantités maximales.
master
keun 8 years ago
parent
commit
e546b037d4
6 changed files with 51 additions and 79 deletions
  1. +8
    -6
      backend/controllers/CommandeController.php
  2. +1
    -1
      backend/views/commande/index.php
  3. +3
    -1
      backend/views/produit/_form.php
  4. +1
    -1
      frontend/controllers/CommandeController.php
  5. +9
    -6
      frontend/views/commande/_form.php
  6. +29
    -64
      frontend/web/js/lechatdesnoisettes.js

+ 8
- 6
backend/controllers/CommandeController.php View File

@@ -385,7 +385,9 @@ class CommandeController extends BackendController {

if (isset($p->quantite_max))
$produit_production->quantite_max = $p->quantite_max;

else
$produit_production->quantite_max = null;
$produit_production->save();
}

@@ -395,12 +397,12 @@ class CommandeController extends BackendController {
$produit_production->actif = 0;
}

if ((isset($_POST['Produit'][$p->id]['quantite_max']) && $_POST['Produit'][$p->id]['quantite_max'] != '')) {
if ((isset($_POST['Produit'][$p->id]['quantite_max']) && $_POST['Produit'][$p->id]['quantite_max'] != ''))
{
$produit_production->quantite_max = (int) $_POST['Produit'][$p->id]['quantite_max'];
} else {
if (isset($p->quantite_max) && is_numeric($p->quantite_max) && $p->quantite_max > 0) {
$produit_production->quantite_max = $p->quantite_max;
}
}
else {
$produit_production->quantite_max = null;
}

$produit_production->save();

+ 1
- 1
backend/views/commande/index.php View File

@@ -88,7 +88,7 @@ foreach ($produits as $p) {
<tr>
<th class="td-actif">Actif</th>
<th class="td-produit">Produit</th>
<th class="td-max">Max.</th>
<th class="td-max">Max. <span class="glyphicon glyphicon-info-sign" data-toggle="tooltip" data-placement="top" data-original-title="Quantité disponible à la commande. Laisser vide si vous ne souhaitez pas avoir de limite de commande. La valeur par défaut est configurable dans vos produits."></span></th>
</tr>
</thead>
<tbody>

+ 3
- 1
backend/views/produit/_form.php View File

@@ -18,7 +18,9 @@ use yii\widgets\ActiveForm;
<?= $form->field($model, 'recette')->textarea() ?>
<?= $form->field($model, 'prix')->textInput() ?>
<?= $form->field($model, 'poids')->textInput() ?>
<?= $form->field($model, 'quantite_max')->textInput() ?>
<?= $form->field($model, 'quantite_max')
->hint('Renseignez ce champs si vous souhaitez limiter la quantité commandable pour ce produit.')
->textInput() ?>
<?= $form->field($model, 'photo')->fileInput() ?>
<?php

+ 1
- 1
frontend/controllers/CommandeController.php View File

@@ -400,7 +400,7 @@ class CommandeController extends \yii\web\Controller {
$commande_produit->prix = $p->prix;

$quantite_voulue = (int) $posts['Produit']['produit_' . $p->id];
if ($quantite_voulue > $produits_dispos[$p->id]['quantite_restante'] && !$produits_dispos[$p->id]['vrac'])
if ($produits_dispos[$p->id]['quantite_max'] && $quantite_voulue > $produits_dispos[$p->id]['quantite_restante'])
$quantite_voulue = $produits_dispos[$p->id]['quantite_restante'];

$commande_produit->quantite = $quantite_voulue;

+ 9
- 6
frontend/views/commande/_form.php View File

@@ -149,7 +149,12 @@ use common\models\Etablissement;
</thead>
<tbody>
<?php foreach ($produits as $p): ?>
<tr class="produit-<?php echo $p->id; ?>" <?php if (count($produits_dispos) && !$produits_dispos[$p->id]['actif']): ?>style="display:none;"<?php endif; ?>>
<?php
$quantite = 0;
if (isset($produits_selec[$p->id]))
$quantite = $produits_selec[$p->id];
?>
<tr class="produit-<?php echo $p->id; ?>" data-quantite-max="<?= $quantite ?>" <?php if (count($produits_dispos) && !$produits_dispos[$p->id]['actif']): ?>style="display:none;"<?php endif; ?>>
<td class="td-photo">
<?php if (strlen($p->photo) && file_exists(dirname(__FILE__).'/../../web/uploads/' . $p->photo)): ?><a href="<?= Yii::$app->urlManager->getBaseUrl() . '/uploads/' . $p->photo ?>" data-lightbox="produit-<?php echo $p->id; ?>"><img class="photo img-rounded" src="<?= Yii::$app->urlManager->getBaseUrl() . '/uploads/' . $p->photo ?>" alt="Photo <?= Html::encode($p->nom); ?>" /></a><?php endif; ?>
</td>
@@ -163,11 +168,6 @@ use common\models\Etablissement;
<span class="input-group-btn">
<button type="button" class="btn btn-default move-quantity moins">-</button>
</span>
<?php
$quantite = 0;
if (isset($produits_selec[$p->id]))
$quantite = $produits_selec[$p->id];
?>
<input type="text" value="<?php if (isset($produits_selec[$p->id])): echo $produits_selec[$p->id];
else: ?>0<?php endif; ?>" readonly name="Produit[produit_<?php echo $p->id; ?>]" class="quantity form-control">
<span class="input-group-btn">
@@ -175,8 +175,11 @@ use common\models\Etablissement;
</span>
</div>

<?php if($quantite): ?>
<div class="quantite-restante">Reste <span class="nb"><?php if (isset($produits_dispos[$p->id])): echo $produits_dispos[$p->id]['quantite_restante'] + $quantite;
endif; ?></span> <?php echo Html::encode(strtolower($p->nom)); ?>(s)</div>
<?php endif; ?>
<div class="epuise">Épuisé</div>
</td>
<td class="total"><strong></strong></td>

+ 29
- 64
frontend/web/js/lechatdesnoisettes.js View File

@@ -266,42 +266,27 @@ function chat_systeme_commande() {
quantite_totale += parseInt($(this).val()) ;
}) ;
if($(this).hasClass('plus') && quantite_totale > 2 && $('#confiance').val() == 0) {
$('html, body').animate({
scrollTop: $('#produits').offset().top - 150
}, 'normal', function() {
$('#mess-limit-quantity').fadeOut('fast',function() {
$(this).fadeIn('fast') ;
})
});
}
else {
var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantite-restante .nb').html()) ;
//alert('bada') ;
if($(this).hasClass('moins') && quantite != 0)
quantite -- ;
if($(this).hasClass('plus')){
if(quantite + 1 <= quantite_restante) {
quantite ++ ;
}
else {
if(quantite_restante <= 5) {
$(this).parent().parent().parent().find('.quantite-restante').hide().fadeIn() ;
}
else {
// alert ?
// ...
}
}
}
$(this).parent().parent().find('input.quantity').val(quantite) ;
chat_systeme_commande_maj_table_prix();
}
var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantite-restante .nb').html()) ;
var quantite_max = $(this).parent().parent().parent().parent().data('quantite-max') ;

if($(this).hasClass('moins') && quantite != 0)
quantite -- ;
if($(this).hasClass('plus') ){
if(quantite + 1 <= quantite_restante || !quantite_max) {
quantite ++ ;
}
else {
if(quantite_restante <= 5) {
$(this).parent().parent().parent().find('.quantite-restante').hide().fadeIn() ;
}
}
}

$(this).parent().parent().find('input.quantity').val(quantite) ;

chat_systeme_commande_maj_table_prix();
}
}) ;
@@ -351,28 +336,8 @@ function chat_systeme_commande_produits_dispos(str_date, date) {
else $('.produit-'+id_produit).hide() ;
var quantite_restante = produit.quantite_max - produit.quantite_commandee ;
//if(quantite_restante > 0 || !produit.epuise) {
/*if(quantite_restante > 0) {
$('.produit-'+id_produit+' .epuise').hide() ;
$('.produit-'+id_produit+' .input-group').show() ;
$('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5) {
$('.produit-'+id_produit+' .quantite-restante').hide() ;
}
else {
$('.produit-'+id_produit+' .quantite-restante').show() ;
}
}
else {
$('.produit-'+id_produit+' .epuise').show() ;
$('.produit-'+id_produit+' .quantite-restante').hide() ;
$('.produit-'+id_produit+' .input-group').hide() ;
} */
if((!produit.vrac && (!quantite_restante || quantite_restante < 0 || produit.epuise)) || (produit.vrac && produit.epuise)) {
if(produit.quantite_max && (!quantite_restante || quantite_restante < 0 || produit.epuise)) {
$('.produit-'+id_produit+' .epuise').show() ;
$('.produit-'+id_produit+' .quantite-restante').hide() ;
$('.produit-'+id_produit+' .input-group').hide() ;
@@ -382,15 +347,15 @@ function chat_systeme_commande_produits_dispos(str_date, date) {
$('.produit-'+id_produit+' .input-group').show() ;
$('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5) {
if($('.produit-'+id_produit+' .quantite-restante').size()) {
if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5) {
$('.produit-'+id_produit+' .quantite-restante').hide() ;
}
else {
$('.produit-'+id_produit+' .quantite-restante').show() ;
}
}
else {
$('.produit-'+id_produit+' .quantite-restante').show() ;
}
}
}
});
}

Loading…
Cancel
Save