feature: payment instruction & cashier case cicilan dan downpayment
This commit is contained in:
@@ -1127,11 +1127,14 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
PurchaseOrderSummaryQty as QtyAllPO,
|
||||
PurchaseOrderSummaryTotal as TotalAllPO,
|
||||
PurchaseOrderDiscountPercent AS DiscPOPercent,
|
||||
PurchaseOrderDiscountAmount AS DiscPORupiah
|
||||
PurchaseOrderDiscountAmount AS DiscPORupiah,
|
||||
M_ItemItem_CategoryID
|
||||
FROM receive_order_po_detail
|
||||
JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID
|
||||
JOIN purchase_order_summary ON ReceiveOrderPoDetailPurchaseOrderSummaryID = PurchaseOrderSummaryID
|
||||
AND PurchaseOrderSummaryIsActive = 'Y'
|
||||
JOIN m_item ON M_ItemID = ReceiveOrderPoItemID
|
||||
AND M_ItemIsActive = 'Y'
|
||||
WHERE ReceiveOrderPoDetailReceiveOrderPoID = ?
|
||||
AND ReceiveOrderPoDetailIsActive='Y'
|
||||
GROUP BY ReceiveOrderPoDetailID";
|
||||
@@ -1268,13 +1271,13 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
|
||||
/* INSERT table jurnal tx item */
|
||||
$sql_jurnaltx = "INSERT INTO jurnal_tx (
|
||||
jurnalTxJurnalID,
|
||||
jurnalTxCoaID,
|
||||
jurnalTxDescription,
|
||||
jurnalTxDebit,
|
||||
jurnalTxCredit,
|
||||
jurnalTxM_UserID
|
||||
) VALUES (?,?,?,?,?,?)";
|
||||
jurnalTxJurnalID,
|
||||
jurnalTxCoaID,
|
||||
jurnalTxDescription,
|
||||
jurnalTxDebit,
|
||||
jurnalTxCredit,
|
||||
jurnalTxM_UserID
|
||||
) VALUES (?,?,?,?,?,?)";
|
||||
$que_jurnaltx = $this->db->query($sql_jurnaltx, [
|
||||
$jurnalID,
|
||||
$coa_asset['Fa_ClassCoaID'],
|
||||
@@ -1291,14 +1294,14 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
|
||||
/* INSERT table jurnal addon item */
|
||||
$sql_jurnaladdon = "INSERT INTO jurnal_addon (
|
||||
jurnalAddOnJurnalID,
|
||||
jurnalAddOnJurnalTxID,
|
||||
jurnalAddOnCode,
|
||||
jurnalAddOnValue,
|
||||
jurnalAddOnM_ItemID,
|
||||
jurnalAddOnCreated,
|
||||
jurnalAddOnCreatedUserID
|
||||
) VALUES (?,?,'PONUMB',?,?,NOW(),?)";
|
||||
jurnalAddOnJurnalID,
|
||||
jurnalAddOnJurnalTxID,
|
||||
jurnalAddOnCode,
|
||||
jurnalAddOnValue,
|
||||
jurnalAddOnM_ItemID,
|
||||
jurnalAddOnCreated,
|
||||
jurnalAddOnCreatedUserID
|
||||
) VALUES (?,?,'PONUMB',?,?,NOW(),?)";
|
||||
$que_jurnaladdon = $this->db->query($sql_jurnaladdon, [
|
||||
$jurnalID,
|
||||
$jurnalTXID,
|
||||
@@ -1354,7 +1357,7 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
throw new Exception("[Error] failed get account diskon", 1);
|
||||
}
|
||||
$coa_diskon = $que_coadiskon->row_array();
|
||||
foreach ($input_diskon as $key => $val) {
|
||||
foreach ($input_diskon as $idx => $val) {
|
||||
if (doubleval($val) <= 0.00) {
|
||||
continue;
|
||||
}
|
||||
@@ -1397,10 +1400,199 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] save diskon prorate", 1);
|
||||
}
|
||||
|
||||
|
||||
/* handling table stock */
|
||||
$sql_cekstock = "SELECT *
|
||||
FROM stock s
|
||||
JOIN m_item i ON s.StockItemID = i.M_ItemID
|
||||
WHERE s.StockItemID = ?
|
||||
AND s.StockItemUnitID = ?
|
||||
AND s.StockWarehouseID = ?
|
||||
AND i.M_ItemItem_CategoryID = ?";
|
||||
$que_cekstock = $this->db->query($sql_cekstock, [
|
||||
$elem['ReceiveOrderPoItemID'],
|
||||
$elem['ReceiveOrderPoItemUnitID'],
|
||||
$data_ro['ReceiveOrderPoWarehouseID'],
|
||||
$elem['M_ItemItem_CategoryID']
|
||||
]);
|
||||
if (!$que_cekstock) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed to check item exist in stock", 1);
|
||||
}
|
||||
|
||||
$stock_exist = $que_cekstock->row_array();
|
||||
$stock_ID = $stock_exist['StockID'];
|
||||
$stock_qty_ori = intval($stock_exist['StockQty']);
|
||||
$stock_price = doubleval($stock_exist['StockItemPrice']);
|
||||
$stock_qty_end = 0;
|
||||
|
||||
if (!empty($stock_exist)) {
|
||||
$stock_qty_end = $stock_qty_ori + intval($elem['ReceiveOrderPoDetailQty']);
|
||||
$all_price = ($stock_qty_ori * $stock_price) + (intval($elem['ReceiveOrderPoDetailQty']) * doubleval($elem['ReceiveOrderPoDetailPrice']));
|
||||
$avg_price = round($all_price / $stock_qty_end, 2);
|
||||
|
||||
$sql_update_stock = "UPDATE stock SET
|
||||
StockItemPrice = ?,
|
||||
StockQty = ?,
|
||||
StockLastUpdated = NOW(),
|
||||
StockUserID = ?
|
||||
WHERE StockID = ?";
|
||||
$que_update_stock = $this->db->query($sql_update_stock, [
|
||||
$avg_price,
|
||||
$stock_qty_end,
|
||||
$user['M_UserID'],
|
||||
$stock_ID
|
||||
]);
|
||||
if (!$que_update_stock) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed to update stock", 1);
|
||||
}
|
||||
} else {
|
||||
$sql_insert_stock = "INSERT INTO stock (
|
||||
StockWarehouseAlmariID,
|
||||
StockWarehouseRackID,
|
||||
StockWarehouseID,
|
||||
StockStockNumber,
|
||||
StockItemID,
|
||||
StockItemUnitID,
|
||||
StockItemPrice,
|
||||
StockQty,
|
||||
StockLastUpdated,
|
||||
StockUserID
|
||||
) VALUES (0,0,?,fn_numbering('SN'),?,?,?,?,NOW(),?)";
|
||||
$que_insert_stock = $this->db->query($sql_insert_stock, [
|
||||
$data_ro['ReceiveOrderPoWarehouseID'],
|
||||
$elem['ReceiveOrderPoItemID'],
|
||||
$elem['ReceiveOrderPoItemUnitID'],
|
||||
$elem['ReceiveOrderPoDetailPrice'],
|
||||
$elem['ReceiveOrderPoDetailQty'],
|
||||
$user['M_UserID']
|
||||
]);
|
||||
if (!$que_insert_stock) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed to insert stock", 1);
|
||||
}
|
||||
|
||||
$stock_ID = $this->db->insert_id();
|
||||
$stock_qty_ori = 0;
|
||||
$stock_qty_end = intval($elem['ReceiveOrderPoDetailQty']);
|
||||
}
|
||||
|
||||
/* insert stock card */
|
||||
$sql_stock_card = "INSERT INTO stockcard (
|
||||
StockCardWarehouseID,
|
||||
StockCardDatetime,
|
||||
StockCardItemID,
|
||||
StockCardItemUnitID,
|
||||
StockCardReffID,
|
||||
StockCardStatus,
|
||||
StockCardBefore,
|
||||
StockCardIn,
|
||||
StockCardOut,
|
||||
StockCardAfter,
|
||||
StockCardUserID
|
||||
) VALUES (?, NOW(), ?, ?, ?, 'PRV', ?, ?, 0, ?, ?)";
|
||||
$que_stock_card = $this->db->query($sql_stock_card, [
|
||||
$data_ro['ReceiveOrderPoWarehouseID'],
|
||||
$elem['ReceiveOrderPoItemID'],
|
||||
$elem['ReceiveOrderPoItemUnitID'],
|
||||
$stock_ID,
|
||||
$stock_qty_ori,
|
||||
$elem['ReceiveOrderPoDetailQty'],
|
||||
$stock_qty_end,
|
||||
$user['M_UserID']
|
||||
]);
|
||||
if (!$que_stock_card) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed to insert stock card", 1);
|
||||
}
|
||||
|
||||
/* insert stock log */
|
||||
$sql_stock = "SELECT * FROM stock WHERE StockID = ?";
|
||||
$que_stock = $this->db->query($sql_stock, [$stock_ID]);
|
||||
if (!$que_stock) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed to cek latest stock", 1);
|
||||
}
|
||||
$stock_latest = $que_stock->row_array();
|
||||
|
||||
$sql_stock_log = "INSERT INTO stocklog (
|
||||
StockLogWarehouseID,
|
||||
StockLogDateTime,
|
||||
StockLogItemID,
|
||||
StockLogItemUnitID,
|
||||
StockLogStockNumber,
|
||||
StockLogReffID,
|
||||
StockLogStatus,
|
||||
StockLogQty,
|
||||
StockLogUserID
|
||||
) VALUES (?, NOW(), ?, ?, ?, ?, 'PRV', ?, ?)";
|
||||
$que_stock_log = $this->db->query($sql_stock_log, [
|
||||
$data_ro['WarehouseID'],
|
||||
$elem['ReceiveOrderPoItemID'],
|
||||
$elem['ReceiveOrderPoItemUnitID'],
|
||||
$stock_latest['StockStockNumber'],
|
||||
$stock_ID,
|
||||
$elem['ReceiveOrderPoDetailQty'],
|
||||
$user['M_UserID']
|
||||
]);
|
||||
if (!$que_stock_log) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed insert stock log", 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* handle shipping */
|
||||
$ship_cost = round(doubleval($data_ro['ReceiveOrderShippingCostAmount']), 2);
|
||||
if ($ship_cost > 0.00) {
|
||||
$sql_tx_ship = "INSERT INTO jurnal_tx (
|
||||
jurnalTxJurnalID,
|
||||
jurnalTxCoaID,
|
||||
jurnalTxDescription,
|
||||
jurnalTxDebit,
|
||||
jurnalTxCredit,
|
||||
jurnalTxM_UserID
|
||||
) SELECT ?, coaID, coaDescription, ?, 0, ?
|
||||
FROM coa WHERE coaAccountNo = '5320700001' LIMIT 1";
|
||||
$que_tx_ship = $this->db->query($sql_tx_ship, [$jurnalID, $ship_cost, $user['M_UserID']]);
|
||||
if (!$que_tx_ship) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed insert jurnal shipping", 1);
|
||||
}
|
||||
|
||||
$sql_rec_ship = "INSERT INTO receive_order_po_shipping (
|
||||
ReceiveOrderPoShippingPurchaseOrderID,
|
||||
ReceiveOrderPoShippingReceiveOrderPoID,
|
||||
ReceiveOrderPoShippingAmount,
|
||||
ReceiveOrderPoShippingStatus,
|
||||
ReceiveOrderPoShippingIsActive,
|
||||
ReceiveOrderPoShippingCreatedUserID
|
||||
) SELECT
|
||||
PurchaseOrderID,
|
||||
{$roID},
|
||||
PurchaseOrderShippingCost,
|
||||
PurchaseOrderShippingCostStatus,
|
||||
'Y',
|
||||
{$user['M_UserID']}
|
||||
FROM purchase_order
|
||||
WHERE PurchaseOrderID IN (
|
||||
SELECT DISTINCT ReceiveOrderPoDetailPurchaseOrderID
|
||||
FROM receive_order_po
|
||||
JOIN receive_order_po_detail ON ReceiveOrderPoDetailReceiveOrderPoID = ReceiveOrderPoID
|
||||
WHERE ReceiveOrderPoID = {$user['M_UserID']}
|
||||
)
|
||||
AND PurchaseOrderShippingCost IS NOT NULL
|
||||
AND PurchaseOrderShippingCost > 0";
|
||||
$que_rec_ship = $this->db->query($sql_rec_ship, []);
|
||||
if (!$que_rec_ship) {
|
||||
$this->db->trans_rollback();
|
||||
throw new Exception("[Error] failed insert table shipping", 1);
|
||||
}
|
||||
}
|
||||
|
||||
# INSERT jurnal tx for GRNI #
|
||||
$total_grni = round($total_debet - ($total_diskonitem + $total_diskonpo), 2);
|
||||
$total_grni = round($total_debet - ($total_diskonitem + $total_diskonpo), 2) + $ship_cost;
|
||||
$sql_grni = "INSERT INTO jurnal_tx (
|
||||
jurnalTxJurnalID,
|
||||
jurnalTxCoaID,
|
||||
@@ -1533,10 +1725,11 @@ class ReceiveItemPOAsset extends MY_Controller
|
||||
SupplierInvoiceGrandTotal,
|
||||
SupplierInvoiceUnpaid,
|
||||
SupplierInvoiceNote,
|
||||
SupplierInvoiceIsInstallment,
|
||||
SupplierInvoiceReceiveDate,
|
||||
SupplierInvoiceReceivedBy,
|
||||
SupplierInvoiceCreatedUserID
|
||||
) VALUES (?,?,NOW(),?,?,?,?,?,?,?,?,?,?,?,?,NOW(),?,?)";
|
||||
) VALUES (?,?,NOW(),?,?,?,?,?,?,?,?,?,?,?,?,'Y',NOW(),?,?)";
|
||||
$que_insert_pi = $this->db->query($sql_insert_pi, [
|
||||
$num_pi,
|
||||
$data_ro['ReceiveOrderPoID'],
|
||||
|
||||
Reference in New Issue
Block a user