app = $app; $this->db = $db; $this->app_gel = (array) $session->get('APP_GEL'); $this->mode = Param::Get("mode", ""); $this->mode_detail = Param::Get("mode_detail", ""); $this->id_buyer = Param::Int("MemberID", 0); $this->no_jual = Param::Get("No_Jual", ""); $this->mode_tampil = Param::Int("Mode_Tampil", 0); $this->gel = new Gel($app); } public function table_nota() { $tsql = 'FALSE'; $asql = []; if ($this->id_buyer > 0) { $tsql = 'MemberID=?'; $asql[] = $this->id_buyer; if ($this->mode_tampil === 0) { $tsql .= " AND Lunas=0"; } } $obj = new Table($this->app); $obj->set_table("(SELECT No_Jual,Tgl_Jual,Total_Jual,Total_Diskon,Total_Jual-Total_Diskon Total,Total_Bayar+Total_Potong Bayar,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Sisa,IF(Data_Jual=1,'J','R') Tipe,CabID,Lunas FROM inv_jual WHERE ".$tsql.") J LEFT JOIN para_cabang C ON (C.CabID=J.CabID)", "J.*,C.Nama_Cab", "", $asql); $obj->set_footer("SUM(J.Total) Total,SUM(J.Bayar) Bayar,SUM(J.Sisa) Sisa"); $obj->add_field("Tipe", "Tipe", "hid"); $obj->add_field("No_Jual", "No. Trans", "c"); $obj->add_field("Tgl_Jual", "Tgl. Trans", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Nama_Cab", "Cabang", "l"); $obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah", "rupiah"); $obj->add_field("Total_Diskon", "Diskon", "r", "rupiah"); $obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah"); $obj->add_field("Bayar", "BAYAR", "r", "rupiah", "rupiah"); $obj->add_field("Sisa", "SISA", "r", "rupiah", "rupiah"); if ($this->mode_tampil === 1) $obj->add_field("Lunas", "Lunas", "c", "checkbox"); $obj->set_field_order("No_Jual", "A"); $obj->add_row_btn("save", "Pilih", "GELPiutangJS.nota_select"); $this->app->json([ $obj->json_table("divTXNota") ]); } public function table_bayar() { $ajson = []; $lunas = (int) Param::Get("Lunas", 0); if (in_array($this->mode_detail, ["insert","update","delete"])) { $sql = new SQL($this->app); $sql->set_table("inv_jual_lunas"); $sql->add_param("No_Jual"); $sql->add_param_date("Tgl_Bayar"); $sql->add_param("Total_Bayar"); $sql->add_param("Total_Potong"); $sql->add_param_userid(); $sql->add_where("ID"); $sql->add_where("No_Jual", $this->no_jual); $tgl_bayar = Param::Get("Tgl_Bayar", "00-00-0000"); if ($this->mode_detail === "insert") { $ajual = $this->db->fetchRow("SELECT CabID,MemberID FROM inv_jual WHERE No_Jual=?", [$this->no_jual]) ?? ['CabID'=>0, 'MemberID'=>0]; $sql->add_param("CabID", $ajual['CabID']); $sql->add_param("MemberID", $ajual['MemberID']); $sql->InsertDB(); $id_bayar = $sql->LastInsertID(); // PROSES POSTING GL if (Param::Get("Tipe_Nota","J")==="J") { $tcat = "Penerimaan Nota : "; $ddk = "D"; $kdk = "K"; } else { $tcat ="Retur Nota : "; $ddk = "K"; $kdk = "D"; } $tot_bayar = (float) Param::Get("Total_Bayar", 0); $tot_potong = (float) Param::Get("Total_Potong", 0); $ajurnal = [ 'Kode_Jurnal' => "", 'TipeID' => 11, 'CabID' => $ajual['CabID'], 'Tanggal' => $tgl_bayar, 'Kode_Ref' => $this->no_jual, 'Catatan' => $tcat . Param::Get("Nama_Member", "") ]; $adetail = [ [ 'Kode_Rek' => Param::Get("Kode_Rek", ""), 'DK' => $ddk, 'Jumlah' => $tot_bayar ], [ 'Kode_Rek' => $this->app_gel['PIU_USAHA'], 'DK' => $kdk, 'Jumlah' => $tot_bayar+$tot_potong, 'MemberID' => $this->id_buyer ] ]; if ($tot_potong > 0) array_push($adetail, [ 'Kode_Rek' => $this->app_gel['POT_JUAL'], 'DK' => $ddk, 'Jumlah' => $tot_potong ]); $gel_jur = $this->gel->Jurnal_Post($ajurnal, $adetail); $this->db->update("inv_jual_lunas", ['Kode_Jurnal'=>$gel_jur], "No_Jual=? AND ID=?", [$this->no_jual, $id_bayar]); } else if ($this->mode_detail === "delete") { // PROSES POSTING GL $gel_jur = $this->db->fetchField("SELECT Kode_Jurnal FROM inv_jual_lunas WHERE No_Jual=? AND ID=?", [$this->no_jual, Param::Get("ID", 0)]) ?? ''; if (!empty($gel_jur)) { $this->db->delete("gel_jurnal", "Kode_Jurnal=?", [$gel_jur]); $this->db->delete("gel_jurnal_detail", "Kode_Jurnal=?", [$gel_jur]); } $sql->DeleteDB(); } $anota = $this->db->fetchRow("SELECT SUM(Total_Bayar) Bayar,SUM(Total_Potong) Potong FROM inv_jual_lunas WHERE No_Jual=?", [$this->no_jual]) ?? ['Bayar'=>0, 'Potong'=>0]; $this->db->runQuery("UPDATE inv_jual SET Total_Bayar=?,Total_Potong=?,Lunas=IF(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str($tgl_bayar)."','0000-00-00') WHERE No_Jual=?", [$anota['Bayar'], $anota['Potong'], $this->no_jual]); //UPDATE POINT UNTUK LUNAS +10 HARI $this->db->runQuery("UPDATE inv_jual SET Point=IF(Tgl_Lunas<=(Tgl_Jual+INTERVAL 10 DAY),Point,0) WHERE No_Jual=?", [$this->no_jual]); $this->gel->Update_Lunas_Buy($this->id_buyer); $anota = $this->db->fetchRow("SELECT Lunas,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa FROM inv_jual WHERE No_Jual=?", [$this->no_jual]) ?? ['Lunas'=>0, 'Total_Sisa'=>0]; $lunas = $anota['Lunas']; $ajson[] = ['type'=>"form", 'id'=>"Total_Sisa", 'value'=>$anota['Total_Sisa']]; $ajson[] = ['type'=>"form", 'id'=>"Lunas", 'value'=>$anota['Lunas']]; } $obj = new Table($this->app); $obj->set_table("inv_jual_lunas", "*", "No_Jual=?", [$this->no_jual]); $obj->add_field("ID", "ID", "hid"); $obj->add_field("Tgl_Bayar", "Tgl. Bayar", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Kode_Jurnal", "Kode Jurnal", "c"); $obj->add_field("Total_Bayar", "Jumlah Bayar", "r", "rupiah"); $obj->add_field("Total_Potong", "Pemotongan", "r", "rupiah"); $obj->set_field_order("Tgl_Bayar", "A"); if ($this->app->user()->is_level(0) && ($lunas===0 || ($lunas===1 && $this->mode_tampil===1))) { $obj->add_row_btn("trash", "Hapus", "GELPiutangJS.bayar_hapus", "No_Jual", $this->no_jual); } if ($lunas === 0) { $obj->set_func_btn("GELPiutangJS.bayar_show", ' Pembayaran'); } $ajson[] = $obj->json_table("divDetailBayar"); $this->app->json($ajson); } public function brow_buyer() { $tcari = Param::Get("Cari_Buyer"); $tsql = 'Lunas>0'; $asql = []; if (!empty($tcari)) { $tsql .= " AND CONCAT(Kode_Member,Nama_Member,Alamat_Member) LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("para_member", "*", $tsql, $asql); $obj->add_field("MemberID", "ID", "hid"); $obj->add_field("Kode_Member", "Kode", "l"); $obj->add_field("Nama_Member", "Nama Member", "awr"); $obj->add_field("Alamat_Member", "Alamat", "awr"); $obj->add_field("Kota_Member", "Kota", "awr"); $obj->set_field_order("Nama_Member", "A"); $obj->set_func_select("GELPiutangJS.buyer_select"); $this->app->json([ $obj->db_table("divBrowBuyer") ]); } public function auto_buyer() { $tcari = Param::Get("Auto_Query"); $ajson['autodata'] = []; $stat = $this->db->runQuery("SELECT MemberID,Kode_Member,Nama_Member,CONCAT(Alamat_Member,_latin1', ',Kota_Member) Alamat_Kota FROM para_member WHERE Lunas>0 AND CONCAT(Kode_Member,Nama_Member,Alamat_Member) LIKE ? ORDER BY Nama_Member LIMIT 50", ['%'.$tcari.'%']); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['MemberID'], 'text'=>$row['Nama_Member'], 'html'=>''.$row['Kode_Member'].' '.$row['Nama_Member'], 'data'=>$row['Alamat_Kota'], 'bc'=>0]; } $this->app->json($ajson); } public function form_master() { $ajson = [ 'error'=>"", 'html'=>"" ]; $atabel = [ 'MemberID'=>0, 'Nama_Member'=>"", 'Alamat_Member'=>"" ]; $form = new Form($this->app); $tmemb = $form->textauto("_", "Nama_Member", ['value'=>$atabel['MemberID'],'text'=>$atabel['Nama_Member']], true, false, "ketik nama member"); $tmembal = $form->textbox("_", "Alamat_Member", $atabel['Alamat_Member'], false, false, "text"); $ajson['html'] = '
'.$tmemb.'
'.$tmembal.'

'; $this->app->json($ajson); } public function form_nota() { $tipe = Param::Get("Tipe_Nota", "J"); $atabel = [ 'No_Jual'=>$this->no_jual, 'Nama_Operator'=>"" ]; if (!empty($this->no_jual)) { $atabel = $this->db->fetchRow("SELECT *,Total_Jual-Total_Diskon Jumlah,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Sisa_Bayar FROM inv_jual WHERE No_Jual=?", [$this->no_jual]); if ((int) $atabel['UserID'] > 0) { $atabel['Nama_Operator'] = $this->db->fetchField("SELECT Nama FROM app_operator WHERE UserID=?", [$atabel['UserID']]) ?? ''; } } $form = new Form($this->app); $tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], false, false, "text"); $ttglnota = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], false, false); $tsubtot = $form->textbox("_", "Total_Jual", $atabel['Total_Jual'], false, false, "double"); $tdiskon = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], false, false, "double"); $tjumlah = $form->textbox("_", "Jumlah", $atabel['Jumlah'], false, false, "double"); $tbayar = $form->textbox("_", "V_Bayar", $atabel['Total_Bayar']+$atabel['Total_Potong'], false, false, "double"); $tsisa = $form->textbox("_", "V_Sisa", $atabel['Sisa_Bayar'], false, false, "double"); $toper = $form->textbox("_", "V_Ope", $atabel['Nama_Operator'], false, false, "text"); $ajson['html'] = '
Informasi Faktur / Retur
'.$tnota.'
'.$tsubtot.'
'.$ttglnota.'
'.$tdiskon.'
'.$toper.'
'.$tjumlah.'
'.$tbayar.'
'.$tsisa.'

'; $this->app->json($ajson); } public function form_bayar() { $form = new Form($this->app); $ttglbyr = $form->datebox("_", "Tgl_Bayar", tgl_ymd(), true, false); $trek = $form->option_db("_", "Kode_Rek", $this->app_gel['KAS_TUNAI'], true, false, "vi_gel_acc", ["Kode_Rek","Nama_Lengkap"], "Kas_Rek=1 AND Aktif=1 AND Mode='D' ORDER BY Kode_Rek"); $ttotal = $form->textbox("_", "Temp_Total", Param::Get("Total_Sisa",0), false, false, "double"); $tbayar = $form->textbox("_", "Total_Bayar", Param::Get("Total_Sisa",0), true, false, "double"); $tpotong = $form->textbox("_", "Total_Potong", 0, true, false, "double"); $ajson['html'] = '
'.$ttglbyr.'
'.$trek.'

'.$ttotal.'
'.$tbayar.'
'.$tpotong.'
'; $this->app->json($ajson); } public function index() { $this->app->json(['html' => '
 
 
 
 
' ]); } }