app = $app; $this->db = $db; $this->ip_addr = $app->request()->ip; $this->id_cab = $session->get('APP_INV')['CABANGID'] ?? 0; $this->id_grup = $session->get('APP_INV')['ECERANID'] ?? 0; } public function brow_produk() { $tcari = Param::Get("Cari_Produk"); $tsql = ''; $asql = [$this->id_grup, 1]; if (!empty($tcari)) { $tsql .= " AND Barcode_Nama LIKE ?"; $asql[] = '%' . $tcari . '%'; } $obj = new Table($this->app); $obj->set_table("inv_produk_join", "*", "Grup_MemberID=? AND Aktif=?".$tsql, $asql); $obj->add_field("InvID", "ID", "hid"); $obj->add_field("SatuanID", "ID", "hid"); $obj->add_field("VarianID", "ID", "hid"); $obj->add_field("Kode_SKU", "SKU", "c"); $obj->add_field("Kode_Barcode", "Barcode", "c"); $obj->add_field("Nama_Lengkap", "Nama Barang", "awr"); $obj->set_field_order("Kode_SKU", "A"); $obj->set_func_select("RepoInvBarcodeJS.produk_select"); $this->app->json([ $obj->db_table("divBrowProduk") ]); } public function auto_produk() { $tcari = Param::Get("Auto_Query", ""); $ajson['autodata'] = []; $bcode = 0; $arec = []; // Cari by SKU + Barcode $_row = $this->db->fetchRow("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.VarianID,':',P.Kode_SKU) Data2 FROM (SELECT * FROM inv_produk_join WHERE Grup_MemberID=? AND Aktif=1 AND (Kode_SKU=? OR Kode_Barcode=?)) P", [$this->id_grup, $tcari, $tcari]); if ($_row) { $bcode = 1; $arec = $_row->getData(); } if ($bcode === 1) { $ajson['autodata'][] = ['value'=>$arec['InvID'], 'text'=>$arec['Nama_Lengkap'], 'data'=>$arec['Data2'], 'bc'=>1]; } else { $stat = $this->db->runQuery("SELECT P.InvID,P.Nama_Lengkap,P.Kode_SKU,CONCAT(P.SatuanID,':',P.VarianID,':',P.Kode_SKU) Data2 FROM (SELECT * FROM inv_produk_join WHERE Barcode_Nama LIKE ? AND Grup_MemberID=? AND Aktif=1) P ORDER BY P.Nama_Produk,P.Qty LIMIT 50", ['%'.$tcari.'%', $this->id_grup]); while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) { $ajson['autodata'][] = ['value'=>$row['InvID'], 'text'=>$row['Nama_Lengkap'], 'html'=>''.$row['Kode_SKU'].' '.$row['Nama_Lengkap'], 'data'=>$row['Data2'], 'bc'=>0]; } } $this->app->json($ajson); } public function barcode() { $id_inv = Param::Int("InvID", 0); $id_sat = Param::Int("SatuanID", 0); $id_var = Param::Int("VarianID", 0); $qty = Param::Int("Qty", 3); $nkolom = (str_contains(Param::Get("Printer"), "XP")) ? 2 : 3; $nbaris = (int) ceil($qty / $nkolom); $ajson = []; $barang = $this->db->fetchRow("SELECT Kode_SKU,Harga_Jual,LEFT(Nama_Lengkap,20) Nama FROM inv_produk_join WHERE InvID=? AND SatuanID=? AND VarianID=? AND Grup_MemberID=? ORDER BY Harga_Jual DESC LIMIT 1", [$id_inv, $id_sat, $id_var, $this->id_grup]); if ($barang) { $ajson = ['type' => "epl", 'config' => ['times' => 1], 'content' => $this->gen_bc_epl("Rp.".rupiah($barang->Harga_Jual), $barang->Nama, $barang->Kode_SKU, $nbaris, $nkolom)]; } $this->app->json($ajson); } public function load_printer() { $aprint = json_decode(stripslashes(Param::Get("Printer", "[]")), true); $avalue = [['value'=>"", 'html'=>"Pilih Printer"]]; $tdefp = Param::Get("DefPrint", ""); $this->db->runQuery("DELETE FROM app_printer WHERE IP=? AND CabID=?", [$this->ip_addr, $this->id_cab]); foreach ($aprint as $_val) { if (!empty($_val)) { $this->db->runQuery("INSERT IGNORE INTO app_printer SET IP=?,CabID=?,N_Printer=?,Defa=?", [$this->ip_addr, $this->id_cab, $_val, ($tdefp === $_val) ? 1 : 0]); } } $aprinter = $this->db->fetchAll("SELECT * FROM app_printer WHERE IP=? AND CabID=?", [$this->ip_addr, $this->id_cab]); foreach ($aprinter as $row) $avalue[] = ['value'=>$row['N_Printer'], 'html'=>$row['N_Printer']]; $ajson[] = ['type'=>"option", 'id'=>"Printer", 'avalue'=>$avalue]; $this->app->json($ajson); } public function index() { $form = new Form($this->app); $tsku = $form->textbox("_", "Kode_SKU", null, false, false); $tproduk = $form->textauto("_", "Nama_Produk", ['value'=>0,'text'=>""], true, true, "nama barang"); $tprt = $form->option_db("_", "Printer", "", true, false, "app_printer", ["N_Printer","N_Printer"], "IP='".$this->ip_addr."' AND CabID='".(string) $this->id_cab."'", [0,"Pilih Printer"]); $tqty = $form->textbox("_", "Qty", 3, true, false, "number"); $ajson['html'] = '
'.$tsku.'
'.$tproduk.'

'.$tprt.'
'.$tqty.Invesa::Form_Info("Untuk menghemat stiker, bisa gunakan jumlah cetak dalam kelipatan 3.").'
'; $this->app->json($ajson); } private function gen_bc_epl(string $harga="", string $nama="", string $barc="", int $baris=1, int $kolom=3): array { if ($kolom == 2) { //q582 $hasil = ['N', 'Q120,24', 'A6,99,3,3,1,1,N,"Cahaya"', 'A26,83,3,3,1,1,N,"Masa"', 'A14,1,0,2,1,1,N,"'.$nama.'"', 'B54,22,0,1,2,5,60,N,"'.$barc.'"', 'A64,75,0,4,1,1,N,"'.$harga.'"', 'A238,22,1,3,1,1,N,"HSmart"', 'A258,30,1,3,1,1,N,"RYN\'S"', 'A293,99,3,3,1,1,N,"Cahaya"', 'A313,83,3,3,1,1,N,"Masa"', 'A301,1,0,2,1,1,N,"'.$nama.'"', 'B341,22,0,1,2,5,60,N,"'.$barc.'"', 'A351,72,0,4,1,1,N,"'.$harga.'"', 'A525,22,1,3,1,1,N,"HSmart"', 'A545,30,1,3,1,1,N,"RYN\'S"', 'P'.$baris, '']; } else { //q960 $hasil = ['N', 'Q120,24', 'A4,98,3,3,1,1,N,"Cahaya"', 'A24,82,3,3,1,1,N,"Masa"', 'A12,0,0,2,1,1,N,"'.$nama.'"', 'B52,21,0,1,2,5,60,N,"'.$barc.'"', 'A62,74,0,4,1,1,N,"'.$harga.'"', 'A236,21,1,3,1,1,N,"HSmart"', 'A256,29,1,3,1,1,N,"RYN\'S"', 'A284,98,3,3,1,1,N,"Cahaya"', 'A304,82,3,3,1,1,N,"Masa"', 'A292,0,0,2,1,1,N,"'.$nama.'"', 'B332,21,0,1,2,5,60,N,"'.$barc.'"', 'A342,71,0,4,1,1,N,"'.$harga.'"', 'A516,21,1,3,1,1,N,"HSmart"', 'A536,29,1,3,1,1,N,"RYN\'S"', 'A564,98,3,3,1,1,N,"Cahaya"', 'A584,82,3,3,1,1,N,"Masa"', 'A572,0,0,2,1,1,N,"'.$nama.'"', 'B612,21,0,1,2,5,60,N,"'.$barc.'"', 'A622,71,0,4,1,1,N,"'.$harga.'"', 'A796,21,1,3,1,1,N,"HSmart"', 'A816,29,1,3,1,1,N,"RYN\'S"', 'P'.$baris, '']; } return $hasil; } }