<?php | <?php | ||||
/** | |||||
/** | |||||
Copyright distrib (2018) | Copyright distrib (2018) | ||||
contact@opendistrib.net | contact@opendistrib.net | ||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | 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 | pris connaissance de la licence CeCILL, et que vous en avez accepté les | ||||
termes. | termes. | ||||
*/ | |||||
*/ | |||||
namespace backend\controllers; | namespace backend\controllers; | ||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. | ||||
*/ | */ | ||||
class ProducerController extends BackendController | |||||
class ProducerController extends BackendController | |||||
{ | { | ||||
public $enableCsrfValidation = false; | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'verbs' => [ | |||||
'class' => VerbFilter::className(), | |||||
'actions' => [ | |||||
'delete' => ['post'], | |||||
], | |||||
], | |||||
'access' => [ | |||||
'class' => AccessControl::className(), | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::hasAccessBackend(); | |||||
public $enableCsrfValidation = false; | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'verbs' => [ | |||||
'class' => VerbFilter::className(), | |||||
'actions' => [ | |||||
'delete' => ['post'], | |||||
], | |||||
], | |||||
'access' => [ | |||||
'class' => AccessControl::className(), | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::hasAccessBackend(); | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Modifie un producteur. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionUpdate() | |||||
{ | |||||
$request = Yii::$app->request; | |||||
$model = $this->findModel(GlobalParam::getCurrentProducerId()); | |||||
$model->secret_key_payplug = $model->getSecretKeyPayplug() ; | |||||
$logoFilenameOld = $model->logo; | |||||
$photoFilenameOld = $model->photo; | |||||
if (strlen($model->option_dashboard_date_start)) { | |||||
$model->option_dashboard_date_start = date('d/m/Y', strtotime($model->option_dashboard_date_start)); | |||||
} | |||||
if (strlen($model->option_dashboard_date_end)) { | |||||
$model->option_dashboard_date_end = date('d/m/Y', strtotime($model->option_dashboard_date_end)); | |||||
} | |||||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||||
if(strlen($model->option_dashboard_date_start)) { | |||||
$model->option_dashboard_date_start = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $model->option_dashboard_date_start) | |||||
)); | |||||
$model->save() ; | |||||
} | |||||
if(strlen($model->option_dashboard_date_end)) { | |||||
$model->option_dashboard_date_end = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $model->option_dashboard_date_end)) | |||||
); | |||||
$model->save() ; | |||||
} | |||||
Upload::uploadFile($model, 'logo', $logoFilenameOld); | |||||
Upload::uploadFile($model, 'photo', $photoFilenameOld); | |||||
$deleteLogo = $request->post('delete_logo', 0); | |||||
if ($deleteLogo) { | |||||
$model->logo = ''; | |||||
$model->save(); | |||||
} | } | ||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Modifie un producteur. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionUpdate() | |||||
{ | |||||
$request = Yii::$app->request; | |||||
$model = $this->findModel(GlobalParam::getCurrentProducerId()); | |||||
$model->secret_key_payplug = $model->getSecretKeyPayplug() ; | |||||
$logoFilenameOld = $model->logo; | |||||
$photoFilenameOld = $model->photo; | |||||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||||
Upload::uploadFile($model, 'logo', $logoFilenameOld); | |||||
Upload::uploadFile($model, 'photo', $photoFilenameOld); | |||||
$deleteLogo = $request->post('delete_logo', 0); | |||||
if ($deleteLogo) { | |||||
$model->logo = ''; | |||||
$model->save(); | |||||
} | |||||
$deletePhoto = $request->post('delete_photo', 0); | |||||
if ($deletePhoto) { | |||||
$model->photo = ''; | |||||
$model->save(); | |||||
} | |||||
$model->saveSecretKeyPayplug() ; | |||||
Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | |||||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | |||||
} else { | |||||
if($model->load(Yii::$app->request->post())) { | |||||
Yii::$app->getSession()->setFlash('error', 'Le formulaire comporte des erreurs.'); | |||||
} | |||||
return $this->render('update', [ | |||||
'model' => $model, | |||||
]); | |||||
$deletePhoto = $request->post('delete_photo', 0); | |||||
if ($deletePhoto) { | |||||
$model->photo = ''; | |||||
$model->save(); | |||||
} | |||||
$model->saveSecretKeyPayplug() ; | |||||
Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | |||||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | |||||
} else { | |||||
if($model->load(Yii::$app->request->post())) { | |||||
Yii::$app->getSession()->setFlash('error', 'Le formulaire comporte des erreurs.'); | |||||
} | |||||
return $this->render('update', [ | |||||
'model' => $model, | |||||
]); | |||||
} | |||||
} | } | ||||
} | |||||
/** | |||||
* Affiche le formulaire permettant au producteur de définir le montant | |||||
* de son abonnement. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionBilling() | |||||
{ | |||||
$datasInvoices = new ActiveDataProvider([ | |||||
'query' => Invoice::find() | |||||
->where(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||||
->orderBy('reference DESC'), | |||||
'pagination' => [ | |||||
'pageSize' => 1000, | |||||
], | |||||
]); | |||||
$producer = Producer::findOne(GlobalParam::getCurrentProducerId()); | |||||
if ($producer->load(Yii::$app->request->post())) { | |||||
$producer->save(); | |||||
if (!is_null($producer->free_price)) { | |||||
$alertFreeprice = true; | |||||
} | |||||
/** | |||||
* Affiche le formulaire permettant au producteur de définir le montant | |||||
* de son abonnement. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionBilling() | |||||
{ | |||||
$datasInvoices = new ActiveDataProvider([ | |||||
'query' => Invoice::find() | |||||
->where(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||||
->orderBy('reference DESC'), | |||||
'pagination' => [ | |||||
'pageSize' => 1000, | |||||
], | |||||
]); | |||||
$producer = Producer::findOne(GlobalParam::getCurrentProducerId()); | |||||
if ($producer->load(Yii::$app->request->post())) { | |||||
$producer->save(); | |||||
if (!is_null($producer->free_price)) { | |||||
$alertFreeprice = true; | |||||
} | |||||
} | |||||
return $this->render('billing', [ | |||||
'datasInvoices' => $datasInvoices, | |||||
'producer' => $producer, | |||||
'alertFreePrice' => (isset($alertFreeprice)) ? true : false | |||||
]); | |||||
} | } | ||||
return $this->render('billing', [ | |||||
'datasInvoices' => $datasInvoices, | |||||
'producer' => $producer, | |||||
'alertFreePrice' => (isset($alertFreeprice)) ? true : false | |||||
]); | |||||
} | |||||
/** | |||||
* Recherche un établissement via son ID. | |||||
* | |||||
* @param integer $id | |||||
* @return Etablissement | |||||
* @throws NotFoundHttpException | |||||
*/ | |||||
protected function findModel($id) | |||||
{ | |||||
if (($model = Producer::findOne($id)) !== null) { | |||||
return $model; | |||||
} else { | |||||
throw new NotFoundHttpException('The requested page does not exist.'); | |||||
/** | |||||
* Recherche un établissement via son ID. | |||||
* | |||||
* @param integer $id | |||||
* @return Etablissement | |||||
* @throws NotFoundHttpException | |||||
*/ | |||||
protected function findModel($id) | |||||
{ | |||||
if (($model = Producer::findOne($id)) !== null) { | |||||
return $model; | |||||
} else { | |||||
throw new NotFoundHttpException('The requested page does not exist.'); | |||||
} | |||||
} | } | ||||
} | |||||
} | } |
<?php | <?php | ||||
/** | |||||
/** | |||||
Copyright distrib (2018) | Copyright distrib (2018) | ||||
contact@opendistrib.net | contact@opendistrib.net | ||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | 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 | pris connaissance de la licence CeCILL, et que vous en avez accepté les | ||||
termes. | termes. | ||||
*/ | |||||
*/ | |||||
namespace backend\controllers; | namespace backend\controllers; | ||||
/** | /** | ||||
* Site controller | * Site controller | ||||
*/ | */ | ||||
class SiteController extends BackendController | |||||
class SiteController extends BackendController | |||||
{ | { | ||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::className(), | |||||
'rules' => [ | |||||
[ | |||||
'actions' => ['login', 'error'], | |||||
'allow' => true, | |||||
], | |||||
[ | |||||
'actions' => ['logout', 'index'], | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::hasAccessBackend() ; | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::className(), | |||||
'rules' => [ | |||||
[ | |||||
'actions' => ['login', 'error'], | |||||
'allow' => true, | |||||
], | |||||
[ | |||||
'actions' => ['logout', 'index'], | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::hasAccessBackend() ; | |||||
} | |||||
], | |||||
[ | |||||
'actions' => ['change-producer'], | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::getCurrentStatus() == User::STATUS_ADMIN ; | |||||
} | |||||
], | |||||
], | |||||
], | |||||
'verbs' => [ | |||||
'class' => VerbFilter::className(), | |||||
'actions' => [ | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function actions() | |||||
{ | |||||
return [ | |||||
'error' => [ | |||||
'class' => 'yii\web\ErrorAction', | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Affiche le tableau de bord du backend avec les dernières commandes | |||||
* réalisée, les dernières inscriptions, la liste des clients ayant un crédit | |||||
* négatif etc. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
// commandes | |||||
$optionDashboardNumberDistributions = Producer::getConfig('option_dashboard_number_distributions') ; | |||||
$dashboardNumberDistributions = $optionDashboardNumberDistributions ? $optionDashboardNumberDistributions : 3 ; | |||||
$optionDashboardDateStart = Producer::getConfig('option_dashboard_date_start') ; | |||||
$optionDashboardDateEnd = Producer::getConfig('option_dashboard_date_end') ; | |||||
$queryDistributions = Distribution::find()->with('order') ; | |||||
if($optionDashboardDateStart || $optionDashboardDateEnd) { | |||||
if($optionDashboardDateStart) { | |||||
$queryDistributions->andWhere(['>=', 'distribution.date', $optionDashboardDateStart]) ; | |||||
} | |||||
if($optionDashboardDateEnd) { | |||||
$queryDistributions->andWhere(['<=', 'distribution.date', $optionDashboardDateEnd]) ; | |||||
} | } | ||||
], | |||||
[ | |||||
'actions' => ['change-producer'], | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return User::getCurrentStatus() == User::STATUS_ADMIN ; | |||||
} | |||||
else { | |||||
$queryDistributions->andWhere(['>=', 'distribution.date', date('Y-m-d')]) ; | |||||
} | |||||
$distributionsArray = $queryDistributions->andWhere([ | |||||
'distribution.id_producer' => GlobalParam::getCurrentProducerId(), | |||||
'distribution.active' => 1 | |||||
]) | |||||
->orderBy('date ASC') | |||||
->limit($dashboardNumberDistributions) | |||||
->all(); | |||||
// dernières commandes | |||||
$paramsOrders = [] ; | |||||
if($optionDashboardDateStart || $optionDashboardDateEnd) { | |||||
$conditionsOrders = '' ; | |||||
if($optionDashboardDateStart) { | |||||
$conditionsOrders .= 'distribution.date >= :date_start' ; | |||||
$paramsOrders[':date_start'] = $optionDashboardDateStart; | |||||
} | } | ||||
], | |||||
], | |||||
], | |||||
'verbs' => [ | |||||
'class' => VerbFilter::className(), | |||||
'actions' => [ | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function actions() | |||||
{ | |||||
return [ | |||||
'error' => [ | |||||
'class' => 'yii\web\ErrorAction', | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Affiche le tableau de bord du backend avec les dernières commandes | |||||
* réalisée, les dernières inscriptions, la liste des clients ayant un crédit | |||||
* négatif etc. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
// commandes | |||||
$optionDashboardNumberDistributions = Producer::getConfig('option_dashboard_number_distributions') ; | |||||
$dashboardNumberDistributions = $optionDashboardNumberDistributions ? $optionDashboardNumberDistributions : 3 ; | |||||
$distributionsArray = Distribution::find() | |||||
->with('order') | |||||
->where(['>=', 'distribution.date', date('Y-m-d')]) | |||||
->andWhere([ | |||||
'distribution.id_producer' => GlobalParam::getCurrentProducerId(), | |||||
'distribution.active' => 1 | |||||
]) | |||||
->orderBy('date ASC') | |||||
->limit($dashboardNumberDistributions) | |||||
->all(); | |||||
// dernières commandes | |||||
$ordersArray = Order::searchAll([],[ | |||||
'orderby' => 'date DESC', | |||||
'conditions' => 'distribution.date > :date AND (origin = \'' . Order::ORIGIN_USER . '\' OR origin = \'' . Order::ORIGIN_ADMIN . '\' OR (origin = \'' . Order::ORIGIN_AUTO . '\' AND (date_update IS NOT NULL OR date_delete IS NOT NULL)))', | |||||
'params' => [':date' => date('Y-m-d 00:00:00')], | |||||
]); | |||||
// clients | |||||
$nbUsers = User::searchCount(); | |||||
$usersArray = User::findBy() | |||||
->orderBy('created_at DESC') | |||||
->limit(5) | |||||
->all(); | |||||
$usersNegativeCredit = User::findBy(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||||
->andWhere('user_producer.credit < 0') | |||||
->all(); | |||||
// paramètres | |||||
$producer = GlobalParam::getCurrentProducer(); | |||||
$productsCount = Product::searchCount() ; | |||||
$pointsSaleCount = PointSale::searchCount() ; | |||||
return $this->render('index', [ | |||||
'distributionsArray' => $distributionsArray, | |||||
'ordersArray' => $ordersArray, | |||||
'usersArray' => $usersArray, | |||||
'nbUsers' => $nbUsers, | |||||
'usersNegativeCredit' => $usersNegativeCredit, | |||||
'producer' => $producer, | |||||
'productsCount' => $productsCount, | |||||
'pointsSaleCount' => $pointsSaleCount | |||||
]); | |||||
} | |||||
/** | |||||
* Affiche la page de connexion. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogin() | |||||
{ | |||||
if (!\Yii::$app->user->isGuest) { | |||||
return $this->goHome(); | |||||
if($optionDashboardDateEnd) { | |||||
if($optionDashboardDateStart) { | |||||
$conditionsOrders .= ' AND ' ; | |||||
} | |||||
$conditionsOrders .= 'distribution.date <= :date_end' ; | |||||
$paramsOrders[':date_end'] = $optionDashboardDateEnd ; | |||||
} | |||||
} | |||||
else { | |||||
$conditionsOrders = 'distribution.date >= :date_start' ; | |||||
$paramsOrders[':date_start'] = date('Y-m-d 00:00:00') ; | |||||
} | |||||
$ordersArray = Order::searchAll([],[ | |||||
'orderby' => 'date DESC', | |||||
'conditions' => $conditionsOrders.' AND (origin = \'' . Order::ORIGIN_USER . '\' OR origin = \'' . Order::ORIGIN_ADMIN . '\' OR (origin = \'' . Order::ORIGIN_AUTO . '\' AND (date_update IS NOT NULL OR date_delete IS NOT NULL)))', | |||||
'params' => $paramsOrders, | |||||
]); | |||||
// clients | |||||
$nbUsers = User::searchCount(); | |||||
$usersArray = User::findBy() | |||||
->orderBy('created_at DESC') | |||||
->limit(5) | |||||
->all(); | |||||
$usersNegativeCredit = User::findBy(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||||
->andWhere('user_producer.credit < 0') | |||||
->all(); | |||||
// paramètres | |||||
$producer = GlobalParam::getCurrentProducer(); | |||||
$productsCount = Product::searchCount() ; | |||||
$pointsSaleCount = PointSale::searchCount() ; | |||||
return $this->render('index', [ | |||||
'distributionsArray' => $distributionsArray, | |||||
'ordersArray' => $ordersArray, | |||||
'usersArray' => $usersArray, | |||||
'nbUsers' => $nbUsers, | |||||
'usersNegativeCredit' => $usersNegativeCredit, | |||||
'producer' => $producer, | |||||
'productsCount' => $productsCount, | |||||
'pointsSaleCount' => $pointsSaleCount | |||||
]); | |||||
} | |||||
/** | |||||
* Affiche la page de connexion. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogin() | |||||
{ | |||||
if (!\Yii::$app->user->isGuest) { | |||||
return $this->goHome(); | |||||
} | |||||
$model = new LoginForm(); | |||||
if ($model->load(Yii::$app->request->post()) && $model->login()) { | |||||
return $this->goBack(); | |||||
} else { | |||||
return $this->render('login', [ | |||||
'model' => $model, | |||||
]); | |||||
} | |||||
} | |||||
/** | |||||
* Déconnecte l'utilisateur et le redirige à la page d'accueil. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogout() | |||||
{ | |||||
Yii::$app->user->logout(); | |||||
return $this->goHome(); | |||||
} | } | ||||
$model = new LoginForm(); | |||||
if ($model->load(Yii::$app->request->post()) && $model->login()) { | |||||
return $this->goBack(); | |||||
} else { | |||||
return $this->render('login', [ | |||||
'model' => $model, | |||||
]); | |||||
/** | |||||
* Change le producteur courant de l'utilisateur connecté. | |||||
* Permet de passer d'un producteur à un autre en tant qu'administrateur. | |||||
* | |||||
* @param integer $id | |||||
*/ | |||||
public function actionChangeProducer($id) | |||||
{ | |||||
Yii::$app->user->identity->id_producer = $id; | |||||
Yii::$app->user->identity->save(); | |||||
$this->redirect(['site/index']); | |||||
} | } | ||||
} | |||||
/** | |||||
* Déconnecte l'utilisateur et le redirige à la page d'accueil. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionLogout() | |||||
{ | |||||
Yii::$app->user->logout(); | |||||
return $this->goHome(); | |||||
} | |||||
/** | |||||
* Change le producteur courant de l'utilisateur connecté. | |||||
* Permet de passer d'un producteur à un autre en tant qu'administrateur. | |||||
* | |||||
* @param integer $id | |||||
*/ | |||||
public function actionChangeProducer($id) | |||||
{ | |||||
Yii::$app->user->identity->id_producer = $id; | |||||
Yii::$app->user->identity->save(); | |||||
$this->redirect(['site/index']); | |||||
} | |||||
} | } |
Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_WEEK => 'Jours de la semaine', | Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_WEEK => 'Jours de la semaine', | ||||
Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_INCOMING_DISTRIBUTIONS => 'Distributions à venir', | Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_INCOMING_DISTRIBUTIONS => 'Distributions à venir', | ||||
]); ?> | ]); ?> | ||||
</div> | |||||
</div> | |||||
<?= $form->field($model, 'option_dashboard_number_distributions') | |||||
->dropDownList([ | |||||
3 => '3', | |||||
6 => '6', | |||||
9 => '9', | |||||
12 => '12', | |||||
15 => '15', | |||||
18 => '18', | |||||
21 => '21', | |||||
24 => '24', | |||||
27 => '27', | |||||
30 => '30', | |||||
], []); ?> | |||||
<div v-show="currentSection == 'tableau-bord'" class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Tableau de bord</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?= $form->field($model, 'option_dashboard_number_distributions') | |||||
->dropDownList([ | |||||
3 => '3', | |||||
6 => '6', | |||||
9 => '9', | |||||
12 => '12', | |||||
15 => '15', | |||||
18 => '18', | |||||
21 => '21', | |||||
24 => '24', | |||||
27 => '27', | |||||
30 => '30', | |||||
], []); ?> | |||||
<?= $form->field($model, 'option_dashboard_date_start')->textInput([ | |||||
'class' => 'datepicker form-control' | |||||
]) ; ?> | |||||
<?= $form->field($model, 'option_dashboard_date_end')->textInput([ | |||||
'class' => 'datepicker form-control' | |||||
]) ; ?> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div v-show="currentSection == 'prise-commande'" class="panel panel-default"> | <div v-show="currentSection == 'prise-commande'" class="panel panel-default"> | ||||
<div class="panel-heading"> | <div class="panel-heading"> | ||||
<h3 class="panel-title">Prise de commande</h3> | <h3 class="panel-title">Prise de commande</h3> |
name: 'general', | name: 'general', | ||||
nameDisplay: 'Général' | nameDisplay: 'Général' | ||||
}, | }, | ||||
{ | |||||
name: 'tableau-bord', | |||||
nameDisplay: 'Tableau de bord' | |||||
}, | |||||
{ | { | ||||
name: 'prise-commande', | name: 'prise-commande', | ||||
nameDisplay: 'Prise de commande' | nameDisplay: 'Prise de commande' |
[['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code', 'type', 'credit_functioning', 'option_behavior_cancel_order', 'document_quotation_prefix', 'document_quotation_first_reference', 'document_invoice_prefix', 'document_invoice_first_reference', 'document_delivery_note_prefix', 'document_delivery_note_first_reference'], 'string', 'max' => 255], | [['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code', 'type', 'credit_functioning', 'option_behavior_cancel_order', 'document_quotation_prefix', 'document_quotation_first_reference', 'document_invoice_prefix', 'document_invoice_first_reference', 'document_delivery_note_prefix', 'document_delivery_note_first_reference'], 'string', 'max' => 255], | ||||
[['free_price', 'credit_limit_reminder', 'credit_limit'], 'double'], | [['free_price', 'credit_limit_reminder', 'credit_limit'], 'double'], | ||||
['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'], | ['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'], | ||||
//[['option_dashboard_date_start', 'option_dashboard_date_end'], 'date', 'format' => 'php:d/m/Y'], | |||||
[['option_dashboard_date_start', 'option_dashboard_date_end'], 'safe'], | |||||
]; | ]; | ||||
} | } | ||||
'option_email_confirm' => 'Envoyer un email de confirmation au client', | 'option_email_confirm' => 'Envoyer un email de confirmation au client', | ||||
'option_email_confirm_producer' => 'Envoyer un email de confirmation au producteur', | 'option_email_confirm_producer' => 'Envoyer un email de confirmation au producteur', | ||||
'option_dashboard_number_distributions' => 'Nombre de distributions affichées sur le tableau de board', | 'option_dashboard_number_distributions' => 'Nombre de distributions affichées sur le tableau de board', | ||||
'option_dashboard_date_start' => 'Date de début', | |||||
'option_dashboard_date_end' => 'Date de fin', | |||||
]; | ]; | ||||
} | } | ||||
<?php | |||||
use yii\db\Migration; | |||||
use yii\db\Schema; | |||||
class m201126_090613_option_dashboard_date_start_end extends Migration | |||||
{ | |||||
public function safeUp() | |||||
{ | |||||
$this->addColumn('producer', 'option_dashboard_date_start', Schema::TYPE_DATE); | |||||
$this->addColumn('producer', 'option_dashboard_date_end', Schema::TYPE_DATE); | |||||
} | |||||
public function safeDown() | |||||
{ | |||||
$this->dropColumn('producer', 'option_dashboard_date_start'); | |||||
$this->dropColumn('producer', 'option_dashboard_date_end'); | |||||
return false; | |||||
} | |||||
} |