15 Commits

Author SHA1 Message Date
c83c42698a delete: empty function 2026-07-09 11:36:32 +07:00
009aff7d44 Merge branch 'po-asset-crud' into develop
# Conflicts:
#	application/controllers/mockup/purchase/order/PurchaseOrder.http
#	application/controllers/mockup/purchase/order/PurchaseOrderAset.php
2026-07-09 11:29:36 +07:00
6dbe0e400b remove workflow add scripts compare file and upload to server 2026-07-09 11:25:16 +07:00
0ea56f09fa add parameter ssh key passphrase to workflow 2026-07-09 11:25:16 +07:00
a6412c9688 add workflow auto update to server 2026-07-09 11:25:16 +07:00
bcb553ea56 add query insert into table stock_inventory in func savehandover receiveitempo inventaris 2026-07-09 11:25:16 +07:00
2874fab71d add api file po asset, api receive item inventaris add insert into table stock_inventaris 2026-07-09 11:25:16 +07:00
752c372c2f add: updateApprovalPO api in purchase order aset 2026-07-09 11:09:44 +07:00
7e88cf247b add: getDaftarAttachment api for purchase order asset 2026-07-09 10:34:26 +07:00
7af9fb2ca4 add: uploadAttachment api 2026-07-09 10:27:50 +07:00
77fc97e964 add: getDataKontrakPoAset api 2026-07-09 10:16:03 +07:00
834f23f26e add: getDaftarPoAset api 2026-07-09 10:11:28 +07:00
dc88589c78 add: deletePoAsset api 2026-07-09 10:04:43 +07:00
3871a680dd add: editPoAsset api 2026-07-09 09:54:26 +07:00
9c87e9ce25 add: createPoAsset api 2026-07-09 09:39:11 +07:00
2 changed files with 186 additions and 140 deletions

View File

@@ -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/

View File

