Browse Source

[backend] Prix spécifiques : migrations / modèles + modification prix pourcentage dans user et point_sale

refactoring
Guillaume 4 years ago
parent
commit
4ffd0ebf1b
9 changed files with 243 additions and 7 deletions
  1. +19
    -0
      backend/controllers/UserController.php
  2. +7
    -0
      backend/views/point-sale/_form.php
  3. +7
    -0
      backend/views/user/_form.php
  4. +4
    -2
      common/models/PointSale.php
  5. +134
    -0
      common/models/ProductPrice.php
  6. +4
    -2
      common/models/User.php
  7. +4
    -3
      common/models/UserProducer.php
  8. +30
    -0
      console/migrations/m201207_160043_specific_prices.php
  9. +34
    -0
      console/migrations/m201207_164410_specific_prices_percent.php

+ 19
- 0
backend/controllers/UserController.php View File

@@ -127,6 +127,12 @@ class UserController extends BackendController
$model->points_sale[] = $userPointSaleArray->id_point_sale;
}
}

$userProducer = UserProducer::searchOne([
'id_producer' => GlobalParam::getCurrentProducerId(),
'id_user' => $model->id
]) ;
$model->product_price_percent = $userProducer->product_price_percent ;
}

// points de vente
@@ -193,6 +199,7 @@ class UserController extends BackendController

$model->sendMailWelcome($password);
$this->processLinkPointSale($model);
$this->processProductPricePercent($model) ;

Yii::$app->getSession()->setFlash('success', 'Utilisateur créé.');
$model = new User();
@@ -230,6 +237,7 @@ class UserController extends BackendController
$model->sendMailWelcome($password);
}
$this->processLinkPointSale($model);
$this->processProductPricePercent($model) ;
Yii::$app->getSession()->setFlash('success', 'Utilisateur modifié.');
}
} else {
@@ -288,6 +296,17 @@ class UserController extends BackendController
}
}

public function processProductPricePercent($model)
{
$userProducer = UserProducer::searchOne([
'id_producer' => GlobalParam::getCurrentProducerId(),
'id_user' => $model->id
]) ;
$userProducer->product_price_percent = $model->product_price_percent ;

$userProducer->save() ;
}

/**
* Désactive l'utilisateur de l'établissement.
*

+ 7
- 0
backend/views/point-sale/_form.php View File

@@ -92,6 +92,13 @@ use common\models\Producer;
Producer::CREDIT_FUNCTIONING_USER => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_USER],
], [])->hint(Producer::HINT_CREDIT_FUNCTIONING); ?>

<?= $form->field($model, 'product_price_percent')
->dropDownList([
'' => 'Aucun',
-5 => '-5%',
5 => '+5%',
], [])->hint('Pourcentage appliqué aux prix de chaque produit dans ce point de vente.'); ?>


<div id="delivery-days">
<h2>Jours de livraison</h2>

+ 7
- 0
backend/views/user/_form.php View File

@@ -76,6 +76,13 @@ use yii\widgets\ActiveForm;
]);
?>

<?= $form->field($model, 'product_price_percent')
->dropDownList([
'' => 'Aucun',
-5 => '-5%',
5 => '+5%',
], [])->hint('Pourcentage appliqué aux prix de chaque produit pour cet utilisateur.'); ?>

<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Ajouter' : 'Modifier', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

+ 4
- 2
common/models/PointSale.php View File

@@ -90,7 +90,8 @@ class PointSale extends ActiveRecordCommon
['point_production', 'default', 'value' => 0],
[['id_producer', 'id_user'], 'integer'],
['id_producer', 'required'],
[['users', 'users_comment', 'code'], 'safe']
[['users', 'users_comment', 'code'], 'safe'],
[['product_price_percent'], 'double'],
];
}

@@ -124,7 +125,8 @@ class PointSale extends ActiveRecordCommon
'code' => 'Code',
'credit_functioning' => 'Utilisation du Crédit par l\'utilisateur',
'default' => 'Point de vente par défaut',
'id_user' => 'Contact'
'id_user' => 'Contact',
'product_price_percent' => 'Prix produits : pourcentage'
];
}


+ 134
- 0
common/models/ProductPrice.php View File

@@ -0,0 +1,134 @@
<?php

/**
* Copyright distrib (2018)
*
* contact@opendistrib.net
*
* Ce logiciel est un programme informatique servant à aider les producteurs
* à distribuer leur production en circuits courts.
*
* Ce logiciel est régi par la licence CeCILL soumise au droit français et
* respectant les principes de diffusion des logiciels libres. Vous pouvez
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
* sur le site "http://www.cecill.info".
*
* En contrepartie de l'accessibilité au code source et des droits de copie,
* de modification et de redistribution accordés par cette licence, il n'est
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
* titulaire des droits patrimoniaux et les concédants successifs.
*
* A cet égard l'attention de l'utilisateur est attirée sur les risques
* associés au chargement, à l'utilisation, à la modification et/ou au
* développement et à la reproduction du logiciel par l'utilisateur étant
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
* manipuler et qui le réserve donc à des développeurs et des professionnels
* avertis possédant des connaissances informatiques approfondies. Les
* utilisateurs sont donc invités à charger et tester l'adéquation du
* logiciel à leurs besoins dans des conditions permettant d'assurer la
* sécurité de leurs systèmes et ou de leurs données et, plus généralement,
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
*
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
* pris connaissance de la licence CeCILL, et que vous en avez accepté les
* termes.
*/

