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->no_gaji = Param::Get("No_Gaji", ""); $this->gel = new Gel($app); } public function table_detail() { if (in_array($this->mode_detail, ["insert","update","delete"])) { $sql = new SQL($this->app); $sql->set_table("tmp_gaji_detail"); $sql->add_param("KaryaID"); $sql->add_param("Qty_Harian"); $sql->add_param("Gaji_Harian"); $sql->add_param("Total_Gaji", "Qty_Harian*Gaji_Harian", true); $sql->add_param("Qty_Lembur"); $sql->add_param("Lembur_Harian"); $sql->add_param("Total_Lembur", "Qty_Lembur*Lembur_Harian", true); $sql->add_param("Qty_BonusM"); $sql->add_param("Qty_BonusB"); $sql->add_param("Bonus_Minggu"); $sql->add_param("Bonus_Bulan"); $sql->add_param("Total_BonusM", "Qty_BonusM*Bonus_Minggu", true); $sql->add_param("Total_BonusB", "Qty_BonusB*Bonus_Bulan", true); $sql->add_param("Total_Potong"); $sql->add_param("Total_Semua", "Total_Gaji+Total_Lembur+Total_BonusM+Total_BonusB-Total_Potong", true); $sql->add_param("Catatan", Param::Get("CatatKar")); $sql->add_param_unix(); $sql->add_param_userid(); $sql->add_where("ID"); $sql->add_where("No_Gaji", $this->no_gaji); if ($this->mode_detail === "insert") { $sql->add_param("No_Gaji"); $sql->InsertDB(); } else if ($this->mode_detail === "update") { $sql->UpdateDB(); } else if ($this->mode_detail === "delete") { $sql->DeleteDB(); } } $tsql = ''; $asql = [$this->no_gaji]; $qtabel = "gel_gaji_detail"; if (in_array($this->mode, ["add","edit"])) { if ($this->mode === "add") { $tsql = " AND Unix=?"; $asql[] = $this->app->user()->unix(); } $qtabel = "tmp_gaji_detail"; } $obj = new Table($this->app); $obj->set_table("(SELECT * FROM ".$qtabel.' WHERE No_Gaji=?'.$tsql.") D LEFT JOIN para_karyawan P ON (D.KaryaID=P.KaryaID)", "D.*,P.Nama_Karya,(P.Total_Pinjam-D.Total_Potong) Sisa_Pinjam", "", $asql); $obj->set_footer("SUM(Total_Semua) Total_Semua"); $obj->add_field("ID", "ID", "hid"); $obj->add_field("KaryaID", "KaryaID", "hid"); $obj->add_field("Nama_Karya", "Nama Karyawan", "awr"); $obj->add_field("Qty_Harian", "Hari", "r", "rupiah"); $obj->add_field("Total_BonusM", "Bonus MG", "r", "rupiah"); $obj->add_field("Total_BonusB", "Bonus BLN", "r", "rupiah"); $obj->add_field("Total_Potong", "Potongan", "r", "rupiah"); $obj->add_field("Total_Semua", "Gaji Bersih", "r", "rupiah", "rupiah"); $obj->add_field("Catatan", "Catatan", "awr"); $obj->set_field_order("Nama_Karya", "A"); if (in_array($this->mode, ["add","edit"])) { $obj->add_row_btn("clipboard", "Ubah", "GELGajiJS.detail_ubah"); $obj->add_row_btn("trash", "Hapus", "GELGajiJS.detail_hapus", "Unix", $this->app->user()->unix()); $obj->set_func_btn("GELGajiJS.detail_tambah", ' Karyawan'); $obj->set_func_btn("GELGajiJS.karya_brow", ' Browse'); } $this->app->json([ $obj->json_table("divDetailTabel") ]); } public function brow_tx() { $tcari = Param::Get("Cari_TX"); $tsql = ''; $asql = []; if (!empty($tcari)) { $tsql .= "CONCAT(No_Gaji,DATE_FORMAT(Tgl_Gaji,'%d-%m-%Y'),Catatan) LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("gel_gaji", "*,CONCAT(LPAD(Bulan,2,'0'),'-',Tahun) BLTH,(Total_Gaji+Total_Bonus-Total_Potong) Jumlah", $tsql); $obj->add_field("No_Gaji", "No. Trans", "c"); $obj->add_field("Tgl_Gaji", "Tgl. Trans", "c", "sqltgl", "", "val-tgl"); $obj->add_field("Minggu", "MG", "c"); $obj->add_field("BLTH", "Bulan", "c"); $obj->add_field("Total_Gaji", "Total Gaji", "r", "rupiah"); $obj->add_field("Total_Bonus", "Total Bonus", "r", "rupiah"); $obj->add_field("Total_Potong", "Potongan", "r", "rupiah"); $obj->add_field("Jumlah", "TOTAL", "r", "rupiah"); $obj->set_field_order("No_Gaji", "D"); $obj->set_func_select("GELGajiJS.tx_select"); $this->app->json([ $obj->db_table("divBrowTX") ]); } public function brow_cetak() { $obj = new Table($this->app); $obj->set_table("(SELECT * FROM gel_gaji_detail WHERE No_Gaji=?) D LEFT JOIN para_karyawan P ON (D.KaryaID=P.KaryaID)", "D.*,P.Nama_Karya, 'N' Cek", "", [$this->no_gaji]); $obj->add_field("ID", "ID", "hid"); $obj->add_field("Nama_Karya", "Nama Karyawan", "awr"); $obj->add_field("Total_Gaji", "Total Gaji", "r", "rupiah"); $obj->add_field("Total_Semua", "Gaji Bersih", "r", "rupiah"); $obj->add_field("Catatan", "Catatan", "awr"); $obj->add_row_checkbox("ID", "Cek"); $obj->set_field_order("Nama_Karya", "A"); $this->app->json([ $obj->db_table("divBrowCetak") ]); } public function brow_karya() { $tcari = Param::Get("Cari_Karya"); $tsql = ''; $asql = [$this->no_gaji]; if (!empty($tcari)) { $tsql .= " AND Nama_Karya LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("para_karyawan", "*", "Aktif=1 AND KaryaID NOT IN (SELECT KaryaID FROM tmp_gaji_detail WHERE No_Gaji=?)".$tsql, $asql); $obj->add_field("KaryaID", "ID", "hid"); $obj->add_field("Nama_Karya", "Nama Karyawan", "awr"); $obj->add_field("Gaji_Harian", "Gaji Harian", "r", "rupiah"); $obj->add_field("Total_Pinjam", "Total Pinjaman", "r", "rupiah"); $obj->set_field_order("Nama_Karya", "A"); $obj->set_func_select("GELGajiJS.karya_select"); $this->app->json([ $obj->db_table("divBrowKarya") ]); } public function auto_karya() { $tcari = Param::Get("Auto_Query"); $ajson['autodata'] = []; $stat = $this->db->runQuery("SELECT KaryaID,Nama_Karya,CONCAT(Gaji_Harian,':',Total_Pinjam) Data2 FROM para_karyawan WHERE Aktif=1 AND KaryaID NOT IN (SELECT KaryaID FROM tmp_gaji_detail WHERE No_Gaji=?) AND Nama_Karya LIKE ? ORDER BY Nama_Karya LIMIT 50", [$this->no_gaji, '%'.$tcari.'%']); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['KaryaID'], 'text'=>$row['Nama_Karya'], 'data'=>$row['Data2'], 'bc'=>0]; } $this->app->json($ajson); } public function form_master() { $ajson = [ 'error'=>"", 'html'=>"" ]; $atabel = [ 'No_Gaji'=>"", 'CabID'=>$this->id_cab, 'Tgl_Gaji'=>"", 'Minggu'=>date('W'), 'Bulan'=>date('n'), 'Tahun'=>date('Y'), 'Catatan'=>"" ]; if ($this->mode === "add") { $atabel['No_Gaji'] = "GJ-BARU#".(string) $this->web_app['SERVER_ID']. $this->app->user()->id(3); $atabel['Tgl_Gaji'] = tgl_ymd(); $this->no_gaji = ""; } else if ($this->mode === "edit") { $this->Gaji_Copy($this->no_gaji); } else if ($this->mode === "save") { $no_lama = $this->no_gaji; $tgl_gaji = Param::Get("Tgl_Gaji"); $b_baru = str_contains($no_lama, "BARU"); if ($b_baru) $this->no_gaji = $this->Gaji_Baru($this->id_cab, $tgl_gaji, true); $this->Gaji_Save($this->no_gaji, $b_baru, $no_lama); $agaji = $this->db->fetchRow("SELECT SUM(Total_Gaji+Total_Lembur) Gaji, SUM(Total_BonusM+Total_BonusB) Bonus, SUM(Total_Potong) Potong FROM gel_gaji_detail WHERE No_Gaji=?", [$this->no_gaji]) ?? ['Gaji'=>0, 'Bonus'=>0, 'Potong'=>0]; $sql = new SQL($this->app); $sql->set_table("gel_gaji"); $sql->add_param_date("Tgl_Gaji"); $sql->add_param("Total_Gaji", $agaji['Gaji']); $sql->add_param("Total_Bonus", $agaji['Bonus']); $sql->add_param("Total_Potong", $agaji['Potong']); $sql->add_param("Minggu"); $sql->add_param("Bulan"); $sql->add_param("Tahun"); $sql->add_param("CabID"); $sql->add_param("Catatan"); $sql->add_param_stamp(); $sql->add_param_userid(); $sql->add_where("No_Gaji", $this->no_gaji); $sql->UpdateDB(); // PROSES POSTING GL $ainfo = $this->db->fetchRow("SELECT *,Total_Gaji+Total_Bonus Gaji FROM gel_gaji WHERE No_Gaji=?", [$this->no_gaji]); $ajurnal = [ 'Kode_Jurnal' => $this->no_gaji, 'TipeID' => 14, 'CabID' => $this->id_cab, 'Tanggal' => $tgl_gaji, 'Kode_Ref' => $this->no_gaji, 'Catatan' => "Pembayaran Gaji : ".$ainfo['No_Gaji']." / Minggu ".$ainfo['Minggu'].", Bulan ".bulan_array()[$ainfo['Bulan']]." ".$ainfo['Tahun'] ]; $adetail = [ [ 'Kode_Rek' => $this->app_gel['BIAYA_GAJI'], 'DK' => "D", 'Jumlah' => $ainfo['Gaji'] ], [ 'Kode_Rek' => $this->app_gel['KAS_TUNAI'], 'DK' => "K", 'Jumlah' => (float) $ainfo['Gaji'] - (float) $ainfo['Total_Potong'] ] ]; $this->db->delete("gel_karyawan", "Kode_Jurnal=?", [$this->no_gaji]); if ((float) $ainfo['Total_Potong'] > 0) { $apotong = $this->db->fetchAll("SELECT KaryaID,Total_Potong FROM gel_gaji_detail WHERE No_Gaji=? AND Total_Potong>0", [$this->no_gaji]); foreach($apotong as $_key => $val) { $this->db->insert("gel_karyawan", [ 'No_Trans'=>$this->gel->Karya_Baru($tgl_gaji), 'Tgl_Trans'=>$ainfo['Tgl_Gaji'], 'KaryaID'=>$val['KaryaID'], 'Kode_Jurnal'=>$this->no_gaji, 'Total_Bayar'=>$val['Total_Potong'], 'Catatan'=>'Potong Gaji : '.$this->no_gaji, 'Kunci'=>1, 'UserID'=>$this->app->user()->id() ]); $adetail[] = [ 'Kode_Rek' => $this->app_gel['PIU_KARYA'], 'DK' => "K", 'Jumlah' => $val['Total_Potong'] ]; // UPDATE KE KARYAWAN $ipinjam = $this->db->fetchField("SELECT SUM(Total_Pinjam-Total_Bayar) FROM gel_karyawan WHERE KaryaID=?", [$val['KaryaID']]) ?? 0; $this->db->runQuery("UPDATE para_karyawan SET Total_Pinjam=? WHERE KaryaID=?", [$ipinjam, $val['KaryaID']]); } } $this->gel->Jurnal_Post($ajurnal, $adetail); $this->mode = "view"; } else if ($this->mode === "cancel") { $this->Gaji_Cancel($this->no_gaji); $this->mode = "view"; $this->no_gaji = ""; } if (!empty($this->no_gaji) && $this->mode !== "cancel") { $row = $this->db->fetchRow("SELECT * FROM gel_gaji WHERE No_Gaji='".$this->no_gaji."'"); 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); $tno = $form->textbox("_", "No_Gaji", $atabel['No_Gaji'], !$enable, false, "text", "nomor transaksi"); $ttgl = $form->datebox("_", "Tgl_Gaji", $atabel['Tgl_Gaji'], $enable, false); $tcab = $form->option_db("_", "CabID", $atabel['CabID'], $enable, false, "para_cabang", ["CabID","Nama_Cab"], "Aktif=1 ORDER BY CabID"); $tmg = $form->option("_", "Minggu", $atabel['Minggu'], $enable, false, $this->range_minggu((int) $atabel['Bulan'], (int) $atabel['Tahun'])); $tbln = $form->option("_", "Bulan", $atabel['Bulan'], $enable, false, bulan_array(), null, "GELGajiJS.oc_Minggu()"); $tthn = $form->option("_", "Tahun", $atabel['Tahun'], $enable, false, $this->gel->Tahun_Array(), null, "GELGajiJS.oc_Minggu()"); $tcatat = $form->textbox("_", "Catatan", stripslashes($atabel['Catatan']), $enable, false, "text", "catatan gaji"); $ajson['html'] = '