Ajout, modification et suppression fonctionnel pour les commandes automatiques.master
parent::__construct() ; | parent::__construct() ; | ||||
// css | // css | ||||
$this->css[] = 'js/jquery-ui-1.12.1.custom/jquery-ui.min.css?v='.filemtime(Yii::getAlias('@app/web/js/jquery-ui-1.12.1.custom/jquery-ui.min.css')) ; | |||||
$this->css[] = 'js/jquery-ui-1.12.1.custom/jquery-ui.theme.min.css?v='.filemtime(Yii::getAlias('@app/web/js/jquery-ui-1.12.1.custom/jquery-ui.theme.min.css')) ; | |||||
$this->css[] = 'css/site.css?v='.filemtime(Yii::getAlias('@app/web/css/site.css')) ; | $this->css[] = 'css/site.css?v='.filemtime(Yii::getAlias('@app/web/css/site.css')) ; | ||||
$this->css[] = 'css/screen.css?v='.filemtime(Yii::getAlias('@app/web/css/screen.css')) ; | $this->css[] = 'css/screen.css?v='.filemtime(Yii::getAlias('@app/web/css/screen.css')) ; | ||||
use common\models\ProductionProduit; | use common\models\ProductionProduit; | ||||
use yii\data\ActiveDataProvider; | use yii\data\ActiveDataProvider; | ||||
use common\models\CommandeAuto ; | use common\models\CommandeAuto ; | ||||
use common\models\CommandeAutoProduit ; | |||||
use yii\web\NotFoundHttpException; | |||||
class CommandeautoController extends BackendController { | class CommandeautoController extends BackendController { | ||||
public function actionCreate() | public function actionCreate() | ||||
{ | { | ||||
// form | |||||
$model = new CommandeAutoForm ; | $model = new CommandeAutoForm ; | ||||
$model->id_etablissement = Yii::$app->user->identity->id_etablissement ; | |||||
// produits | |||||
$produits = Produit::find() | |||||
->where(['id_etablissement' => $model->id_etablissement]) | |||||
->orderBy('order ASC') | |||||
->all(); | |||||
if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save()) | if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save()) | ||||
{ | { | ||||
$this->redirect(['commandeauto/index']) ; | |||||
} | } | ||||
return $this->render('create',[ | return $this->render('create',[ | ||||
'model' => $model | |||||
'model' => $model, | |||||
'produits' => $produits | |||||
]) ; | ]) ; | ||||
} | } | ||||
public function actionUpdate($id) | |||||
{ | |||||
// form | |||||
$model = new CommandeAutoForm ; | |||||
$commandeauto = CommandeAuto::findOne($id) ; | |||||
if($commandeauto) | |||||
{ | |||||
$model->id = $id ; | |||||
$model->id_etablissement = $commandeauto->id_etablissement ; | |||||
$model->id_user = $commandeauto->id_user ; | |||||
$model->id_point_vente = $commandeauto->id_point_vente ; | |||||
$model->date_debut = date('d/m/Y',strtotime($commandeauto->date_debut)) ; | |||||
if(strlen($model->date_fin)) | |||||
$model->date_fin = date('d/m/Y',strtotime($commandeauto->date_fin)) ; | |||||
$model->lundi = $commandeauto->lundi ; | |||||
$model->lundi = $commandeauto->lundi ; | |||||
$model->mardi = $commandeauto->mardi ; | |||||
$model->mercredi = $commandeauto->mercredi ; | |||||
$model->jeudi = $commandeauto->jeudi ; | |||||
$model->vendredi = $commandeauto->vendredi ; | |||||
$model->samedi = $commandeauto->samedi ; | |||||
$model->dimanche = $commandeauto->dimanche ; | |||||
// produits | |||||
$commandeauto_produits = CommandeAutoProduit::find()->where(['id_commande_auto' => $model->id])->all() ; | |||||
foreach($commandeauto_produits as $commandeauto_produit) | |||||
{ | |||||
$model->produits['produit_'.$commandeauto_produit->id_produit] = $commandeauto_produit->quantite ; | |||||
} | |||||
} | |||||
else { | |||||
throw new NotFoundHttpException('La commande automatique est introuvable.', 404); | |||||
} | |||||
// produits | |||||
$produits = Produit::find() | |||||
->where(['id_etablissement' => $model->id_etablissement]) | |||||
->orderBy('order ASC') | |||||
->all(); | |||||
if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save()) | |||||
{ | |||||
$this->redirect(['commandeauto/index']) ; | |||||
} | |||||
return $this->render('update',[ | |||||
'model' => $model, | |||||
'produits' => $produits | |||||
]) ; | |||||
} | |||||
public function actionDelete($id) | |||||
{ | |||||
CommandeAutoProduit::deleteAll(['id_commande_auto' => $id]) ; | |||||
CommandeAuto::findOne($id)->delete() ; | |||||
$this->redirect(['commandeauto/index']) ; | |||||
} | |||||
} | } |
?> | ?> | ||||
<div class="commandeauto-form"> | |||||
<?php $form = ActiveForm::begin(); ?> | <?php $form = ActiveForm::begin(); ?> | ||||
<?= $form->field($model, 'id_user')->dropDownList( ArrayHelper::map(User::find()->joinWith('userEtablissement')->where('user_etablissement.id_etablissement = '.Yii::$app->user->identity->id_etablissement)->all(), 'id', function($model, $defaultValue) { | <?= $form->field($model, 'id_user')->dropDownList( ArrayHelper::map(User::find()->joinWith('userEtablissement')->where('user_etablissement.id_etablissement = '.Yii::$app->user->identity->id_etablissement)->all(), 'id', function($model, $defaultValue) { | ||||
return $model['nom'].' '.$model['prenom']; | return $model['nom'].' '.$model['prenom']; | ||||
}), ['prompt' => '--','class' => 'form-control user-id']) ?> | |||||
}), ['prompt' => '--','class' => 'form-control user-id', ]) ?> | |||||
<?= $form->field($model, 'id_etablissement')->hiddenInput() ?> | <?= $form->field($model, 'id_etablissement')->hiddenInput() ?> | ||||
<?= $form->field($model, 'id_point_vente')->dropDownList( ArrayHelper::map(PointVente::find()->where('id_etablissement = '.Yii::$app->user->identity->id_etablissement)->all(), 'id', function($model, $defaultValue) { | <?= $form->field($model, 'id_point_vente')->dropDownList( ArrayHelper::map(PointVente::find()->where('id_etablissement = '.Yii::$app->user->identity->id_etablissement)->all(), 'id', function($model, $defaultValue) { | ||||
return $model['nom']; | return $model['nom']; | ||||
}), ['prompt' => '--','class' => 'form-control user-id']) ?> | }), ['prompt' => '--','class' => 'form-control user-id']) ?> | ||||
<?= $form->field($model, 'date_debut') ?> | <?= $form->field($model, 'date_debut') ?> | ||||
<?= $form->field($model, 'date_fin') ?> | |||||
<?= $form->field($model, 'date_fin')->hint('Laisser vide pour une durée indéterminée') ?> | |||||
<div class="jours"> | <div class="jours"> | ||||
<h2>Jours</h2> | |||||
<?= $form->field($model, 'lundi')->checkbox() ?> | <?= $form->field($model, 'lundi')->checkbox() ?> | ||||
<?= $form->field($model, 'mardi')->checkbox() ?> | <?= $form->field($model, 'mardi')->checkbox() ?> | ||||
<?= $form->field($model, 'mercredi')->checkbox() ?> | <?= $form->field($model, 'mercredi')->checkbox() ?> | ||||
<div class="clr"></div> | <div class="clr"></div> | ||||
<?= $form->field($model, 'periodicite_semaine')->dropDownList([1=>1, 2=>2, 3=>3, 4=>4]) ?> | <?= $form->field($model, 'periodicite_semaine')->dropDownList([1=>1, 2=>2, 3=>3, 4=>4]) ?> | ||||
<div class="produits"> | |||||
<h2>Produits</h2> | |||||
<?php if(isset($model->errors['produits']) && count($model->errors['produits'])) | |||||
{ | |||||
echo '<div class="alert alert-danger">'.$model->errors['produits'][0].'</div>' ; | |||||
} | |||||
?> | |||||
<table class="table table-bordered table-condensed table-hover"> | |||||
<?php foreach ($produits as $p) : ?> | |||||
<tr> | |||||
<td><?= Html::encode($p->nom) ?></td> | |||||
<td> | |||||
<div class="input-group"> | |||||
<span class="input-group-btn"> | |||||
<button class="btn btn-default btn-moins" type="button"><span class="glyphicon glyphicon-minus"></span></button> | |||||
</span> | |||||
<?= Html::input('text', 'CommandeAutoForm[produits][produit_'.$p->id.']', (isset($model->produits['produit_'.$p->id])) ? $model->produits['produit_'.$p->id] : '', ['class' => 'form-control quantite']) ?> | |||||
<span class="input-group-btn"> | |||||
<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button> | |||||
</span> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<?php endforeach; ?> | |||||
</table> | |||||
</div> | |||||
<?= Html::submitButton('Enregistrer' , ['class' => 'btn btn-primary']) ?> | <?= Html::submitButton('Enregistrer' , ['class' => 'btn btn-primary']) ?> | ||||
<?php ActiveForm::end(); ?> | |||||
<?php ActiveForm::end(); ?> | |||||
</div> |
$this->params['breadcrumbs'][] = ['label' => 'Commandes automatiques', 'url' => ['index']]; | $this->params['breadcrumbs'][] = ['label' => 'Commandes automatiques', 'url' => ['index']]; | ||||
$this->params['breadcrumbs'][] = 'Ajouter'; | $this->params['breadcrumbs'][] = 'Ajouter'; | ||||
?> | ?> | ||||
<div class="produit-create"> | |||||
<div class="commandeauto-create"> | |||||
<h1><?= Html::encode($this->title) ?></h1> | <h1><?= Html::encode($this->title) ?></h1> | ||||
<?= $this->render('_form', [ | <?= $this->render('_form', [ | ||||
'model' => $model, | 'model' => $model, | ||||
'produits' => $produits | |||||
]) ?> | ]) ?> | ||||
</div> | </div> |
[ | [ | ||||
'attribute' => 'date_fin', | 'attribute' => 'date_fin', | ||||
'value' => function($model) { | 'value' => function($model) { | ||||
return date('d/m/Y',strtotime($model->date_fin)) ; | |||||
if($model->date_fin) | |||||
return date('d/m/Y',strtotime($model->date_fin)) ; | |||||
else | |||||
return 'indéterminée' ; | |||||
} | } | ||||
], | ], | ||||
[ | [ |
<?php | |||||
use yii\helpers\Html; | |||||
/* @var $this yii\web\View */ | |||||
/* @var $model app\models\Produit */ | |||||
$this->title = 'Modifier une commande automatique'; | |||||
$this->params['breadcrumbs'][] = ['label' => 'Commandes automatiques', 'url' => ['index']]; | |||||
$this->params['breadcrumbs'][] = 'Modifier'; | |||||
?> | |||||
<div class="commandeauto-update"> | |||||
<h1><?= Html::encode($this->title) ?></h1> | |||||
<?= $this->render('_form', [ | |||||
'model' => $model, | |||||
'produits' => $produits | |||||
]) ?> | |||||
</div> |
border-bottom: 0px none; | border-bottom: 0px none; | ||||
border-bottom: solid 1px white; | border-bottom: solid 1px white; | ||||
} | } | ||||
/* commandes auto */ | |||||
/* line 852, ../sass/screen.scss */ | |||||
.commandeauto-form .field-commandeautoform-id_etablissement { | |||||
display: none; | |||||
} | |||||
/* line 856, ../sass/screen.scss */ | |||||
.commandeauto-form .jours .form-group { | |||||
float: left; | |||||
margin-right: 20px; | |||||
} | |||||
/* line 863, ../sass/screen.scss */ | |||||
.commandeauto-form .produits .table { | |||||
width: 500px; | |||||
} | |||||
/* line 866, ../sass/screen.scss */ | |||||
.commandeauto-form .produits .quantite { | |||||
text-align: center; | |||||
} |
chat_ordre_produits() ; | chat_ordre_produits() ; | ||||
chat_index_commandes_liste_produits() ; | chat_index_commandes_liste_produits() ; | ||||
chat_index_commandes_points_vente() ; | chat_index_commandes_points_vente() ; | ||||
chat_btn_plus_moins() ; | |||||
chat_commandeauto() ; | |||||
}) ; | }) ; | ||||
function chat_commandeauto() { | |||||
// dates | |||||
$('#commandeautoform-date_debut, #commandeautoform-date_fin').datepicker() ; | |||||
} | |||||
function chat_index_commandes_points_vente() { | function chat_index_commandes_points_vente() { | ||||
$('#commandes-points-vente .liste-commandes a').unbind('click').click(function() { | $('#commandes-points-vente .liste-commandes a').unbind('click').click(function() { | ||||
'<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button>'+ | '<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button>'+ | ||||
'</span>'+ | '</span>'+ | ||||
'</div>') ; | '</div>') ; | ||||
}) ; | |||||
// plus / moins | |||||
chat_btn_plus_moins() ; | |||||
} | |||||
// plus / moins | |||||
$(this).find('.btn-plus').click(function() { | |||||
function chat_btn_plus_moins() { | |||||
$('.btn-plus').each(function() { | |||||
$(this).click(function() { | |||||
var input = $(this).parent().parent().find('input') ; | var input = $(this).parent().parent().find('input') ; | ||||
var value = input.val() ; | var value = input.val() ; | ||||
if(value) | if(value) | ||||
value = 1 ; | value = 1 ; | ||||
input.val(value) ; | input.val(value) ; | ||||
}) ; | }) ; | ||||
$(this).find('.btn-moins').click(function() { | |||||
}) ; | |||||
$('.btn-moins').each(function() { | |||||
$(this).click(function() { | |||||
var input = $(this).parent().parent().find('input') ; | var input = $(this).parent().parent().find('input') ; | ||||
var value = input.val() ; | var value = input.val() ; | ||||
if(value && value > 1) | if(value && value > 1) | ||||
input.val(value) ; | input.val(value) ; | ||||
}) ; | }) ; | ||||
}) ; | }) ; | ||||
} | } | ||||
function chat_index_commandes_affiche_commande(id_commande) { | function chat_index_commandes_affiche_commande(id_commande) { |
.bloc-mode-emploi-bottom { | .bloc-mode-emploi-bottom { | ||||
border-bottom: 0px none ; | border-bottom: 0px none ; | ||||
border-bottom: solid 1px white; | border-bottom: solid 1px white; | ||||
} | |||||
/* commandes auto */ | |||||
.commandeauto-form { | |||||
.field-commandeautoform-id_etablissement { | |||||
display: none ; | |||||
} | |||||
.jours { | |||||
.form-group { | |||||
float: left; | |||||
margin-right: 20px ; | |||||
} | |||||
} | |||||
.produits { | |||||
.table { | |||||
width: 500px ; | |||||
} | |||||
.quantite { | |||||
text-align: center ; | |||||
} | |||||
} | |||||
} | } |
use Yii; | use Yii; | ||||
use yii\base\Model; | use yii\base\Model; | ||||
use common\models\CommandeAuto ; | |||||
use common\models\CommandeAutoProduit ; | |||||
/** | /** | ||||
* Login form | * Login form | ||||
public function rules() | public function rules() | ||||
{ | { | ||||
return [ | return [ | ||||
[['id_user', 'id_etablissement', 'periodicite_semaine'], 'integer'], | |||||
[['date_debut', 'date_fin'], 'date'], | |||||
[['id_user', 'id_etablissement', 'periodicite_semaine', 'id_point_vente'], 'integer'], | |||||
[['date_debut', 'date_fin'], 'date', 'format' => 'php:d/m/Y'], | |||||
[['lundi','mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'], 'boolean'], | [['lundi','mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'], 'boolean'], | ||||
[['id_user', 'id_etablissement'],'required', 'message' => 'Champs obligatoire'] | |||||
[['id_user','id_point_vente', 'id_etablissement', 'date_debut'],'required', 'message' => 'Champs obligatoire'], | |||||
['produits' , 'safe'], | |||||
['produits', function($attribute, $params) { | |||||
$produits = $this->produits ; | |||||
$quantite = 0 ; | |||||
if(count($produits)) | |||||
{ | |||||
foreach($produits as $name_input => $quantite_produit) { | |||||
if($quantite_produit) | |||||
$quantite += $quantite_produit ; | |||||
} | |||||
} | |||||
if(!$quantite) | |||||
{ | |||||
$this->addError($attribute, 'Vous devez saisir au moins un produit'); | |||||
} | |||||
}] | |||||
]; | ]; | ||||
} | } | ||||
public function save() | public function save() | ||||
{ | { | ||||
if($this->id) | |||||
{ | |||||
$commandeauto = CommandeAuto::findOne($this->id) ; | |||||
} | |||||
else { | |||||
$commandeauto = new CommandeAuto ; | |||||
} | |||||
if($commandeauto) | |||||
{ | |||||
$commandeauto->id_user = $this->id_user ; | |||||
$commandeauto->id_etablissement = $this->id_etablissement ; | |||||
$commandeauto->id_point_vente = $this->id_point_vente ; | |||||
$commandeauto->date_debut = date('Y-m-d',strtotime(str_replace('/','-',$this->date_debut))) ; | |||||
if(strlen($this->date_fin)) | |||||
{ | |||||
$commandeauto->date_fin = date('Y-m-d',strtotime(str_replace('/','-',$this->date_fin))) ; | |||||
} | |||||
$commandeauto->lundi = $this->lundi ; | |||||
$commandeauto->mardi = $this->mardi ; | |||||
$commandeauto->mercredi = $this->mercredi ; | |||||
$commandeauto->jeudi = $this->jeudi ; | |||||
$commandeauto->vendredi = $this->vendredi ; | |||||
$commandeauto->samedi = $this->samedi ; | |||||
$commandeauto->dimanche = $this->dimanche ; | |||||
$commandeauto->periodicite_semaine = $this->periodicite_semaine ; | |||||
$commandeauto->save() ; | |||||
// produits | |||||
if($this->id) | |||||
{ | |||||
CommandeAutoProduit::deleteAll(['id_commande_auto' => $this->id]) ; | |||||
} | |||||
foreach($this->produits as $name_input => $quantite) | |||||
{ | |||||
if($quantite) | |||||
{ | |||||
$id_produit = str_replace('produit_', '', $name_input) ; | |||||
$commandeauto_produit = new CommandeAutoProduit ; | |||||
$commandeauto_produit->id_commande_auto = $commandeauto->id ; | |||||
$commandeauto_produit->id_produit = $id_produit ; | |||||
$commandeauto_produit->quantite = $quantite ; | |||||
$commandeauto_produit->save() ; | |||||
} | |||||
} | |||||
} | |||||
return true ; | |||||
} | } | ||||
} | } |