[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'], ], ], 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return User::getCurrentStatus() == USER::STATUS_ADMIN; } ] ], ], ]; } /** * Liste les producteurs. * * @return mixed */ public function actionIndex() { $dataProviderProducer = new ActiveDataProvider([ 'query' => Producer::find() ->with('userProducer', 'user') ->orderBy('date_creation DESC'), 'pagination' => [ 'pageSize' => 1000, ], ]); return $this->render('index', [ 'dataProviderProducer' => $dataProviderProducer, ]); } /** * Crée un producteur. * * @return mixed */ public function actionCreate() { $model = new Producer(); if ($model->load(Yii::$app->request->post()) && $model->save()) { Yii::$app->getSession()->setFlash('success', 'Producteur créé.'); return $this->redirect(['index']); } else { return $this->render('create', [ 'model' => $model, ]); } } /** * Génère la facture mensuelle d'un producteur. * * @param integer $idProducer */ public function actionBill($idProducer) { $producer = Producer::findOne($idProducer); if ($producer) { $period = date('Y-m', strtotime('-1 month')); $last_invoice = Invoice::getLastInvoice() ; if (!$last_invoice) { $reference = 'BAP000001'; } else { $reference = str_replace('BAP', '', $last_invoice->reference); $reference ++; $reference = 'BAP' . $reference; } $invoice = new Invoice; $invoice->id_producer = $idProducer; $invoice->date = date('Y-m-d H:i:s'); $invoice->reference = $reference; $invoice->turnover = $producer->getTurnover($period); $invoice->amount_ht = $producer->getFreePrice() ; $invoice->wording = 'Facture ' . date('m/Y', strtotime('-1 month')); $invoice->text = 'Utilisation de la plateforme distrib pour le mois : ' . date('m/Y', strtotime('-1 month')) . '
' . 'Chiffre d\'affaire réalisé sur la plateforme : ' . number_format($facture->ca, 2) . ' € commissionné à 1%.'; $invoice->paid = 0; $invoice->period = $period; $invoice->save(); } $this->redirect(['producer-admin/index']); } /** * Liste les factures des producteurs. * * @return mxied */ public function actionBilling() { $dataProviderInvoice = new ActiveDataProvider([ 'query' => Invoice::find() ->with('producer') ->orderBy('reference DESC'), 'pagination' => [ 'pageSize' => 1000, ], ]); return $this->render('billing', [ 'dataProviderInvoice' => $dataProviderInvoice, ]); } public function actionProducerInstallTaxUpdatePrices($idProducer, $idTaxRate) { $taxRate = TaxRate::searchOne([ 'id' => $idTaxRate ]) ; // product $productsArray = Product::searchAll([ 'id_producer' => $idProducer ]) ; foreach($productsArray as $product) { $product->price = $product->price / (1 + $taxRate->value) ; } // product_order $ordersArray = Order::searchAll([ 'distribution.id_producer' => $idProducer ]) ; foreach($ordersArray as $order) { foreach($order->productOrder as $productOrder) { $productOrder->price = $productOrder->price / (1 + $taxRate->value) ; $productOrder->save() ; } } // product_subscription $subscriptionsArray = Subscription::searchAll([ 'subscription.id_producer' => $idProducer ]) ; foreach($subscriptionsArray as $subscription) { foreach($subscription->productSubscription as $productSubscription) { $productSubscription->price = $productSubscription->price / (1 + $taxRate->value) ; $productSubscription->save() ; } } } /** * Recherche un établissement. * * @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.'); } } }