@@ -81,7 +81,6 @@ termes. | |||
['label' => 'Administration', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Producteurs','icon' => 'th-list','url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Taxes','icon' => 'eur','url' => ['/tax-rate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Statuts commande','icon' => 'tags','url' => ['/order-status-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Communiquer','icon' => 'bullhorn','url' => ['/communicate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Outils', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], |
@@ -1,89 +0,0 @@ | |||
<?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. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\grid\GridView; | |||
use common\models\User ; | |||
use common\models\Etablissement ; | |||
$this->title = 'Facturation'; | |||
$this->params['breadcrumbs'][] = 'Administration' ; | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<h1>Facturation</h1> | |||
<?= GridView::widget([ | |||
'dataProvider' => $datas_factures, | |||
'columns' => [ | |||
[ | |||
'attribute' => 'reference', | |||
'label' => 'Référence', | |||
], | |||
[ | |||
'attribute' => 'id_producer', | |||
'label' => 'Producteur', | |||
'value' => function($model) { | |||
return Html::encode($model->producer->name) ; | |||
} | |||
], | |||
'libelle', | |||
[ | |||
'attribute' => 'amount_ht', | |||
'label' => 'Montant', | |||
'value' => function($model) { | |||
return number_format($model->amount_ht,2).' €' ; | |||
} | |||
], | |||
[ | |||
'attribute' => 'paid', | |||
'label' => 'Payé', | |||
'format' => 'raw', | |||
'value' => function($model) { | |||
if($model->paid) | |||
{ | |||
return '<span class="label label-success">Oui</span>' ; | |||
} | |||
else { | |||
return '<span class="label label-danger">Non</span>' ; | |||
} | |||
} | |||
] | |||
], | |||
]); ?> |
@@ -40,5 +40,57 @@ return [ | |||
'adminEmail' => 'contact@opendistrib.net', | |||
'supportEmail' => 'contact@opendistrib.net', | |||
'user.passwordResetTokenExpire' => 3600, | |||
'producer' => false | |||
'producer' => false, | |||
'orderStatus' => [ | |||
'new-order' => [ | |||
'name' => 'Nouvelle commande', | |||
'color' => '#14c40e', | |||
'nextStatusAllow' => ['waiting-paiement-on-delivery', 'waiting-paiement-by-credit', 'canceled'], | |||
'slug' => 'new-order' | |||
], | |||
'waiting-paiement-on-delivery' => [ | |||
'name' => 'En attente de paiement à la livraison', | |||
'color' => '#e19a4d', | |||
'nextStatusAllow' => ['delivered', 'canceled'], | |||
'slug' => 'waiting-paiement-on-delivery' | |||
], | |||
'waiting-paiement-by-credit' => [ | |||
'name' => 'En attente de paiement par crédit', | |||
'color' => '#e19a4d', | |||
'nextStatusAllow' => ['paid-by-credit', 'canceled'], | |||
'slug' => 'waiting-paiement-by-credit' | |||
], | |||
'paid-by-credit' => [ | |||
'name' => 'Payé par crédit', | |||
'color' => '#3180d5', | |||
'nextStatusAllow' => ['waiting-delivery'], | |||
'slug' => 'paid-by-credit' | |||
], | |||
'waiting-delevery'=>[ | |||
'name' => 'En attente de livraison', | |||
'color' => '#d5bb31', | |||
'nextStatusAllow' => ['delivered', 'refunded'], | |||
'slug' => 'new-order' | |||
], | |||
'delivered' => [ | |||
'name' => 'Livré', | |||
'color' => '#36d531', | |||
'nextStatusAllow' => [], | |||
'slug' => 'new-order' | |||
], | |||
'refunded' => [ | |||
'name' => 'Remboursé', | |||
'color' => '#d01d14', | |||
'nextStatusAllow' => ['canceled'], | |||
'slug' => 'refunded' | |||
], | |||
'cancel' => [ | |||
'name' => 'Commande annulée', | |||
'color' => '#d01d14', | |||
'nextStatusAllow' => [], | |||
'slug' => 'cancel' | |||
] | |||
] | |||
]; |
@@ -38,10 +38,14 @@ | |||
namespace common\models; | |||
use common\helpers\Debug; | |||
use common\helpers\GlobalParam; | |||
use common\helpers\Price; | |||
use Yii; | |||
use yii\helpers\Html; | |||
use common\models\Producer; | |||
use common\components\ActiveRecordCommon; | |||
use yii\web\NotFoundHttpException; | |||
/** | |||
* This is the model class for table "order". | |||
@@ -92,7 +96,7 @@ class Order extends ActiveRecordCommon | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_user', 'date'], 'required', 'message' => ''], | |||
[['id_user', 'date', 'id_point_sale', 'id_distribution', 'status'], 'required', 'message' => ''], | |||
[['id_user', 'id_point_sale', 'id_distribution', 'id_subscription', 'id_invoice', 'id_quotation', 'id_delivery_note'], 'integer'], | |||
[['auto_payment', 'tiller_synchronization'], 'boolean'], | |||
[['date', 'date_update', 'comment', 'comment_point_sale', 'mean_payment'], 'safe'] | |||
@@ -112,6 +116,7 @@ class Order extends ActiveRecordCommon | |||
'id_point_sale' => 'Point de vente', | |||
'id_distribution' => 'Date de distribution', | |||
'id_subscription' => 'Abonnement', | |||
'status' => 'Statut', | |||
'id_invoice' => 'Facture', | |||
'id_quotation' => 'Devis', | |||
'id_delivery_note' => 'Bon de livraison' | |||
@@ -156,11 +161,6 @@ class Order extends ActiveRecordCommon | |||
->with('productSubscription'); | |||
} | |||
public function getOrderOrderStatus() | |||
{ | |||
return $this->hasMany(OrderOrderStatus::className(), ['id_order' => 'id'])->with('orderStatus'); | |||
} | |||
public function getInvoice() | |||
{ | |||
return $this->hasOne(Invoice::className(), ['id' => 'id_invoice']); | |||
@@ -209,12 +209,12 @@ class Order extends ActiveRecordCommon | |||
*/ | |||
public function initAmount() | |||
{ | |||
$this->amount = 0 ; | |||
$this->weight = 0 ; | |||
$this->amount = 0; | |||
$this->weight = 0; | |||
if (isset($this->productOrder)) { | |||
foreach ($this->productOrder as $productOrder) { | |||
$this->amount += $productOrder->price * $productOrder->quantity; | |||
$this->amount += Price::getPriceWithTax($productOrder->price, $productOrder->taxRate->value) * $productOrder->quantity; | |||
if ($productOrder->unit == 'piece') { | |||
if (isset($productOrder->product)) { | |||
$this->weight += ($productOrder->quantity * $productOrder->product->weight) / 1000; | |||
@@ -281,6 +281,95 @@ class Order extends ActiveRecordCommon | |||
} | |||
} | |||
/** | |||
* Changement de statut d'une commande | |||
* | |||
* @param $newStatus | |||
*/ | |||
public function changeOrderStatus($newStatus, $origin) | |||
{ | |||
$orderStatusArray = GlobalParam::get('orderStatus'); | |||
switch ($newStatus) { | |||
case 'new-order' : | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
break; | |||
case 'waiting-paiement-on-delivery': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'waiting-paiement-by-credit': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'paid-by-credit': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'waiting-delevery' : | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'delivered': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'refunded': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
case 'cancel': | |||
if(in_array($newStatus, $orderStatusArray[$this->status]['nextStatusAllow'])){ | |||
$this->addOrderStatusHistory($newStatus, $origin); | |||
$this->status = $newStatus; | |||
$this->save(); | |||
} | |||
break; | |||
default: | |||
throw new NotFoundHttpException('Statut de commande inconnu.'); | |||
break; | |||
} | |||
} | |||
public function addOrderStatusHistory($newStatus,$origin) | |||
{ | |||
$orderStatusHistory = new OrderStatusHistory(); | |||
$orderStatusHistory->id_user = User::getCurrentId(); | |||
$orderStatusHistory->id_order = $this->id; | |||
$orderStatusHistory->status = $newStatus; | |||
$orderStatusHistory->origin = $origin; | |||
$orderStatusHistory->date = date('Y-m-d H:i:s'); | |||
$orderStatusHistory->save(); | |||
} | |||
/** | |||
* Retourne le montant de la commande (total, payé, restant, ou en surplus). | |||
* |
@@ -1,58 +0,0 @@ | |||
<?php | |||
namespace common\models; | |||
use common\components\ActiveRecordCommon; | |||
use Yii; | |||
/** | |||
* This is the model class for table "order_status". | |||
* | |||
* @property integer $id | |||
* @property string $name | |||
*/ | |||
class OrderStatus extends ActiveRecordCommon | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'order_status'; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['name'], 'string', 'max' => 255], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id' => 'ID', | |||
'name' => 'Nom', | |||
]; | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() { | |||
return [ | |||
'with' => [], | |||
'join_with' => ['user', 'order'], | |||
'orderby' => 'id ASC', | |||
'attribute_id_producer' => '' | |||
] ; | |||
} | |||
} |
@@ -0,0 +1,81 @@ | |||
<?php | |||
namespace common\models; | |||
use common\components\ActiveRecordCommon; | |||
use Yii; | |||
/** | |||
* This is the model class for table "order_order_status". | |||
* | |||
* @property integer $id | |||
* @property integer $id_order | |||
* @property integer $id_order_status | |||
* @property string $date | |||
*/ | |||
class OrderStatusHistory extends ActiveRecordCommon | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'order_status_history'; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_order', 'status', 'id_user', 'date', 'origin'], 'required'], | |||
[['id_order', 'id_user',], 'integer'], | |||
[['date'], 'safe'], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id' => 'ID', | |||
'id_order' => 'Commande', | |||
'id_user' => 'Utilisateur', | |||
'status' => 'Statut', | |||
'origin' => 'Origine', | |||
'date' => 'Date', | |||
]; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getOrder() | |||
{ | |||
return $this->hasOne(User::className(), ['id' => 'id_order']); | |||
} | |||
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' => ['order', 'orderStatus'], | |||
'orderby' => 'date ASC', | |||
'attribute_id_producer' => '' | |||
]; | |||
} | |||
} |
@@ -1,45 +1,46 @@ | |||
<?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. | |||
*/ | |||
/** | |||
* 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 common\components\ActiveRecordCommon ; | |||
use common\components\ActiveRecordCommon; | |||
/** | |||
* This is the model class for table "product_order". | |||
@@ -53,65 +54,79 @@ use common\components\ActiveRecordCommon ; | |||
class ProductOrder extends ActiveRecordCommon | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'product_order'; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getProduct() | |||
{ | |||
return $this->hasOne(Product::className(), ['id' => 'id_product']); | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_order', 'id_product', 'quantity'], 'required'], | |||
[['id_order', 'id_product', 'id_tax_rate'], 'integer'], | |||
[['unit'], 'string', 'max' => 255], | |||
[['quantity'], 'number', 'min' => 0], | |||
[['description'], 'safe'] | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'product_order'; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getProduct() | |||
{ | |||
return $this->hasOne(Product::className(), ['id' => 'id_product']); | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_order', 'id_product', 'quantity'], 'required'], | |||
[['id_order', 'id_product', 'id_tax_rate'], 'integer'], | |||
[['unit'], 'string', 'max' => 255], | |||
[['quantity'], 'number', 'min' => 0], | |||
[['description'], 'safe'] | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id' => 'ID', | |||
'id_order' => 'Commande', | |||
'id_product' => 'Product', | |||
'quantity' => 'Quantité', | |||
'unit' => 'Unité', | |||
'id_tax_rate' => 'Taxe', | |||
'description' => 'Description' | |||
]; | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() | |||
{ | |||
return [ | |||
'with' => ['taxRate'], | |||
'join_with' => [], | |||
'orderby' => '', | |||
'attribute_id_producer' => '' | |||
]; | |||
} | |||
public function afterFind() { | |||
if ($this->taxRate == null) { | |||
$this->populateRelation('taxRate', GlobalParam::getCurrentProducer()->taxRate); | |||
} | |||
parent::afterFind(); | |||
} | |||
public function getTaxRate() | |||
{ | |||
return $this->hasOne(TaxRate::className(), ['id' => 'id_tax_rate']); | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id' => 'ID', | |||
'id_order' => 'Commande', | |||
'id_product' => 'Product', | |||
'quantity' => 'Quantité', | |||
'unit' => 'Unité', | |||
'id_tax_rate' => 'Taxe', | |||
'description' => 'Description' | |||
]; | |||
} | |||
/** | |||
* 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' => '' | |||
] ; | |||
} | |||
} |
@@ -5,13 +5,13 @@ use yii\db\Schema; | |||
class m200106_143017_module_devis_bl_factures_modification_champs_id_status_order extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('order', 'id_status') ; | |||
} | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('order', 'id_status'); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('order', 'id_status', Schema::TYPE_INTEGER) ; | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('order', 'id_status', Schema::TYPE_INTEGER); | |||
} | |||
} |
@@ -9,15 +9,15 @@ class m200107_095559_module_bl_devis_factures_modification_champs_delivery_note | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('delivery_note', 'id_point_sale_distribution'); | |||
$this->addColumn('delivery_note', 'id_point_sale', Schema::TYPE_INTEGER) ; | |||
$this->addColumn('delivery_note', 'id_distribution', Schema::TYPE_INTEGER) ; | |||
$this->addColumn('delivery_note', 'id_point_sale', Schema::TYPE_INTEGER); | |||
$this->addColumn('delivery_note', 'id_distribution', Schema::TYPE_INTEGER); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('delivery_note', 'id_point_sale_distribution', Schema::TYPE_INTEGER); | |||
$this->dropColumn('delivery_note', 'id_point_sale') ; | |||
$this->dropColumn('delivery_note', 'id_distribution') ; | |||
$this->dropColumn('delivery_note', 'id_point_sale'); | |||
$this->dropColumn('delivery_note', 'id_distribution'); | |||
} | |||
} |
@@ -5,15 +5,15 @@ use yii\db\Schema; | |||
class m200107_101930_module_devis_bl_facture_suppression_champs_delivery_note extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('delivery_note', 'id_point_sale') ; | |||
$this->dropColumn('delivery_note', 'id_distribution') ; | |||
} | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('delivery_note', 'id_point_sale'); | |||
$this->dropColumn('delivery_note', 'id_distribution'); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('delivery_note', 'id_point_sale', Schema::TYPE_INTEGER) ; | |||
$this->addColumn('delivery_note', 'id_distribution', Schema::TYPE_INTEGER) ; | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('delivery_note', 'id_point_sale', Schema::TYPE_INTEGER); | |||
$this->addColumn('delivery_note', 'id_distribution', Schema::TYPE_INTEGER); | |||
} | |||
} |
@@ -5,16 +5,16 @@ use yii\db\Schema; | |||
class m200107_140622_module_bl_devis_factures_modification_champ_taxrate extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->renameColumn('tax_rate', 'pourcent', 'value'); | |||
public function safeUp() | |||
{ | |||
$this->renameColumn('tax_rate', 'pourcent', 'value'); | |||
} | |||
} | |||
public function safeDown() | |||
{ | |||
$this->renameColumn('tax_rate', 'value', 'pourcent'); | |||
public function safeDown() | |||
{ | |||
$this->renameColumn('tax_rate', 'value', 'pourcent'); | |||
} | |||
} | |||
} |
@@ -5,23 +5,23 @@ use yii\db\Schema; | |||
class m200108_091551_module_bl_devis_factures_suppression_champs_documents extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('invoice', 'city') ; | |||
$this->dropColumn('invoice', 'postcode') ; | |||
$this->dropColumn('quotation', 'city') ; | |||
$this->dropColumn('quotation', 'postcode') ; | |||
$this->dropColumn('delivery_note', 'city') ; | |||
$this->dropColumn('delivery_note', 'postcode') ; | |||
} | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('invoice', 'city'); | |||
$this->dropColumn('invoice', 'postcode'); | |||
$this->dropColumn('quotation', 'city'); | |||
$this->dropColumn('quotation', 'postcode'); | |||
$this->dropColumn('delivery_note', 'city'); | |||
$this->dropColumn('delivery_note', 'postcode'); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('invoice', 'city', Schema::TYPE_STRING) ; | |||
$this->addColumn('invoice', 'postcode', Schema::TYPE_STRING) ; | |||
$this->addColumn('quotation', 'city', Schema::TYPE_STRING) ; | |||
$this->addColumn('quotation', 'postcode', Schema::TYPE_STRING) ; | |||
$this->addColumn('delivery_note', 'city', Schema::TYPE_STRING) ; | |||
$this->addColumn('delivery_note', 'postcode', Schema::TYPE_STRING) ; | |||
} | |||
public function safeDown() | |||
{ | |||
$this->addColumn('invoice', 'city', Schema::TYPE_STRING); | |||
$this->addColumn('invoice', 'postcode', Schema::TYPE_STRING); | |||
$this->addColumn('quotation', 'city', Schema::TYPE_STRING); | |||
$this->addColumn('quotation', 'postcode', Schema::TYPE_STRING); | |||
$this->addColumn('delivery_note', 'city', Schema::TYPE_STRING); | |||
$this->addColumn('delivery_note', 'postcode', Schema::TYPE_STRING); | |||
} | |||
} |
@@ -5,26 +5,26 @@ use yii\db\Schema; | |||
class m200108_101042_module_bl_devis_factures_modification_champs_documents extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->addColumn('invoice', 'id_producer', Schema::TYPE_INTEGER) ; | |||
$this->addColumn('quotation', 'id_producer', Schema::TYPE_INTEGER) ; | |||
$this->addColumn('delivery_note', 'id_producer', Schema::TYPE_INTEGER) ; | |||
$this->alterColumn('invoice', 'date', Schema::TYPE_DATETIME.' DEFAULT CURRENT_TIMESTAMP') ; | |||
$this->alterColumn('delivery_note', 'date', Schema::TYPE_DATETIME.' DEFAULT CURRENT_TIMESTAMP') ; | |||
$this->alterColumn('quotation', 'date', Schema::TYPE_DATETIME.' DEFAULT CURRENT_TIMESTAMP') ; | |||
} | |||
public function safeUp() | |||
{ | |||
$this->addColumn('invoice', 'id_producer', Schema::TYPE_INTEGER); | |||
$this->addColumn('quotation', 'id_producer', Schema::TYPE_INTEGER); | |||
$this->addColumn('delivery_note', 'id_producer', Schema::TYPE_INTEGER); | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('invoice', 'id_producer') ; | |||
$this->dropColumn('delivery_note', 'id_producer') ; | |||
$this->dropColumn('quotation', 'id_producer') ; | |||
$this->alterColumn('invoice', 'date', Schema::TYPE_DATETIME) ; | |||
$this->alterColumn('delivery_note', 'date', Schema::TYPE_DATETIME) ; | |||
$this->alterColumn('quotation', 'date', Schema::TYPE_DATETIME) ; | |||
} | |||
$this->alterColumn('invoice', 'date', Schema::TYPE_DATETIME . ' DEFAULT CURRENT_TIMESTAMP'); | |||
$this->alterColumn('delivery_note', 'date', Schema::TYPE_DATETIME . ' DEFAULT CURRENT_TIMESTAMP'); | |||
$this->alterColumn('quotation', 'date', Schema::TYPE_DATETIME . ' DEFAULT CURRENT_TIMESTAMP'); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('invoice', 'id_producer'); | |||
$this->dropColumn('delivery_note', 'id_producer'); | |||
$this->dropColumn('quotation', 'id_producer'); | |||
$this->alterColumn('invoice', 'date', Schema::TYPE_DATETIME); | |||
$this->alterColumn('delivery_note', 'date', Schema::TYPE_DATETIME); | |||
$this->alterColumn('quotation', 'date', Schema::TYPE_DATETIME); | |||
} | |||
} |
@@ -4,32 +4,32 @@ use yii\db\Migration; | |||
class m200108_145508_module_bl_devis_factures_suppression_price_unit_step_product_subscription extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('product_subscription', 'unit') ; | |||
$this->dropColumn('product_subscription', 'step') ; | |||
$this->dropColumn('product_subscription', 'price') ; | |||
} | |||
public function safeDown() | |||
{ | |||
echo "m200108_145508_module_bl_devis_factures_suppression_price_unit_step_product_subscription cannot be reverted.\n"; | |||
return false; | |||
} | |||
/* | |||
// Use up()/down() to run migration code without a transaction. | |||
public function up() | |||
{ | |||
} | |||
public function down() | |||
{ | |||
echo "m200108_145508_module_bl_devis_factures_suppression_price_unit_step_product_subscription cannot be reverted.\n"; | |||
return false; | |||
} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->dropColumn('product_subscription', 'unit'); | |||
$this->dropColumn('product_subscription', 'step'); | |||
$this->dropColumn('product_subscription', 'price'); | |||
} | |||
public function safeDown() | |||
{ | |||
echo "m200108_145508_module_bl_devis_factures_suppression_price_unit_step_product_subscription cannot be reverted.\n"; | |||
return false; | |||
} | |||
/* | |||
// Use up()/down() to run migration code without a transaction. | |||
public function up() | |||
{ | |||
} | |||
public function down() | |||
{ | |||
echo "m200108_145508_module_bl_devis_factures_suppression_price_unit_step_product_subscription cannot be reverted.\n"; | |||
return false; | |||
} | |||
*/ | |||
} |
@@ -0,0 +1,39 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
class m200108_195657_module_bl_devis_factures_order_status_history extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->delete('order_status'); | |||
$this->renameTable('order_order_status', 'order_status_history'); | |||
$this->addColumn('order_status_history', 'id_user', Schema::TYPE_INTEGER); | |||
$this->addColumn('order', 'status', Schema::TYPE_STRING); | |||
$this->renameColumn('order_status_history', 'id_order_status', 'status'); | |||
$this->alterColumn('order_status_history', 'status', Schema::TYPE_STRING); | |||
} | |||
public function safeDown() | |||
{ | |||
echo "m200108_195657_module_bl_devis_factures_order_status_history cannot be reverted.\n"; | |||
return 'false'; | |||
} | |||
/* | |||
// Use up()/down() to run migration code without a transaction. | |||
public function up() | |||
{ | |||
} | |||
public function down() | |||
{ | |||
echo "m200108_195657_module_bl_devis_factures_order_status_history cannot be reverted.\n"; | |||
return false; | |||
} | |||
*/ | |||
} |
@@ -0,0 +1,19 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
class m200109_152833_module_bl_devis_factures_order_status_history_add_origin extends Migration | |||
{ | |||
public function safeUp() | |||
{ | |||
$this->addColumn('order_status_history', 'origin', Schema::TYPE_STRING); | |||
} | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('order_status_history', 'origin'); | |||
} | |||
} |
@@ -182,6 +182,7 @@ class OrderController extends ProducerBaseController | |||
$order = new Order; | |||
$order->load(Yii::$app->request->post()); | |||
$order->id_user = User::getCurrentId(); | |||
$order->status = 'tmp-order'; | |||
$order->date = date('Y-m-d H:i:s'); | |||
$order->origin = Order::ORIGIN_USER; | |||
} | |||
@@ -298,6 +299,7 @@ class OrderController extends ProducerBaseController | |||
// sauvegarde de la commande | |||
$order->save(); | |||
$order->changeOrderStatus('new-order', 'user'); | |||
// ajout de l'utilisateur à l'établissement | |||
Producer::addUser(User::getCurrentId(), $distribution->id_producer); | |||
@@ -324,6 +326,7 @@ class OrderController extends ProducerBaseController | |||
$productOrder->id_product = $product->id; | |||
$productOrder->price = $product->price; | |||
$productOrder->id_tax_rate = $product->id_tax_rate; | |||
$unit = (!is_null($order) && isset($unitsArray[$product->id])) ? $unitsArray[$product->id] : $product->unit; | |||
$coefficient = Product::$unitsArray[$unit]['coefficient']; | |||
@@ -358,6 +361,7 @@ class OrderController extends ProducerBaseController | |||
$creditFunctioning == Producer::CREDIT_FUNCTIONING_MANDATORY || | |||
($creditFunctioning == Producer::CREDIT_FUNCTIONING_USER && $userProducer->credit_active) | |||
)) { | |||
$order->changeOrderStatus('waiting-paiement-by-credit', 'user'); | |||
// à payer | |||
if ($order->getPaymentStatus() == Order::PAYMENT_UNPAID) { | |||
@@ -374,6 +378,9 @@ class OrderController extends ProducerBaseController | |||
User::getCurrentId(), | |||
User::getCurrentId() | |||
); | |||
$order->changeOrderStatus('paid-by-credit', 'user'); | |||
}else{ | |||
$order->changeOrderStatus('waiting-paiement-on-delivery', 'user'); | |||
} | |||
} // surplus à rembourser | |||
elseif ($order->getPaymentStatus() == Order::PAYMENT_SURPLUS) { | |||
@@ -386,6 +393,8 @@ class OrderController extends ProducerBaseController | |||
User::getCurrentId() | |||
); | |||
} | |||
}else{ | |||
$order->changeOrderStatus('waiting-paiement-on-delivery', 'user'); | |||
} | |||
} | |||
@@ -426,6 +435,7 @@ class OrderController extends ProducerBaseController | |||
if ($order && User::getCurrentId() == $order->id_user) { | |||
$order->delete(); | |||
$order->changeOrderStatus('canceled', 'user'); | |||
Yii::$app->session->setFlash('success', 'Votre commande a bien été annulée.'); | |||
} | |||