137 lines
6.7 KiB
PHP
137 lines
6.7 KiB
PHP
<?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);
|
|
}
|
|
|
|
}
|