Ver código fonte

[Backend] Commandes automatiques (CRUD)

Ajout, modification et suppression fonctionnel pour les commandes
automatiques.
prodstable
keun 8 anos atrás
pai
commit
54dd8d038e
11 arquivos alterados com 273 adições e 18 exclusões
  1. +2
    -0
      backend/assets/AppAsset.php
  2. +70
    -4
      backend/controllers/CommandeautoController.php
  3. +33
    -4
      backend/views/commandeauto/_form.php
  4. +2
    -1
      backend/views/commandeauto/create.php
  5. +4
    -1
      backend/views/commandeauto/index.php
  6. +19
    -0
      backend/views/commandeauto/update.php
  7. BIN
      backend/web/.sass-cache/c8fef7d48da4dc7f024edc2b0fada9d8d6de5dac/screen.scssc
  8. +19
    -0
      backend/web/css/screen.css
  9. +24
    -5
      backend/web/js/lechatdesnoisettes.js
  10. +27
    -0
      backend/web/sass/screen.scss
  11. +73
    -3
      common/models/CommandeAutoForm.php

+ 2
- 0
backend/assets/AppAsset.php Ver arquivo

@@ -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')) ;

+ 70
- 4
backend/controllers/CommandeautoController.php Ver arquivo

@@ -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']) ;
}
}

+ 33
- 4
backend/views/commandeauto/_form.php Ver arquivo

@@ -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>

+ 2
- 1
backend/views/commandeauto/create.php Ver arquivo

@@ -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>

+ 4
- 1
backend/views/commandeauto/index.php Ver arquivo

@@ -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' ;
}
],
[

+ 19
- 0
backend/views/commandeauto/update.php Ver arquivo

@@ -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>

BIN
backend/web/.sass-cache/c8fef7d48da4dc7f024edc2b0fada9d8d6de5dac/screen.scssc Ver arquivo


+ 19
- 0
backend/web/css/screen.css Ver arquivo

@@ -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;
}

+ 24
- 5
backend/web/js/lechatdesnoisettes.js Ver arquivo

@@ -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) {

+ 27
- 0
backend/web/sass/screen.scss Ver arquivo

@@ -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 ;
}
}
}

+ 73
- 3
common/models/CommandeAutoForm.php Ver arquivo

@@ -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 ;
}
}

Carregando…
Cancelar
Salvar