@@ -1,10 +1,8 @@
<?php
class PurchaseOrderAset extends MY_Controller
{
class PurchaseOrderAset extends MY_Controller {
var $db;
public function index()
{
public function index() {
echo "Purchase Order Aset API";
}
@@ -14,45 +12,40 @@ class PurchaseOrderAset extends MY_Controller
}
## QUERY ##
public function getListSupplier()
{
public function getListSupplier() {
try {
if (!$this->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
M_BranchID,
M_BranchCode,
@@ -62,28 +55,22 @@ class PurchaseOrderAset extends MY_Controller
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();
$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;
@@ -100,70 +87,67 @@ class PurchaseOrderAset extends MY_Controller
}
$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
)";
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());
}
}
@@ -200,7 +177,7 @@ class PurchaseOrderAset extends MY_Controller
$keyword .= $para['search'] . "%";
}
$sql_base = "SELECT
$sql_base = "SELECT
PurchaseOrderID,
PurchaseOrderDate,
PurchaseOrderNote,
@@ -217,9 +194,9 @@ class PurchaseOrderAset extends MY_Controller
PurchaseOrderAssetContractEndDate AS contractEnd,
SupplierID,
SupplierName
FROM purchase_order
FROM purchase_order
JOIN supplier ON SupplierID = PurchaseOrderSupplierID
JOIN purchase_order_asset_contract
JOIN purchase_order_asset_contract
ON PurchaseOrderAssetContractPurchaseOrderID = PurchaseOrderID
WHERE PurchaseOrderIsActive = 'Y'
AND PurchaseOrderItemCategoryID = '3'
@@ -277,8 +254,8 @@ class PurchaseOrderAset extends MY_Controller
$para = $this->sys_input;
$sql = "SELECT
PurchaseOrderAssetAttachmentID AS attach_id,
$sql = "SELECT
PurchaseOrderAssetAttachmentID AS attach_id,
PurchaseOrderAssetAttachmentName AS img_url,
PurchaseOrderAssetAttachmentCreated AS created
FROM purchase_order_asset_attachment
@@ -344,7 +321,7 @@ class PurchaseOrderAset extends MY_Controller
$detail_asset = $que_detail->result_array();
# get data from purchase order summary #
$sql_sumry = "SELECT
$sql_sumry = "SELECT
PurchaseOrderID,
PurchaseOrderSummaryID,
PurchaseOrderSummaryQty AS RequestQty,
@@ -382,11 +359,11 @@ class PurchaseOrderAset extends MY_Controller
PurchaseOrderStatus,
PurchaseOrderRefNumber AS reference,
PurchaseOrderGrandTotal AS grandtotal,
CASE
CASE
WHEN PurchaseOrderTaxPpnType = 'P' THEN 'percent'
ELSE 'absolute'
END AS typepajak,
CASE
CASE
WHEN PurchaseOrderTaxPpnType = 'P' THEN PurchaseOrderTaxPercentPpn
ELSE PurchaseOrderTaxAmountPpn
END AS valuepajak,
@@ -415,9 +392,9 @@ class PurchaseOrderAset extends MY_Controller
PurchaseOrderAssetContractInstallmentDownPaymentType AS installmentDownPaymentType,
PurchaseOrderAssetContractInstallmentDownPayment AS installmentDownPayment,
PurchaseOrderApprovedManagerUserID AS verifiedby
FROM purchase_order
FROM purchase_order
JOIN supplier ON SupplierID = PurchaseOrderSupplierID
JOIN purchase_order_asset_contract
JOIN purchase_order_asset_contract
ON PurchaseOrderAssetContractPurchaseOrderID = PurchaseOrderID
WHERE PurchaseOrderIsActive = 'Y'
AND PurchaseOrderID = ?";
@@ -750,7 +727,7 @@ class PurchaseOrderAset extends MY_Controller
$summary_total = floatval($para['summary']['total']);
# update po header #
$sql_po = "UPDATE purchase_order SET
$sql_po = "UPDATE purchase_order SET
PurchaseOrderDate = ?,
PurchaseOrderRefNumber = ?,
PurchaseOrderSupplierID = ?,
@@ -764,7 +741,7 @@ class PurchaseOrderAset extends MY_Controller
PurchaseOrderTaxAmountPpn = ?,
PurchaseOrderGrandTotal = ?,
PurchaseOrderLastUpdated = NOW()
WHERE PurchaseOrderID = ?
WHERE PurchaseOrderID = ?
AND PurchaseOrderIsActive = 'Y'";
$que_po = $this->db->query($sql_po, [
$para['podate'], $para['reference'], $para['supplierID'], $user['S_RegionalID'],
@@ -778,7 +755,7 @@ class PurchaseOrderAset extends MY_Controller
}
# update purchase_order_asset_contract #
$sql_contract = "UPDATE purchase_order_asset_contract SET
$sql_contract = "UPDATE purchase_order_asset_contract SET
PurchaseOrderAssetContractTAssetAttachmentID = ?,
PurchaseOrderAssetContractName = ?,
PurchaseOrderAssetContractDate = ?,
@@ -791,7 +768,7 @@ class PurchaseOrderAset extends MY_Controller
PurchaseOrderAssetContractInstallmentDownPaymentType = ?,
PurchaseOrderAssetContractInstallmentDownPayment = ?,
PurchaseOrderAssetContractLastUpdated = NOW()
WHERE PurchaseOrderAssetContractID = ?
WHERE PurchaseOrderAssetContractID = ?
AND PurchaseOrderAssetContractIsActive = 'Y'";
$que_contract = $this->db->query($sql_contract, [
$para['assetAttachmentID'],
@@ -814,9 +791,9 @@ class PurchaseOrderAset extends MY_Controller
}
# update status old po summary isActive to 'N' #
$sql_active = "UPDATE purchase_order_summary SET
$sql_active = "UPDATE purchase_order_summary SET
PurchaseOrderSummaryIsActive = 'N'
WHERE PurchaseOrderSummaryPurchaseOrderID = ?
WHERE PurchaseOrderSummaryPurchaseOrderID = ?
AND PurchaseOrderSummaryIsActive = 'Y'";
$que_active = $this->db->query($sql_active, [$para['PurchaseOrderID']]);
if (!$que_active) {
@@ -871,7 +848,7 @@ class PurchaseOrderAset extends MY_Controller
}
# update status po detail isActive to 'N' #
$sql_active = "UPDATE purchase_order_detail SET
$sql_active = "UPDATE purchase_order_detail SET
PurchaseOrderDetailIsActive = 'N'
WHERE PurchaseOrderDetailPurchaseOrderID = ?
AND PurchaseOrderDetailIsActive = 'Y'";
@@ -915,7 +892,7 @@ class PurchaseOrderAset extends MY_Controller
}
$sql_flag = "UPDATE purchase_request_flag SET
PurchaseRequestFlagQtyProses = ?
PurchaseRequestFlagQtyProses = ?
WHERE PurchaseRequestFlagID = ?";
$que_flag = $this->db->query($sql_flag, [
$obj['RequestQty'], $obj['PurchaseRequestFlagID']
@@ -950,11 +927,11 @@ class PurchaseOrderAset extends MY_Controller
$para = $this->sys_input;
$user = $this->sys_user;
$sql_detail = "SELECT
$sql_detail = "SELECT
PurchaseOrderDetailPurchaseRequestFlagID,
PurchaseOrderDetailQty
FROM purchase_order_detail
WHERE PurchaseOrderDetailPurchaseOrderID = ?
FROM purchase_order_detail
WHERE PurchaseOrderDetailPurchaseOrderID = ?
AND PurchaseOrderDetailIsActive = 'Y'";
$que_detail = $this->db->query($sql_detail, [$para['poID']]);
if (!$que_detail) {
@@ -981,10 +958,10 @@ class PurchaseOrderAset extends MY_Controller
}
/* soft delete purchase order detail */
$sql_deldetail = "UPDATE purchase_order_detail SET
PurchaseOrderDetailIsActive = 'N',
$sql_deldetail = "UPDATE purchase_order_detail SET
PurchaseOrderDetailIsActive = 'N',
PurchaseOrderDetailDeleted = NOW(),
PurchaseOrderDetailDeletedUserID = ?
PurchaseOrderDetailDeletedUserID = ?
WHERE PurchaseOrderDetailPurchaseOrderID = ?";
$que_deldetail = $this->db->query($sql_deldetail, [
$user['M_UserID'], $para['poID']
@@ -999,7 +976,7 @@ class PurchaseOrderAset extends MY_Controller
$sql_delsummary = "UPDATE purchase_order_summary SET
PurchaseOrderSummaryIsActive = 'N',
PurchaseOrderSummaryDeleted = NOW(),
PurchaseOrderSummaryDeletedUserID = ?
PurchaseOrderSummaryDeletedUserID = ?
WHERE PurchaseOrderSummaryPurchaseOrderID = ?";
$que_delsummary = $this->db->query($sql_delsummary, [
$user['M_UserID'], $para['poID']
@@ -1011,10 +988,10 @@ class PurchaseOrderAset extends MY_Controller
}
/* soft delete purchase_order_asset_contract */
$sql_delcontract = "UPDATE purchase_order_asset_contract SET
$sql_delcontract = "UPDATE purchase_order_asset_contract SET
PurchaseOrderAssetContractIsActive = 'N',
PurchaseOrderAssetContractLastUpdated = NOW()
WHERE PurchaseOrderAssetContractID = ?
WHERE PurchaseOrderAssetContractID = ?
AND PurchaseOrderAssetContractPurchaseOrderID = ?";
$que_delcontract = $this->db->query($sql_delcontract, [
$para['contractID'], $para['poID']
@@ -1026,10 +1003,10 @@ class PurchaseOrderAset extends MY_Controller
}
/* soft delete purchase order */
$sql_delorder = "UPDATE purchase_order SET
$sql_delorder = "UPDATE purchase_order SET
PurchaseOrderIsActive = 'N',
PurchaseOrderDeleted = NOW(),
PurchaseOrderDeletedUserID = ?
PurchaseOrderDeletedUserID = ?
WHERE PurchaseOrderID = ?";
$que_delorder = $this->db->query($sql_delorder, [
$user['M_UserID'], $para['poID']
@@ -1125,33 +1102,91 @@ class PurchaseOrderAset extends MY_Controller
}
}
public function updateApprovalPO() {
try {
if (!$this->isLogin) {
$this->sys_error("invalid token");
exit;
}
$this->db->trans_begin();
$para = $this->sys_input;
$user = $this->sys_user;
$approvelevel = $para['approvelevel'];
/* 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;
}
}
/* 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);
}
}
public function getUserApproveLevel() {
try {
if (!$this->isLogin) {
throw new Exception('Invalid token');
$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 = ? ";
$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);
$this->sys_error_db("[Error] failed get approval level user");
exit;
}
$data = $que->row_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());
}
}