hasOne(Produit::className(), ['id' => 'id_produit']); } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'id_production' => 'Id Production', 'id_produit' => 'Id Produit', 'actif' => 'Actif', 'quantite_max' => 'Quantité max', ]; } /** * Recherche les enregistrement ProductionProduit liés à une production. * * @param integer $id_production * @return array */ public static function findProduits($id_production) { $production_produits = ProductionProduit::find() ->with('produit') ->where(['id_production' => $id_production]) ->all(); $arr_production_produits = []; $commandes = Commande::find() ->with('commandeProduits', 'user') ->joinWith('production') ->where(['production.id' => $id_production]) ->orderBy('date ASC') ->all(); foreach ($production_produits as $pp) { if (isset($pp->produit)) { $arr_production_produits[$pp->id_produit] = [ 'actif' => (int) $pp->actif, 'epuise' => (int) $pp->produit->epuise, 'vrac' => (int) $pp->produit->vrac, 'quantite_max' => $pp->quantite_max, 'quantite_commandee' => Commande::getQuantiteProduit($pp->id_produit, $commandes), 'quantite_restante' => $pp->quantite_max - Commande::getQuantiteProduit($pp->id_produit, $commandes) ]; } } return $arr_production_produits; } }