update / proses add akun pusat di media jurnal & move barcode to serah terima

This commit is contained in:
2026-05-13 16:51:39 +07:00
parent 4234c37e75
commit dc4e16329f
16 changed files with 4227 additions and 551 deletions

View File

@@ -28,7 +28,7 @@ class Fakturv4 extends MY_Controller
}
$branchid = $this->sys_user['M_BranchID'];
$sql = "SELECT
$sql = "SELECT
M_StaffID,
M_StaffName,
M_StaffCode
@@ -76,7 +76,7 @@ class Fakturv4 extends MY_Controller
SupplierName,
IFNULL(SupplierTermOfPayment, 0) AS SupplierTermOfPayment
FROM supplier
WHERE SupplierName LIKE ?
WHERE SupplierName LIKE ?
AND SupplierIsActive = 'Y'";
$qry = $this->db->query($sql, [$name]);
if (!$qry) {
@@ -115,10 +115,10 @@ class Fakturv4 extends MY_Controller
PurchaseOrderNumber,
PurchaseOrderDetailID
FROM purchase_order
JOIN purchase_order_detail
JOIN purchase_order_detail
ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID
AND PurchaseOrderDetailIsActive = 'Y'
JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID
JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID
AND WarehouseIsActive = 'Y'
JOIN receive_order_po_detail
ON ReceiveOrderPoDetailPurchaseOrderDetailID = PurchaseOrderDetailID
@@ -172,10 +172,10 @@ class Fakturv4 extends MY_Controller
PurchaseOrderNumber,
PurchaseOrderDetailID
FROM purchase_order
JOIN purchase_order_detail
JOIN purchase_order_detail
ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID
AND PurchaseOrderDetailIsActive = 'Y'
JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID
JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID
AND WarehouseIsActive = 'Y'
JOIN receive_order_po_detail
ON ReceiveOrderPoDetailPurchaseOrderDetailID = PurchaseOrderDetailID
@@ -232,10 +232,10 @@ class Fakturv4 extends MY_Controller
PurchaseOrderTaxPercentPpn,
PurchaseOrderGrandTotal,
PurchaseOrderShippingCost,
PurchaseOrderDiscountAmount,
PurchaseOrderDiscountAmount,
PurchaseOrderDiscountPercent,
IF (PurchaseOrderDiscountAmount > 0,
'R',
IF (PurchaseOrderDiscountAmount > 0,
'R',
'P'
) AS DiscountType
FROM purchase_order
@@ -263,7 +263,7 @@ class Fakturv4 extends MY_Controller
{
try {
if (!$this->isLogin) {
$this->sys_error();
$this->sys_error("invalid token");
exit;
}
@@ -324,7 +324,7 @@ class Fakturv4 extends MY_Controller
$page = ($para['currpage'] - 1) * $limit;
}
$sql = "SELECT
$sql = "SELECT
ReceiveOrderPoDetailPurchaseOrderID,
ReceiveOrderPoDetailPurchaseOrderSummaryID,
ReceiveOrderPoDetailReceiveOrderPoID,
@@ -336,12 +336,12 @@ class Fakturv4 extends MY_Controller
unitreceive.ItemUnitName as ReceiveOrderPoItemUnitName,
ReceiveOrderPoDetailQty,
ReceiveOrderPoDetailPrice,
IF (PurchaseOrderSummaryDiscountType = 'R',
PurchaseOrderSummaryDiscountRupiah,
IF (PurchaseOrderSummaryDiscountType = 'R',
PurchaseOrderSummaryDiscountRupiah,
PurchaseOrderSummaryDiscountPercent
) as Discount,
PurchaseOrderSummaryDiscountType,
ReceiveOrderPoDetailDiskonPoProrata
PurchaseOrderSummaryDiscountType,
ReceiveOrderPoDetailDiskonPoProrata
FROM receive_order_po_detail
JOIN receive_order_po ON ReceiveOrderPoDetailReceiveOrderPoID = ReceiveOrderPoID
AND ReceiveOrderPoIsActive = 'Y'
@@ -356,8 +356,8 @@ class Fakturv4 extends MY_Controller
AND ReceiveOrderPoID = ?
AND M_ItemDesc LIKE ?
AND NOT EXISTS (
SELECT 1
FROM supplier_invoice_detail
SELECT 1
FROM supplier_invoice_detail
WHERE SupplierInvoiceDetailReceiveOrderPoDetailID = ReceiveOrderPoDetailID
AND SupplierInvoiceDetailIsActive = 'Y'
)
@@ -383,8 +383,8 @@ class Fakturv4 extends MY_Controller
AND ReceiveOrderPoID = ?
AND M_ItemDesc LIKE ?
AND NOT EXISTS (
SELECT 1
FROM supplier_invoice_detail
SELECT 1
FROM supplier_invoice_detail
WHERE SupplierInvoiceDetailReceiveOrderPoDetailID = ReceiveOrderPoDetailID
AND SupplierInvoiceDetailIsActive = 'Y'
)";
@@ -438,31 +438,39 @@ class Fakturv4 extends MY_Controller
}
$sqltal = "SELECT COUNT(*) as total
FROM supplier_invoice
JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID
JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID
JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID
LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
AND WarehouseM_BranchID = ?
JOIN supplier ON SupplierID = SupplierInvoiceSupplierID
AND SupplierIsActive = 'Y'
LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID
LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID
WHERE SupplierInvoiceIsActive = 'Y'
AND (
SupplierInvoiceNumber LIKE ? OR
SupplierInvoiceDeliveryOrderNumber LIKE ? OR
SupplierInvoiceSupplierInvoiceNumber LIKE ?
)
AND SupplierInvoiceDate >= DATE(?)
AND SupplierInvoiceDate <= DATE(?)
AND (? = 'All' OR SupplierInvoiceStatus = ?)
AND (? = '0' OR SupplierInvoiceSupplierID = ?)
GROUP BY SupplierInvoiceID
ORDER BY SUpplierInvoiceID DESC";
FROM supplier_invoice
JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID
JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID
JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID
LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
AND WarehouseM_BranchID = ?
JOIN supplier ON SupplierID = SupplierInvoiceSupplierID
AND SupplierIsActive = 'Y'
LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID
LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID
WHERE SupplierInvoiceIsActive = 'Y'
AND (
SupplierInvoiceNumber LIKE ? OR
SupplierInvoiceRefNumber LIKE ? OR
SupplierInvoiceSupplierInvoiceNumber LIKE ?
)
AND SupplierInvoiceDate >= DATE(?)
AND SupplierInvoiceDate <= DATE(?)
AND (? = 'All' OR SupplierInvoiceStatus = ?)
AND (? = '0' OR SupplierInvoiceSupplierID = ?)
GROUP BY SupplierInvoiceID
ORDER BY SUpplierInvoiceID DESC";
$quetal = $this->db->query($sqltal, [
$branchID, $nomo, $nomo, $nomo, $date, $enddate,
$status, $status, $supplier, $supplier
$branchID,
$nomo,
$nomo,
$nomo,
$date,
$enddate,
$status,
$status,
$supplier,
$supplier
]);
if (!$quetal) {
$this->sys_error_db("[Error] get total data faktur");
@@ -470,52 +478,61 @@ class Fakturv4 extends MY_Controller
}
$total = $quetal->result_array()[0]['total'];
$sqlfak = "SELECT
SupplierInvoiceID,
SupplierInvoiceNumber,
SupplierInvoiceDate,
SupplierInvoiceDueDate,
SupplierInvoiceDraftPaymentDate,
SupplierInvoiceSupplierID,
SupplierName,
SupplierInvoiceStatus,
SupplierInvoiceNote,
SupplierInvoiceGrandTotal,
SupplierInvoiceSupplierInvoiceNumber,
CASE
WHEN WarehouseType = 'B' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName)
WHEN WarehouseType = 'R' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE ''
END as WarehouseName,
ReceiveOrderPoID,
PurchaseOrderItemCategoryID
FROM supplier_invoice
JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID
JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID
JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID
LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
AND WarehouseM_BranchID = ?
JOIN supplier ON SupplierID = SupplierInvoiceSupplierID
AND SupplierIsActive = 'Y'
LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID
LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID
WHERE SupplierInvoiceIsActive = 'Y'
AND (
SupplierInvoiceNumber LIKE ? OR
SupplierInvoiceDeliveryOrderNumber LIKE ? OR
SupplierInvoiceSupplierInvoiceNumber LIKE ?
)
AND SupplierInvoiceDate >= DATE(?)
AND SupplierInvoiceDate <= DATE(?)
AND (? = 'All' OR SupplierInvoiceStatus = ?)
AND (? = '0' OR SupplierInvoiceSupplierID = ?)
GROUP BY SupplierInvoiceID
ORDER BY SUpplierInvoiceID DESC
LIMIT ? OFFSET ?";
$sqlfak = "SELECT
SupplierInvoiceID,
SupplierInvoiceNumber,
SupplierInvoiceDate,
SupplierInvoiceDueDate,
SupplierInvoiceDraftPaymentDate,
SupplierInvoiceSupplierID,
SupplierName,
SupplierInvoiceStatus,
SupplierInvoiceNote,
SupplierInvoiceGrandTotal,
SupplierInvoiceSupplierInvoiceNumber,
CASE
WHEN WarehouseType = 'B' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName)
WHEN WarehouseType = 'R' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE ''
END as WarehouseName,
ReceiveOrderPoID,
PurchaseOrderItemCategoryID
FROM supplier_invoice
JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID
JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID
JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID
LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
AND WarehouseM_BranchID = ?
JOIN supplier ON SupplierID = SupplierInvoiceSupplierID
AND SupplierIsActive = 'Y'
LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID
LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID
WHERE SupplierInvoiceIsActive = 'Y'
AND (
SupplierInvoiceNumber LIKE ? OR
SupplierInvoiceRefNumber LIKE ? OR
SupplierInvoiceSupplierInvoiceNumber LIKE ?
)
AND SupplierInvoiceDate >= DATE(?)
AND SupplierInvoiceDate <= DATE(?)
AND (? = 'All' OR SupplierInvoiceStatus = ?)
AND (? = '0' OR SupplierInvoiceSupplierID = ?)
GROUP BY SupplierInvoiceID
ORDER BY SUpplierInvoiceID DESC
LIMIT ? OFFSET ?";
$quefak = $this->db->query($sqlfak, [
$branchID, $nomo, $nomo, $nomo, $date, $enddate,
$status, $status, $supplier, $supplier,
$limit, $hal
$branchID,
$nomo,
$nomo,
$nomo,
$date,
$enddate,
$status,
$status,
$supplier,
$supplier,
$limit,
$hal
]);
if (!$quefak) {
$this->sys_error_db("[Error] get list data faktur");
@@ -543,7 +560,7 @@ class Fakturv4 extends MY_Controller
$para = $this->sys_input;
$sql = "SELECT
$sql = "SELECT
SupplierInvoiceID,
SupplierInvoiceDate,
SupplierInvoiceDueDate,
@@ -566,14 +583,14 @@ class Fakturv4 extends MY_Controller
SupplierInvoiceAdjustmentAmount,
SupplierInvoiceAdjustmentNote,
SupplierInvoiceNote,
IF (SupplierInvoiceDiscountAmount > 0,
'R',
IF (SupplierInvoiceDiscountAmount > 0,
'R',
'P'
) AS DiscountType,
SupplierInvoiceReceiveOrderPoID,
ReceiveOrderPoNumber
FROM supplier_invoice
JOIN supplier ON SupplierInvoiceSupplierID = SupplierID
JOIN supplier ON SupplierInvoiceSupplierID = SupplierID
JOIN receive_order_po ON ReceiveOrderPoID = SupplierInvoiceReceiveOrderPoID
-- JOIN purchase_order ON SupplierInvoicePurchaseOrderID = PurchaseOrderID
-- AND PurchaseOrderIsActive = 'Y'
@@ -585,7 +602,7 @@ class Fakturv4 extends MY_Controller
exit;
}
$sqldet = "SELECT
$sqldet = "SELECT
SupplierInvoiceDetailID,
SupplierInvoiceDetailSupplierInvoiceID,
SupplierInvoiceDetailPurchaseOrderID,
@@ -611,7 +628,7 @@ class Fakturv4 extends MY_Controller
AND M_ItemIsActive = 'Y'
JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID
AND PurchaseOrderIsActive = 'Y'
WHERE SupplierInvoiceDetailIsActive = 'Y'
WHERE SupplierInvoiceDetailIsActive = 'Y'
AND SupplierInvoiceDetailSupplierInvoiceID = ?";
$quedet = $this->db->query($sqldet, [$para['SInvoiceID']]);
if (!$quedet) {
@@ -630,7 +647,8 @@ class Fakturv4 extends MY_Controller
}
}
public function LookupAttachment() {
public function LookupAttachment()
{
try {
if (!$this->isLogin) {
$this->sys_error("invalid token");
@@ -640,14 +658,14 @@ class Fakturv4 extends MY_Controller
$para = $this->sys_input;
$data = [];
$sql = "SELECT
ReceiveOrderPoDocumentID AS attach_id,
$sql = "SELECT
ReceiveOrderPoDocumentID AS attach_id,
ReceiveOrderPoDocumentFile AS img_url,
ReceiveOrderPoDocumentCreated AS created
FROM receive_order_po_document
FROM receive_order_po_document
WHERE ReceiveOrderPoDocumentReceiveOrderPoID = ?
AND ReceiveOrderPoDocumentIsActive = 'Y'";
$que = $this->db->query($sql, [ $para['roID'] ]);
$que = $this->db->query($sql, [$para['roID']]);
if (!$que) {
$this->sys_error_db("[Error] failed get data attachment inventaris");
exit;
@@ -657,7 +675,10 @@ class Fakturv4 extends MY_Controller
foreach ($rows as $key => $value) {
$rows[$key]['category'] = $para['category'];
}
$data[] = $rows;
if (count($rows) > 0) {
$data = $rows;
}
$this->sys_ok($data);
} catch (Exception $exc) {
@@ -672,7 +693,7 @@ class Fakturv4 extends MY_Controller
{
try {
if (!$this->isLogin) {
$this->sys_error();
$this->sys_error("invalid token");
exit;
}
@@ -697,7 +718,7 @@ class Fakturv4 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) {
@@ -717,10 +738,10 @@ class Fakturv4 extends MY_Controller
$numpd = $quenum->row_array()['numpd'];
/*
*== Validasi untuk mencegah double click simpan faktur
*== Validasi untuk mencegah double click simpan faktur
*/
$sqlcheck = "SELECT SupplierInvoiceID FROM supplier_invoice
WHERE SupplierInvoiceSupplierInvoiceNumber = ?
$sqlcheck = "SELECT SupplierInvoiceID FROM supplier_invoice
WHERE SupplierInvoiceSupplierInvoiceNumber = ?
AND SupplierInvoiceRefNumber = ?
AND SupplierInvoicePurchaseOrderID = ?
AND SupplierInvoiceGrandTotal = ?
@@ -847,7 +868,7 @@ class Fakturv4 extends MY_Controller
{
try {
if (!$this->isLogin) {
$this->sys_error();
$this->sys_error("invalid token");
exit;
}
$para = $this->sys_input;
@@ -857,7 +878,7 @@ class Fakturv4 extends MY_Controller
$this->db->trans_begin();
$sqlupdate = "UPDATE supplier_invoice
SET
SET
SupplierInvoicePurchaseOrderID = ?,
SupplierInvoiceDate = ?,
SupplierInvoiceDueDate = ?,
@@ -883,7 +904,7 @@ class Fakturv4 extends MY_Controller
SupplierInvoiceDraftPaymentDate = ?,
SupplierInvoiceLastUpdated = NOW(),
SupplierInvoiceLastUpdatedUserID = ?
WHERE
WHERE
SupplierInvoiceID = ?";
$qryupdate = $this->db->query($sqlupdate, [
$para['SIPoID'],
@@ -918,8 +939,8 @@ class Fakturv4 extends MY_Controller
exit;
}
$sqldel = "UPDATE supplier_invoice_detail
SET SupplierInvoiceDetailIsActive = 'N'
$sqldel = "UPDATE supplier_invoice_detail
SET SupplierInvoiceDetailIsActive = 'N'
WHERE SupplierInvoiceDetailIsActive = 'Y'
AND SupplierInvoiceDetailSupplierInvoiceID = ?";
$qrydel = $this->db->query($sqldel, [$fakturID]);
@@ -1080,9 +1101,9 @@ class Fakturv4 extends MY_Controller
$userID = $this->sys_user["M_UserID"];
$this->db->trans_begin();
$sqldel = "UPDATE supplier_invoice
SET SupplierInvoiceIsActive = 'N'
WHERE SupplierInvoiceIsActive = 'Y'
$sqldel = "UPDATE supplier_invoice
SET SupplierInvoiceIsActive = 'N'
WHERE SupplierInvoiceIsActive = 'Y'
AND SupplierInvoiceID = ?";
$qrydel = $this->db->query($sqldel, [$para['SInvoiceID']]);
if (!$qrydel) {
@@ -1092,8 +1113,8 @@ class Fakturv4 extends MY_Controller
}
$sqldel2 = "UPDATE supplier_invoice_detail
SET SupplierInvoiceDetailIsActive = 'N'
$sqldel2 = "UPDATE supplier_invoice_detail
SET SupplierInvoiceDetailIsActive = 'N'
WHERE SupplierInvoiceDetailIsActive = 'Y'
AND SupplierInvoiceDetailSupplierInvoiceID = ?";
$qrydel2 = $this->db->query($sqldel2, [$para['SInvoiceID']]);
@@ -1147,7 +1168,7 @@ class Fakturv4 extends MY_Controller
$this->db->trans_begin();
// update status faktur ke approved
$sqlupd = "UPDATE supplier_invoice SET
$sqlupd = "UPDATE supplier_invoice SET
SupplierInvoiceStatus = 'Verified',
SupplierInvoiceVerifiedDate = NOW(),
SupplierInvoiceVerifiedUserID = ?,
@@ -1166,7 +1187,7 @@ class Fakturv4 extends MY_Controller
SupplierInvoiceDetailIsVerified = 'Y',
SupplierInvoiceDetailLastUpdated = NOW(),
SupplierInvoiceDetailLastUpdatedUserID = ?
WHERE SupplierInvoiceDetailSupplierInvoiceID = ?
WHERE SupplierInvoiceDetailSupplierInvoiceID = ?
AND SupplierInvoiceDetailIsActive = 'Y'";
$quedet = $this->db->query($sqldet, [$user['M_UserID'], $fakturID]);
if (!$quedet) {
@@ -1198,7 +1219,7 @@ class Fakturv4 extends MY_Controller
$this->db->trans_begin();
$sqlupd = "UPDATE supplier_invoice SET
$sqlupd = "UPDATE supplier_invoice SET
SupplierInvoiceStatus = 'Reject',
SupplierInvoiceLastUpdated = NOW(),
SupplierInvoiceLastUpdatedUserID = ?
@@ -1218,7 +1239,7 @@ class Fakturv4 extends MY_Controller
SupplierInvoiceDetailIsActive = 'N',
SupplierInvoiceDetailLastUpdated = NOW(),
SupplierInvoiceDetailLastUpdatedUserID = ?
WHERE SupplierInvoiceDetailSupplierInvoiceID = ?
WHERE SupplierInvoiceDetailSupplierInvoiceID = ?
AND SupplierInvoiceDetailIsActive = 'Y' ";
$quedet = $this->db->query($sqldet, [$user['M_UserID'], $fakturID]);
if (!$quedet) {
@@ -1250,7 +1271,7 @@ class Fakturv4 extends MY_Controller
$this->db->trans_begin();
// update status faktur ke approved
$sqlupd = "UPDATE supplier_invoice SET
$sqlupd = "UPDATE supplier_invoice SET
SupplierInvoiceStatus = 'Approved',
SupplierInvoiceApprovedDate = NOW(),
SupplierInvoiceApprovedUserID = ?,
@@ -1267,8 +1288,8 @@ class Fakturv4 extends MY_Controller
// get periode untuk jurnal
// ----------------------------------------------------------------------------------------
$sqlprd = "SELECT periodeID FROM periode
WHERE DATE(NOW()) BETWEEN DATE(periodeStartDate) AND DATE(periodeEndDate)
$sqlprd = "SELECT periodeID FROM periode
WHERE DATE(NOW()) BETWEEN DATE(periodeStartDate) AND DATE(periodeEndDate)
AND periodeIsActive = 'Y'
AND periodeIsClosed = 'N'";
$queprd = $this->db->query($sqlprd, []);
@@ -1291,7 +1312,7 @@ class Fakturv4 extends MY_Controller
// get data faktur
// ----------------------------------------------------------------------------------------
$sqlinv = "SELECT
$sqlinv = "SELECT
supplier_invoice.* ,
supplier_invoice_detail.*,
ReceiveOrderPoNumber,
@@ -1494,12 +1515,12 @@ class Fakturv4 extends MY_Controller
}
if ($item['M_ItemItem_CategoryID'] == '1' && !empty($item['M_ItemNat_SubGroupID'])) {
$sqlsgp = "SELECT map_nat_group.*
$sqlsgp = "SELECT map_nat_group.*
FROM map_nat_group
JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID
AND MapNatSub_IsActive = 'Y'
WHERE MapNatGroup_NatGroupID = ?
AND MapNatSub_NatSubGroupID = ?
WHERE MapNatGroup_NatGroupID = ?
AND MapNatSub_NatSubGroupID = ?
AND MapNatGroup_IsActive = 'Y'";
$quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]);
if (!$quesgp) {
@@ -1538,38 +1559,29 @@ class Fakturv4 extends MY_Controller
exit;
}
} else if ($item['M_ItemItem_CategoryID'] == '2') {
// Mapping JurnalTx sama dengan Persediaan hanya beda CoA
// TODO: Update dengan CoA yang Benar
// Jika ItemNatsubGroup belum termapping return error
if (empty($item['M_ItemNat_SubGroupID'])) {
if (empty($item['M_ItemM_InventarisGolID'])) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] Item {$item['M_ItemDesc']} tidak memiliki Nat_SubGroupID");
exit;
};
$sqlsgp = "SELECT map_nat_group.*
FROM map_nat_group
JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID
AND MapNatSub_IsActive = 'Y'
WHERE MapNatGroup_NatGroupID = ?
AND MapNatSub_NatSubGroupID = ?
AND MapNatGroup_IsActive = 'Y'";
$quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]);
if (!$quesgp) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] get map_nat_subgroup");
$this->sys_error_db("[Error] item golongan inventaris belum ditentukan");
exit;
}
$itemGroup = $quesgp->row_array();
if (
empty($itemGroup['MapNatGroup_Debt_coaID']) ||
empty($itemGroup['MapNatGroup_Debt_coaAccNo']) ||
empty($itemGroup['MapNatGroup_Debt_coaDesc'])
) {
$sql_coainv = "SELECT
CoaMapInventarisHutangCoaID,
CoaMapInventarisHutangCoaNo,
CoaMapInventarisHutangCoaDesc
FROM coa_map_inventaris
WHERE CoaMapInventarisM_InventarisGolID = ?
AND CoaMapInventarisIsActive = 'Y'";
$que_coainv = $this->db->query($sql_coainv, [$item['M_ItemM_InventarisGolID']]);
if (!$que_coainv) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] coa item tidak ditemukan / belum dimapping");
$this->sys_error_db("[Error] failed to get coa inventaris gol");
exit;
}
$item_coainv = $que_coainv->row_array();
if (empty($item_coainv)) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] item inventaris coa not found");
exit;
}
@@ -1581,8 +1593,8 @@ class Fakturv4 extends MY_Controller
$status = $this->InsertJurnalTx(
$jurnalID,
$itemGroup['MapNatGroup_Debt_coaID'],
$itemGroup['MapNatGroup_Debt_coaDesc'],
$item_coainv['CoaMapInventarisHutangCoaID'],
$item_coainv['CoaMapInventarisHutangCoaDesc'],
$user['M_UserID'],
0,
$kredit
@@ -1626,57 +1638,7 @@ class Fakturv4 extends MY_Controller
exit;
}
} else if ($item['M_ItemItem_CategoryID'] == '4') {
// if (empty($item['M_ItemNat_SubGroupID'])) {
// $this->db->trans_rollback();
// $this->sys_error_db("[Error] Item {$item['M_ItemDesc']} tidak memiliki Nat_SubGroupID");
// exit;
// };
$this->InsertJurnalTxJasa($jurnalID, $item['M_ItemID'], $inv, $user['M_UserID']);
// $sqlsgp = "SELECT map_nat_group.*
// FROM map_nat_group
// JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID
// AND MapNatSub_IsActive = 'Y'
// WHERE MapNatGroup_NatGroupID = ?
// AND MapNatSub_NatSubGroupID = ?
// AND MapNatGroup_IsActive = 'Y'";
// $quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]);
// if (!$quesgp) {
// $this->db->trans_rollback();
// $this->sys_error_db("[Error] get map_nat_subgroup");
// exit;
// }
// $itemGroup = $quesgp->row_array();
// if (
// empty($itemGroup['MapNatGroup_Debt_coaID']) ||
// empty($itemGroup['MapNatGroup_Debt_coaAccNo']) ||
// empty($itemGroup['MapNatGroup_Debt_coaDesc'])
// ) {
// $this->db->trans_rollback();
// $this->sys_error_db("[Error] coa item tidak ditemukan / belum dimapping");
// exit;
// }
// $price = (doubleval($inv['SupplierInvoiceDetailTotal']) - doubleval($inv['SupplierInvoiceDetailDiscountPoProrata']));
// // $taxPPH = doubleval($inv['SupplierInvoiceTaxPercentPph']) * $price / 100;
// $taxPPN = doubleval($inv['SupplierInvoiceTaxPercentPpn']) * $price / 100;
// $kredit = round($price + $taxPPN, 2);
// $status = $this->InsertJurnalTx(
// $jurnalID,
// $itemGroup['MapNatGroup_Debt_coaID'],
// $itemGroup['MapNatGroup_Debt_coaDesc'],
// $user['M_UserID'],
// 0,
// $kredit
// );
// if (!$status) {
// $this->sys_error_db($status['msg']);
// exit;
// }
}
}
@@ -1709,13 +1671,14 @@ class Fakturv4 extends MY_Controller
}
}
private function InsertJurnalTxJasa($jurnalID, $itemid, $invoice, $userid) {
private function InsertJurnalTxJasa($jurnalID, $itemid, $invoice, $userid)
{
$sql_coa = "SELECT
JasaCoaMapHutangCoaID,
JasaCoaMapHutangCoaNo,
JasaCoaMapHutangCoaDesc
FROM jasa_coa_map
JOIN coa ON coaID = JasaCoaMapHutangCoaID
FROM jasa_coa_map
JOIN coa ON coaID = JasaCoaMapHutangCoaID
AND coaIsActive = 'Y'
WHERE JasaCoaMapM_ItemID = ?";
$que_coa = $this->db->query($sql_coa, [$itemid]);
@@ -1734,15 +1697,18 @@ class Fakturv4 extends MY_Controller
$invtotal = doubleval($invoice['SupplierInvoiceDetailTotal']);
$disprorata = doubleval($invoice['SupplierInvoiceDetailDiscountPoProrata']);
$price = $invtotal - $disprorata;
$taxPPN = doubleval($invoice['SupplierInvoiceTaxPercentPpn']) * $price / 100;
$kredit = round($price + $taxPPN, 2);
$insert = $this->InsertJurnalTx(
$jurnalID, $coajasa['JasaCoaMapHutangCoaID'],
$coajasa['JasaCoaMapHutangCoaDesc'],
$userid, 0, $kredit
$jurnalID,
$coajasa['JasaCoaMapHutangCoaID'],
$coajasa['JasaCoaMapHutangCoaDesc'],
$userid,
0,
$kredit
);
if (!$insert) {
$this->db->trans_rollback();