Flatten mockup repo
This commit is contained in:
362
application/controllers/mockup/masterdata/Voucher.php
Normal file
362
application/controllers/mockup/masterdata/Voucher.php
Normal file
@@ -0,0 +1,362 @@
|
||||
<?php
|
||||
class Voucher extends MY_Controller
|
||||
{
|
||||
var $db_onedev;
|
||||
public function index()
|
||||
{
|
||||
echo "Patient API";
|
||||
}
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_onedev = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function add_notes($orderid){
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
//# cek token valid
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$startdate = $prm['startdate'] . " 00:00:01";
|
||||
$enddate = $prm['enddate'] . " 23:59:59";
|
||||
$search = $prm["search"];
|
||||
|
||||
$number_limit = 10;
|
||||
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
||||
|
||||
// ===============================
|
||||
// BUILD WHERE DINAMIS
|
||||
// ===============================
|
||||
$where = "VoucherHeaderIsActive = 'Y'
|
||||
AND VoucherHeaderStartDate BETWEEN ? AND ?";
|
||||
|
||||
$params = [$startdate, $enddate];
|
||||
|
||||
if (!empty($search)) {
|
||||
$where .= " AND (VoucherHeaderName LIKE ? OR VoucherHeaderPrefix LIKE '%{$search}%')";
|
||||
$params[] = "%{$search}%";
|
||||
}
|
||||
|
||||
// ===============================
|
||||
// COUNT TOTAL
|
||||
// ===============================
|
||||
$sql = "SELECT COUNT(*) as total
|
||||
FROM voucher_header
|
||||
WHERE $where";
|
||||
|
||||
$query = $this->db_onedev->query($sql, $params);
|
||||
|
||||
if (!$query) {
|
||||
$this->sys_error_db("voucher_header count", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
$tot_count = $query->row()->total;
|
||||
$tot_page = ceil($tot_count / $number_limit);
|
||||
|
||||
// ===============================
|
||||
// GET DATA
|
||||
// ===============================
|
||||
$sql = "SELECT *,
|
||||
CONCAT(
|
||||
DATE_FORMAT(VoucherHeaderStartDate,'%d-%m-%Y'),
|
||||
' s/d ',
|
||||
DATE_FORMAT(VoucherHeaderEndDate,'%d-%m-%Y')
|
||||
) as periode,
|
||||
'N' isused
|
||||
FROM voucher_header
|
||||
WHERE $where
|
||||
ORDER BY VoucherHeaderID DESC
|
||||
LIMIT $number_limit OFFSET $number_offset";
|
||||
|
||||
$query = $this->db_onedev->query($sql, $params);
|
||||
|
||||
if (!$query) {
|
||||
$this->sys_error_db("voucher_header list", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows = $query->result_array();
|
||||
foreach ($rows as $k => $v) {
|
||||
$x = $this->db_onedev->query("select count(*) as tot
|
||||
FROM voucher_detail
|
||||
where VoucherDetailVoucherHeaderID = '{$v['VoucherHeaderID']}'
|
||||
AND VoucherDetailIsUsed = 'Y'")->row();
|
||||
if($x->tot == 0){
|
||||
$isused = 'N';
|
||||
}else{
|
||||
$isused = 'Y';
|
||||
}
|
||||
$rows[$k]['isused'] = $isused;
|
||||
}
|
||||
|
||||
$result = [
|
||||
"total" => $tot_page,
|
||||
"records" => $rows
|
||||
];
|
||||
|
||||
$this->sys_ok($result);
|
||||
exit;
|
||||
}
|
||||
public function searchdetail()
|
||||
{
|
||||
//# cek token valid
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$search = isset($prm["search"]) ? $prm["search"] : '';
|
||||
$ID = isset($prm["ID"]) ? (int) $prm["ID"] : 0;
|
||||
$status = isset($prm["status"]) ? $prm["status"] : ''; // '' = semua, 'N' = belum dipakai, 'Y' = sudah dipakai
|
||||
|
||||
$number_limit = 10;
|
||||
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
||||
|
||||
// ===============================
|
||||
// BUILD WHERE DINAMIS
|
||||
// ===============================
|
||||
$where = "VoucherDetailIsActive = 'Y'";
|
||||
|
||||
if (!empty($search)) {
|
||||
$where .= " AND (VoucherDetailNumber LIKE '%{$search}%' OR IFNULL(T_OrderHeaderLabNumber,'') LIKE '%{$search}%')";
|
||||
}
|
||||
|
||||
if ($status === 'Y') {
|
||||
$where .= " AND VoucherDetailIsUsed = 'Y'";
|
||||
} elseif ($status === 'N') {
|
||||
$where .= " AND VoucherDetailIsUsed = 'N'";
|
||||
}
|
||||
|
||||
// ===============================
|
||||
// COUNT TOTAL
|
||||
// ===============================
|
||||
$sql = "SELECT COUNT(*) as total
|
||||
FROM voucher_detail
|
||||
LEFT JOIN t_orderheader ON T_OrderHeaderID = VoucherDetailT_OrderHeaderID
|
||||
WHERE $where
|
||||
AND ($ID = 0 OR($ID > 0 AND VoucherDetailVoucherHeaderID = $ID))";
|
||||
|
||||
$query = $this->db_onedev->query($sql);
|
||||
|
||||
if (!$query) {
|
||||
$this->sys_error_db("voucher_detail count", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
$tot_count = $query->row()->total;
|
||||
$tot_page = ceil($tot_count / $number_limit);
|
||||
|
||||
// ===============================
|
||||
// GET DATA
|
||||
// ===============================
|
||||
$sql = "SELECT VoucherDetailID,
|
||||
VoucherDetailT_OrderHeaderID,
|
||||
VoucherDetailVoucherHeaderID,
|
||||
VoucherDetailNumber,
|
||||
VoucherDetailIsUsed,
|
||||
IFNULL(T_OrderHeaderLabNumber,'') T_OrderHeaderLabNumber,
|
||||
IF(VoucherDetailIsUsed = 'Y', 'Digunakan','Belum Digunakan') statusvoucher,
|
||||
T_OrderHeaderDate
|
||||
FROM voucher_detail
|
||||
LEFT JOIN t_orderheader ON T_OrderHeaderID = VoucherDetailT_OrderHeaderID
|
||||
WHERE $where
|
||||
AND ($ID = 0 OR($ID > 0 AND VoucherDetailVoucherHeaderID = $ID))
|
||||
ORDER BY VoucherDetailNumber DESC
|
||||
LIMIT $number_limit OFFSET $number_offset";
|
||||
|
||||
$query = $this->db_onedev->query($sql);
|
||||
|
||||
if (!$query) {
|
||||
$this->sys_error_db("voucher_header list", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows = $query->result_array();
|
||||
foreach ($rows as $k => $v) {
|
||||
$x = $this->db_onedev->query("select count(*) as tot
|
||||
FROM voucher_detail
|
||||
where VoucherDetailVoucherHeaderID = '{$v['VoucherHeaderID']}'
|
||||
AND VoucherDetailIsUsed = 'Y'")->row();
|
||||
if($x->tot == 0){
|
||||
$isused = 'N';
|
||||
}else{
|
||||
$isused = 'Y';
|
||||
}
|
||||
$rows[$k]['isused'] = $isused;
|
||||
}
|
||||
|
||||
$result = [
|
||||
"total" => $tot_page,
|
||||
"records" => $rows
|
||||
];
|
||||
|
||||
$this->sys_ok($result);
|
||||
exit;
|
||||
}
|
||||
public function save()
|
||||
{
|
||||
//# ambil parameter input
|
||||
$prm = $this->sys_input;
|
||||
$puserid = $prm['pUserID'];
|
||||
|
||||
$sql = "CALL sp_fo_send_to_cashier({$puserid})";
|
||||
$query = $this->db_onedev->query($sql);
|
||||
|
||||
if ($query) {
|
||||
|
||||
|
||||
$result = array();
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("payment save rows", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function savetutup()
|
||||
{
|
||||
//# ambil parameter input
|
||||
$prm = $this->sys_input;
|
||||
$ppaymentkasirid = $prm['pPaymentKasirID'];
|
||||
$puserid = $prm['pUserID'];
|
||||
|
||||
$sql = "CALL sp_fo_received_cashier('{$ppaymentkasirid}','{$puserid}')";
|
||||
//$sql = "CALL sp_fo_send_to_cashier({$puserid})";
|
||||
$query = $this->db_onedev->query($sql);
|
||||
|
||||
if ($query) {
|
||||
|
||||
|
||||
$result = array();
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("payment savetutup rows", $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
public function saveData()
|
||||
{
|
||||
$this->db->trans_begin();
|
||||
|
||||
try {
|
||||
|
||||
$prm = $this->sys_input;
|
||||
$userid = $this->sys_user["M_UserID"];
|
||||
|
||||
$VoucherHeaderID = (int)$prm['xid'];
|
||||
|
||||
$VoucherHeaderName = $prm['VoucherHeaderName'];
|
||||
$VoucherHeaderPrefix = $prm['VoucherHeaderPrefix'];
|
||||
$VoucherHeaderAmount = $prm['VoucherHeaderAmount'];
|
||||
$VoucherHeaderQty = (int)$prm['VoucherHeaderQty'];
|
||||
$VoucherHeaderNote = $prm['VoucherHeaderNote'];
|
||||
$VoucherHeaderStartDate = $prm['VoucherHeaderStartDate'];
|
||||
$VoucherHeaderEndDate = $prm['VoucherHeaderEndDate'];
|
||||
|
||||
// ======================================
|
||||
// 1️⃣ JIKA INSERT BARU
|
||||
// ======================================
|
||||
if ($VoucherHeaderID == 0) {
|
||||
|
||||
$header_data = [
|
||||
'VoucherHeaderName' => $VoucherHeaderName,
|
||||
'VoucherHeaderPrefix' => $VoucherHeaderPrefix,
|
||||
'VoucherHeaderAmount' => $VoucherHeaderAmount,
|
||||
'VoucherHeaderQty' => $VoucherHeaderQty,
|
||||
'VoucherHeaderNote' => $VoucherHeaderNote,
|
||||
'VoucherHeaderStartDate' => $VoucherHeaderStartDate,
|
||||
'VoucherHeaderEndDate' => $VoucherHeaderEndDate,
|
||||
'VoucherHeaderIsActive' => 'Y',
|
||||
'VoucherHeaderCreated' => date('Y-m-d H:i:s'),
|
||||
'VoucherHeaderUserID' => $userid
|
||||
];
|
||||
|
||||
$this->db->insert('voucher_header', $header_data);
|
||||
$VoucherHeaderID = $this->db->insert_id();
|
||||
|
||||
}
|
||||
// ======================================
|
||||
// 2️⃣ JIKA UPDATE
|
||||
// ======================================
|
||||
else {
|
||||
|
||||
// update header saja (TIDAK ubah IsActive)
|
||||
$this->db->where('VoucherHeaderID', $VoucherHeaderID);
|
||||
$this->db->update('voucher_header', [
|
||||
'VoucherHeaderName' => $VoucherHeaderName,
|
||||
'VoucherHeaderPrefix' => $VoucherHeaderPrefix,
|
||||
'VoucherHeaderAmount' => $VoucherHeaderAmount,
|
||||
'VoucherHeaderQty' => $VoucherHeaderQty,
|
||||
'VoucherHeaderNote' => $VoucherHeaderNote,
|
||||
'VoucherHeaderStartDate' => $VoucherHeaderStartDate,
|
||||
'VoucherHeaderEndDate' => $VoucherHeaderEndDate,
|
||||
'VoucherHeaderUserID' => $userid
|
||||
]);
|
||||
|
||||
// nonaktifkan detail lama
|
||||
$this->db->where('VoucherDetailVoucherHeaderID', $VoucherHeaderID);
|
||||
$this->db->update('voucher_detail', [
|
||||
'VoucherDetailIsActive' => 'N'
|
||||
]);
|
||||
}
|
||||
|
||||
// ======================================
|
||||
// 3️⃣ GENERATE DETAIL BARU
|
||||
// ======================================
|
||||
$insert_detail = [];
|
||||
|
||||
for ($i = 1; $i <= $VoucherHeaderQty; $i++) {
|
||||
$insert_detail[] = [
|
||||
'VoucherDetailVoucherHeaderID' => $VoucherHeaderID,
|
||||
'VoucherDetailNumber' =>
|
||||
$VoucherHeaderPrefix . str_pad($i, 4, '0', STR_PAD_LEFT),
|
||||
'VoucherDetailIsActive' => 'Y',
|
||||
'VoucherDetailUserID' => $userid
|
||||
];
|
||||
}
|
||||
|
||||
$this->db->insert_batch('voucher_detail', $insert_detail);
|
||||
|
||||
|
||||
if ($this->db->trans_status() === FALSE) {
|
||||
throw new Exception("Transaction gagal");
|
||||
}
|
||||
|
||||
$this->db->trans_commit();
|
||||
|
||||
echo json_encode([
|
||||
"status" => "OK",
|
||||
"VoucherHeaderID" => $VoucherHeaderID,
|
||||
"total_generated" => $VoucherHeaderQty
|
||||
]);
|
||||
exit;
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
$this->db->trans_rollback();
|
||||
|
||||
echo json_encode([
|
||||
"status" => "ERROR",
|
||||
"message" => $e->getMessage()
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user