namespace common\models;

use common\helpers\GlobalParam;
use Yii;
use yii\helpers\Html;
use common\models\UserPointSale;
use common\models\PointSaleDistribution;
use common\components\ActiveRecordCommon;

/**
* This is the model class for table "product_price".
*
* @property integer $id
*/
class ProductPrice extends ActiveRecordCommon
{

/**
* @inheritdoc
*/
public static function tableName()
{
return 'product_price';
}

/**
* @inheritdoc
*/
public function rules()
{
return [
[['id_product', 'price'], 'required'],
[['id_product', 'id_user', 'id_point_sale', 'percent'], 'integer'],
[['price'], 'double'],
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'id_product' => 'Produit',
'id_user' => 'Utilisateur',
'id_point_sale' => 'Point de vente',
'price' => 'Prix (HT)',
'percent' => 'Pourcentage',
];
}

/*
* Relations
*/

public function getProduct()
{
return $this->hasOne(
Product::className(),
['id' => 'id_product']
);
}

public function getPointSale()
{
return $this->hasOne(
PointSale::className(),
['id' => 'id_point_sale']
);
}

public function getUser()
{
return $this->hasOne(
User::className(),
['id' => 'id_user']
) ;
}

/**
* Retourne les options de base nécessaires à la fonction de recherche.
*
* @return array
*/
public static function defaultOptionsSearch()
{
return [
'with' => [],
'join_with' => [],
'orderby' => '',
'attribute_id_producer' => ''
];
}

}

+ 4
- 2
common/models/User.php View File

@@ -76,6 +76,7 @@ class User extends ActiveRecordCommon implements IdentityInterface
var $password_new_confirm;
var $points_sale = [];
var $one_name ;
var $product_price_percent ;

/**
* @inheritdoc
@@ -111,7 +112,7 @@ class User extends ActiveRecordCommon implements IdentityInterface
['password_old', 'verifyPasswordOld'],
['password_new', 'verifyPasswordNew'],
['password_new_confirm', 'verifyPasswordNewConfirm'],
[['date_last_connection', 'password_old', 'password_new', 'password_new_confirm', 'password_hash', 'points_sale'], 'safe'],
[['date_last_connection', 'password_old', 'password_new', 'password_new_confirm', 'password_hash', 'points_sale', 'product_price_percent'], 'safe'],
];
}

@@ -140,7 +141,8 @@ class User extends ActiveRecordCommon implements IdentityInterface
'points_sale' => 'Points de vente',
'type' => 'Type',
'name_legal_person' => 'Libellé',
'is_main_contact' => 'Contact principal'
'is_main_contact' => 'Contact principal',
'product_price_percent' => 'Prix produits : pourcentage'
];
}


+ 4
- 3
common/models/UserProducer.php View File

@@ -67,9 +67,9 @@ class UserProducer extends ActiveRecordCommon
{
return [
[['id_user', 'id_producer'], 'required'],
[['id_user', 'id_producer'], 'integer'],
[['id_user', 'id_producer', 'product_price_percent'], 'integer'],
[['active','bookmark','credit_active'], 'boolean'],
[['credit'], 'double'],
[['credit', 'product_price_percent'], 'double'],
];
}

@@ -83,7 +83,8 @@ class UserProducer extends ActiveRecordCommon
'id_producer' => 'Producteur',
'active' => 'Actif',
'bookmark' => 'Favoris',
'credit_active' => 'Crédit'
'credit_active' => 'Crédit',
'product_price_percent' => 'Prix produits : pourcentage'
];
}

+ 30
- 0
console/migrations/m201207_160043_specific_prices.php View File

@@ -0,0 +1,30 @@
<?php

use yii\db\Migration;
use yii\db\Schema;

class m201207_160043_specific_prices extends Migration
{
public function safeUp()
{
$this->createTable('product_price', [
'id' => 'pk',
'id_product' => Schema::TYPE_INTEGER . ' NOT NULL',
'id_user' => Schema::TYPE_INTEGER,
'id_point_sale' => Schema::TYPE_INTEGER,
'price' => Schema::TYPE_FLOAT,
]);

$this->addColumn('user_producer', 'product_price_percent', Schema::TYPE_INTEGER) ;
$this->addColumn('point_sale', 'product_price_percent', Schema::TYPE_INTEGER) ;
}

public function safeDown()
{
$this->dropTable('product_price') ;
$this->dropColumn('user_producer', 'product_price_percent') ;
$this->dropColumn('point_sale', 'product_price_percent') ;

return false;
}
}

+ 34
- 0
console/migrations/m201207_164410_specific_prices_percent.php View File

@@ -0,0 +1,34 @@
<?php

use yii\db\Migration;
use yii\db\Schema;

class m201207_164410_specific_prices_percent extends Migration
{
public function safeUp()
{
$this->addColumn('product_price', 'percent', Schema::TYPE_INTEGER) ;
}

public function safeDown()
{
$this->dropColumn('product_price', 'percent') ;

return false;
}

/*
// Use up()/down() to run migration code without a transaction.
public function up()
{

}

public function down()
{
echo "m201207_164410_specific_prices_percent cannot be reverted.\n";

return false;
}
*/
}

Loading…
Cancel
Save