diff --git a/application/controllers/mockup/purchase/order/PurchaseOrder.http b/application/controllers/mockup/purchase/order/PurchaseOrder.http index b0bd0f3..a854ee0 100644 --- a/application/controllers/mockup/purchase/order/PurchaseOrder.http +++ b/application/controllers/mockup/purchase/order/PurchaseOrder.http @@ -236,6 +236,17 @@ Content-Type: application/json "poID": 1 } +### +// update approval PO — verifikasi manager (level 1) +POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/updateApprovalPO/ +Content-Type: application/json + +{ + "token": {{token}}, + "poID": 1, + "approvelevel": "1" +} + ### // get data kontrak po asset POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/getDataKontrakPoAset/ diff --git a/application/controllers/mockup/purchase/order/PurchaseOrderAset.php b/application/controllers/mockup/purchase/order/PurchaseOrderAset.php index d93d284..90a4a48 100644 --- a/application/controllers/mockup/purchase/order/PurchaseOrderAset.php +++ b/application/controllers/mockup/purchase/order/PurchaseOrderAset.php @@ -1,10 +1,8 @@ isLogin) { - throw new Exception('Invalid token'); + $this->sys_error("invalid token"); + exit; } $sql = "SELECT - SupplierID, - SupplierName - FROM supplier - WHERE SupplierIsActive = 'Y'"; + SupplierID, + SupplierName + FROM supplier + WHERE SupplierIsActive = 'Y'"; $que = $this->db->query($sql, []); if (!$que) { - throw new Exception('failed to query list supplier', 1); + $this->sys_error_db("[Error] get data supplier"); + exit; } $data = $que->result_array(); $this->sys_ok($data); } catch (Exception $exc) { - $msg = '[Error] ' . $exc->getMessage(); - $code = $exc->getCode(); - if ($code == 0) { - $this->sys_error($msg); - } else { - $this->sys_error_db($msg); - } - exit; + $this->sys_error($exc->getMessage()); } } - public function getListCabang() - { + public function getListCabang() { try { if (!$this->isLogin) { - throw new Exception('Invalid token'); + $this->sys_error("invalid token"); + exit; } $user = $this->sys_user; - $sql = "SELECT + + $sql = "SELECT M_BranchID, M_BranchCode, M_BranchName - FROM m_branch - WHERE M_BranchIsActive = 'Y' + FROM m_branch + WHERE M_BranchIsActive = 'Y' AND M_BranchS_RegionalID = ?"; $que = $this->db->query($sql, [$user['S_RegionalID']]); if (!$que) { - throw new Exception('failed to query list cabang', 1); + $this->sys_error_db("[Error] failed get list cabang"); + exit; } + $data = $que->result_array(); - $this->sys_ok($data); } catch (Exception $exc) { - $msg = '[Error] ' . $exc->getMessage(); - $code = $exc->getCode(); - if ($code == 0) { - $this->sys_error($msg); - } else { - $this->sys_error_db($msg); - } - exit; + $this->sys_error($exc->getMessage()); } } - public function searchRequestAset() - { + public function searchRequestAset() { try { if (!$this->isLogin) { - throw new Exception('Invalid token'); + $this->sys_error("invalid token"); + exit; } $para = $this->sys_input; - + $keyword = "%"; if ($para['search'] != '') { $keyword .= $para['search'] . "%"; @@ -99,71 +86,68 @@ class PurchaseOrderAset extends MY_Controller $offset = ($para['currpage'] - 1) * $limit; } - $sql = "SELECT - PurchaseRequestID, - PurchaseRequestNumber, - PurchaseRequestDetailID, - PurchaseRequestFlagID, - PurchaseRequestFlagM_BranchCode AS BranchCode, - PurchaseRequestItemCategoryID AS ItemCategoryID, - PurchaseRequestFlagQtyRest - PurchaseRequestFlagQtyProses AS UnprocessFlagQty, - PurchaseRequestDetailQty AS RequestQty, - PurchaseRequestDetailQty AS OriginalQty, - M_BranchName, - M_ItemID, - M_ItemCode, - M_ItemDesc, - ItemUnitID, - ItemUnitName, - SupplierPricePrice as SupplierPrice - FROM purchase_request - JOIN purchase_request_detail ON PurchaseRequestDetailPurchaseRequestID = PurchaseRequestID - AND PurchaseRequestDetailIsActive = 'Y' - AND PurchaseRequestM_BranchCode = ? - AND PurchaseRequestItemCategoryID = '3' -- id category item asset - AND PurchaseRequestNumber LIKE ? - JOIN purchase_request_flag ON PurchaseRequestFlagPurchaseRequestDetailID = PurchaseRequestDetailID - AND PurchaseRequestFlagStatus = 'PO' - AND PurchaseRequestFlagIsActive = 'Y' - JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID - JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID - JOIN supplier_price ON SupplierPriceSupplierID = ? - AND SupplierPriceM_ItemID = M_ItemID - AND SupplierPriceItemUnitID = ItemUnitID - AND SupplierPriceIsActive = 'Y' - JOIN m_branch ON M_BranchCode = PurchaseRequestFlagM_BranchCode - AND M_BranchIsActive = 'Y' - WHERE NOT EXISTS ( - SELECT 1 - FROM purchase_order_detail - JOIN purchase_order ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID - AND PurchaseOrderStatus = 'Approved' - AND PurchaseOrderIsActive = 'Y' - AND PurchaseOrderDetailIsActive = 'Y' - WHERE PurchaseOrderDetailPurchaseRequestDetailID = PurchaseRequestDetailID - )"; - + $sql = "SELECT + PurchaseRequestID, + PurchaseRequestNumber, + PurchaseRequestDetailID, + PurchaseRequestFlagID, + PurchaseRequestFlagM_BranchCode AS BranchCode, + PurchaseRequestItemCategoryID AS ItemCategoryID, + PurchaseRequestFlagQtyRest - PurchaseRequestFlagQtyProses AS UnprocessFlagQty, + PurchaseRequestDetailQty AS RequestQty, + PurchaseRequestDetailQty AS OriginalQty, + M_BranchName, + M_ItemID, + M_ItemCode, + M_ItemDesc, + ItemUnitID, + ItemUnitName, + SupplierPricePrice as SupplierPrice + FROM purchase_request + JOIN purchase_request_detail ON PurchaseRequestDetailPurchaseRequestID = PurchaseRequestID + AND PurchaseRequestDetailIsActive = 'Y' + AND PurchaseRequestM_BranchCode = ? + AND PurchaseRequestItemCategoryID = '3' -- id category item asset + AND PurchaseRequestNumber LIKE ? + JOIN purchase_request_flag ON PurchaseRequestFlagPurchaseRequestDetailID = PurchaseRequestDetailID + AND PurchaseRequestFlagStatus = 'PO' + AND PurchaseRequestFlagIsActive = 'Y' + JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID + JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID + JOIN supplier_price ON SupplierPriceSupplierID = ? + AND SupplierPriceM_ItemID = M_ItemID + AND SupplierPriceItemUnitID = ItemUnitID + AND SupplierPriceIsActive = 'Y' + JOIN m_branch ON M_BranchCode = PurchaseRequestFlagM_BranchCode + AND M_BranchIsActive = 'Y' + WHERE NOT EXISTS ( + SELECT 1 + FROM purchase_order_detail + JOIN purchase_order ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID + AND PurchaseOrderStatus = 'Approved' + AND PurchaseOrderIsActive = 'Y' + AND PurchaseOrderDetailIsActive = 'Y' + WHERE PurchaseOrderDetailPurchaseRequestDetailID = PurchaseRequestDetailID + )"; + $sql_data = $sql . " LIMIT ? OFFSET ? "; $que_data = $this->db->query($sql_data, [ - $para['branchcode'], - $keyword, - $para['supplierID'], - $limit, - $offset + $para['branchcode'], $keyword, $para['supplierID'], + $limit, $offset ]); if (!$que_data) { - throw new Exception('failed to query data request order aset', 1); + $this->sys_error_db("[Error] get daftar request data"); + exit; } $data = $que_data->result_array(); $sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x"; $que_total = $this->db->query($sql_total, [ - $para['branchcode'], - $keyword, - $para['supplierID'] + $para['branchcode'], $keyword, $para['supplierID'] ]); if (!$que_total) { - throw new Exception('failed to query total request order aset', 1); + $this->sys_error_db("[Error] get total request aset"); + exit; } $total = $que_total->row_array()['total']; @@ -174,14 +158,7 @@ class PurchaseOrderAset extends MY_Controller $this->sys_ok($out); } catch (Exception $exc) { - $msg = '[Error] ' . $exc->getMessage(); - $code = $exc->getCode(); - if ($code == 0) { - $this->sys_error($msg); - } else { - $this->sys_error_db($msg); - } - exit; + $this->sys_error($exc->getMessage()); } } @@ -504,7 +481,7 @@ class PurchaseOrderAset extends MY_Controller $areatype = 'R'; } - $sqlusrdivisi = "SELECT M_UserDivisionDivisionID FROM m_userdivision + $sqlusrdivisi = "SELECT M_UserDivisionDivisionID FROM m_userdivision WHERE M_UserDivisionM_UserID = ? AND M_UserDivisionIsActive = 'Y'"; $queusrdivisi = $this->db->query($sqlusrdivisi, [$user['M_UserID']]); if (!$queusrdivisi) { @@ -653,8 +630,8 @@ class PurchaseOrderAset extends MY_Controller } /* purchase request update flag */ - $sql_flag = "UPDATE purchase_request_flag SET - PurchaseRequestFlagQtyProses = ? + $sql_flag = "UPDATE purchase_request_flag SET + PurchaseRequestFlagQtyProses = ? WHERE PurchaseRequestFlagID = ?"; $que_flag = $this->db->query($sql_flag, [ $obj['RequestQty'], $obj['PurchaseRequestFlagID'] @@ -1125,40 +1102,98 @@ class PurchaseOrderAset extends MY_Controller } } - public function getUserApproveLevel() { + public function updateApprovalPO() { try { if (!$this->isLogin) { - throw new Exception('Invalid token'); + $this->sys_error("invalid token"); + exit; } + $this->db->trans_begin(); + $para = $this->sys_input; $user = $this->sys_user; - $sql = "SELECT M_UserM_ApproveLevelID - FROM m_user - WHERE M_UserIsActive = 'Y' - AND M_UserID = ? "; - $que = $this->db->query($sql, [$user['M_UserID']]); - if (!$que) { - throw new Exception('failed to query approval level', 1); - } - $data = $que->row_array(); + $approvelevel = $para['approvelevel']; - $this->sys_ok($data); - } catch (Exception $exc) { - $msg = '[Error] ' . $exc->getMessage(); - $code = $exc->getCode(); - if ($code == 0) { - $this->sys_error($msg); - } else { - $this->sys_error_db($msg); + /* request purchase order */ + if ($approvelevel == '0') { + $sql = "UPDATE purchase_order SET + PurchaseOrderStatus = 'Pending', + PurchaseOrderLastUpdated = NOW() + WHERE PurchaseOrderID = ? + AND PurchaseOrderIsActive = 'Y'"; + $que = $this->db->query($sql, [$para['poID']]); + if (!$que) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] failed update table purchase order request"); + exit; + } } - exit; + + /* verifikasi oleh manager */ + if ($approvelevel == '1') { + $sql = "UPDATE purchase_order SET + PurchaseOrderApprovedManagerUserID = ?, + PurchaseOrderLastUpdated = NOW() + WHERE PurchaseOrderID = ? + AND PurchaseOrderIsActive = 'Y'"; + $que = $this->db->query($sql, [$user['M_UserID'], $para['poID']]); + if (!$que) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] failed update table purchase order verif"); + exit; + } + } + + /* approval oleh kepala regional */ + if ($approvelevel == '2') { + $sql = "UPDATE purchase_order SET + PurchaseOrderStatus = 'Approved', + PurchaseOrderLastUpdated = NOW(), + PurchaseOrderApprovedUserID = ? + WHERE PurchaseOrderID = ? + AND PurchaseOrderIsActive = 'Y'"; + $que = $this->db->query($sql, [$user['M_UserID'], $para['poID']]); + if (!$que) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] failed update table purchase order approve"); + exit; + } + } + + $this->db->trans_commit(); + $this->sys_ok("[Success] success update status PO Asset"); + } catch (Exception $exc) { + $msg = $exc->getMessage(); + $this->sys_error($msg); } } - private function insertLog($poID, $type, $prm, $dataBefore, $dataAfter, $userID, $desc = '') { - $sql = "INSERT INTO acc_one_log.purchase_order_log ( - PurchaseOrderLogPurchaseOrderID, - PurchaseOrderLogType, + public function getUserApproveLevel() { + try { + if (!$this->isLogin) { + $this->sys_error("invalid token"); + exit; + } + + $user = $this->sys_user; + $sql = "SELECT M_UserM_ApproveLevelID FROM m_user + WHERE M_UserIsActive = 'Y' AND M_UserID = ? "; + $que = $this->db->query($sql, [$user['M_UserID']]); + if (!$que) { + $this->sys_error_db("[Error] failed get approval level user"); + exit; + } + $data = $que->row_array(); + $this->sys_ok($data); + } catch (Exception $exc) { + $this->sys_error($exc->getMessage()); + } + } + + private function insertLog($poID, $type, $prm, $dataBefore, $dataAfter, $userID, $desc = '') { + $sql = "INSERT INTO acc_one_log.purchase_order_log ( + PurchaseOrderLogPurchaseOrderID, + PurchaseOrderLogType, PurchaseOrderLogPrm, PurchaseOrderLogJSONBefore, PurchaseOrderLogJSONAfter, @@ -1173,7 +1208,26 @@ class PurchaseOrderAset extends MY_Controller if (!$que) { $this->db->trans_rollback(); $this->sys_error_db("[Error] failed insert into table log PO"); - exit; - } - } -} + exit; + } + } + + ## MUTATIONS ## + public function insertPurchaseOrderAsset() + { + try { + if (!$this->isLogin) { + throw new Exception('Invalid token'); + } + } catch (Exception $e) { + $msg = '[Error] ' . $e->getMessage(); + $code = $e->getCode(); + if ($code == 0) { + $this->sys_error($msg); + } else { + $this->sys_error_db($msg); + } + exit; + } + } +}