/** * * @param array $params * Required field id_warehouse, id_product, qty * Optional field app, id_ref, id_uom, item_value * @return boolean * @throws UserException */ public function updateStock($params) { $stock = ProductStock::findOne(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product']]); if (isset($params['id_uom'])) { $qty_per_uom = MasterHelper::getQtyProductUom($params['id_product'], $params['id_uom']); } else { $qty_per_uom = 1; } if (!$stock) { $stock = new ProductStock(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product'], 'qty_stock' => 0]); } // update cogs if (isset($params['price'])) { $this->updateCogs($params); } $stock->qty_stock = $stock->qty_stock + $params['qty'] * $qty_per_uom; if ($stock->canSetProperty('logParams')) { $logParams = ['mv_qty' => $params['qty'] * $qty_per_uom]; foreach (['app', 'id_ref'] as $key) { if (isset($params[$key]) || array_key_exists($key, $params)) { $logParams[$key] = $params[$key]; } } $stock->logParams = $logParams; } if (!$stock->save()) { throw new UserException(implode(",\n", $stock->firstErrors)); } return true; }
/** * Creates a new ProductStock model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new ProductStock(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id_stock]); } else { return $this->render('create', ['model' => $model]); } }
public static function updateStock($params, $logs = []) { $stock = ProductStock::findOne(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product']]); if (!$stock) { $stock = new ProductStock(); $stock->setAttributes(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product'], 'id_uom' => $params['id_uom'], 'qty_stock' => 0]); } $stock->qty_stock = $stock->qty_stock + $params['qty']; if (!empty($logs) && $stock->canSetProperty('logParams')) { $stock->logParams = $logs; } if (!$stock->save()) { throw new UserException(implode(",\n", $stock->firstErrors)); } return true; }