From 79fd2864cc091c7078dffd90d03ae97fe18df64c Mon Sep 17 00:00:00 2001 From: Hanan Askarim Date: Tue, 14 Jul 2026 15:45:34 +0700 Subject: [PATCH] update penomoran dari fn fungsi --- .../scheduler/PurchaseInvoiceInstallment.php | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/application/controllers/mockup/scheduler/PurchaseInvoiceInstallment.php b/application/controllers/mockup/scheduler/PurchaseInvoiceInstallment.php index 8370dd5..3cb93d6 100644 --- a/application/controllers/mockup/scheduler/PurchaseInvoiceInstallment.php +++ b/application/controllers/mockup/scheduler/PurchaseInvoiceInstallment.php @@ -86,6 +86,7 @@ class PurchaseInvoiceInstallment extends MY_Controller c.PurchaseOrderAssetContractInstallmentPaid, c.PurchaseOrderAssetContractInstallmentDate, c.PurchaseOrderAssetContractInstallmentPayAmount, + c.PurchaseOrderAssetContractCreatedUserID, po.PurchaseOrderID, po.PurchaseOrderNumber, po.PurchaseOrderSupplierID, @@ -224,8 +225,11 @@ class PurchaseInvoiceInstallment extends MY_Controller continue; } + $contractUserID = (int) ($kontrak["PurchaseOrderAssetContractCreatedUserID"] ?? 0); + $contractUser = $this->getCronUser($contractUserID); + // Generate nomor PI otomatis via stored function fn_penomoran - $nomorPI = $this->generateNomorPI($kontrak, $user); + $nomorPI = $this->generateNomorPI($kontrak, $contractUser); $jumlahCicilan = (float) $kontrak["PurchaseOrderAssetContractInstallmentPayAmount"]; $paymentTerm = isset($kontrak["PurchaseOrderPaymentTerm"]) && $kontrak["PurchaseOrderPaymentTerm"] !== null @@ -249,7 +253,7 @@ class PurchaseInvoiceInstallment extends MY_Controller "jumlahCicilan" => $jumlahCicilan, "catatan" => $catatan, "deskripsi" => $deskripsi, - "userID" => $userID, + "userID" => $contractUserID, "purchaseOrderAssetContractID" => $kontrak["PurchaseOrderAssetContractID"], "purchaseOrderID" => $kontrak["PurchaseOrderID"], "receiveOrderPoID" => $kontrak["PurchaseOrderAssetContractReceiveOrderPoID"], @@ -532,7 +536,7 @@ class PurchaseInvoiceInstallment extends MY_Controller // ========================================================================= /** - * Generate nomor Purchase Invoice default untuk proses sementara. + * Generate nomor Purchase Invoice. * * @param array $kontrak Data baris kontrak dari query * @param array $user Data user CRON @@ -540,17 +544,37 @@ class PurchaseInvoiceInstallment extends MY_Controller */ private function generateNomorPI($kontrak, $user) { - $contractID = isset($kontrak["PurchaseOrderAssetContractID"]) ? (int) $kontrak["PurchaseOrderAssetContractID"] : 0; - $poID = isset($kontrak["PurchaseOrderID"]) ? (int) $kontrak["PurchaseOrderID"] : 0; - $userID = isset($user["M_UserID"]) ? (int) $user["M_UserID"] : 0; + $userID = isset($user["M_UserID"]) ? (int) $user["M_UserID"] : 0; - return sprintf( - "PI-INS-%s-%06d-%05d-%05d", - date("YmdHis"), - $contractID, - $poID, - $userID - ); + // Tentukan area ID dan type + $areaid = isset($user["M_BranchID"]) && (int) $user["M_BranchID"] > 0 ? (int) $user["M_BranchID"] : 0; + $areatype = 'B'; + if (isset($user["loginLevel"]) && $user["loginLevel"] == 'regional') { + $areaid = isset($user["S_RegionalID"]) && (int) $user["S_RegionalID"] > 0 ? (int) $user["S_RegionalID"] : 0; + $areatype = 'R'; + } + + // Ambil divisi user + $userDivID = 0; + if ($userID > 0) { + $sqlusrdivisi = "SELECT M_UserDivisionDivisionID FROM m_userdivision + WHERE M_UserDivisionM_UserID = ? AND M_UserDivisionIsActive = 'Y' LIMIT 1"; + $queusrdivisi = $this->db->query($sqlusrdivisi, [$userID]); + if ($queusrdivisi && $queusrdivisi->num_rows() > 0) { + $userDivID = (int) $queusrdivisi->row_array()['M_UserDivisionDivisionID']; + } + } + + // Jalankan stored function fn_penomoran + $sqlnum = "SELECT `fn_penomoran`(?, ?, ?, ?, ?, ?) AS numpd;"; + $quenum = $this->db->query($sqlnum, ['PI', $userDivID, $areatype, $areaid, 'SM', 'N']); + if ($quenum && $quenum->num_rows() > 0) { + return $quenum->row_array()['numpd']; + } + + // Fallback jika stored function gagal + $contractID = isset($kontrak["PurchaseOrderAssetContractID"]) ? (int) $kontrak["PurchaseOrderAssetContractID"] : 0; + return "PI-INS-FALLBACK-" . $contractID . "-" . date("Ymd"); } /**