Odoo 19 庫存計價深度解析:告別 SVL 與重塑永續盤存架構

Odoo 19 庫存計價深度解析:告別 SVL 與重塑永續盤存架構

Odoo 19 在庫存計價上做了大的底層變革:徹底移除 stock.valuation.layer 表。這不只是效能優化,更是對「永續盤存」邏輯的重新定義。本文將解析 18 與 19 版本的核心差異,並分享如何透過開源模組找回消失的設定。


如果你還在 Odoo 19 的資料庫裡搜尋 stock.valuation.layer (SVL),或是苦尋會計設定中那顆熟悉的 「Anglo-Saxon Accounting」開關,19版本已不存在,這正代表你正見證 Odoo 史上重大的成本會計變革。這一次,庫存計價架構迎來了徹底簡化,正大步向「一體化發票觸發 (at invoicing)」的全新時代邁進。

核心觀點:Odoo 19 的「去 SVL 化」是一場效能與邏輯的雙重革命

SVL 調整由一個視圖來管理,讓用戶能彈性選擇是否使用,並取消了庫存計價的「自動」分錄,直接將貨務價值存儲在 stock.move (SM) 紀錄中。

這項改變意味著,以前習慣的「自動分錄」已不存在,但也挑戰了許多資深顧問的對帳習慣。

Odoo 19 變革

實戰舉例:採購原料的分錄對照表

讓我們用具體的例子來看 Odoo 19 在不同模式下的表現,這能幫助你更清晰地理解底層運作。首先,我們將前年我自己出版書籍中的分錄差異整理如下表,方便進行對照:

項目永續盤存制 (Perpetual)定期盤存制 (Periodic)
盤存制度永續盤存制定期盤存制
對應成本Anglo Saxon歐陸會計 (Continental)
採購入庫 (庫存計價)借:1231-商品
貸:2179-暫估應付帳款
(不產生庫存計價分錄)
採購入庫 (應付請款)借:2179-暫估應付帳款
貸:2171-應付帳款
借:5101-進貨
貸:2171-應付帳款
銷售出貨 (庫存計價)借:1239-已出貨待驗收
貸:1235-製成品
(不產生庫存計價分錄)
銷售出貨 (應收請款)借:1191-應收帳款
 貸:4111-銷貨收入
借:5111-銷貨成本
 貸:1239-已出貨待驗收
借:1191-應收帳款
 貸:4111-銷貨收入
期末盤點 / 結轉(盤盈時)
借:1231-商品
 貸:7485-存貨盤盈
(月底/年底結轉銷貨成本)
借:5111-銷貨成本
  5123-進貨退出及折讓
 貸:5113-期初存貨
   5100-進貨
借:5114-期末存貨
 貸:5111-銷貨成本

實操指南:設定牆 (Configuration Wall)

這裡將兩種盤存制的設定流程整理為「設定牆」,因為在 Odoo 19 中,大部分的底層邏輯已經自動化,我們只需確保關鍵開關配置正確即可。

1. 定期盤存制 (Periodic - at Closing)

定期盤存制適合習慣平時先進費用,待期末再一併結轉至資產的企業;只需在設定中確認計價模式與類別科目,系統即可在背景自動記錄貨物價值,並於結轉時補足會計分錄。

2026-Setup-會計設定
2026-Category-產品類別
2026-Execution-單據執行
2026-Value-價值檢視
2026-Closing-期末結轉

2. 永續盤存制 (Perpetual - at Invoicing)

此模式下所有的庫存價值變動都會在「確認發票/帳單」時即時觸發資產入帳,確保財務價值與實際庫存緊密對齊。

2026-Setup-系統設定
2026-Category-類別配置
2026-Invoicing-發票確認
2026-Tracking-價值追蹤

補充說明:定期盤存制的自動結轉排程機制

在 Odoo 19 中,如果您不想每次都手動執行結轉,可以設定按「手動、每日或每月」自動執行。 庫存價值匯計排程 (Stock Account: Inventory Valuation Closing): 負責在背景掃描所有尚未結轉的 stock.move,並計算其對應的價值(Value),確保數據的準確性與即時性。

定期結轉排程設定

IMPORTANT

重要觀念釐清:每月結轉 vs. 月加權平均

可能有些人會以為「每月結轉」會聯想到台灣成本結算的 「月加權平均 (Monthly Weighted Average)」

但請注意:Odoo 19 的「定期盤存 (Periodic)」底層依然是根據產品設定的移動平均 (AVCO)FIFO 進行即時成本計算。每一筆移轉 (Stock Move) 在發生時就已經算好了當下的價值,只是系統「延後」到月底才幫你把這些碎散的數值加總成一筆會計分錄。

換句話說,這只是會計分錄的「匯計」,而非重新分配整個月成本的「計算」。如果您所在的產業嚴格要求月加權(分母為全月進貨總量),仍需透過客製模組或報表調整來達成。


社群版計價設定開源模組分享:cx_inventory_valuation

一如既往,ODOO19社群版的一些核心的成本法與盤存制設定從前端「隱藏」了,甚至連定期盤存必要的「結轉選單」都極其難找。

透過一系列的除錯與研究,參考企業版的介面位置,開發了一個 Odoo 19 社群版的增強模組:cx_inventory_valuation

為了讓大家也能測試看看,我已經將該模組推送到 GitHub 共用空間,大家可以直接下載使用: 👉 GitHub: odoo-share-module

模組核心功能:

  1. 找回消失的設定:在會計設定介面,直接顯示庫存計價與成本法的設定區塊。
  2. 快捷結轉選單:在會計「報告」下新增「庫存計價」入口(對應 /stock-valuation-closing 動態報告)。
cx 模組展示 2

迎接更乾淨的 Odoo 19 計價時代

總結來說,Odoo 19 原生功能對於台灣特殊的成本計算需求並未帶來直接的「利多」,但從產品架構的瘦身與效能優化中,我們看到了 Odoo 追求卓越的決心

然而,身為顧問,我依然認為「收貨即時產生計價分錄」機制的淡化有些可惜。那曾是一個非常直觀且有效的過渡核對機制;未來在 19 版中,我們可能需要透過更完善的報表體系,來補足期末結帳時的帳務檢核點。

值得期待的是,由於 19 版的底層關聯與架構更加單純,我去年所開發的月加權平均計算功能,在這一代應該能更高效地實現。


參考資料 (References)