update penomoran dari fn fungsi

This commit is contained in:
Hanan Askarim
2026-07-14 15:45:34 +07:00
committed by sasadib
parent 344c5d42e6
commit 79fd2864cc

View File

@@ -86,6 +86,7 @@ class PurchaseInvoiceInstallment extends MY_Controller
c.PurchaseOrderAssetContractInstallmentPaid, c.PurchaseOrderAssetContractInstallmentPaid,
c.PurchaseOrderAssetContractInstallmentDate, c.PurchaseOrderAssetContractInstallmentDate,
c.PurchaseOrderAssetContractInstallmentPayAmount, c.PurchaseOrderAssetContractInstallmentPayAmount,
c.PurchaseOrderAssetContractCreatedUserID,
po.PurchaseOrderID, po.PurchaseOrderID,
po.PurchaseOrderNumber, po.PurchaseOrderNumber,
po.PurchaseOrderSupplierID, po.PurchaseOrderSupplierID,
@@ -224,8 +225,11 @@ class PurchaseInvoiceInstallment extends MY_Controller
continue; continue;
} }
$contractUserID = (int) ($kontrak["PurchaseOrderAssetContractCreatedUserID"] ?? 0);
$contractUser = $this->getCronUser($contractUserID);
// Generate nomor PI otomatis via stored function fn_penomoran // Generate nomor PI otomatis via stored function fn_penomoran
$nomorPI = $this->generateNomorPI($kontrak, $user); $nomorPI = $this->generateNomorPI($kontrak, $contractUser);
$jumlahCicilan = (float) $kontrak["PurchaseOrderAssetContractInstallmentPayAmount"]; $jumlahCicilan = (float) $kontrak["PurchaseOrderAssetContractInstallmentPayAmount"];
$paymentTerm = isset($kontrak["PurchaseOrderPaymentTerm"]) && $kontrak["PurchaseOrderPaymentTerm"] !== null $paymentTerm = isset($kontrak["PurchaseOrderPaymentTerm"]) && $kontrak["PurchaseOrderPaymentTerm"] !== null
@@ -249,7 +253,7 @@ class PurchaseInvoiceInstallment extends MY_Controller
"jumlahCicilan" => $jumlahCicilan, "jumlahCicilan" => $jumlahCicilan,
"catatan" => $catatan, "catatan" => $catatan,
"deskripsi" => $deskripsi, "deskripsi" => $deskripsi,
"userID" => $userID, "userID" => $contractUserID,
"purchaseOrderAssetContractID" => $kontrak["PurchaseOrderAssetContractID"], "purchaseOrderAssetContractID" => $kontrak["PurchaseOrderAssetContractID"],
"purchaseOrderID" => $kontrak["PurchaseOrderID"], "purchaseOrderID" => $kontrak["PurchaseOrderID"],
"receiveOrderPoID" => $kontrak["PurchaseOrderAssetContractReceiveOrderPoID"], "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 $kontrak Data baris kontrak dari query
* @param array $user Data user CRON * @param array $user Data user CRON
@@ -540,17 +544,37 @@ class PurchaseInvoiceInstallment extends MY_Controller
*/ */
private function generateNomorPI($kontrak, $user) private function generateNomorPI($kontrak, $user)
{ {
$contractID = isset($kontrak["PurchaseOrderAssetContractID"]) ? (int) $kontrak["PurchaseOrderAssetContractID"] : 0; $userID = isset($user["M_UserID"]) ? (int) $user["M_UserID"] : 0;
$poID = isset($kontrak["PurchaseOrderID"]) ? (int) $kontrak["PurchaseOrderID"] : 0;
$userID = isset($user["M_UserID"]) ? (int) $user["M_UserID"] : 0;
return sprintf( // Tentukan area ID dan type
"PI-INS-%s-%06d-%05d-%05d", $areaid = isset($user["M_BranchID"]) && (int) $user["M_BranchID"] > 0 ? (int) $user["M_BranchID"] : 0;
date("YmdHis"), $areatype = 'B';
$contractID, if (isset($user["loginLevel"]) && $user["loginLevel"] == 'regional') {
$poID, $areaid = isset($user["S_RegionalID"]) && (int) $user["S_RegionalID"] > 0 ? (int) $user["S_RegionalID"] : 0;
$userID $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");
} }
/** /**