Ejemplo n.º 1
0
 public function actionUpdateHargaJual($id)
 {
     $hargaJual = $_POST['hj'];
     if (HargaJual::model()->updateHargaJualTrx($id, $hargaJual)) {
         echo 'Sukses';
     } else {
         echo 'Fail';
     }
 }
Ejemplo n.º 2
0
 /**
  * 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);
         /* -------------- */
     }
 }
Ejemplo n.º 3
0
 /**
  * Update Harga Jual, insert harga jual baru jika berbeda dengan harga jual saat ini. Jika update harga jual
  * dengan transaction tersendiri, gunakan updateHargaJualTrx
  * @param int $barangId
  * @param decimal $hargaJual
  * @return boolean False jika tabel nya tidak ada atau gagal simpan ke tabel harga jual
  */
 public function updateHarga($barangId, $hargaJual)
 {
     $return = false;
     // Cari harga jual terakhir
     $hasil = Yii::app()->db->createCommand()->select('harga')->from($this->tableName())->where('barang_id=:barangId', array(':barangId' => $barangId))->order('id desc')->limit(1, 0)->queryRow();
     if ($hasil['harga'] != $hargaJual) {
         // Jika tidak sama atau belum ada maka: insert harga jual baru
         $hargaJualModel = new HargaJual();
         $hargaJualModel->barang_id = $barangId;
         $hargaJualModel->harga = $hargaJual;
         if ($hargaJualModel->save()) {
             $return = true;
         }
     } else {
         $return = true;
     }
     return $return;
 }
Ejemplo n.º 4
0
 /**
  * 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()));
     }
 }
Ejemplo n.º 5
0
 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'];
 }