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_sup = Param::Int("SupID", 0); $this->no_beli = Param::Get("No_Beli", ""); $this->mode_tampil = Param::Int("Mode_Tampil", 0); $this->gel = new Gel($app); } public function table_nota() { $tsql = 'SupID=?'; $asql = [$this->id_sup]; if ($this->mode_tampil === 0) { $tsql .= " AND Lunas=0"; } $obj = new Table($this->app); $obj->set_table("(SELECT No_Beli,Tgl_Beli,Real_Diskon,Real_Beli,Real_Beli+Real_Diskon Sub_Total,IF(Data_Beli=1,'B','R') Tipe,CabID,Lunas FROM inv_beli WHERE ".$tsql.") B LEFT JOIN para_cabang C ON (C.CabID=B.CabID)", "B.*,C.Nama_Cab", "", $asql); $obj->set_footer("SUM(B.Real_Beli) Real_Beli"); $obj->add_field("Tipe", "Tipe", "hid"); $obj->add_field("No_Beli", "No. Trans", "c"); $obj->add_field("Tgl_Beli", "Tgl. Trans", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Nama_Cab", "Cabang", "l"); $obj->add_field("Sub_Total", "Sub. Total", "r", "rupiah", "rupiah"); $obj->add_field("Real_Diskon", "Diskon", "r", "rupiah"); $obj->add_field("Real_Beli", "TOTAL", "r", "rupiah", "rupiah"); if ($this->mode_tampil === 1) $obj->add_field("Lunas", "Lunas", "c", "checkbox"); $obj->set_field_order("No_Beli", "A"); $obj->add_row_btn("save", "Pilih", "GELHutangJS.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_beli_lunas"); $sql->add_param("No_Beli"); $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_Beli", $this->no_beli); $tgl_bayar = Param::Get("Tgl_Bayar", "00-00-0000"); if ($this->mode_detail === "insert") { $abeli = $this->db->fetchRow("SELECT CabID,SupID FROM inv_beli WHERE No_Beli=?", [$this->no_beli]) ?? ['CabID'=>0, 'SupID'=>0]; $sql->add_param("CabID", $abeli['CabID']); $sql->add_param("SupID", $abeli['SupID']); $sql->InsertDB(); $id_bayar = $sql->LastInsertID(); // PROSES POSTING GL if (Param::Get("Tipe_Nota","B")==="B") { $tcat = "Pembayaran Faktur : "; $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' => 10, 'CabID' => $abeli['CabID'], 'Tanggal' => $tgl_bayar, 'Kode_Ref' => $this->no_beli, 'Catatan' => $tcat . Param::Get("Nama_Sup", "") ]; $adetail = [ [ 'Kode_Rek' => $this->app_gel['HUT_USAHA'], 'DK' => $ddk, 'Jumlah' => $tot_bayar+$tot_potong, 'SupID' => $this->id_sup ], [ 'Kode_Rek' => Param::Get("Kode_Rek", ""), 'DK' => $kdk, 'Jumlah' => $tot_bayar ] ]; if ($tot_potong > 0) array_push($adetail, [ 'Kode_Rek' => $this->app_gel['POT_BELI'], 'DK' => $kdk, 'Jumlah' => $tot_potong ]); $gel_jur = $this->gel->Jurnal_Post($ajurnal, $adetail); $this->db->update("inv_beli_lunas", ['Kode_Jurnal'=>$gel_jur], "No_Beli=? AND ID=?", [$this->no_beli, $id_bayar]); } else if ($this->mode_detail === "delete") { // PROSES POSTING GL $gel_jur = $this->db->fetchField("SELECT Kode_Jurnal FROM inv_beli_lunas WHERE No_Beli=? AND ID=?", [$this->no_beli, 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_beli_lunas WHERE No_Beli=?", [$this->no_beli]) ?? ['Bayar'=>0, 'Potong'=>0]; $this->db->runQuery("UPDATE inv_beli SET Total_Bayar=?,Total_Potong=?,Lunas=IF(Real_Beli-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str($tgl_bayar)."','0000-00-00') WHERE No_Beli=?", [$anota['Bayar'], $anota['Potong'], $this->no_beli]); $this->gel->Update_Lunas_Sup($this->id_sup); $anota = $this->db->fetchRow("SELECT Lunas,Real_Beli-Total_Bayar-Total_Potong Total_Sisa FROM inv_beli WHERE No_Beli=?", [$this->no_beli]) ?? ['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_beli_lunas", "*", "No_Beli=?", [$this->no_beli]); $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", "GELHutangJS.bayar_hapus", "No_Beli", $this->no_beli); } if ($lunas === 0) { $obj->set_func_btn("GELHutangJS.bayar_show", ' Pembayaran'); } $ajson[] = $obj->json_table("divDetailBayar"); $this->app->json($ajson); } public function brow_sup() { $tcari = Param::Get("Cari_Sup"); $tsql = 'Lunas>0'; $asql = []; if (!empty($tcari)) { $tsql .= " AND CONCAT(Kode_Sup,Nama_Sup,Telp_Sup) LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("para_supplier", "*", $tsql, $asql); $obj->add_field("SupID", "ID", "hid"); $obj->add_field("Kode_Sup", "Kode", "l"); $obj->add_field("Nama_Sup", "Nama Supplier", "awr"); $obj->add_field("Telp_Sup", "Telp", "l"); $obj->add_field("Alamat_Sup", "Alamat", "hid"); $obj->set_field_order("Kode_Sup", "A"); $obj->set_func_select("GELHutangJS.sup_select"); $this->app->json([ $obj->db_table("divBrowSup") ]); } public function auto_sup() { $tcari = Param::Get("Auto_Query"); $ajson['autodata'] = []; $stat = $this->db->runQuery("SELECT * FROM para_supplier WHERE Lunas>0 AND CONCAT(Kode_Sup,Nama_Sup,Telp_Sup) LIKE ? ORDER BY Kode_Sup LIMIT 50", ['%'.$tcari.'%']); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['SupID'], 'text'=>$row['Nama_Sup'], 'html'=>''.$row['Kode_Sup'].' '.$row['Nama_Sup'], 'data'=>$row['Alamat_Sup'], 'bc'=>0]; } $this->app->json($ajson); } public function form_master() { $ajson = [ 'error'=>"", 'html'=>"" ]; $atabel = [ 'SupID'=>0, 'Nama_Sup'=>"", 'Alamat_Sup'=>"" ]; $form = new Form($this->app); $tsup = $form->textauto("_", "Nama_Sup", ['value'=>$atabel['SupID'],'text'=>$atabel['Nama_Sup']], true, false, "ketik nama supplier"); $tsupal = $form->textbox("_", "Alamat_Sup", $atabel['Alamat_Sup'], false, false, "text"); $ajson['html'] = '