first commit

This commit is contained in:
2026-10-29 13:34:31 +07:00
commit 45e4595c57
255 changed files with 35457 additions and 0 deletions
+136
View File
@@ -0,0 +1,136 @@
<?php
/*******************************************************************
PHP Class : /Controller/Member/PointController
Description : Informasi Point Member
Created By : Siau Pheng ([email protected]).
Created Date : October 22nd, 2014.
Last Modified : September 29th, 2026.
(c) 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace App\Controller\Member;
use flight\Engine;
use flight\database\SimplePdo;
use flight\Session;
use Webapp\Web\Form;
use Webapp\Web\Param;
use Webapp\Web\Table;
class PointController {
private int $id_member;
protected Engine $app;
protected SimplePdo $db;
public function __construct(Engine $app, SimplePdo $db, Session $session) {
$this->app = $app;
$this->db = $db;
$this->id_member = Param::Int("MemberID", 0);
}
public function table_point() {
$obj = new Table($this->app);
$obj->set_table("(SELECT * FROM inv_point_tipe WHERE Aktif=1) P LEFT JOIN (SELECT Point_TipeID,SUM(IF(Nilai_Point>0,Nilai_Point,0)) Tambah_Point,SUM(IF(Nilai_Point<0,-Nilai_Point,0)) Kurang_Point,SUM(Nilai_Point) Sisa_Point FROM inv_point_tx WHERE MemberID=? GROUP BY Point_TipeID ORDER BY Point_TipeID) S ON (S.Point_TipeID=P.Point_TipeID)", "S.*,P.Nama_Tipe", "", [$this->id_member]);
$obj->add_field("Nama_Tipe", "Tipe Point", "l");
$obj->add_field("Tambah_Point", "Pengumpulan", "r", "rupiah");
$obj->add_field("Kurang_Point", "Penukaran", "r", "rupiah");
$obj->add_field("Sisa_Point", "Sisa Point", "r", "rupiah");
$obj->set_field_order("Point_TipeID", "A");
$this->app->json([ $obj->json_table("divPOINT", 5) ]);
}
public function brow_member() {
$tcari = Param::Get("Cari_Member");
$tsql = ''; $asql = [];
if (!empty($tcari)) {
$tsql .= " AND CONCAT(Kode_Member,Nama_Member,Alamat_Member,Telp_Member) LIKE ?";
array_push($asql, '%' . $tcari . '%');
}
$obj = new Table($this->app);
$obj->set_table("(SELECT * FROM para_member WHERE Aktif=1 AND IM=1".$tsql.") M LEFT JOIN para_member_grup G ON (M.Grup_MemberID=G.Grup_MemberID)", "M.*,G.Nama_Grup", "", $asql);
$obj->add_field("MemberID", "ID", "hid");
$obj->add_field("Kode_Member", "Kode", "c");
$obj->add_field("Nama_Member", "Nama Member", "awr");
$obj->add_field("Alamat_Member", "Alamat", "awr");
$obj->add_field("Telp_Member", "Telp.", "awr");
$obj->add_field("Nama_Grup", "Grup", "hid");
$obj->set_field_order("Kode_Member", "A");
$obj->set_func_select("MemberPointJS.member_select");
$this->app->json([ $obj->db_table("divBrowMember") ]);
}
public function auto_member() {
$tcari = Param::Get("Auto_Query", "");
$ajson['autodata'] = [];
$bcode = 0; $arec = [];
if (is_numeric($tcari) && strlen($tcari) === 8) {
// Cari by Barcode
// Kode_Member : Grup_Member
$_row = $this->db->fetchRow("SELECT M.MemberID,M.Nama_Member,CONCAT(M.Kode_Member,':',G.Nama_Grup) Data2 FROM (SELECT * FROM para_member WHERE Aktif=1 AND IM=1 AND Kode_Member=?) M LEFT JOIN para_member_grup G ON (M.Grup_MemberID=G.Grup_MemberID)", [$tcari]);
if ($_row) {
$bcode = 1;
$arec = $_row->getData();
}
}
if ($bcode === 1) {
$ajson['autodata'][] = ['value'=>$arec['MemberID'], 'text'=>$arec['Nama_Member'], 'data'=>$arec['Data2'], 'bc'=>1];
} else {
$stat = $this->db->runQuery("SELECT M.MemberID,M.Kode_Member,M.Nama_Member,CONCAT(M.Kode_Member,':',G.Nama_Grup) Data2 FROM (SELECT * FROM para_member WHERE Aktif=1 AND IM=1 AND CONCAT(Kode_Member,Nama_Member,Alamat_Member,Telp_Member) LIKE ?) M LEFT JOIN para_member_grup G ON (M.Grup_MemberID=G.Grup_MemberID) ORDER BY M.Kode_Member LIMIT 50", ['%'.$tcari.'%']);
while ($row = $stat->fetch(SimplePdo::FETCH_ASSOC)) {
$ajson['autodata'][] = ['value'=>$row['MemberID'], 'text'=>$row['Nama_Member'], 'html'=>'<span class="text-primary">'.$row['Kode_Member'].'</span> '.$row['Nama_Member'], 'data'=>$row['Data2'], 'bc'=>0];
}
}
$this->app->json($ajson);
}
public function scan_member() {
$tcari = Param::Get("Cari_Member", "");
$scandata = [];
// Cari by Barcode
// Kode_Member : Grup_Member
$_row = $this->db->fetchRow("SELECT M.MemberID,M.Kode_Member,M.Nama_Member Nama_Lengkap,G.Nama_Grup FROM (SELECT * FROM para_member WHERE Aktif=1 AND IM=1 AND Kode_Member=?) M LEFT JOIN para_member_grup G ON (M.Grup_MemberID=G.Grup_MemberID)", [$tcari]);
if ($_row) $scandata = array_merge($scandata, $_row->getData());
$this->app->json([ $scandata ]);
}
public function index() {
$form = new Form($this->app);
$tmem = $form->textauto("_", "Nama_Member", ['value'=>0, 'text'=>""], true, true, "Scan Barcode / Ketik Nama Member");
$tkode = $form->textbox("_", "Kode_Member", "KODE_MEMBER", false);
$tnama = $form->textbox("_", "Nama_Lengkap", "NAMA_MEMBER", false);
$tgrup = $form->textbox("_", "Nama_Grup", "GRUP_MEMBER", 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 Member</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">'.$tmem.'<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 Member</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 Member</div><div class="col">'.$tnama.'</div></div>
<div class="row mb-1"><div class="col-sm-3 col-lg-3 col-form-label">Grup Member</div><div class="col">'.$tgrup.'</div></div>
<input type="hidden" id="MemberID" value="0" />
<hr class="my-2">
<div id="divPOINT"></div>';
$this->app->json($ajson);
}
}