protected function updateCogs($params) { $cogs = Cogs::findOne(['product_id' => $params['id']]); if (!$cogs) { $cogs = new Cogs(['product_id' => $params['id'], 'cogs' => 0.0]); } $current_stock = ProductStock::find()->where(['product_id' => $params['id']])->sum('qty'); if ($current_stock != 0) { $cogs->cogs += $params['qty'] * ($params['cogs'] - $cogs->cogs) / $current_stock; } else { $cogs->cogs = 0; } return $cogs->save(false); }
/** * @return \yii\db\ActiveQuery */ public function getProductStocks() { return $this->hasMany(ProductStock::className(), ['product_id' => 'id']); }