如何使用 Ragic API 自動生成子表格顯示庫存扣減清單

在庫存管理中,我們經常需要根據商品需求計算庫存的扣減清單,並將結果記錄到系統中以便追蹤。使用 Ragic 提供的 API,可以有效實現這一自動化操作。在本文中,我們將通過一段程式碼,介紹如何自動計算並保存扣減清單到子表單。


功能概述

這段程式的功能包括:

  1. 清空舊的子表單數據:保證數據清晰無重複。

  2. 遍歷需求子表單:根據需求商品和數量進行處理。

  3. 計算庫存扣減:按照庫存批次的順序進行數量扣減。

  4. 保存扣減結果:將計算結果記錄到另一個子表單中。


代碼邏輯詳解

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++;
}

這部分通過 RagicsetSubtableFieldValue 方法,將扣減結果逐行寫入子表單,確保數據準確記錄。


小結

這段程式碼通過 Ragic API 實現了需求數據到庫存扣減清單的自動化生成,具有以下優勢:

  1. 提高效率:自動化計算減少手動操作。

  2. 數據準確性:每次運行都能生成最新的扣減記錄。

  3. 錯誤處理:當庫存不足時,程式會拋出錯誤提示,確保不會產生錯誤記錄。

這樣的程式非常適合於日常庫存管理。如果你希望進一步擴展功能,例如將扣減記錄與其他系統集成,也可以在此基礎上進行開發!

發佈留言