138 lines
7.2 KiB
PHP
138 lines
7.2 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
PHP Class : /Controller/Inv/CekhargaController
|
|
Description : Informasi Barang & Harga Jual
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : October 22nd, 2014.
|
|
Last Modified : November 3rd, 2026.
|
|
|
|
(c) 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controller\Inv;
|
|
|
|
use flight\Engine;
|
|
use flight\database\SimplePdo;
|
|
use flight\Session;
|
|
use Webapp\Web\Form;
|
|
use Webapp\Web\Param;
|
|
use Webapp\Web\Table;
|
|
|
|
class CekhargaController {
|
|
|
|
private int $id_grup_member;
|
|
private int $id_inv;
|
|
protected Engine $app;
|
|
protected SimplePdo $db;
|
|
|
|
public function __construct(Engine $app, SimplePdo $db, Session $session) {
|
|
$this->app = $app;
|
|
$this->db = $db;
|
|
$this->id_grup_member = $session->get('APP_INV')['ECERANID'];
|
|
$this->id_inv = Param::Int("InvID", 0);
|
|
}
|
|
|
|
public function brow_produk() {
|
|
$tcari = Param::Get("Cari_Produk");
|
|
$tsql = ''; $asql = [1, $this->id_grup_member];
|
|
if (!empty($tcari)) {
|
|
$tsql .= " AND Barcode_Nama LIKE ?";
|
|
$asql[] = '%' . $tcari . '%';
|
|
}
|
|
|
|
$obj = new Table($this->app);
|
|
$obj->set_table("inv_produk_join", "*", "Aktif=? AND Grup_MemberID=? AND Harga_Jual>0".$tsql, $asql);
|
|
$obj->add_field("InvID", "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->add_field("Harga_Jual", "Harga Jual", "r", "rupiah");
|
|
$obj->add_field("Satuan_Kemasan", "Satuan", "hid");
|
|
$obj->set_field_order("Kode_SKU", "A");
|
|
$obj->set_func_select("CekHargaJS.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
|
|
// Kode_SKU + Kode_Barcode : Satuan_Kemasan : Harga_Jual
|
|
$_row = $this->db->fetchRow("SELECT P.InvID,P.Nama_Produk_Varian,CONCAT(P.Kode_SKU,' / ',P.Kode_Barcode,':',P.Satuan_Kemasan,':',CONVERT(FORMAT(P.Harga_Jual,2) USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_join WHERE Aktif=1 AND Harga_Jual>0 AND Grup_MemberID=? AND (Kode_SKU=? OR Kode_Barcode=?)) P", [$this->id_grup_member, $tcari, $tcari]);
|
|
if ($_row) {
|
|
$bcode = 1;
|
|
$arec = $_row->getData();
|
|
}
|
|
if ($bcode === 1) {
|
|
$ajson['autodata'][] = ['value'=>$arec['InvID'], 'text'=>$arec['Nama_Produk_Varian'], 'data'=>$arec['Data2'], 'bc'=>1];
|
|
} else {
|
|
$stat = $this->db->runQuery("SELECT P.InvID,P.Nama_Lengkap,P.Nama_Produk_Varian,P.Kode_SKU,P.Harga_Jual,CONCAT(P.Kode_SKU,' / ',P.Kode_Barcode,':',P.Satuan_Kemasan,':',CONVERT(FORMAT(P.Harga_Jual,2) USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_join WHERE Barcode_Nama LIKE ? AND Aktif=1 AND Harga_Jual>0 AND Grup_MemberID=?) P ORDER BY P.Nama_Produk,P.Qty LIMIT 50", ['%'.$tcari.'%', $this->id_grup_member]);
|
|
while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) {
|
|
$ajson['autodata'][] = ['value'=>$row['InvID'], 'text'=>$row['Nama_Produk_Varian'], 'html'=>'<span class="text-primary">'.$row['Kode_SKU'].'</span> '.$row['Nama_Lengkap'].' - <strong>Rp'.rupiah($row['Harga_Jual']).'</strong>', 'data'=>$row['Data2'], 'bc'=>0];
|
|
}
|
|
}
|
|
$this->app->json($ajson);
|
|
}
|
|
|
|
public function scan_produk() {
|
|
$tcari = Param::Get("Cari_Produk", "");
|
|
$scandata = ['Nama_Supplier'=>"BELUM ADA"];
|
|
|
|
// Cari by SKU + Barcode
|
|
// InvID : Kode_SKU + Kode_Barcode : Nama_Lengkap : Satuan_Kemasan : Harga_Jual
|
|
$_row = $this->db->fetchRow("SELECT P.InvID,CONCAT(P.Kode_SKU,' / ',P.Kode_Barcode) Kode_Barang,P.Nama_Produk_Varian Nama_Barang,P.Satuan_Kemasan Nama_Satuan,CONVERT(FORMAT(P.Harga_Jual,2) USING UTF8) Harga_Jual FROM (SELECT * FROM inv_produk_join WHERE Aktif=1 AND Harga_Jual>0 AND Grup_MemberID=? AND (Kode_SKU=? OR Kode_Barcode=?)) P", [$this->id_grup_member, $tcari, $tcari]);
|
|
if ($_row) $scandata = array_merge($scandata, $_row->getData());
|
|
|
|
if (isset($scandata['InvID']) && $scandata['InvID'] > 0) {
|
|
$_row = $this->db->fetchRow("SELECT Nama_Sup Nama_Supplier FROM para_supplier WHERE SupID=(SELECT SupID FROM inv_produk_sup WHERE InvID=? ORDER BY Aktif DESC LIMIT 1)", [$scandata['InvID']]);
|
|
if ($_row) $scandata = array_merge($scandata, $_row->getData());
|
|
}
|
|
$this->app->json([ $scandata ]);
|
|
}
|
|
|
|
public function update_sup() {
|
|
$n_sup = $this->db->fetchField("SELECT Nama_Sup FROM para_supplier WHERE SupID=(SELECT SupID FROM inv_produk_sup WHERE InvID=? ORDER BY Aktif DESC LIMIT 1)", [$this->id_inv]) ?? "BELUM ADA";
|
|
$this->app->json([ ['type'=>"form", 'id'=>"Nama_Supplier", 'value'=>$n_sup] ]);
|
|
}
|
|
|
|
public function index() {
|
|
$form = new Form($this->app);
|
|
$tbrg = $form->textauto("_", "Nama_Produk", ['value'=>0, 'text'=>""], true, true, "Scan SKU / Barcode / Ketik Nama Barang");
|
|
$tkode = $form->textbox("_", "Kode_Barang", "KODE_SKU / KODE_BARCODE", false);
|
|
$tnama = $form->textbox("_", "Nama_Barang", "NAMA_BARANG", false);
|
|
$tsat = $form->textbox("_", "Nama_Satuan", "SATUAN", false);
|
|
$tharga = $form->textbox("_", "Harga_Jual", "", false);
|
|
$tsup = $form->textbox("_", "Nama_Supplier", "", false);
|
|
$ajson['html'] = '';
|
|
if (isMobile()) {
|
|
$ajson['html'] .= '
|
|
<div class="row mb-1"><div class="col"><div id="qr-reader"></div></div></div>
|
|
<hr class="my-2">
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Kode SKU / Barcode</div><div class="col"><div class="input-group">'.$tkode.'<button class="btn btn-info shadow-none" type="button" id="butBrow"><i class="bi-search"></i></button></div></div></div>
|
|
';
|
|
} else {
|
|
$ajson['html'] .= '
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Kunci Pencarian</div><div class="col"><div class="input-group">'.$tbrg.'<button class="btn btn-info shadow-none" type="button" id="butBrow"><i class="bi-search"></i></button></div></div></div>
|
|
<hr class="my-2">
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Kode SKU / Barcode</div><div class="col">'.$tkode.'</div></div>
|
|
';
|
|
}
|
|
|
|
$ajson['html'] .= '
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Nama Barang</div><div class="col">'.$tnama.'</div></div>
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Satuan</div><div class="col">'.$tsat.'</div></div>
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Harga Jual @</div><div class="col">'.$tharga.'</div></div>
|
|
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Supplier</div><div class="col">'.$tsup.'</div></div>
|
|
<input type="hidden" id="InvID" value="0" />';
|
|
$this->app->json($ajson);
|
|
}
|
|
|
|
}
|