public function actionHapusDetail($id) { $detail = StockOpnameDetail::model()->findByPk($id); if (!$detail->delete()) { throw new Exception('Gagal hapus detail SO'); } }
/** * Mencari jumlah barang untuk barangId yang sudah ada di soId * @param int $soId ID Stock Opname * @param int $barangId ID Barang * @return int Quantiti yang sudah di so di soId ini */ public function qtyYangSudahSo($soId, $barangId) { $detail = Yii::app()->db->createCommand()->select('sum(qty_sebenarnya) total')->from(StockOpnameDetail::model()->tableName() . ' detail')->where('stock_opname_id=:soId AND barang_id=:barangId', array(':soId' => $soId, ':barangId' => $barangId))->queryRow(); return $detail ? $detail['total'] : 0; }
/** * Proses simpan Stock Opname. * 1. Update status dari draft menjadi so * 2. Update inventory terkait dengan cara FIFO * a. Pengurangan, dilakukan seperti penjualan * b. Penambahan, dilakukan pada current inventory, terus ke inv sebelumnya * @return boolean True jika sukses * @throws Exception */ public function simpanSo() { $this->scenario = 'simpanSo'; $transaction = $this->dbConnection->beginTransaction(); try { if ($this->save()) { $details = StockOpnameDetail::model()->findAll('stock_opname_id=' . $this->id); foreach ($details as $detail) { InventoryBalance::model()->so($this, $detail); if (!is_null($this->rak_id)) { Barang::model()->updateByPk($detail->barang_id, array('rak_id' => $this->rak_id)); } } $transaction->commit(); return array('sukses' => true); } else { throw new Exception("Gagal Simpan Stock Opname"); } } catch (Exception $ex) { $transaction->rollback(); return array('sukses' => false, 'error' => array('msg' => $ex->getMessage(), 'code' => $ex->getCode())); } }