public function search($params) { $query = ProductStockModel::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id_warehouse' => $this->id_warehouse, 'id_product' => $this->id_product, 'id_uom' => $this->id_uom, 'create_by' => $this->create_by, 'update_by' => $this->update_by]); $query->andFilterWhere(['like', 'qty_stock', $this->qty_stock])->andFilterWhere(['like', 'create_at', $this->create_at])->andFilterWhere(['like', 'update_at', $this->update_at]); return $dataProvider; }
public static function getCurrentStockAll($id_product) { return ProductStock::find()->where(['id_product' => $id_product])->sum('qty_stock'); }
/** * * @param StockOpname $opname * @param MStockAdjustment $model * @return mixed * @throws \Exception */ public static function createFromOpname($opname, $model = null) { // info product $currentStocks = ProductStock::find()->select(['id_product', 'qty_stock'])->where(['id_warehouse' => $opname->id_warehouse])->indexBy('id_product')->asArray()->all(); $isiProductUoms = []; foreach (ProductUom::find()->asArray()->all() as $row) { $isiProductUoms[$row['id_product']][$row['id_uom']] = $row['isi']; } // *** $data = ['id_warehouse' => $opname->id_warehouse, 'adjustment_date' => date('Y-m-d'), 'id_reff' => $opname->id_opname, 'description' => "Stock adjustment from stock opname no \"{$opname->opname_num}\"."]; $details = []; foreach ($opname->stockOpnameDtls as $detail) { $cQty = $currentStocks[$detail->id_product] / $isiProductUoms[$detail->id_product][$detail->id_uom]; $details[] = ['id_product' => $detail->id_product, 'id_uom' => $detail->id_uom, 'qty' => $detail->qty - $cQty]; } $data['details'] = $details; return static::create($data, $model); }