public function actionUpdateHargaJual($id) { $hargaJual = $_POST['hj']; if (HargaJual::model()->updateHargaJualTrx($id, $hargaJual)) { echo 'Sukses'; } else { echo 'Fail'; } }
/** * Simpan pembelian: * 1. update status dari draft menjadi pembelian. * 2. update stock. * 3. update harga jual & rrp * 4. create hutang. * 5. update stok minus. BELUM !! * @return boolean True jika proses berhasil * @throws Exception */ public function simpanPembelian() { $this->scenario = 'simpanPembelian'; $transaction = $this->dbConnection->beginTransaction(); /* Untuk jumlah pembelian yang sangat banyak, misal: init data */ if ($this->profil_id == 1) { ini_set('memory_limit', '-1'); set_time_limit(0); } try { if ($this->save()) { /* * Ambil data barang, dan data inventory terakhir/terbaru nya * Jika inventory tidak ada, maka ib.* nilainya null */ $details = PembelianDetail::model()->findAll('pembelian_id=:pembelianId', array(':pembelianId' => $this->id)); foreach ($details as $detail) { /* Untuk setiap barang yang dibeli */ /* Sesuaikan inventory */ $inventoryBalance = new InventoryBalance(); $inventoryBalance->beli(InventoryBalance::ASAL_PEMBELIAN, $this->nomor, $detail->id, $detail->barang_id, $detail->harga_beli, $detail->qty); /* * Update harga jual */ if (!HargaJual::model()->updateHarga($detail->barang_id, $detail->harga_jual)) { throw new Exception("Gagal Update Harga Jual"); } /* * Update Rrp */ if (!HargaJualRekomendasi::model()->updateHarga($detail->barang_id, $detail->harga_jual_rekomendasi)) { throw new Exception("Gagal Update RRP"); } /* Tambahkan supplier ke barang ini, jika belum ada */ $supplierBarangAda = SupplierBarang::model()->find("supplier_id={$this->profil_id} and barang_id = {$detail->barang_id}"); if (is_null($supplierBarangAda)) { $supplierBarang = new SupplierBarang(); $supplierBarang->barang_id = $detail->barang_id; $supplierBarang->supplier_id = $this->profil_id; if (!$supplierBarang->save()) { throw new Exception("Gagal simpan supplier barang"); } } } // Total dari pembelian barang // Jika nanti ada item lain, misal: Transport, pajak, dll // ditambahkan di sini $jumlahPembelian = $this->ambilTotal(); /* * Create (hutang) */ $hutang = new HutangPiutang(); $hutang->profil_id = $this->profil_id; $hutang->jumlah = $jumlahPembelian; $hutang->tipe = HutangPiutang::TIPE_HUTANG; $hutang->asal = HutangPiutang::DARI_PEMBELIAN; $hutang->nomor_dokumen_asal = $this->nomor; if (!$hutang->save()) { throw new Exception("Gagal simpan hutang"); } /* * Hutang Detail */ $hutangDetail = new HutangPiutangDetail(); $hutangDetail->hutang_piutang_id = $hutang->id; $hutangDetail->keterangan = 'Pembelian: ' . $this->nomor; $hutangDetail->jumlah = $jumlahPembelian; if (!$hutangDetail->save()) { throw new Exception("Gagal simpan hutang detail"); } /* * Simpan hutang_id ke pembelian */ if (!Pembelian::model()->updateByPk($this->id, array('hutang_piutang_id' => $hutang->id)) > 1) { throw new Exception("Gagal simpan hutang_id"); } $transaction->commit(); return array('sukses' => true); } else { throw new Exception("Gagal Simpan Pembelian"); } } catch (Exception $ex) { $transaction->rollback(); // throw $up; return array('sukses' => false, 'error' => array('msg' => $ex->getMessage(), 'code' => $ex->getCode())); } }
/** * Tambah barang ke tabel detail, sekaligus cek/apply diskon * @param ActiveRecord $barang Object Barang * @param int $qty Qty barang total yang akan ditambah */ public function tambahBarangDetail($barang, $qty) { $sisa = $qty; $hargaJualNormal = HargaJual::model()->terkini($barang->id); /* * Cek Diskon, dengan prioritas PROMO MEMBER, PROMO, GROSIR, BANDED * Hanya bisa salah satu */ if (!is_null($this->cekDiskon($barang->id, DiskonBarang::TIPE_PROMO_MEMBER))) { //terapkan diskon promo member jika member //ambil sisanya (yang tidak didiskon) $customer = Profil::model()->findByPk($this->profil_id); if ($customer->isMember()) { $sisa = $this->aksiDiskonPromoMember($barang->id, $qty, $hargaJualNormal); } } else { if (!is_null($this->cekDiskon($barang->id, DiskonBarang::TIPE_PROMO))) { //terapkan diskon promo //ambil sisanya (yang tidak didiskon) $sisa = $this->aksiDiskonPromo($barang->id, $qty, $hargaJualNormal); } else { if (!is_null($this->cekDiskon($barang->id, DiskonBarang::TIPE_GROSIR))) { //terapkan diskon grosir //ambil sisanya (yang tidak didiskon) } else { if (!is_null($this->cekDiskon($barang->id, DiskonBarang::TIPE_BANDED))) { //terapkan diskon banded //ambil sisanya (yang tidak didiskon) $sisa = $this->aksiDiskonBanded($barang->id, $qty, $hargaJualNormal); } } } } /* Jika masih ada sisa, insert ke penjulan dg harga jual normal */ if ($sisa > 0) { /* -------------- */ $this->insertBarang($barang->id, $sisa, $hargaJualNormal); /* -------------- */ } }
public function getHargaJualRaw() { $hasil = Yii::app()->db->createCommand("\n\t\t\t\t\tselect harga\n\t\t\t\t\tfrom " . HargaJual::model()->tableName() . "\n\t\t\t\t\twhere barang_id = {$this->id}\n\t\t\t\t\torder by id desc\n\t\t\t\t\tlimit 1\n\t\t\t ")->queryRow(); return $hasil['harga']; }