在庫存管理中,我們經常需要根據商品需求計算庫存的扣減清單,並將結果記錄到系統中以便追蹤。使用 Ragic 提供的 API,可以有效實現這一自動化操作。在本文中,我們將通過一段程式碼,介紹如何自動計算並保存扣減清單到子表單。
功能概述
這段程式的功能包括:
-
清空舊的子表單數據:保證數據清晰無重複。
-
遍歷需求子表單:根據需求商品和數量進行處理。
-
計算庫存扣減:按照庫存批次的順序進行數量扣減。
-
保存扣減結果:將計算結果記錄到另一個子表單中。
代碼邏輯詳解
1. 初始化與清空子表單
程式的第一步是清空舊的子表單數據,以便記錄最新的扣減結果。
var subtable_id = "1003384"; // 用於存儲扣減結果的子表單
entry.deleteSubtableRowAll(subtable_id);
entry.save();
這裡的 subtable_id
是目標子表單的 ID,通過 Ragic 的 deleteSubtableRowAll
方法清空其所有記錄。
2. 獲取需求數據並檢查是否存在
接下來,程式會讀取需求子表單的數據,並檢查是否有需求項目需要處理。
var subtableSize = entry.getSubtableSize(1003391); // 獲取需求子表單的行數
if (subtableSize === 0) {
log.println("子表單 1003391 沒有資料");
return;
}
如果需求子表單為空,程式將直接返回,避免進行不必要的計算。
3. 遍歷需求商品並查詢庫存
對於每一個需求商品,程式會查詢庫存批次,並按照 FIFO(先進先出)原則進行扣減計算。
for (var i = 0; i < subtableSize; i++) {
var productId = entry.getSubtableFieldValue(1003391, i, "1003389"); // 商品 ID
var productNumber = entry.getSubtableFieldValue(1003391, i, "1003390"); // 領用數量
var batchQuery = db.getAPIQuery("/forms27/8");
batchQuery.addFilter(1003353, '=', productId); // 篩選商品 ID
batchQuery.setOrder(1003372, 1); // 按創建時間排序
var stockResults = batchQuery.getAPIResultList();
}
這裡使用了 Ragic 的 API 方法 getAPIQuery
,能夠快速篩選並獲取符合條件的庫存批次數據。
4. 計算扣減並記錄結果
程式會逐個檢查庫存批次,並根據需求數量扣減庫存。扣減結果將記錄到目標子表單中。
for (var j = 0; j < stockResults.length; j++) {
var stockEntry = stockResults[j];
var batchQuantity = Number(stockEntry.getFieldValue("1003374")); // 庫存數量
var remainingRequired = productNumber - accumulatedQuantity; // 尚需扣減數量
var usedQuantity = Math.min(batchQuantity, remainingRequired); // 當前批次可扣數量
entry.setSubtableFieldValue('1003392', currentSubtableSize, batchName); // 商品名稱
entry.setSubtableFieldValue('1003380', currentSubtableSize, batchNumber); // 批次號
entry.setSubtableFieldValue('1003381', currentSubtableSize, usedQuantity); // 扣減數量
entry.setSubtableFieldValue('1003382', currentSubtableSize, batchCost); // 成本
accumulatedQuantity += usedQuantity;
currentSubtableSize++;
}
這部分通過 Ragic 的 setSubtableFieldValue
方法,將扣減結果逐行寫入子表單,確保數據準確記錄。
小結
這段程式碼通過 Ragic API 實現了需求數據到庫存扣減清單的自動化生成,具有以下優勢:
-
提高效率:自動化計算減少手動操作。
-
數據準確性:每次運行都能生成最新的扣減記錄。
-
錯誤處理:當庫存不足時,程式會拋出錯誤提示,確保不會產生錯誤記錄。
這樣的程式非常適合於日常庫存管理。如果你希望進一步擴展功能,例如將扣減記錄與其他系統集成,也可以在此基礎上進行開發!