[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'], ], ], 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return Yii::$app->user->identity->status == USER::STATUS_ADMIN; } ] ], ], ]; } /** * Liste les producteurs. * * @return mixed */ public function actionIndex() { $datas_etablissements = new ActiveDataProvider([ 'query' => Etablissement::find() ->with('userEtablissement', 'user') ->orderBy('date_creation DESC'), 'pagination' => [ 'pageSize' => 1000, ], ]); return $this->render('index', [ 'datas_etablissements' => $datas_etablissements, ]); } /** * Génère la facture mensuelle d'un producteur. * * @param integer $id_etablissement */ public function actionFacturer($id_etablissement) { $etablissement = Etablissement::findOne($id_etablissement); if ($etablissement) { $periode = date('Y-m', strtotime('-1 month')); $last_facture = Facture::getLastFacture(); if (!$last_facture) { $reference = 'BAP000001'; } else { $reference = str_replace('BAP', '', $last_facture->reference); $reference ++; $reference = 'BAP' . $reference; } $facture = new Facture; $facture->id_etablissement = $id_etablissement; $facture->date = date('Y-m-d H:i:s'); $facture->reference = $reference; $facture->ca = $etablissement->getCA($periode); $facture->montant_ht = $etablissement->getMontantFacturer($periode); $facture->libelle = 'Facture ' . date('m/Y', strtotime('-1 month')); $facture->texte = 'Utilisation de la plateforme La boîte à pain pour le mois : ' . date('m/Y', strtotime('-1 month')) . '
' . 'Chiffre d\'affaire réalisé sur la plateforme : ' . number_format($facture->ca, 2) . ' € commissionné à 1%.'; $facture->paye = 0; $facture->periode = $periode; $facture->save(); } $this->redirect(['etablissement-admin/index']); } /** * Liste les factures des producteurs. * * @return mxied */ public function actionFacturation() { $datas_factures = new ActiveDataProvider([ 'query' => Facture::find() ->with('etablissement') ->orderBy('reference DESC'), 'pagination' => [ 'pageSize' => 1000, ], ]); return $this->render('facturation', [ 'datas_factures' => $datas_factures, ]); } /** * Recherche un établissement. * * @param integer $id * @return Etablissement * @throws NotFoundHttpException */ protected function findModel($id) { if (($model = Etablissement::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }