Ajout, modification et suppression fonctionnel pour les commandes automatiques.master
@@ -29,6 +29,8 @@ class AppAsset extends AssetBundle | |||
parent::__construct() ; | |||
// 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/screen.css?v='.filemtime(Yii::getAlias('@app/web/css/screen.css')) ; | |||
@@ -17,6 +17,8 @@ use common\models\CommandeAutoForm ; | |||
use common\models\ProductionProduit; | |||
use yii\data\ActiveDataProvider; | |||
use common\models\CommandeAuto ; | |||
use common\models\CommandeAutoProduit ; | |||
use yii\web\NotFoundHttpException; | |||
class CommandeautoController extends BackendController { | |||
@@ -59,19 +61,83 @@ class CommandeautoController extends BackendController { | |||
public function actionCreate() | |||
{ | |||
// form | |||
$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()) | |||
{ | |||
$this->redirect(['commandeauto/index']) ; | |||
} | |||
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']) ; | |||
} | |||
} |
@@ -8,18 +8,19 @@ use common\models\PointVente ; | |||
?> | |||
<div class="commandeauto-form"> | |||
<?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) { | |||
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_point_vente')->dropDownList( ArrayHelper::map(PointVente::find()->where('id_etablissement = '.Yii::$app->user->identity->id_etablissement)->all(), 'id', function($model, $defaultValue) { | |||
return $model['nom']; | |||
}), ['prompt' => '--','class' => 'form-control user-id']) ?> | |||
<?= $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"> | |||
<h2>Jours</h2> | |||
<?= $form->field($model, 'lundi')->checkbox() ?> | |||
<?= $form->field($model, 'mardi')->checkbox() ?> | |||
<?= $form->field($model, 'mercredi')->checkbox() ?> | |||
@@ -31,5 +32,33 @@ use common\models\PointVente ; | |||
<div class="clr"></div> | |||
<?= $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']) ?> | |||
<?php ActiveForm::end(); ?> | |||
<?php ActiveForm::end(); ?> | |||
</div> |
@@ -9,12 +9,13 @@ $this->title = 'Ajouter une commande automatique'; | |||
$this->params['breadcrumbs'][] = ['label' => 'Commandes automatiques', 'url' => ['index']]; | |||
$this->params['breadcrumbs'][] = 'Ajouter'; | |||
?> | |||
<div class="produit-create"> | |||
<div class="commandeauto-create"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<?= $this->render('_form', [ | |||
'model' => $model, | |||
'produits' => $produits | |||
]) ?> | |||
</div> |
@@ -52,7 +52,10 @@ $this->params['breadcrumbs'][] = $this->title; | |||
[ | |||
'attribute' => 'date_fin', | |||
'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' ; | |||
} | |||
], | |||
[ |
@@ -0,0 +1,19 @@ | |||
<?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> |
@@ -848,3 +848,22 @@ a:hover, a:focus, a:active { | |||
border-bottom: 0px none; | |||
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; | |||
} |
@@ -7,9 +7,17 @@ $(document).ready(function() { | |||
chat_ordre_produits() ; | |||
chat_index_commandes_liste_produits() ; | |||
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() { | |||
$('#commandes-points-vente .liste-commandes a').unbind('click').click(function() { | |||
@@ -242,9 +250,16 @@ function chat_index_commandes_inputs_commande(id_pv, use_quantite) { | |||
'<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button>'+ | |||
'</span>'+ | |||
'</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 value = input.val() ; | |||
if(value) | |||
@@ -253,7 +268,11 @@ function chat_index_commandes_inputs_commande(id_pv, use_quantite) { | |||
value = 1 ; | |||
input.val(value) ; | |||
}) ; | |||
$(this).find('.btn-moins').click(function() { | |||
}) ; | |||
$('.btn-moins').each(function() { | |||
$(this).click(function() { | |||
var input = $(this).parent().parent().find('input') ; | |||
var value = input.val() ; | |||
if(value && value > 1) | |||
@@ -263,8 +282,8 @@ function chat_index_commandes_inputs_commande(id_pv, use_quantite) { | |||
input.val(value) ; | |||
}) ; | |||
}) ; | |||
} | |||
function chat_index_commandes_affiche_commande(id_commande) { |
@@ -843,4 +843,31 @@ a { | |||
.bloc-mode-emploi-bottom { | |||
border-bottom: 0px none ; | |||
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 ; | |||
} | |||
} | |||
} |
@@ -3,6 +3,8 @@ namespace common\models; | |||
use Yii; | |||
use yii\base\Model; | |||
use common\models\CommandeAuto ; | |||
use common\models\CommandeAutoProduit ; | |||
/** | |||
* Login form | |||
@@ -31,10 +33,29 @@ class CommandeAutoForm extends Model | |||
public function rules() | |||
{ | |||
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'], | |||
[['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'); | |||
} | |||
}] | |||
]; | |||
} | |||
@@ -60,6 +81,55 @@ class CommandeAutoForm extends Model | |||
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 ; | |||
} | |||
} |