Ejemplo n.º 1
0
 public function actionHapusDetail($id)
 {
     $detail = StockOpnameDetail::model()->findByPk($id);
     if (!$detail->delete()) {
         throw new Exception('Gagal hapus detail SO');
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
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()));
     }
 }