add: editPoAsset api
This commit is contained in:
@@ -281,6 +281,97 @@ Content-Type: application/json
|
|||||||
"installmentDownPayment": 5000000
|
"installmentDownPayment": 5000000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
// edit po asset
|
||||||
|
POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/editPoAsset/
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"token": {{token}},
|
||||||
|
"PurchaseOrderID": 1,
|
||||||
|
"PurchaseOrderAssetContractID": 1,
|
||||||
|
"podate": "2026-07-09",
|
||||||
|
"reference": "REF-ASSET-001-UPDATED",
|
||||||
|
"supplierID": 1,
|
||||||
|
"typepajak": "percent",
|
||||||
|
"valuepajak": 11,
|
||||||
|
"typediskon": "nominal",
|
||||||
|
"valuediskon": 0,
|
||||||
|
"catatan": "PO Asset Updated",
|
||||||
|
"summary": {
|
||||||
|
"subtotal": 775000000,
|
||||||
|
"diskon": 0,
|
||||||
|
"pajak": 85250000,
|
||||||
|
"total": 860250000
|
||||||
|
},
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"M_ItemID": 123,
|
||||||
|
"ItemUnitID": 1,
|
||||||
|
"RequestQty": 3,
|
||||||
|
"SupplierPrice": 75000000,
|
||||||
|
"TempTotal": 225000000,
|
||||||
|
"DiskonType": "R",
|
||||||
|
"DiskonAmount": 0,
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"PurchaseRequestID": 1,
|
||||||
|
"PurchaseRequestDetailID": 1,
|
||||||
|
"PurchaseRequestFlagID": 1,
|
||||||
|
"M_ItemID": 123,
|
||||||
|
"ItemUnitID": 1,
|
||||||
|
"OriginalQty": 3,
|
||||||
|
"RequestQty": 3,
|
||||||
|
"SupplierPrice": 75000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"M_ItemID": 124,
|
||||||
|
"ItemUnitID": 2,
|
||||||
|
"RequestQty": 5,
|
||||||
|
"SupplierPrice": 25000000,
|
||||||
|
"TempTotal": 125000000,
|
||||||
|
"DiskonType": "R",
|
||||||
|
"DiskonAmount": 0,
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"PurchaseRequestID": 2,
|
||||||
|
"PurchaseRequestDetailID": 2,
|
||||||
|
"PurchaseRequestFlagID": 2,
|
||||||
|
"M_ItemID": 124,
|
||||||
|
"ItemUnitID": 2,
|
||||||
|
"OriginalQty": 3,
|
||||||
|
"RequestQty": 3,
|
||||||
|
"SupplierPrice": 25000000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PurchaseRequestID": 2,
|
||||||
|
"PurchaseRequestDetailID": 3,
|
||||||
|
"PurchaseRequestFlagID": 3,
|
||||||
|
"M_ItemID": 124,
|
||||||
|
"ItemUnitID": 2,
|
||||||
|
"OriginalQty": 2,
|
||||||
|
"RequestQty": 2,
|
||||||
|
"SupplierPrice": 25000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"assetAttachmentID": 1,
|
||||||
|
"contractName": "Kontrak Pengadaan Mesin X - Revisi",
|
||||||
|
"contractDate": "2026-07-10",
|
||||||
|
"contractStart": "2026-07-10",
|
||||||
|
"contractEnd": "2027-10-10",
|
||||||
|
"contractDuration": 15,
|
||||||
|
"installmentNumber": 15,
|
||||||
|
"installmentDate": 5,
|
||||||
|
"installmentPayAmount": 15000000,
|
||||||
|
"installmentDownPaymentType": "persen",
|
||||||
|
"installmentDownPayment": 20
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
### Test isValidMultiple Warehouse
|
### Test isValidMultiple Warehouse
|
||||||
### Should return True karena UnitRequest = UnitPurchase
|
### Should return True karena UnitRequest = UnitPurchase
|
||||||
GET https://{{host}}/mockup/purchase/order/PurchaseOrder/isValidMultipleWarehouse/
|
GET https://{{host}}/mockup/purchase/order/PurchaseOrder/isValidMultipleWarehouse/
|
||||||
|
|||||||
@@ -397,6 +397,227 @@ class PurchaseOrderAset extends MY_Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function editPoAsset() {
|
||||||
|
try {
|
||||||
|
if (!$this->isLogin) {
|
||||||
|
$this->sys_error("invalid token");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->db->trans_begin();
|
||||||
|
|
||||||
|
$para = $this->sys_input;
|
||||||
|
$user = $this->sys_user;
|
||||||
|
|
||||||
|
# check tipe diskon dan pajak #
|
||||||
|
$taxtype = 'R';
|
||||||
|
$taxpercent = 0;
|
||||||
|
if ($para['typepajak'] == 'percent') {
|
||||||
|
$taxtype = 'P';
|
||||||
|
$taxpercent = floatval($para['valuepajak']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$discpercent = 0;
|
||||||
|
if ($para['typediskon'] == 'percent') {
|
||||||
|
$discpercent = floatval($para['valuediskon']);
|
||||||
|
}
|
||||||
|
|
||||||
|
# get data summary #
|
||||||
|
$summary_subtotal = floatval($para['summary']['subtotal']);
|
||||||
|
$summary_diskon = floatval($para['summary']['diskon']);
|
||||||
|
$summary_pajak = floatval($para['summary']['pajak']);
|
||||||
|
$summary_total = floatval($para['summary']['total']);
|
||||||
|
|
||||||
|
# update po header #
|
||||||
|
$sql_po = "UPDATE purchase_order SET
|
||||||
|
PurchaseOrderDate = ?,
|
||||||
|
PurchaseOrderRefNumber = ?,
|
||||||
|
PurchaseOrderSupplierID = ?,
|
||||||
|
PurchaseOrderS_RegionalID = ?,
|
||||||
|
PurchaseOrderTaxPpnType = ?,
|
||||||
|
PurchaseOrderTaxPercentPpn = ?,
|
||||||
|
PurchaseOrderDiscountPercent = ?,
|
||||||
|
PurchaseOrderDiscountAmount = ?,
|
||||||
|
PurchaseOrderNote = ?,
|
||||||
|
PurchaseOrderSubTotal = ?,
|
||||||
|
PurchaseOrderTaxAmountPpn = ?,
|
||||||
|
PurchaseOrderGrandTotal = ?,
|
||||||
|
PurchaseOrderLastUpdated = NOW()
|
||||||
|
WHERE PurchaseOrderID = ?
|
||||||
|
AND PurchaseOrderIsActive = 'Y'";
|
||||||
|
$que_po = $this->db->query($sql_po, [
|
||||||
|
$para['podate'], $para['reference'], $para['supplierID'], $user['S_RegionalID'],
|
||||||
|
$taxtype, $taxpercent, $discpercent, $summary_diskon, $para['catatan'],
|
||||||
|
$summary_subtotal, $summary_pajak, $summary_total, $para['PurchaseOrderID']
|
||||||
|
]);
|
||||||
|
if (!$que_po) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update header purchase order");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
# update purchase_order_asset_contract #
|
||||||
|
$sql_contract = "UPDATE purchase_order_asset_contract SET
|
||||||
|
PurchaseOrderAssetContractTAssetAttachmentID = ?,
|
||||||
|
PurchaseOrderAssetContractName = ?,
|
||||||
|
PurchaseOrderAssetContractDate = ?,
|
||||||
|
PurchaseOrderAssetContractStartDate = ?,
|
||||||
|
PurchaseOrderAssetContractEndDate = ?,
|
||||||
|
PurchaseOrderAssetContractDuration = ?,
|
||||||
|
PurchaseOrderAssetContractInstallmentNumber = ?,
|
||||||
|
PurchaseOrderAssetContractInstallmentDate = ?,
|
||||||
|
PurchaseOrderAssetContractInstallmentPayAmount = ?,
|
||||||
|
PurchaseOrderAssetContractInstallmentDownPaymentType = ?,
|
||||||
|
PurchaseOrderAssetContractInstallmentDownPayment = ?,
|
||||||
|
PurchaseOrderAssetContractLastUpdated = NOW()
|
||||||
|
WHERE PurchaseOrderAssetContractID = ?
|
||||||
|
AND PurchaseOrderAssetContractIsActive = 'Y'";
|
||||||
|
$que_contract = $this->db->query($sql_contract, [
|
||||||
|
$para['assetAttachmentID'],
|
||||||
|
$para['contractName'],
|
||||||
|
$para['contractDate'],
|
||||||
|
$para['contractStart'],
|
||||||
|
$para['contractEnd'],
|
||||||
|
$para['contractDuration'] ?: 1,
|
||||||
|
$para['installmentNumber'] ?: 1,
|
||||||
|
$para['installmentDate'] ?: 1,
|
||||||
|
$para['installmentPayAmount'] ?: 0.00,
|
||||||
|
$para['installmentDownPaymentType'] ?: 'nominal',
|
||||||
|
$para['installmentDownPayment'] ?: 0.00,
|
||||||
|
$para['PurchaseOrderAssetContractID']
|
||||||
|
]);
|
||||||
|
if (!$que_contract) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update purchase order asset contract");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
# update status old po summary isActive to 'N' #
|
||||||
|
$sql_active = "UPDATE purchase_order_summary SET
|
||||||
|
PurchaseOrderSummaryIsActive = 'N'
|
||||||
|
WHERE PurchaseOrderSummaryPurchaseOrderID = ?
|
||||||
|
AND PurchaseOrderSummaryIsActive = 'Y'";
|
||||||
|
$que_active = $this->db->query($sql_active, [$para['PurchaseOrderID']]);
|
||||||
|
if (!$que_active) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update status po summary to N");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
# insert new po summary #
|
||||||
|
$summary_detail = $para['detail'];
|
||||||
|
$item_detail = [];
|
||||||
|
foreach ($summary_detail as $key => $obj) {
|
||||||
|
$discpercent = 0;
|
||||||
|
$discabsolut = 0;
|
||||||
|
if ($obj['DiskonType'] == 'P') {
|
||||||
|
$discpercent = $obj['DiskonAmount'];
|
||||||
|
} else {
|
||||||
|
$discabsolut = $obj['DiskonAmount'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql_summary = "INSERT INTO purchase_order_summary (
|
||||||
|
PurchaseOrderSummaryPurchaseOrderID,
|
||||||
|
PurchaseOrderSummaryItemID,
|
||||||
|
PurchaseOrderSummaryItemUnitID,
|
||||||
|
PurchaseOrderSummaryQty,
|
||||||
|
PurchaseOrderSummaryPrice,
|
||||||
|
PurchaseOrderSummaryTotal,
|
||||||
|
PurchaseOrderSummaryDiscountRupiah,
|
||||||
|
PurchaseOrderSummaryDiscountPercent,
|
||||||
|
PurchaseOrderSummaryDiscountAmount,
|
||||||
|
PurchaseOrderSummaryDiscountType,
|
||||||
|
PurchaseOrderSummaryCreatedUserID,
|
||||||
|
PurchaseOrderSummaryCreated
|
||||||
|
) VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW())";
|
||||||
|
$que_summary = $this->db->query($sql_summary, [
|
||||||
|
$para['PurchaseOrderID'], $obj['M_ItemID'], $obj['ItemUnitID'],
|
||||||
|
$obj['RequestQty'], $obj['SupplierPrice'], $obj['TempTotal'],
|
||||||
|
$discabsolut, $discpercent, $obj['DiskonAmount'],
|
||||||
|
$obj['DiskonType'], $user['M_UserID']
|
||||||
|
]);
|
||||||
|
if (!$que_summary) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update data purchase order summary");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$PurchaseSummaryID = $this->db->insert_id();
|
||||||
|
foreach ($obj['detail'] as $key => $value) {
|
||||||
|
$obj['detail'][$key]['PurchaseSummaryID'] = $PurchaseSummaryID;
|
||||||
|
}
|
||||||
|
$item_detail = array_merge($item_detail, $obj['detail']);
|
||||||
|
}
|
||||||
|
|
||||||
|
# update status po detail isActive to 'N' #
|
||||||
|
$sql_active = "UPDATE purchase_order_detail SET
|
||||||
|
PurchaseOrderDetailIsActive = 'N'
|
||||||
|
WHERE PurchaseOrderDetailPurchaseOrderID = ?
|
||||||
|
AND PurchaseOrderDetailIsActive = 'Y'";
|
||||||
|
$que_active = $this->db->query($sql_active, [$para['PurchaseOrderID']]);
|
||||||
|
if (!$que_active) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update status po detail to N");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
# insert new po detail #
|
||||||
|
foreach ($item_detail as $key => $obj) {
|
||||||
|
$total = floatval($obj['SupplierPrice']) * floatval($obj['RequestQty']);
|
||||||
|
|
||||||
|
$sql_detail = "INSERT INTO purchase_order_detail (
|
||||||
|
PurchaseOrderDetailPurchaseOrderID,
|
||||||
|
PurchaseOrderDetailPurchaseSummaryID,
|
||||||
|
PurchaseOrderDetailPurchaseRequestID,
|
||||||
|
PurchaseOrderDetailPurchaseRequestDetailID,
|
||||||
|
PurchaseOrderDetailPurchaseRequestFlagID,
|
||||||
|
PurchaseOrderDetailItemID,
|
||||||
|
PurchaseOrderDetailItemUnitID,
|
||||||
|
PurchaseOrderDetailRequestQty,
|
||||||
|
PurchaseOrderDetailQty,
|
||||||
|
PurchaseOrderDetailPrice,
|
||||||
|
PurchaseOrderDetailTotal,
|
||||||
|
PurchaseOrderDetailUserID,
|
||||||
|
PurchaseOrderDetailCreatedUserID,
|
||||||
|
PurchaseOrderDetailCreated
|
||||||
|
) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW())";
|
||||||
|
$que_detail = $this->db->query($sql_detail, [
|
||||||
|
$para['PurchaseOrderID'], $obj['PurchaseSummaryID'], $obj['PurchaseRequestID'],
|
||||||
|
$obj['PurchaseRequestDetailID'], $obj['PurchaseRequestFlagID'],
|
||||||
|
$obj['M_ItemID'], $obj['ItemUnitID'], $obj['OriginalQty'], $obj['RequestQty'],
|
||||||
|
$obj['SupplierPrice'], $total, $user['M_UserID'], $user['M_UserID']
|
||||||
|
]);
|
||||||
|
if (!$que_detail) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed re-insert purchase order detail");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql_flag = "UPDATE purchase_request_flag SET
|
||||||
|
PurchaseRequestFlagQtyProses = ?
|
||||||
|
WHERE PurchaseRequestFlagID = ?";
|
||||||
|
$que_flag = $this->db->query($sql_flag, [
|
||||||
|
$obj['RequestQty'], $obj['PurchaseRequestFlagID']
|
||||||
|
]);
|
||||||
|
if (!$que_flag) {
|
||||||
|
$this->db->trans_rollback();
|
||||||
|
$this->sys_error_db("[Error] failed update qty proses flag");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->insertLog(
|
||||||
|
$para['PurchaseOrderID'], 'UPDATE', $para, '',
|
||||||
|
[], $user['M_UserID'], 'edit purchase order asset'
|
||||||
|
);
|
||||||
|
$this->db->trans_commit();
|
||||||
|
$this->sys_ok("[success] update purchase order asset");
|
||||||
|
} catch (Exception $exc) {
|
||||||
|
$msg = $exc->getMessage();
|
||||||
|
$this->sys_error($msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function getUserApproveLevel() {
|
public function getUserApproveLevel() {
|
||||||
try {
|
try {
|
||||||
if (!$this->isLogin) {
|
if (!$this->isLogin) {
|
||||||
|
|||||||
Reference in New Issue
Block a user