hasOne(Producer::className(), ['id' => 'id_producer']); } /** * @inheritdoc */ public function rules() { return [ [['date'], 'required'], [['date'], 'safe'], [['actif'], 'integer'] ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'date' => 'Date', 'actif' => 'Actif', ]; } /* * Relations */ public function getCommande() { return $this->hasMany(Commande::className(), ['id_production' => 'id']); } public function getProductionProduit() { return $this->hasMany(ProductionProduit::className(), ['id_production' => 'id']); } /** * Retourne si un produit est actif ou non. * * @param integer $id_produit * @return boolean */ public function produitActif($id_produit) { if ($id_produit && isset($this->productionProduit) && count($this->productionProduit) > 0) { foreach ($this->productionProduit as $production_produit) { if ($production_produit['id_produit'] == $id_produit && $production_produit['actif']) { return true; } } } return false; } /** * Initialise un jour de production. * * @param string $date * @return Production */ public static function initProduction($date) { $production = null ; if ($date != '') { $production = Production::find() ->where(['date' => $date]) ->andWhere(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) ->one(); if (!$production) { $production = new Production; $production->date = $date; $production->livraison = 1; $production->id_etablissement = Yii::$app->user->identity->id_etablissement; $production->save(); } } // production_point_vente à définir s'ils ne sont pas initialisés if ($production) { $count_productions_point_vente = ProductionPointVente::find()-> where([ 'id_production' => $production->id ]) ->count(); if (!$count_productions_point_vente) { ProductionPointVente::setAll($production->id, true); } } // init produits sélectionnés pour cette production $produits = Produit::getAll(); if ($production) { $day_production = date('N', strtotime($production->date)); $produits_production = ProductionProduit::find()->where(['id_production' => $production->id])->all(); if (!count($produits_production)) { foreach ($produits as $p) { $pp = new ProductionProduit(); $pp->id_production = $production->id; $pp->id_produit = $p->id; $pp->actif = 0; if ($p->actif && $day_production == 1 && $p->lundi) $pp->actif = 1; if ($p->actif && $day_production == 2 && $p->mardi) $pp->actif = 1; if ($p->actif && $day_production == 3 && $p->mercredi) $pp->actif = 1; if ($p->actif && $day_production == 4 && $p->jeudi) $pp->actif = 1; if ($p->actif && $day_production == 5 && $p->vendredi) $pp->actif = 1; if ($p->actif && $day_production == 6 && $p->samedi) $pp->actif = 1; if ($p->actif && $day_production == 7 && $p->dimanche) $pp->actif = 1; $pp->quantite_max = $p->quantite_max; $pp->save(); } } } return $production ; } }