在 Business Central (BC) 中,Value Entries (價值分錄) 與 General Ledger Entries (總帳分錄) 之間存在一個明確的關聯,這對於庫存 (Inventory) 成本核算和總帳和解 (Reconciliation) 至關重要。
關聯的本質
Value Entries 專門記錄庫存價值的變動,而 General Ledger Entries 則記錄財務總帳的變動。
- Value Entries (價值分錄 – Table 5802):
- 用途:記錄庫存交易(例如:採購入庫、銷貨出庫、調整)所引起的庫存金額變化。
- 內容:包含成本金額、過帳日期、庫存過帳群組等細節,但不直接包含總帳科目號碼。
- General Ledger Entries (總帳分錄 – Table 21):
- 用途:記錄所有財務交易,是公司財務報表的基礎。
- 內容:包含總帳科目號碼、借/貸金額、過帳日期、來源代碼等。
關聯:庫存的價值變動(Value Entries)最終會透過庫存過帳設定 (Inventory Posting Setup) 自動或手動批次過帳到總帳科目,生成對應的 General Ledger Entries。
如何對應 (Mapping)?
Value Entries 和 General Ledger Entries 之間的直接對應是通過一個專門的中間表格來實現的:
關鍵對應表:G/L - Item Ledger Relation (總帳 - 庫存分錄關聯) (Table 5823)
這個表格是系統自動產生且不可編輯的,它的主要目的是建立一個審計追蹤路徑,將一個或多個 Value Entries 連結到其對應產生的 General Ledger Entries。
| G/L – Item Ledger Relation (Table 5823) | 欄位說明 | 對應的條目 |
Value Entry No. | 價值條目的唯一編號 | Value Entries (Table 5802) |
G/L Entry No. | 總帳條目的唯一編號 | General Ledger Entries (Table 21) |
G/L Register No. | 總帳登記簿編號(用於批次過帳的追蹤) | G/L Register (Table 45) |
實際操作的對應步驟:
在 Business Central 的使用者介面中,最常用的對應方式是使用 導覽 (Navigate) 功能:
- 從 General Ledger Entries (總帳分錄) 追溯到 Value Entries (價值分錄):
- 打開 General Ledger Entries 頁面。
- 選取一筆與庫存相關的總帳條目(例如:庫存科目或銷貨成本科目)。
- 使用功能區的 導覽 (Navigate) 功能,系統會顯示所有相關聯的條目,其中就包括 Value Entries。
- 或者,在選定的總帳條目上,您可以直接點擊或查看相關聯的 Value Entries (在舊版或部分介面中可能會有直接的選項/按鈕)。
- 從 Value Entries (價值分錄) 追溯到 General Ledger Entries (總帳分錄):
- 打開 Value Entries 頁面。
- 選取一個 Value Entry。
- 使用功能區的 導覽 (Navigate) 功能,系統會顯示所有相關聯的條目,其中就包括 General Ledger Entries。
- 同時,在 Value Entry 頁面中,會有一個欄位
Cost Posted to G/L(已過帳到總帳的成本) 會被勾選或填入金額,表示該價值條目已經產生了對應的總帳條目。
系統過帳的運作
當您過帳一筆庫存交易(如採購發票、銷貨出貨)時:
- 首先會產生 Item Ledger Entries (庫存分錄) 記錄數量的變動,和 Value Entries 記錄預期成本或實際成本的價值變動。
- 然後,根據 Inventory Posting Setup (庫存過帳設定) 中定義的庫存科目和對應科目(例如:COGS, 庫存調整科目),系統會產生對應的 General Ledger Entries。
- 最後,G/L – Item Ledger Relation 表格會自動建立,將這些新生成的 Value Entries 和 General Ledger Entries 連結起來,完成審計追蹤鏈。
Item Ledger Entry Type 欄位的主要選項
在 Business Central 的 Item Ledger Entry (庫存總帳分錄) 表格中,Entry Type 欄位是一個 Option (選項) 欄位,用來標示該條目是由哪種庫存交易產生的。
Item Ledger Entry Type (庫存總帳分錄類型) 選項
| 選項 (Option) | 英文名稱 | 說明 |
| 0 | Purchase (採購) | 透過採購單/採購發票等文件進行的商品入庫,增加庫存。 |
| 1 | Sale (銷貨) | 透過銷貨單/銷貨發票等文件進行的商品出庫,減少庫存。 |
| 2 | Positive Adjmt. (正向調整) | 透過庫存日誌或盤點進行的正面調整,增加庫存數量。 |
| 3 | Negative Adjmt. (負向調整) | 透過庫存日誌或盤點進行的負面調整,減少庫存數量。 |
| 4 | Transfer (移轉) | 透過移轉單在不同地點 (Location) 之間移動庫存,通常是 A 地點的負向調整對應 B 地點的正向調整。 |
| 5 | Consumption (耗用) | 於生產或裝配過程中耗用原料或零組件,減少庫存。 |
| 6 | Output (產出) | 生產或裝配完成後產出成品或半成品,增加庫存。 |
| 7 | (空白) | 很少見,通常在某些特殊系統操作或客製化情境下可能出現,但實務中應避免。 |
| 8 | Assembly Consumption (裝配耗用) | 專門用於裝配單中耗用零組件,減少庫存。 |
| 9 | Assembly Output (裝配產出) | 專門用於裝配單中產出成品,增加庫存。 |
實用小提醒
- 正向/負向調整 (
Positive Adjmt./Negative Adjmt.):這主要用於非銷售、採購、移轉等標準流程的庫存調整,例如盤點差異、損壞報廢等,通常通過庫存日誌 (Item Journal) 進行過帳。 - 生產/裝配 (
Consumption/Output/Assembly Consumption/Assembly Output):這幾個選項用於追蹤製造業或裝配業的庫存變動,清楚區分原料的耗用與成品的產出。 - Item Ledger Entry (庫存總帳條目) 記錄的是數量的變動,而 Value Entry (價值條目) 記錄的是這些數量變動所對應的成本或價值變動。
自定義一個欄位和標準的 Item Ledger Entry Type 完全一樣
在 Business Central 的 AL 開發中,如果您要自定義一個欄位,並且讓它的選項(Option)清單和標準的 Item Ledger Entry Type 完全一樣,您有兩種主要的做法,其中第一種是推薦的做法。
推薦做法:使用 Enum Reference
標準的 Item Ledger Entry Type 已經在 Business Central 中被定義為一個 Enum (列舉) 物件。這是標準做法,可以確保您的欄位定義與標準系統保持同步,並且更容易維護。
步驟 1: 找到 Enum ID
標準的 Item Ledger Entry Type 對應的 Enum ID 是 78,它的名稱是 "Item Ledger Entry Type" (命名空間為 Microsoft.Inventory.Ledger.)。
步驟 2: 在您的表格中定義欄位
您應該將欄位類型直接指定為這個標準 Enum 的名稱。
AL 程式碼範例 (使用 Enum 參考)
table 50010 "My Custom Inventory Log"
{
fields
{
field(1; "Entry No."; Integer)
{
DataClassification = SystemMetadata;
}
// 這是您的自定義欄位定義
field(10; "Custom ILE Type"; Enum "Item Ledger Entry Type")
{
Caption = '自定義庫存類型';
DataClassification = ToBeClassified;
// 不需要 OptionMembers 或 OptionCaption
}
}
keys
{
key(PK; "Entry No.")
{
Clustered = true;
}
}
}優點:
- 同步性: 如果 Microsoft 在未來的版本中修改了標準的
Item Ledger Entry Type(例如新增或移除選項),您的自定義欄位會自動繼承這些變動。 - 一致性: 確保選項的數值 (0, 1, 2…) 和文字描述與標準欄位完全一致,減少錯誤。
- 簡潔性: 程式碼更簡潔,不需要冗長地重複選項清單。
替代做法:手動複製 OptionMembers
如果您由於某些原因(例如您的 BC 版本較舊,或者您需要修改部分選項但又想保留大部分)不能使用 Enum 參考,您可以手動複製選項清單。
步驟 1: 取得完整的 OptionMembers
您需要找到標準 Item Ledger Entry 表格 (Table 32) 中 Entry Type 欄位的完整 OptionMembers 和 OptionCaption。
根據標準定義,其選項清單如下:
| 數值 | OptionMember | OptionCaption (中文) |
| 0 | Purchase | 採購 |
| 1 | Sale | 銷貨 |
| 2 | Positive Adjmt. | 正向調整 |
| 3 | Negative Adjmt. | 負向調整 |
| 4 | Transfer | 移轉 |
| 5 | Consumption | 耗用 |
| 6 | Output | 產出 |
| 7 | ||
| 8 | Assembly Consumption | 裝配耗用 |
| 9 | Assembly Output | 裝配產出 |
步驟 2: 在您的表格中定義欄位
您需要將這些選項值填入您的 Option 欄位的 OptionMembers 和 OptionCaption 屬性中。
AL 程式碼範例 (手動複製)
table 50011 "My Custom Manual Log"
{
fields
{
field(1; "Entry No."; Integer)
{
DataClassification = SystemMetadata;
}
// 這是您的自定義欄位定義
field(10; "Manual ILE Type"; Option)
{
Caption = '手動定義庫存類型';
DataClassification = ToBeClassified;
// 複製 OptionMembers (英文值)
OptionMembers = Purchase,Sale,"Positive Adjmt.","Negative Adjmt.",Transfer,Consumption,Output," ", "Assembly Consumption", "Assembly Output";
// 複製 OptionCaption (中文值)
OptionCaption = '採購,銷貨,正向調整,負向調整,移轉,耗用,產出, ,裝配耗用,裝配產出';
}
}
// ...
}注意: 在
OptionMembers中,如果選項名稱包含特殊字符 (如句號.) 或空格,則必須使用雙引號 ("") 包裹,例如"Positive Adjmt."。選項之間的逗號不能有空格。
結論:
強烈建議使用做法一 (Enum 參考):field(10; "Custom ILE Type"; Enum "Item Ledger Entry Type"),因為它確保了最高的程式碼品質和未來的相容性。




