690 lines
22 KiB
PHP
690 lines
22 KiB
PHP
<?php
|
|
class Itemunit extends MY_Controller
|
|
{
|
|
var $db_inventory;
|
|
var $db_inventory_log;
|
|
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_inventory = $this->load->database("inventory", true);
|
|
$this->db_inventory_log = $this->load->database('inventory_log', true);
|
|
}
|
|
|
|
function index()
|
|
{
|
|
echo "Api: Training Playground";
|
|
echo "<br>";
|
|
$cek = $this->db_inventory->query("select database() as current_db")->result();
|
|
// echo $this->db->last_query();
|
|
|
|
print_r($cek);
|
|
}
|
|
|
|
function search()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$sql_data = "";
|
|
$sql_filter = "";
|
|
$search = "";
|
|
if (isset($prm['search'])) {
|
|
$search = trim($prm["search"]);
|
|
if ($search != "") {
|
|
$search = '%' . $prm['search'] . '%';
|
|
}else{
|
|
$search = '%%';
|
|
}
|
|
}
|
|
|
|
$all = $prm['all'];
|
|
$limit = '';
|
|
if($all == 'N'){
|
|
$limit = ' LIMIT 10';
|
|
}
|
|
|
|
// sort
|
|
$sortBy = $prm['sortBy'];
|
|
$sortStatus = $prm['sortStatus'];
|
|
if($sortBy){
|
|
$q_sort = "ORDER BY ".$sortBy." ".$sortStatus;
|
|
}
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 10;
|
|
// $number_limit = 1;
|
|
if($prm['current_page'] > 0) {
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
|
}
|
|
|
|
// $number_offset = ($prm['current_page'] - 1) * $number_limit;
|
|
|
|
// $sql_filter .= "select count(distinct ItemUnitID, ItemUnitCode,
|
|
// ItemUnitName)
|
|
// as total
|
|
// from itemunit
|
|
// where ItemUnitIsActive = 'Y'
|
|
// AND (
|
|
// ItemUnitCode like ?
|
|
// OR ItemUnitName like ?
|
|
// )";
|
|
|
|
|
|
$sql_filter .= "
|
|
select count(*) as total from (
|
|
select distinct ItemUnitID, ItemUnitCode,
|
|
ItemUnitName
|
|
from itemunit
|
|
where ItemUnitIsActive = 'Y'
|
|
AND (
|
|
ItemUnitCode like ?
|
|
OR ItemUnitName like ?)
|
|
) x";
|
|
|
|
$qry_filter = $this->db_inventory->query($sql_filter, [$search, $search]);
|
|
// echo $this->db->last_query();
|
|
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_filter) {
|
|
// $tot_count = $qry_filter->result_array()[0]["total"];
|
|
$tot_count = $qry_filter->row()->total;
|
|
$tot_page = ceil($tot_count/$number_limit);
|
|
} else {
|
|
$this->sys_error_db("itemunit count", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql_data .= "select
|
|
distinct ItemUnitID,
|
|
ItemUnitCode,
|
|
ItemUnitName,
|
|
ItemUnitCode as code,
|
|
ItemUnitName as name,
|
|
ItemUnitID as id
|
|
from itemunit
|
|
where ItemUnitIsActive = 'Y'
|
|
AND (
|
|
ItemUnitCode like ?
|
|
OR ItemUnitName like ?
|
|
)
|
|
$q_sort
|
|
limit ? offset ?";
|
|
|
|
$qry_data = $this->db_inventory->query($sql_data, [
|
|
$search, $search, $number_limit, $number_offset
|
|
]);
|
|
|
|
// var_dump($this->db_inventory->last_query());
|
|
|
|
if ($qry_data) {
|
|
$rows = $qry_data->result_array();
|
|
} else {
|
|
$this->sys_error_db("itemunit select");
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"total_filter"=>count($rows),
|
|
"records" => $rows,
|
|
"qry" => $sql_data
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function add()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
//begin transaction
|
|
$this->db->trans_begin();
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
|
|
$userid = $this->sys_user['M_UserID'];
|
|
// $userid = 3;
|
|
|
|
$unit_name_search = "";
|
|
$unit_name = "";
|
|
if (isset($prm['unit_name'])) {
|
|
$unit_name_search = trim($prm["unit_name"]);
|
|
$unit_name = trim($prm['unit_name']);
|
|
if ($unit_name_search != "") {
|
|
$unit_name_search = $prm['unit_name'];
|
|
}
|
|
}
|
|
|
|
$sql_count = "SELECT COUNT(*) as exist
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitName = ?";
|
|
$query_count = $this->db_inventory->query($sql_count,[
|
|
$unit_name_search
|
|
]);
|
|
|
|
$last_query_count = $this->db_inventory->last_query();
|
|
|
|
if(!$query_count){
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit search & count by name");
|
|
exit;
|
|
}else{
|
|
// substring date
|
|
// $date = date('Y');
|
|
// $substring_date = substr($date,-2);
|
|
|
|
// var_dump($substring_date);
|
|
|
|
$unit_code_generate = "UI";
|
|
|
|
$get_count = $query_count->row_array();
|
|
if($get_count['exist'] == 0)
|
|
{
|
|
// call fungsi untuk generate code
|
|
$sql_generate_code = "select fn_numbering(?) as code";
|
|
$query_generate_code = $this->db_inventory->query($sql_generate_code,
|
|
[
|
|
$unit_code_generate
|
|
]);
|
|
|
|
if(!$query_generate_code){
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit call sp");
|
|
exit;
|
|
}
|
|
|
|
$get_unit_code = $query_generate_code->row_array();
|
|
$unit_code = $get_unit_code['code'];
|
|
|
|
// query insert
|
|
$sql_insert = "INSERT INTO itemunit
|
|
(
|
|
ItemUnitCode,
|
|
ItemUnitName,
|
|
ItemUnitCreated,
|
|
ItemUnitLastUpdated,
|
|
ItemUnitUserID
|
|
)
|
|
VALUES (?, ?, now(), now(), ?)";
|
|
|
|
$query_insert = $this->db_inventory->query($sql_insert,[
|
|
$unit_code, $unit_name, $userid
|
|
]);
|
|
|
|
if (!$query_insert) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit insert");
|
|
exit;
|
|
}
|
|
|
|
// var_dump($this->db->affected_rows());
|
|
$insert_id = $this->db_inventory->insert_id();
|
|
// print_r($insert_id);
|
|
|
|
$sql_json_before = "SELECT *
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitID = ?";
|
|
|
|
$qry_json_before = $this->db_inventory->query($sql_json_before,
|
|
[
|
|
$insert_id
|
|
]);
|
|
|
|
if (!$qry_json_before) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit select json");
|
|
exit;
|
|
}
|
|
|
|
$data_by_id = $qry_json_before->row();
|
|
|
|
$json_after_log = json_encode($data_by_id);
|
|
|
|
// print_r($json_after_log);
|
|
|
|
$sql_insert_log = "INSERT INTO itemunit_log(
|
|
ItemUnitLogItemUnitID,
|
|
ItemUnitLogStatus,
|
|
ItemUnitLogJSONBefore,
|
|
ItemUnitLogJSONAfter,
|
|
ItemUnitLogUserID,
|
|
ItemUnitLogCreated
|
|
) VALUES (
|
|
?,
|
|
'ADD',
|
|
null,
|
|
?,
|
|
?,
|
|
now()
|
|
)";
|
|
|
|
$qry_insert_log = $this->db_inventory_log->query($sql_insert_log,
|
|
[
|
|
$insert_id,
|
|
$json_after_log,
|
|
$userid
|
|
]);
|
|
|
|
if (!$qry_insert_log) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit insert log");
|
|
exit;
|
|
}
|
|
|
|
// sukses
|
|
$this->db->trans_commit();
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array("xid" => 0)
|
|
);
|
|
$this->sys_ok($result);
|
|
}
|
|
else
|
|
{
|
|
$errors = array();
|
|
if($get_count['exist'] != 0){
|
|
array_push($errors,array(
|
|
'field'=>'name',
|
|
'msg'=>'Nama sudah ada'
|
|
));
|
|
}
|
|
|
|
$insert_id = $this->db_inventory->insert_id();
|
|
// print_r($insert_id);
|
|
|
|
$sql_json_before = "SELECT *
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitID = ?";
|
|
|
|
$qry_json_before = $this->db_inventory->query($sql_json_before,
|
|
[
|
|
$insert_id
|
|
]);
|
|
|
|
if (!$qry_json_before) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit select json");
|
|
exit;
|
|
}
|
|
|
|
$data_by_id = $qry_json_before->row();
|
|
|
|
$json_after_log = json_encode($data_by_id);
|
|
|
|
// print_r($json_after_log);
|
|
|
|
$sql_insert_log = "INSERT INTO itemunit_log(
|
|
ItemUnitLogItemUnitID,
|
|
ItemUnitLogStatus,
|
|
ItemUnitLogJSONBefore,
|
|
ItemUnitLogJSONAfter,
|
|
ItemUnitLogUserID,
|
|
ItemUnitLogCreated
|
|
) VALUES (
|
|
?,
|
|
'DELETE',
|
|
null,
|
|
?,
|
|
?,
|
|
now()
|
|
)";
|
|
|
|
$qry_insert_log = $this->db_inventory_log->query($sql_insert_log,
|
|
[
|
|
$insert_id,
|
|
$json_after_log,
|
|
$userid
|
|
]);
|
|
|
|
if (!$qry_insert_log) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit insert log");
|
|
exit;
|
|
}
|
|
|
|
|
|
// sukses
|
|
$this->db->trans_commit();
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array("xid" => 0)
|
|
);
|
|
$this->sys_ok($result);
|
|
}
|
|
}
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function edit()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
//begin transaction
|
|
$this->db->trans_begin();
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
|
|
$userid = $this->sys_user['M_UserID'];
|
|
// $userid = 1;
|
|
$id = $prm['id'];
|
|
|
|
$unit_name_search = "";
|
|
$unit_name = "";
|
|
if (isset($prm['unit_name'])) {
|
|
$unit_name_search = trim($prm["unit_name"]);
|
|
$unit_name = trim($prm['unit_name']);
|
|
if ($unit_name_search != "") {
|
|
$unit_name_search = $prm['unit_name'];
|
|
}
|
|
}
|
|
|
|
$sql_count = "SELECT COUNT(*) as exist
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitName = ?";
|
|
$query_count = $this->db_inventory->query($sql_count,[
|
|
$unit_name_search
|
|
]);
|
|
|
|
$last_query_count = $this->db_inventory->last_query();
|
|
|
|
if(!$query_count){
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit search & count by name");
|
|
exit;
|
|
}else{
|
|
// substring date
|
|
// $date = date('Y');
|
|
// $substring_date = substr($date,-2);
|
|
|
|
// var_dump($substring_date);
|
|
|
|
// $unit_code_generate = "UI";
|
|
|
|
$get_count = $query_count->row_array();
|
|
// if($get_count['exist'] == 0)
|
|
// {
|
|
// call fungsi untuk generate code
|
|
// $sql_generate_code = "select fn_numbering(?) as code";
|
|
// $query_generate_code = $this->db_inventory->query($sql_generate_code,
|
|
// [
|
|
// $unit_code_generate
|
|
// ]);
|
|
|
|
// if(!$query_generate_code){
|
|
// $this->db->trans_rollback();
|
|
// $this->sys_error_db("itemunit call sp");
|
|
// exit;
|
|
// }
|
|
|
|
// $get_unit_code = $query_generate_code->row_array();
|
|
// $unit_code = $get_unit_code['code'];
|
|
|
|
// json before
|
|
$sql_json_before = "SELECT *
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitID = ?";
|
|
|
|
$qry_json_before = $this->db_inventory->query(
|
|
$sql_json_before,
|
|
[
|
|
$id
|
|
]);
|
|
|
|
if (!$qry_json_before) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit select json before");
|
|
exit;
|
|
}
|
|
|
|
$data_before_by_id = $qry_json_before->row();
|
|
|
|
$json_before_log = json_encode($data_before_by_id);
|
|
|
|
// print_r($json_before_log);
|
|
|
|
// query update
|
|
$sql_update = "UPDATE itemunit
|
|
set
|
|
ItemUnitName = ?,
|
|
ItemUnitLastUpdated = now(),
|
|
ItemUnitUserID = ?
|
|
WHERE ItemUnitID = ?";
|
|
|
|
$query_update = $this->db_inventory->query($sql_update,[
|
|
$unit_name, $userid, $id
|
|
]);
|
|
|
|
if (!$query_update) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit insert");
|
|
exit;
|
|
}
|
|
|
|
// print_r($json_before_log);
|
|
|
|
// print_r($query_data);
|
|
|
|
// json after
|
|
$sql_json_after = "SELECT *
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'Y'
|
|
AND ItemUnitID = ?";
|
|
|
|
$qry_json_after = $this->db_inventory->query($sql_json_after,
|
|
[
|
|
$id
|
|
]);
|
|
|
|
if (!$qry_json_after) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit select json after");
|
|
exit;
|
|
}
|
|
|
|
$data_after_by_id = $qry_json_after->row();
|
|
|
|
$json_after_log = json_encode($data_after_by_id);
|
|
|
|
$sql_insert_log = "INSERT INTO itemunit_log(
|
|
ItemUnitLogItemUnitID,
|
|
ItemUnitLogStatus,
|
|
ItemUnitLogJSONBefore,
|
|
ItemUnitLogJSONAfter,
|
|
ItemUnitLogUserID,
|
|
ItemUnitLogCreated
|
|
) VALUES (
|
|
?,
|
|
'EDIT',
|
|
?,
|
|
?,
|
|
?,
|
|
now()
|
|
)";
|
|
|
|
$qry_insert_log = $this->db_inventory_log->query($sql_insert_log,
|
|
[
|
|
$id,
|
|
$json_before_log,
|
|
$json_after_log,
|
|
$userid
|
|
]);
|
|
|
|
if (!$qry_insert_log) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit edit log");
|
|
exit;
|
|
}
|
|
|
|
// sukses
|
|
$this->db->trans_commit();
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array("xid" => 0)
|
|
);
|
|
$this->sys_ok($result);
|
|
// }
|
|
// else
|
|
// {
|
|
// $errors = array();
|
|
// if($get_count['exist'] != 0){
|
|
// array_push($errors,array(
|
|
// 'field'=>'name',
|
|
// 'msg'=>'Nama sudah ada'
|
|
// ));
|
|
// }
|
|
|
|
// $result = array (
|
|
// "total" => -1,
|
|
// "errors" => $errors,
|
|
// "records" => 0);
|
|
// $this->sys_ok($result);
|
|
// }
|
|
}
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function delete()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
//begin transaction
|
|
$this->db->trans_begin();
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
$id = $prm['id'];
|
|
$userid = $this->sys_user['M_UserID'];
|
|
// $userid = 1;
|
|
|
|
$sql_delete = "UPDATE itemunit
|
|
SET ItemUnitIsActive = 'N',
|
|
ItemUnitLastUpdated = now(),
|
|
ItemUnitUserID = ?
|
|
WHERE ItemUnitID = ?";
|
|
|
|
$query_delete = $this->db_inventory->query($sql_delete,[
|
|
$userid, $id
|
|
]);
|
|
|
|
if(!$query_delete){
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit delete");
|
|
exit;
|
|
}
|
|
|
|
// var_dump($this->db->affected_rows());
|
|
// print_r($insert_id);
|
|
|
|
$sql_json_before = "SELECT *
|
|
FROM itemunit
|
|
WHERE ItemUnitIsActive = 'N'
|
|
AND ItemUnitID = ?";
|
|
|
|
$qry_json_before = $this->db_inventory->query($sql_json_before,
|
|
[
|
|
$id
|
|
]);
|
|
|
|
if (!$qry_json_before) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit select json");
|
|
exit;
|
|
}
|
|
|
|
$data_by_id = $qry_json_before->row();
|
|
|
|
$json_after_log = json_encode($data_by_id);
|
|
|
|
// print_r($json_after_log);
|
|
|
|
$sql_insert_log = "INSERT INTO itemunit_log(
|
|
ItemUnitLogItemUnitID,
|
|
ItemUnitLogStatus,
|
|
ItemUnitLogJSONBefore,
|
|
ItemUnitLogJSONAfter,
|
|
ItemUnitLogUserID,
|
|
ItemUnitLogCreated
|
|
) VALUES (
|
|
?,
|
|
'DELETE',
|
|
null,
|
|
?,
|
|
?,
|
|
now()
|
|
)";
|
|
|
|
$qry_insert_log = $this->db_inventory_log->query($sql_insert_log,
|
|
[
|
|
$id,
|
|
$json_after_log,
|
|
$userid
|
|
]);
|
|
|
|
if (!$qry_insert_log) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("itemunit delete log");
|
|
exit;
|
|
}
|
|
|
|
// sukses
|
|
$this->db->trans_commit();
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array("xid" => 0)
|
|
);
|
|
$this->sys_ok($result);
|
|
|
|
// sukses
|
|
// $this->db->trans_commit();
|
|
// $result = array ("total" => 1, "records" => array("xid" => 0));
|
|
// $this->sys_ok($result);
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|
|
?>
|