app = $app; $this->db = $db; $this->web_app = (array) $session->get('WEB_APP'); $this->app_gel = (array) $session->get('APP_GEL'); $this->id_cab = Param::Int("CabID", $session->get('APP_INV')['CABANGID']); $this->mode = Param::Get("mode", ""); $this->mode_detail = Param::Get("mode_detail", ""); $this->kode_jurnal = Param::Get("Kode_Jurnal", ""); $this->kode_rek = Param::Get("Kode_Rek", ""); $this->gel = new Gel($app); } public function table_detail() { if (in_array($this->mode_detail, ["insert","update","delete"])) { $jumlah = (float) Param::Get("Jumlah", 0) * ((string) Param::Get("DK","D")==="D" ? 1 : -1); $sql = new SQL($this->app); $sql->set_table("tmp_gel_jurnal_detail"); $sql->add_param("Kode_Rek"); $sql->add_param("DK"); $sql->add_param("Jumlah", $jumlah); $sql->add_param_unix(); $sql->add_param_userid(); $sql->add_where("Kode_Jurnal"); $sql->add_where("ID"); if ($this->mode_detail === "insert") { $sql->add_param("Kode_Jurnal"); $sql->InsertDB(); } else if ($this->mode_detail === "update") { $sql->UpdateDB(); } else if ($this->mode_detail === "delete") { $sql->DeleteDB(); } } $tsql = ''; $asql = [$this->kode_jurnal]; $qtabel = "gel_jurnal_detail"; if (in_array($this->mode, ["add","edit"])) { if ($this->mode === "add") { $tsql = " AND Unix=?"; $asql[] = $this->app->user()->unix(); } $qtabel = "tmp_gel_jurnal_detail"; } $obj = new Table($this->app); $obj->set_table("(SELECT *,IF(DK='D',Jumlah,0) Debit,IF(DK='K',-Jumlah,0) Kredit FROM ".$qtabel." WHERE Kode_Jurnal=?".$tsql.") D LEFT JOIN gel_acc A ON (D.Kode_Rek=A.Kode_Rek)", "D.*,A.Nama_Rek", "", $asql); $obj->set_footer("SUM(D.Debit) Debit,SUM(D.Kredit) Kredit,COUNT(*) Kode_Rek"); $obj->add_field("ID", "ID", "hid"); $obj->add_field("Kode_Rek", "Kode", "c", "", "records"); $obj->add_field("Nama_Rek", "Nama Rekening", "awr"); $obj->add_field("DK", "D / K", "hid"); $obj->add_field("Debit", "Debit", "r", "kurung", "kurung"); $obj->add_field("Kredit", "Kredit", "r", "kurung", "kurung"); $obj->set_field_order("Kode_Rek", "A"); if (in_array($this->mode, ["add","edit"])) { $obj->add_row_btn("clipboard", "Ubah", "GELUmumJS.detail_ubah"); $obj->add_row_btn("trash", "Hapus", "GELUmumJS.detail_hapus", "Unix", $this->app->user()->unix()); $obj->set_func_btn("GELUmumJS.detail_tambah", ' Rekening'); $obj->set_func_btn("GELUmumJS.rek_brow", ' Browse'); } $nitems = 0; $ntotal = 0; $row = $this->db->fetchRow("SELECT COUNT(*) Baris,SUM(Jumlah) Jumlah FROM ".$qtabel." WHERE Kode_Jurnal=?".$tsql, $asql); if ($row) { $nitems = (int) $row['Baris']; $ntotal = (float) $row['Jumlah']; } $this->app->json([ $obj->json_table("divDetailTabel"), ['type'=>"form", 'id'=>"Total_Item", 'value'=>$nitems], ['type'=>"form", 'id'=>"Total_Jumlah", 'value'=>$ntotal] ]); } public function brow_tx() { $tcari = Param::Get("Cari_TX"); $tsql = 'TipeID=4'; $asql = []; if (!empty($tcari)) { $tsql .= " AND CONCAT(Kode_Jurnal,DATE_FORMAT(Tanggal,'%d-%m-%Y'),Kode_Ref,Catatan) LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("gel_jurnal", "*", $tsql, $asql); $obj->add_field("Kode_Jurnal", "Kode Jurnal", "c"); $obj->add_field("Tanggal", "Tanggal", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Kode_Ref", "Kode Ref.", "l"); $obj->add_field("Catatan", "Deskripsi", "awr"); $obj->set_field_order("Kode_Jurnal", "D"); $obj->set_func_select("GELUmumJS.tx_select"); $this->app->json([ $obj->db_table("divBrowTX") ]); } public function brow_rek() { $tcari = Param::Get("Cari_Rek"); $tsql = 'Aktif=1 AND Mode="D"'; $asql = []; if (!empty($tcari)) { $tsql .= " AND CONCAT(Kode_Rek,Nama_Rek) LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("gel_acc", "*", $tsql, $asql); $obj->add_field("Kode_Rek", "Kode", "c"); $obj->add_field("Nama_Rek", "Nama Rekening", "awr"); $obj->add_field("Level", "Level", "c"); $obj->set_field_order("Kode_Rek", "A"); $obj->set_func_select("GELUmumJS.rek_select"); $this->app->json([ $obj->db_table("divBrowRek") ]); } public function auto_rek() { $tcari = Param::Get("Auto_Query"); $ajson['autodata'] = []; $stat = $this->db->runQuery("SELECT Kode_Rek,Nama_Rek,CONCAT(Kode_Rek,' - ',Nama_Rek) Nama_Lengkap FROM gel_acc WHERE Aktif=1 AND Mode='D' AND CONCAT(Kode_Rek,Nama_Rek) LIKE ? ORDER BY Kode_Rek LIMIT 50", ['%'.$tcari.'%']); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['Kode_Rek'], 'text'=>$row['Nama_Rek'], 'html'=>''.$row['Kode_Rek'].' '.$row['Nama_Rek'], 'data'=>"", 'bc'=>0]; } $this->app->json($ajson); } public function form_master() { $ajson = [ 'error'=>"", 'html'=>"" ]; $atabel = [ 'Kode_Jurnal'=>"", 'CabID'=>$this->id_cab, 'Kode_Ref'=>"", 'Tanggal'=>tgl_ymd(), 'Catatan'=>"" ]; if ($this->mode === "add") { $atabel['Kode_Jurnal'] = "GU-BARU#".(string) $this->web_app['SERVER_ID']. $this->app->user()->id(3); $atabel['Tanggal'] = tgl_ymd(); $this->kode_jurnal = ""; } else if ($this->mode === "edit") { $this->gel->Detail_Copy($this->kode_jurnal); } else if ($this->mode === "save") { $no_lama = $this->kode_jurnal; $tgl_jurn = Param::Get("Tanggal"); $b_baru = str_contains($no_lama, "BARU"); if ($b_baru) $this->kode_jurnal = $this->gel->Jurnal_Baru($this->id_cab, $tgl_jurn, true); $this->gel->Detail_Save($this->kode_jurnal, 4, $this->id_cab, $tgl_jurn, $b_baru, $no_lama); $this->gel->Jurnal_Save($this->kode_jurnal, 4, $this->id_cab, $tgl_jurn, Param::Get("Kode_Ref"), Param::Get("Catatan")); $atabel['Tanggal'] = $tgl_jurn; $this->mode = "view"; } else if ($this->mode === "cancel") { $this->gel->Detail_Cancel($this->kode_jurnal); $this->mode = "view"; $this->kode_jurnal = ""; } if (!empty($this->kode_jurnal) && $this->mode !== "cancel") { $row = $this->db->fetchRow("SELECT * FROM gel_jurnal WHERE Kode_Jurnal='".$this->kode_jurnal."' AND TipeID=4"); if ($row) { $atabel = $row; } else { $ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !"; } } $enable = in_array($this->mode, ["add","edit"]) ? true : false; $form = new Form($this->app); $tkode = $form->textbox("_", "Kode_Jurnal", $atabel['Kode_Jurnal'], !$enable, false, "text", "kode jurnal"); $tref = $form->textbox("_", "Kode_Ref", $atabel['Kode_Ref'], $enable, false, "text", "kode referensi"); $ttgl = $form->datebox("_", "Tanggal", $atabel['Tanggal'], $enable, false); $tcab = $form->option_db("_", "CabID", $atabel['CabID'], $enable, false, "para_cabang", ["CabID","Nama_Cab"], "Aktif=1 ORDER BY CabID"); $tcatat = $form->textbox("_", "Catatan", stripslashes($atabel['Catatan']), $enable, false, "text", "catatan jurnal"); $ajson['html'] = '
'.$tkode.'
'.$ttgl.'
'.$tcab.'
'.$tref.'
'.$tcatat.'

'; $this->app->json($ajson); } public function form_rek() { $id = (int) Param::Get("ID", 0); $atabel = [ 'ID'=>$id, 'Kode_Rek'=>$this->kode_rek, 'DK'=>Param::Get("DK", "D"), 'Nama_Rek'=>"", 'Jumlah'=>0 ]; if ($id > 0) { $atabel = $this->db->fetchRow("SELECT * FROM tmp_gel_jurnal_detail WHERE Kode_Jurnal=? AND ID=?", [$this->kode_jurnal, $id]); } if (!empty($atabel['Kode_Rek'])) { $atabel['Nama_Rek'] = $this->db->fetchField("SELECT Nama_Rek FROM gel_acc WHERE Kode_Rek=?", [$atabel['Kode_Rek']]) ?? ''; } $form = new Form($this->app); $tkode = $form->textbox("_", "Kode_Rek", $atabel['Kode_Rek'], false, false, "text"); $tnama = $form->textauto("_", "Nama_Rek", ['value'=>$atabel['Kode_Rek'],'text'=>$atabel['Nama_Rek']], true, true, "ketik kode / nama rekening"); $tdk = $form->radio("_", "DK", $atabel['DK'], true, false, ['D'=>"Debit",'K'=>"Kredit"]); $tjumlah = $form->textbox("_", "Jumlah", abs($atabel['Jumlah']), true, true, "double"); $ajson['html'] = '
'.$tkode.'
'.$tnama.'
'.$tdk.'
'.$tjumlah.'
'; $this->app->json($ajson); } public function proses_hapus() { $this->db->runQuery("DELETE FROM gel_jurnal WHERE Kode_Jurnal='".$this->kode_jurnal."'"); $this->db->runQuery("DELETE FROM gel_jurnal_detail WHERE Kode_Jurnal='".$this->kode_jurnal."'"); $this->app->json([ 'status' => true ]); } public function index() { $this->app->json(['html' => '
 
 
' ]); } }