app = $app;
$this->db = $db;
$this->web_app = (array) $session->get('WEB_APP');
$this->id_cab = Param::Int("CabID", (int) $session->get('APP_INV')['CABANGID']);
$this->mode = Param::Get("mode", "");
$this->mode_detail = Param::Get("mode_detail", "");
$this->no_tx = Param::Get("No_TX", "");
$this->id_kate = Param::Int("KateID", 0);
$this->id_ope = Param::Int("OpeID", 0);
$this->id_produk = Param::Int("ProdukID", 0);
$this->tujuan = Param::Get("Tujuan", "");
$this->no_hp = Param::Get("No_HP", "");
$this->ppob = new PPOBClient($app);
}
public function table_tx() {
if (in_array($this->mode_detail, ["reproc","delete"])) {
$adetail = $this->db->fetchRow("SELECT * FROM ppob_tx WHERE No_TX=?", [$this->no_tx]);
$proses = (int) $adetail['Proses'] ?? 0;
if ($this->mode_detail === "delete") {
if ($proses === 0) {
$this->db->delete("ppob_tx", "No_TX=?", [$this->no_tx]);
$ajson[] = ['type'=>"msg", 'mode'=>"info", 'wait'=>2000, 'value'=>"Transaksi sukses dihapus !"];
} else {
$ajson[] = ['type'=>"msg", 'mode'=>"error", 'wait'=>2000, 'value'=>"Ada masalah dalam proses transaksi !"];
}
} else if ($this->mode_detail === "reproc") {
if ($proses === 0) {
// PROSES API TRIFONIA PULSA
$appob = $this->ppob->TopUp($adetail['Kode'], $adetail['Tujuan'], $adetail['No_TX'], $adetail['No_HP']);
if (count($appob) > 0) {
$ajson[] = ['type'=>"msg", 'mode'=>"info", 'wait'=>2000, 'value'=>$appob['Message']];
}
} else {
$ajson[] = ['type'=>"msg", 'mode'=>"error", 'wait'=>2000, 'value'=>"Ada masalah dalam Proses !"];
}
}
}
$tcari = Param::Get("Cari_PPOB", "");
$tsql = 'CabID=?'; $asql = [$this->id_cab];
if (empty($tcari)) {
$tsql .= " AND UserID=? AND Tgl_TX=?";
array_push($asql, $this->app->user()->id(), tgl_ymd());
} else {
$tsql .= " AND CONCAT(No_TX,Tujuan,No_HP,DATE_FORMAT(Tgl_TX,'%d-%m-%Y')) LIKE ?";
$asql[] = '%' . $tcari . '%';
}
$obj = new Table($this->app);
$obj->set_table("(SELECT *,CONCAT(DATE_FORMAT(DateStamp,'%d-%m-%Y %H:%i:%s'),' - ',Kode,'
',Tujuan,'',IF(No_HP='','',CONCAT('
HP : ',No_HP,''))) Info_TX FROM ppob_tx WHERE ".$tsql.") T LEFT JOIN (SELECT ProdukID,KateID FROM ppob_produk) P ON (P.ProdukID=T.ProdukID)", "T.*,IFNULL(P.KateID,0) KateID", "", $asql);
$obj->set_footer("SUM(Harga_Jual) Harga_Jual");
$obj->add_field("No_TX", "No. TX", "c");
$obj->add_field("KateID", "Kate", "c", "App\Utils\PPOBClient::Icon_Kate");
$obj->add_field("Info_TX", "Informasi Transaksi", "l");
$obj->add_field("Harga_Jual", "Harga", "r", "rupiah", "rupiah");
$obj->add_field("Proses", "P", "c", "checkbox");
$obj->add_field("Status", "Status", "c", "App\Utils\PPOBClient::Badge_Status");
$obj->set_field_order("No_TX", "D");
$obj->add_row_btn("printer", "Cetak Nota", "PrabayarJS.nota_print", "Status", 4);
$obj->add_row_btn("arrow-left-right", "Proses Ulang", "PrabayarJS.nota_reproc", "Proses", 0);
$obj->add_row_btn("clipboard", "Detail", "PrabayarJS.nota_detail", "Proses", 1);
if ($this->app->user()->is_level(1)) $obj->add_row_btn("trash", "Hapus", "PrabayarJS.nota_delete", "Status", 0);
$this->app->json([ $obj->json_table("divPOS1", 5) ]);
}
public function form_master() {
$tkembali = "0";
if ($this->mode === "save") {
$this->no_tx = $this->ppob->Nomor_Baru("P", tgl_dmy());
$no_seq = $this->db->fetchField("SELECT COALESCE(MAX(Counter),0)+1 Seq_TX FROM ppob_tx WHERE Tgl_TX=? AND ProdukID=? AND Tujuan=?", [tgl_ymd(), $this->id_produk, $this->tujuan]) ?? 1;
$id_kartu = Param::Int("KartuID", 0);
$no_kartu = ""; $nama_kartu = "";
if ($id_kartu > 0) {
$no_kartu = Param::Get("No_Kartu", "");
$nama_kartu = Param::Get("Nama_Kartu", "");
}
$apul = $this->db->fetchRow("SELECT * FROM ppob_produk WHERE ProdukID=?", [$this->id_produk]);
$sql = new SQL($this->app);
$sql->set_table("ppob_tx");
$sql->add_param("No_TX", $this->no_tx);
$sql->add_param_date("Tgl_TX", tgl_dmy());
$sql->add_param("CabID", $this->id_cab);
$sql->add_param("ProdukID");
$sql->add_param("Kode", $apul['Kode']);
$sql->add_param("Tujuan");
$sql->add_param("No_HP");
$sql->add_param("Counter", $no_seq);
$sql->add_param("Harga_Beli", $apul['Harga_Pokok']);
$sql->add_param("Harga_Jual", $apul['Harga_Jual']);
$sql->add_param("Total_Bayar");
$sql->add_param("KartuID", $id_kartu);
$sql->add_param("No_Kartu", $no_kartu);
$sql->add_param("Nama_Kartu", $nama_kartu);
$sql->add_param_userid();
$sql->InsertDB();
$this->mode = "reproc";
$tkembali = ''.rupiah($apul['Harga_Jual']-Param::Get("Total_Bayar",0)).'';
//jika token pln
if (($apul['KateID'] ?? 0) === 5) {
$this->db->runQuery("INSERT IGNORE INTO ppob_pend (No_TX,CabID,UserID) VALUES (?, ?, ?)", [$this->no_tx, $this->id_cab, $this->app->user()->id()]);
}
}
$form = new Form($this->app);
$tkate = $form->option_que("_", "KateID", $this->id_kate, true, false, "SELECT * FROM ppob_kategori WHERE KateID IN (SELECT KateID FROM ppob_produk WHERE Status=1 AND Harga_Jual>0)", ["KateID","N_Kate"], null, null, "PrabayarJS.oc_KateID");
$tope = $form->option("_", "OpeID", 0, true, false, [0=>""], null, "PrabayarJS.oc_OpeID");
$tproduk = $form->option("_", "ProdukID", 0, true, false, [0=>""], null, "PrabayarJS.oc_ProdukID");
$ttujuan = $form->textbox("_", "Tujuan", "", true, true, "phone", "Ketik Nomor Tujuan");
$tno_hp = $form->textbox("_", "No_HP", "", true, true, "phone", "no hp untuk pengiriman kode token");
$ajson['html'] = '
