Business Central (BC) 中,Value Entries (價值分錄) 與 General Ledger Entries (總帳分錄)之間的關連

在 Business Central (BC) 中,Value Entries (價值分錄)General Ledger Entries (總帳分錄) 之間存在一個明確的關聯,這對於庫存 (Inventory) 成本核算和總帳和解 (Reconciliation) 至關重要。

關聯的本質

Value Entries 專門記錄庫存價值的變動,而 General Ledger Entries 則記錄財務總帳的變動。

  1. Value Entries (價值分錄 – Table 5802)
    • 用途:記錄庫存交易(例如:採購入庫、銷貨出庫、調整)所引起的庫存金額變化。
    • 內容:包含成本金額、過帳日期、庫存過帳群組等細節,但不直接包含總帳科目號碼。
  2. 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) 功能

  1. 從 General Ledger Entries (總帳分錄) 追溯到 Value Entries (價值分錄)
    • 打開 General Ledger Entries 頁面。
    • 選取一筆與庫存相關的總帳條目(例如:庫存科目或銷貨成本科目)。
    • 使用功能區的 導覽 (Navigate) 功能,系統會顯示所有相關聯的條目,其中就包括 Value Entries
    • 或者,在選定的總帳條目上,您可以直接點擊或查看相關聯的 Value Entries (在舊版或部分介面中可能會有直接的選項/按鈕)。
  2. 從 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)英文名稱說明
0Purchase (採購)透過採購單/採購發票等文件進行的商品入庫,增加庫存。
1Sale (銷貨)透過銷貨單/銷貨發票等文件進行的商品出庫,減少庫存。
2Positive Adjmt. (正向調整)透過庫存日誌盤點進行的正面調整,增加庫存數量。
3Negative Adjmt. (負向調整)透過庫存日誌盤點進行的負面調整,減少庫存數量。
4Transfer (移轉)透過移轉單在不同地點 (Location) 之間移動庫存,通常是 A 地點的負向調整對應 B 地點的正向調整。
5Consumption (耗用)生產裝配過程中耗用原料或零組件,減少庫存。
6Output (產出)生產裝配完成後產出成品或半成品,增加庫存。
7(空白)很少見,通常在某些特殊系統操作或客製化情境下可能出現,但實務中應避免。
8Assembly Consumption (裝配耗用)專門用於裝配單中耗用零組件,減少庫存。
9Assembly 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 參考)

C
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 欄位的完整 OptionMembersOptionCaption

根據標準定義,其選項清單如下:

數值OptionMemberOptionCaption (中文)
0Purchase採購
1Sale銷貨
2Positive Adjmt.正向調整
3Negative Adjmt.負向調整
4Transfer移轉
5Consumption耗用
6Output產出
7
8Assembly Consumption裝配耗用
9Assembly Output裝配產出

步驟 2: 在您的表格中定義欄位

您需要將這些選項值填入您的 Option 欄位的 OptionMembersOptionCaption 屬性中。

AL 程式碼範例 (手動複製)

C
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"),因為它確保了最高的程式碼品質和未來的相容性。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


內容索引