小王月底要結清帳,但最終能不能準時,還得看製造部的數字。
老張是製造部主管。每天早上,他站在產線前的大白板前,手裡那支快沒水的白板筆又擦又寫。
晚上 9 點,財務小王訊息追著來:「老張,哪些完工?哪些停工? 我月底報表交不出去啊!」
這些混亂,正是 MRP 沒落地 的日常;也是採購阿美、庫存小李、財務小王最後都卡在老張的原因。
資料要求過高:MRP 假設公司有完整 BOM / Routing / 產能配置,但很多中小廠的料號還停留在紙本或口頭傳承,甚至靠老師傅的記憶,一換人就斷線。
規劃過度理想:系統追求「最少換線、最高稼動率」,可現實是「老闆今天插一張急單,整個排程馬上重來」,模型一夜就崩。
導入與維護門檻高:顧問費、導入週期、人力維運都昂貴,最後很多廠無奈說:「系統有裝,但產線還是回到白板跟人工排班」。
BOM(物料清單):從「最小必要料」起步,逐步補完。
Routing(工藝路線):先登記主工站與節拍,不必一開始把每秒工序寫滿。
Lead Time(前置期):用「供應商承諾+安全天數」粗估,先跑再校正。
Make/Buy(自製/外包):一開始就標記,系統才能自動觸發採購或外包。
👉 :先能跑,再變好;不要等完美數據才上線。
逐步建立 BOM 與工單:可從銷售訂單直接產生工單,一邊生產一邊補資料。
瓶頸工站可視化:工單看板即時顯示進度,主管一眼看到瓶頸,不用猜。
輕量 APS:不追求「完美優化」,而是快速重排以應對急單。
與庫存/採購自動串接:工單建立即檢查原料需求,缺料自動觸發採購/調撥,避免開工當天才發現少一顆螺絲。
Odoo 製造模組多數功能屬 開箱即用:建 BOM、產生工單、看板排程、缺料提醒裝好就能用。
SME 不必等資料完備才導入,而是先跑起來、邊做邊校正——這就是 Odoo 與傳統 MRP 的最大差異:低門檻、務實可行的起步方案。
不會寫程式也沒關係,這功能在 Odoo 製造模組裡本來就能從介面操作。下面只是展示如何用程式把缺料數據一次抓出來,給老張早會 3 分鐘用。
👉 用法:在 Odoo 主機上開啟 odoo-bin shell -d your_db
後,貼上即可。
from pprint import pprint
def get_mo_shortages(env, mo_id):
mo = env['mrp.production'].browse(mo_id).exists()
mo.ensure_one()
shortages = []
for mv in mo.move_raw_ids: # 原料需求
need = mv.product_uom_qty or 0.0
reserved = mv.reserved_availability or 0.0
short = max(0, need - reserved) # 確保不會出現負數
if short > 0:
shortages.append({
"product_code": mv.product_id.default_code or "",
"product_name": mv.product_id.display_name,
"uom": mv.product_uom.name,
"need": need,
"reserved": reserved,
"short": short,
})
return shortages
# 示範抓一張在製工單
mo = env['mrp.production'].search([('state','in',('confirmed','progress'))], limit=1)
if mo:
pprint(get_mo_shortages(env, mo.id))
else:
print("沒有在製工單。")
📌 範例輸出(假設工單缺 10 顆螺絲):
工單 MO0001 缺料清單:
[{'product_code': 'SCREW-01',
'product_name': '螺絲 M3',
'uom': 'pcs',
'need': 100,
'reserved': 90,
'short': 10}]
Odoo 讓老張不必再擦白板重排,缺料自動提醒、瓶頸一眼可見,
工單能照節拍推進,生產終於回到可控的節奏。
👉 不過,工單一旦重排,加班就少不了。製造部的工單問題解決了,但壓力卻落在人資這一端。下一篇,我們就跟著人資芳芳,看看 Odoo HR 如何把這些臨時班表,轉化為透明又合規的出勤與薪資。