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.prodstable
if (isset($p->quantite_max)) | if (isset($p->quantite_max)) | ||||
$produit_production->quantite_max = $p->quantite_max; | $produit_production->quantite_max = $p->quantite_max; | ||||
else | |||||
$produit_production->quantite_max = null; | |||||
$produit_production->save(); | $produit_production->save(); | ||||
} | } | ||||
$produit_production->actif = 0; | $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']; | $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(); | $produit_production->save(); |
<tr> | <tr> | ||||
<th class="td-actif">Actif</th> | <th class="td-actif">Actif</th> | ||||
<th class="td-produit">Produit</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> | </tr> | ||||
</thead> | </thead> | ||||
<tbody> | <tbody> |
<?= $form->field($model, 'recette')->textarea() ?> | <?= $form->field($model, 'recette')->textarea() ?> | ||||
<?= $form->field($model, 'prix')->textInput() ?> | <?= $form->field($model, 'prix')->textInput() ?> | ||||
<?= $form->field($model, 'poids')->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() ?> | <?= $form->field($model, 'photo')->fileInput() ?> | ||||
<?php | <?php |
$commande_produit->prix = $p->prix; | $commande_produit->prix = $p->prix; | ||||
$quantite_voulue = (int) $posts['Produit']['produit_' . $p->id]; | $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']; | $quantite_voulue = $produits_dispos[$p->id]['quantite_restante']; | ||||
$commande_produit->quantite = $quantite_voulue; | $commande_produit->quantite = $quantite_voulue; |
</thead> | </thead> | ||||
<tbody> | <tbody> | ||||
<?php foreach ($produits as $p): ?> | <?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"> | <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; ?> | <?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> | </td> | ||||
<span class="input-group-btn"> | <span class="input-group-btn"> | ||||
<button type="button" class="btn btn-default move-quantity moins">-</button> | <button type="button" class="btn btn-default move-quantity moins">-</button> | ||||
</span> | </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]; | <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"> | else: ?>0<?php endif; ?>" readonly name="Produit[produit_<?php echo $p->id; ?>]" class="quantity form-control"> | ||||
<span class="input-group-btn"> | <span class="input-group-btn"> | ||||
</span> | </span> | ||||
</div> | </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; | <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> | endif; ?></span> <?php echo Html::encode(strtolower($p->nom)); ?>(s)</div> | ||||
<?php endif; ?> | |||||
<div class="epuise">Épuisé</div> | <div class="epuise">Épuisé</div> | ||||
</td> | </td> | ||||
<td class="total"><strong></strong></td> | <td class="total"><strong></strong></td> |
quantite_totale += parseInt($(this).val()) ; | 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(); | |||||
} | } | ||||
}) ; | }) ; | ||||
else $('.produit-'+id_produit).hide() ; | else $('.produit-'+id_produit).hide() ; | ||||
var quantite_restante = produit.quantite_max - produit.quantite_commandee ; | 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+' .epuise').show() ; | ||||
$('.produit-'+id_produit+' .quantite-restante').hide() ; | $('.produit-'+id_produit+' .quantite-restante').hide() ; | ||||
$('.produit-'+id_produit+' .input-group').hide() ; | $('.produit-'+id_produit+' .input-group').hide() ; | ||||
$('.produit-'+id_produit+' .input-group').show() ; | $('.produit-'+id_produit+' .input-group').show() ; | ||||
$('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ; | $('.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() ; | $('.produit-'+id_produit+' .quantite-restante').hide() ; | ||||
} | |||||
else { | |||||
$('.produit-'+id_produit+' .quantite-restante').show() ; | |||||
} | |||||
} | |||||
else { | |||||
$('.produit-'+id_produit+' .quantite-restante').show() ; | |||||
} | |||||
} | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||