first commit
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
PHP Class : /Controller/Report/Inv/BarcodeController
|
||||
Description : Laporan Barcode Barang
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : October 28th, 2013.
|
||||
Last Modified : October 14th, 2026.
|
||||
|
||||
(c) 3FONIA Software; WWW.3FONIA.COM.
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Controller\Report\Inv;
|
||||
|
||||
use App\Utils\Invesa;
|
||||
use flight\Engine;
|
||||
use flight\database\SimplePdo;
|
||||
use flight\Session;
|
||||
use Webapp\Web\Form;
|
||||
use Webapp\Web\Param;
|
||||
use Webapp\Web\Table;
|
||||
|
||||
class BarcodeController {
|
||||
|
||||
private string $ip_addr;
|
||||
private int $id_cab;
|
||||
private int $id_grup;
|
||||
protected Engine $app;
|
||||
protected SimplePdo $db;
|
||||
|
||||
public function __construct(Engine $app, SimplePdo $db, Session $session) {
|
||||
$this->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'=>'<span class="text-primary">'.$row['Kode_SKU'].'</span> '.$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'] = '
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-4 col-lg-3 col-form-label">Kode SKU</label>
|
||||
<div class="col-sm-6 col-lg-5">'.$tsku.'</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Barang</label>
|
||||
<div class="col"><div class="input-group">'.$tproduk.'<button id="butBrowProduk" class="btn btn-info" type="button"><i class="bi-bag"></i></button></div></div>
|
||||
</div>
|
||||
<div class="row mb-1"><div class="col"><hr class="my-2"></div></div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-4 col-lg-3 col-form-label" for="Printer">Nama Printer</label>
|
||||
<div class="col"><div class="input-group">'.$tprt.'<button id="butLoadPrinter" class="btn btn-warning" type="button"><i class="bi-printer"></i></button></div></div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Jumlah Stiker</label>
|
||||
<div class="col-sm-5 col-lg-3"><div class="input-group">'.$tqty.Invesa::Form_Info("Untuk menghemat stiker, bisa gunakan jumlah cetak dalam kelipatan 3.").'</div></div>
|
||||
</div>
|
||||
<input type="hidden" id="InvID" value="0" >
|
||||
<input type="hidden" id="SatuanID" value="0" >
|
||||
<input type="hidden" id="VarianID" value="0" >';
|
||||
$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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user