app = $app; $this->db = $db; $this->id_cab = Param::Int("CabID", 0); $this->mode = Param::Get("mode", ""); $this->mode_detail = Param::Get("mode_detail", ""); $this->id_grup = Param::Int("Grup_PromoID", 0); $this->id_inv = Param::Int("InvID", 0); $this->id_satuan = Param::Int("SatuanID", 0); } public function table_detail() { if (in_array($this->mode_detail, ["insert","update","delete"])) { $sql = new SQL($this->app); $sql->set_table("inv_promo"); $sql->add_param("Grup_PromoID"); $sql->add_param("InvID"); $sql->add_param("SatuanID"); $sql->add_param("Jual_Grup", Param::Get("List_CB_VarianID", "0")); $sql->add_param_userid(); $sql->add_where("PromoID"); if ( $this->mode_detail === "insert" ) { $sql->add_param("Tipe_Promo", 5); $sql->InsertDB(); } else if ( $this->mode_detail === "update" ) { $sql->UpdateDB(); } else if ( $this->mode_detail === "delete" ) { $sql->DeleteDB(); } } $tsql = 'Tipe_Promo=? AND Grup_PromoID=?'; $asql = [5, $this->id_grup]; $obj = new Table($this->app); $obj->set_table("(SELECT * FROM inv_promo WHERE ".$tsql.") D LEFT JOIN inv_produk P ON (D.InvID=P.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID)", "D.*,P.Nama_Produk,Nama_Varian(IF(ISNULL(D.Jual_Grup) OR D.Jual_Grup='','0',D.Jual_Grup)) Nama_Varian,S.Nama_Satuan", "", $asql); $obj->add_field("PromoID", "ID", "hid"); $obj->add_field("InvID", "InvID", "hid"); $obj->add_field("SatuanID", "SatuanID", "hid"); $obj->add_field("Jual_Grup", "Varian", "hid"); $obj->add_field("Nama_Produk", "Nama Barang", "awr"); $obj->add_field("Nama_Satuan", "Satuan", "l"); $obj->add_field("Nama_Varian", "Varian", "awr"); if (in_array($this->mode, ["add","edit"])) { $obj->add_row_btn("clipboard", "Ubah", "PromoBeliDiscJS.detail_ubah"); $obj->add_row_btn("trash", "Hapus", "PromoBeliDiscJS.detail_hapus", "Grup_PromoID", $this->id_grup); $obj->set_func_btn("PromoBeliDiscJS.detail_tambah", ' Barang'); $obj->set_func_btn("PromoBeliDiscJS.produk_brow", ' Browse'); } $ajson[] = $obj->json_table("divDetailTabel"); $this->app->json($ajson); } public function brow_promo() { $tcari = Param::Get("Cari_Promo"); $tsql = ''; $asql = []; if (!empty($tcari)) { $tsql .= "Promo_Nama LIKE ?"; array_push($asql, '%' . $tcari . '%'); } $obj = new Table($this->app); $obj->set_table("inv_promo_grup", "*", $tsql, $asql); $obj->add_field("Grup_PromoID", "ID", "hid"); $obj->add_field("Promo_Nama", "Nama Promo", "awr"); $obj->add_field("Tgl_Mulai", "Tgl. Mulai", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Tgl_Akhir", "Tgl. Akhir", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Aktif", "Aktif", "c", "checkbox"); $obj->set_func_select("PromoBeliDiscJS.promo_select"); $this->app->json([ $obj->db_table("divBrowPromo") ]); } public function brow_produk() { $tcari = Param::Get("Cari_Produk"); $tsql = ''; $asql = []; if (!empty($tcari)) { $tsql .= " AND Nama_Produk LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("inv_produk", "*", $tsql, $asql); $obj->add_field("InvID", "ID", "hid"); $obj->add_field("NormalID", "ID", "hid"); $obj->add_field("Nama_Produk", "Nama Barang", "awr"); $obj->set_func_select("PromoBeliDiscJS.produk_select"); $this->app->json([ $obj->db_table("divBrowProduk") ]); } public function auto_produk() { $tcari = Param::Get("Auto_Query", ""); $ajson['autodata'] = []; // Cari by Nama_Produk $stat = $this->db->runQuery("SELECT P.InvID,P.Nama_Produk,P.NormalID Data2 FROM inv_produk P WHERE P.Nama_Produk LIKE ? ORDER BY P.Nama_Produk LIMIT 50", ['%'.$tcari.'%']); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['InvID'], 'text'=>$row['Nama_Produk'], 'html'=>$row['Nama_Produk'], 'data'=>$row['Data2'], 'bc'=>0]; } $this->app->json($ajson); } public function form_master() { $ajson = [ 'error'=>"", 'html'=>"" ]; $atabel = []; if ($this->mode === "add") { $atabel = $this->Data_Promo(true); } else if ($this->mode === "save") { $sql = new SQL($this->app); $sql->set_table("inv_promo_grup"); $sql->add_param("CabID", $this->id_cab); $sql->add_param("Grup_MemberID"); $sql->add_param("Qty_Kali"); $sql->add_param("Tipe_Promo"); $sql->add_param("Promo_Nama"); $sql->add_param("Promo_Minggu"); $sql->add_param("Promo_Disc"); $sql->add_param_date("Tgl_Mulai"); $sql->add_param_date("Tgl_Akhir"); $sql->add_param("Aktif"); $sql->add_param_userid(); $sql->add_where("Grup_PromoID"); if ($this->id_grup === 0) { $sql->add_param("Pilih_Qty", 3); $sql->InsertDB(); } else { $sql->UpdateDB(); $this->db->runQuery("UPDATE inv_promo_grup a, inv_promo b SET b.CabID=a.CabID,b.Grup_MemberID=a.Grup_MemberID,b.Pilih_Qty=a.Pilih_Qty,b.Qty_Kali=a.Qty_Kali,b.Tipe_Promo=a.Tipe_Promo,b.Promo_Disc=a.Promo_Disc,b.Tgl_Mulai=a.Tgl_Mulai,b.Tgl_Akhir=a.Tgl_Akhir,b.Aktif=a.Aktif WHERE a.Grup_PromoID=a.Grup_PromoID"); } $this->mode = "view"; } else if ($this->mode === "cancel") { $this->db->runQuery("DELETE FROM inv_promo WHERE Tipe_Promo=5 AND Grup_PromoID=0"); $atabel = $this->Data_Promo(); } else { $atabel = $this->Data_Promo(); } $enable = in_array($this->mode, ["add","edit"]) ? true : false; $form = new Form($this->app); $tcab = $form->option_db("_", "CabID", $atabel['CabID'], $enable, false, "para_cabang", ["CabID","Nama_Cab"], "Aktif=1 ORDER BY Nama_Cab", [0,"SEMUA CABANG"]); $tgrup_mem = $form->option_db("_", "Grup_MemberID", $atabel['Grup_MemberID'], $enable, false, "para_member_grup", ["Grup_MemberID","Nama_Grup"], "Aktif=1 ORDER BY Nama_Grup", [0,"SEMUA GRUP"]); $tqty = $form->textbox("_", "Qty_Kali", $atabel['Qty_Kali'], $enable, true, "double"); $tnama = $form->textbox("_", "Promo_Nama", $atabel['Promo_Nama'], $enable, true, "text", "nama promo"); $tminggu = $form->textbox("_", "Promo_Minggu", $atabel['Promo_Minggu'], $enable, true, "text", "hari promo"); $tdisc = $form->textbox("_", "Promo_Disc", $atabel['Promo_Disc'], $enable, true, "double"); $ttglmulai = $form->datebox("_", "Tgl_Mulai", $atabel['Tgl_Mulai'], $enable, true); $ttglakhir = $form->datebox("_", "Tgl_Akhir", $atabel['Tgl_Akhir'], $enable, true); $taktif = $form->radio("_", "Aktif", $atabel['Aktif'], true, false, ['1'=>"Ya",'0'=>"Tidak"]); $ajson['html'] = '
'.$tnama.'
'.$tcab.'
'.$tminggu.Invesa::Form_Info("Kode Hari dalam Angka. Contoh : 1 = Senin, 2 = Selasa, ... 0 = Minggu.").'
'.$tgrup_mem.'
'.$ttglmulai.'
'.$taktif.'
'.$ttglakhir.'

'.$tqty.Invesa::Form_Info("Jumlah Kelipatan Penjualan untuk mendapatkan promo. Contoh : Beli 2 PCS, item Ke-2 Disc 50%, Berarti = 2 PCS.").'
'.$tdisc.Invesa::Form_Info("Nilai Diskon Satuan Barang berdasarkan kriteria. Contoh : 50%, Berarti = 0.50.").'
'; $this->app->json($ajson); } public function form_produk() { $id = (int) Param::Get("PromoID", 0); $atabel = [ 'PromoID'=>$id, 'InvID'=>$this->id_inv, 'SatuanID'=>$this->id_satuan, 'Kode_Varian'=>Param::Get("Kode_Varian", "0"), 'Nama_Produk'=>"" ]; if ($this->id_inv > 0) { $_row = $this->db->fetchRow("SELECT Nama_Produk FROM inv_produk WHERE InvID=?", [$this->id_inv]); if ($_row) $atabel = array_merge($atabel, $_row->getData()); } $form = new Form($this->app); $tnama = $form->textauto("_", "Nama_Produk", ['value'=>$this->id_inv,'text'=>$atabel['Nama_Produk']], true, true, "nama barang"); $tsat = $form->option("_", "SatuanID", $atabel['SatuanID'], true, false, [0=>""]); $ajson['html'] = '
'.$tnama.'
'.$tsat.'
'; $this->app->json($ajson); } public function form_varian() { $kode_varian = Param::Get("Kode_Varian", "0"); $avarian = explode(",", $kode_varian); $obj = new Table($this->app); $obj->set_table("(SELECT VarianID FROM inv_produk_varian WHERE InvID=? AND SatuanID=?) K LEFT JOIN para_varian V ON (K.VarianID=V.VarianID)", "K.VarianID,IFNULL(V.Nama_Varian,'Tanpa Varian') Nama_Varian,IF(K.VarianID IN (?),'Y','N') Cek", "", [$avarian, $this->id_inv, $this->id_satuan]); $obj->add_field("VarianID", "ID", "hid"); $obj->add_field("Nama_Varian", "Nama Varian", "awr"); $obj->add_row_checkbox("VarianID", "Cek"); $obj->set_field_order("Nama_Varian", "A"); $this->app->json([ $obj->json_table("divBrowVarian") ]); } public function proses_delete() { $this->db->runQuery("DELETE FROM inv_promo_grup WHERE Grup_PromoID=?", [$this->id_grup]); $this->db->runQuery("DELETE FROM inv_promo WHERE Grup_PromoID=?", [$this->id_grup]); $this->app->json([ 'status' => true ]); } public function option_satuan() { $aoption = ['type' => "option", 'id' => "SatuanID", 'value' => $this->id_satuan, 'avalue' => []]; $asatuan = $this->db->fetchAll("SELECT P.SatuanID,S.Nama_Satuan FROM (SELECT SatuanID,Qty FROM inv_produk_kemasan WHERE InvID=?) P LEFT JOIN para_satuan S ON (S.SatuanID=P.SatuanID) ORDER BY P.Qty DESC", [$this->id_inv]); foreach ($asatuan as $satuan) { $aoption['avalue'][] = ['value'=>$satuan['SatuanID'], 'html'=>$satuan['Nama_Satuan']]; } $this->app->json([ $aoption ]); } public function index() { $this->app->json(['html' => '
 
 
' ]); } private function Data_Promo(bool $is_new=false): array { $aparam = [ 'Grup_PromoID' => $this->id_grup, 'CabID' => $this->id_cab, 'Grup_MemberID' => 0, 'Tipe_Promo' => 5, 'Qty_Kali' => 0, 'Promo_Nama' => "", 'Promo_Minggu' => "", 'Promo_Disc' => 0, 'Tgl_Mulai' => tgl_ymd(), 'Tgl_Akhir' => tgl_sql2str(tgl_operasi(tgl_dmy(), 0, 1, 0)), 'Aktif' => 1, ]; if ($is_new) { $aparam['Grup_PromoID'] = 0; } else { if ($this->id_grup > 0) { $row = $this->db->fetchRow("SELECT * FROM inv_promo_grup WHERE Tipe_Promo IN (5) AND Grup_PromoID=?", [$this->id_grup]); if ($row) $aparam = array_merge($aparam, $row->getData()); } else { $row = $this->db->fetchRow("SELECT * FROM inv_promo_grup WHERE Tipe_Promo IN (5) ORDER BY Grup_PromoID DESC", []); if ($row) $aparam = array_merge($aparam, $row->getData()); } } return $aparam; } }