原文地址:openerp 6.0.2庫存業務
作者:igi1999 一、複式庫存(Double-Entry Stock Management)和庫存移動(Stock Move)
OpenERP的庫存管理採取了獨特的複式庫存(Double-Entry Stock Management)。什麼是複式庫存?就是每一筆庫存變動,同時記錄庫存減少和庫存增加。例如賣了10輛單車給客戶,OpenERP會在你的庫位(Location,這個概念後面再說)減去10輛單車,再在客戶庫位(Customers Location)增加10輛單車。因此,任何時候,OpenERP的所有庫位的庫存數量加起來總是為零。
系統中,複式庫存是通過記錄庫存移動(stock move)來實現的。例如,前面的賣10輛單車給客戶,系統記錄的是:
產品 |數量 | 源庫位 | 目標庫位
單車 | 10 | stock | Partner Locations > Customers
這條記錄的意思是,有10輛單車從自己的庫位(stock)轉移到了客戶的庫位(Partner Locations > Customers)。任何一筆庫存變動,系統中都記錄了一筆如此形式的庫存移動。在OE中,“庫存變動”的概念非常廣泛,如庫存檔點發現盤虧了2輛單車,系統記錄的是:
產品 |數量 | 源庫位 | 目標庫位
單車 | 2 | stock | Virtual Locations > Inventory Loss
這條記錄的意思是,有2輛單車從自己的庫位(stock)轉移到了“盤點庫位”(Virtual Locations > Inventory Loss)。反之,盤盈的話,就是從盤點庫位轉移到了stock。又如生產,生產領料系統記錄庫存移動:從原料庫位轉移到生產庫位(Produce Location)。成品入庫系統記錄庫存移動:從生產庫位(Produce Location)轉移到成品庫位。
二、實際庫存(Real Stock)和虛擬庫存(Virtual Stock or Future Stock)
系統中不記錄各庫位的產品庫存數量,只記錄庫存變動,那麼,怎麼知道某庫位中某產品的數量呢?這個其實很容易,例如單車在庫位A中的數量,移入庫位A(庫存移動的目標庫位是庫位A)使得單車數量增加,反之,移出使得單車數量減少。因此,只要統計單車的庫存移動記錄中,目標庫位為A的數量,以及源庫位為A的數量,兩者相減,即得到庫位A中單車的庫存數量。
現實中,庫存分實際庫存(Real Stock)和虛擬庫存(Virtual Stock or Future Stock)。實際庫存是庫位中實有數量,虛擬庫存是庫位中的將來數量。例如,採購時候,假設今天下單,採購物資要5天后到達。那麼,採購員考慮今天要不要下單,以及採購多少數量時候,他應該參考5天后的庫存數量來決定。在未來的5天中,有一部分產品已銷售出去,將在5天內出庫,還有一部分產品之前已下單(採購單或生產單),將在5天內入庫。實際庫存,加上未來一段時間將要入庫的數量,減去未來一段時間將要出庫的數量,就是虛擬庫存。注意,虛擬庫存的數量和時間相關,例如10天后的虛擬庫存顯然和5天后的虛擬庫存不同。
系統如何計算實際庫存和虛擬庫存呢?還是基於庫存移動記錄來計算,不過,要用到庫存移動記錄中的更多資訊。系統中實際記錄的庫存移動(Stock Move)記錄,還包括移動狀態和計劃移動日期、實際移動日期等欄位。統計實際庫存時,統計那些已經實際發生(移動狀態為Done)的庫存移動記錄的數量即得到。計算虛擬庫存時,統計那些實際已經發生的、以及將要發生(移動狀態為Valid,以及計劃移動日期在計算時間段內)但尚未發生(沒有實際移動日期)的移動記錄數量即得到。
三、倉庫(Warehouse)和庫位(Location)
倉庫是我們通常說的實際“倉庫”。一個實際倉庫中,通常分為若干貨區,如成品區、原料區、廢品區,貨區還分貨架、貨層等,貨區、貨架等形成樹狀階層,這個階層在OE中可以用庫位建模。
在OE的倉庫(Warehouse)設定中,一個倉庫分為三個庫位(Location):存貨庫位(Location Stock)、進貨庫位(Location Input)、出貨庫位(Location Output)。
存貨庫位:倉庫中存放貨物的貨區,下面還可按貨架、貨層等進一步細分。
進貨庫位:倉庫中收貨的暫存貨區,例如存放已收貨但尚未驗收的臨時存放區。簡單情況,不需要臨時收貨區,進貨庫位可以和存放庫位設定成同一個庫位。
出貨庫位:倉庫中發貨的暫存貨區,例如存放已發貨等待裝運的臨時存放區。簡單情況,不需要臨時發貨區,出貨庫位可以和存放庫位設定成同一個庫位。
庫位類似於倉庫裡面的貨區,用於存放產品(注意,OE的產品包括原料、消耗品、成品等一切物資)。庫存移動中記錄的源庫位、目標庫位都是庫位,不可用倉庫。OE的庫位概念非常靈活,可以是實際庫位(庫區),也可以是虛擬庫位。虛擬庫位是物理上不存在,僅用於複式庫存的庫存移動記錄的需要。例如,盤虧時候的庫存移動記錄,目標庫位是“盤點庫位”,該庫位就是一種虛擬庫位。OE的庫存移動概念非常廣泛,對應的庫位也有多種類型。
供應商庫位(Supplier Location): 用於從供應商處收貨時的庫存移動的源庫位,是一種虛擬庫位。
視圖庫位(View): 庫位樹狀結構的中間節點,用於組織庫位樹狀結構。該種視圖不可在庫存移動中使用,但可用於庫存統計,即統計其下面的各個庫位的總庫存。
內部庫位(Internal Location): 倉庫中實際存放貨物的庫位,即庫區。
客戶庫位(Customer Location): 用於供貨給客戶時的庫存移動的目標庫位,是一種虛擬庫位。
盤點庫位(Inventory): 用於盤虧時的目標庫位,或者盤盈時的源庫位。注意,新上OE系統時候也是從該庫位中“移動”產品至各庫位,以建立期初庫存。
補貨庫位(Procurement): 產品補貨單(Procurement Order,這個概念很重要,後面再講)引起的庫存移動的“臨時”源庫位或目標庫位。當系統初次產生補貨單時候,系統不能確定補貨的來源(不確定是通過購買還是通過生產補貨)。只有當系統運行完補貨調度計劃(Procurement Scheduler)後,才知道補貨來源。預設情況下,系統每天運行一次補貨調度計劃,當然,你可以在任何時候手動執行補貨調度計劃。補貨庫位用於初次產生的補貨單中的庫存移動。每當運行完補貨調度計劃後,該庫位庫存數量應為零。
生產庫位(Production): 生產時候,生產領料或成品入庫時候的目標庫位或源庫位,是一種虛擬庫位。
多公司中間庫位(Transit Location for Inter-Companies Transfers): 多公司時候,用於庫存移動時候的中間庫位。
四、庫位鏈(Location Chain)
OE的庫位間可以串聯起來形成庫位鏈。舉個簡單例子,你希望收到貨物後先進入質檢區,經質檢人員確認後再入庫。要實現這個業務,一個簡單辦法是利用庫位鏈。設定一個質檢庫位,該庫位連結到你的存貨庫位,每當貨物進入質檢庫位時候(系統記錄到一個目標庫位為質檢庫位的庫存移動),系統自動產生一個從質檢庫位到存貨庫位的移動單,要求質檢人員確認該單子。
庫位鏈中,從前一庫位到下一庫位的移動,有三種移動方式:
手動轉移(Manual Operation):系統自動產生一張到下一庫位的移動單,要求操作員確認後才實際移動。
自動轉移(Automatic Move):系統自動產生一張到下一庫位的移動單,不需要操作員確認,直接移動。此時通常還會指定庫鏈提前時間(Chaining Lead Time),該時間表示,貨物進入庫位後,等待該時間,再進入下一庫位。這個概念可以用於建模物流路徑結點及其時間。
自動跳移(Automatic No Step Added):系統不產生到下一庫位的移動單,而是直接修改原庫存移動的目標庫位為下一庫位。
可以利用OE靈活的庫位及庫位鏈的概念建模物流處理過程。如:
銷售發貨的多次確認:例如,系統預設的銷售發貨過程是兩次確認,一次是出庫前確認待發貨產品合格,其次是客戶收到貨物後聯絡客戶確認收貨無誤。第一次確認在銷售單確認時系統自動產生的裝箱單(Packing List,其內容是存貨庫位Stock到出貨庫位Output的庫存移動)上確認,第二次在第一次確認後產生的運輸單(Delivery Order,其內容是從出貨庫位Output到客戶庫位Cusomer的庫存移動)上確認。如果不需要第二次確認,那麼,只要將Output -> Customer設定成自動轉移庫位鏈,則第二次將自動移動,無需確認。
跟蹤貨物進出口的海運路徑:例如,假設某產品從美國公司A進口,A公司發貨後2天到達美國西岸港口,1個月後到達上海港口,5天后應到達公司倉庫。為了跟蹤該物流過程,可以建立庫位鏈:Supplier A -> 西岸港 -> 上海港 -> Input -> Stock,並設定該庫位鏈各環節的庫鏈提前時間,則系統可以自動產生庫存移動供使用者確認貨物是否按時到達各節點。
管理單個產品的物流路徑:安裝Location_Path模組後,OE支援為每個產品設定特定的物流路徑。
管理出租產品:例如某裝置A出租給某客戶A 3個月,可以為裝置A設定庫位鏈:Stock -> Output -> Customer A -> Input ->Stock,並將Customer A -> Input環節的庫鏈提前時間設定為3個月。這樣,系統將於3個月後自動產生庫存移動單供使用者確認裝置A是否按時歸還。
管理委託產品:委託產品是指,存放於客戶或供應商處,但產權屬於自己的產品,或者,存放於本公司倉庫,但產權不屬於本公司的產品。例如,對於產權屬於自己,但存放於客戶處的產品,可以在自己公司的總存貨庫位下設定一個“客戶庫位”,用於記錄該類產品庫存。
五、產品補貨(Procurement)
銷售缺貨時需要及時“補貨”,這個補貨過程在OE裡叫產品補貨(Procurement)。OE的補貨,是通過手動或自動產生補貨單(Procurement Order)來實現。有多種情況會引發補貨:
1)倉管員發現某產品庫存太低,他可以手動產生一張補貨單(Procurement Order)。在產品畫面,右邊有個“Make Procurement”連結,當查看庫存時發現產品庫存太低,可以點擊該連結手工填寫補貨單。
2)按庫存生產(Make to Stock)的產品,當該產品庫存低於最低庫存(minimum stock rules)時,系統會自動產生補貨單。系統有一個批處理Job,該Job會定期執行(預設為一天一次),該Job根據設定的最低庫存規則(minimum stock rules),如果庫存不夠時,自動產生補貨單。
3)接單後生產(Make to Order)的產品,確認銷售訂單時候,系統會自動產生補貨單。
4)按庫存生產(Make to Stock)的產品,根據主生產計劃(master production schedule)產生補貨單。
隨著補貨單的執行,系統會產生一系列的動作。如自動產生採購單(Purchase Order),自動產生製造單(Manufacturing Order),自動產生任務(Task)。具體採取什麼動作,取決於產品(Product)的供應方法(Supply Method)、補貨方法(Procurement Method)、產品類型(Product Type)三個屬性的設定。
OE支援兩種產品補貨方法:按庫存生產(Make to Stock)、接單後生產(Make to Order)。
按庫存生產(Make to Stock): 表示從倉庫取貨供給客戶的產品,如分銷商的情況,或者季節性產品。
接單後生產(Make to Order): 表示有銷售訂單時,根據訂單去採購或生產的產品,該種產品不會入庫。
OE支援兩種產品供應方法:生產(Produce)、購買(Buy)。
生產(Produce): 表示該產品通過自己生產來供應,或者該服務是通過內部資源來提供。
購買(Buy): 表示該產品或服務通過購買來供應。
OE支援三種產品類型:可庫存品(Stockable)、消耗品(Cosumable)、服務(Service)
可庫存品(Stockable):需要計量其庫存數量的物資,通常的有形產品都是該類型。
消耗品(Cosumable):不需要計量其庫存數量的物資,通常是低值易耗品,如小螺釘等。
服務(Service):非有形物,OE中將服務也看做產品。如諮詢服務、軟體開發服務。
對於可庫存產品,補貨單(Procurement Order)的後續動作:
補貨方法 | 供應方法(Produce) | 供應方法(Buy)
MTS | 等待 | 等待
MTO | 自動產生生產單 | 自動產生採購單
對於服務供應項目,補貨單(Procurement Order)的後續動作:
補貨方法 | 供應方法(Produce) | 供應方法(Buy)
MTS | - | -
MTO | 自動產生專案工作 | 自動產生服務外包合約
下面舉個複雜點的例子說明OE的補貨(Procurement)過程:
1)銷售出某MTO的產品A
2)銷售單(SO:Sale Order)確認時候,系統自動產生產品A的補貨單(PO:Procurement Order)
3)該PO導致系統產生產品A的製造單(MO:Manufacturing Order)
4)隨著該MO的執行,系統會根據BOM計算產品零組件的補貨單
5)零組件補貨單會導致系統產生庫間移動單(INT:Internal Moves,相當於領料單)
6)如果零組件是MTO的產品,該INT又會觸發新的PO及MO,如果該零組件是MTS的,且庫存不足領料數量,則系統將處於待料狀態(Waiting)
7)待料狀態下,等待一天后,最小庫存規則會自動引發該零組件的補貨單,該補貨單又會產生採購單(PO:Purchase Order)
8)採購員確認系統產生的採購單,且採購零組件入庫後,待料狀態結束,生產可以繼續進行。
從上述補貨過程可以看出,有多種原因會導致補貨過程中斷(Procurement Exception),補貨單會記錄導致異常的原因。設定錯誤是導致自動補貨異常的最常見原因。
產品未定義BOM(No bill of materials defined for production): 這種情況,需要定義BOM,或者將產品的供應方法改成購買(Buy)。
找不到採購單的供應商(No supplier available for a purchase): 這中情況是因為沒有定義產品的供應商,需要在Product介面的Supplier頁定義產品預設供應商。
找不到供應商的地址(No address defined on the supplier partner):這種情況,需要設定該供應商的地址,系統自動產生採購單時需要該地址。
庫存不足(No quantity available in stock):這種情況需要定義最小庫存規則,以使系統能夠自動補貨,或者手工錄入補貨單補足庫存。
六、庫存價值(stock valuation)
庫存價值計算比較難,財務經理給出的庫存價值往往和庫管經理給出的庫存價值相差很多,所謂庫存“兩張皮”現象。在OE中,非常巧妙的將“兩張皮”統一成了一張皮。OE中統一“兩張皮”的辦法是,每一筆庫存移動都會自動產生會計上的一筆庫存移動分錄。因為系統自動產生,避免了人為錯誤,故而會計分錄和庫存移動能夠保持一致,財務經理從會計分錄計算的庫存價值和庫管經理從庫存移動計算出的庫存價值總是相等的。
為了統一庫存價值的“兩張皮”,在OE中需要設定如下一些基礎參數:產品(Product)畫面的Stock Input Account、Stock Output Account,庫位(Location)畫面的Stock Input Account、Stock Output Account。
產品的Stock Input Account:該產品入庫時,入庫分錄的貸方。產品入庫時候,借方通常固定是“庫存商品”。
產品的Stock Output Account:該產品出庫時,出庫分錄的借方。產品出庫時候,貸方通常固定是“庫存商品”。
庫位的Stock Input Account:產品入該庫位時,入庫分錄的借方。該參數通常是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。但如果是“盤點庫位”或“生產庫位”,不要設定成“庫存商品”的二級科目,你可以設定該參數為“盤點庫”、“生產庫”,或者不設。
庫位的Stock Output Account:產品出該庫位時,出庫分錄的貸方。該參數通常也是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。
考慮如下例子,
產品“單車”的Stock Input Account=“外庫”,Stock Output Account=“外庫”
A庫位的Stock Input Account=“庫存商品 - A庫”,Stock Output Account=“庫存商品 - A庫”
盤點庫位的Stock Input Account=“盤庫”,Stock Output Account=“盤庫”
單車單價200元,期初單車庫存數量為0,依次發生業務:1)採購入庫單車10輛,入A庫位;2)銷售出庫單車5輛,從A庫出;3)月末盤點盤虧1輛單車。
當確認上述庫存移動時候,系統會自動產生如下會計分錄:
1)採購入庫
產品 |數量 | 源庫位 | 目標庫位
單車 | 10 | Supplier | A庫位
會計分錄
借:庫存商品 - A庫 2000
貸:外庫 2000
2)銷售出庫
產品 |數量 | 源庫位 | 目標庫位
單車 | 5 | A庫位 | Customer
會計分錄
借:外庫 1000
貸:庫存商品 - A庫 1000
3)盤虧
產品 |數量 | 源庫位 | 目標庫位
單車 | 1 | A庫位 | 盤點庫位
會計分錄
借:盤庫 200
貸:庫存商品 - A庫 200
從系統的記錄中,庫管經理很容易得出結論:A庫位4輛(10輛-5輛-1輛),盤點庫位1輛。
財務經理很容易得出結論:A庫位價值800元(2000元-1000元-200元),盤點庫位價值200元。
盤點庫位的價值表示盤虧了200元。 一天就寫這麼多,好樣的!
以下三處值得商榷:
倉庫是我們通常說的實際“倉庫”。一個實際倉庫中,通常分為若干貨區,如成品區、原料區、廢品區,貨區還分貨架、貨層等,貨區、貨架等形成樹狀階層,這個階層在OE中可以用庫位建模。
補貨庫位(Procurement): 產品補貨單(Procurement Order,這個概念很重要,後面再講)引起的庫存移動的“臨時”源庫位或目標庫位。當系統初次產生補貨單時候,系統不能確定補貨的來源(不確定是通過購買還是通過生產補貨)。只有當系統運行完補貨調度計劃(Procurement Scheduler)後,才知道補貨來源。預設情況下,系統每天運行一次補貨調度計劃,當然,你可以在任何時候手動執行補貨調度計劃。補貨庫位用於初次產生的補貨單中的庫存移動。
該庫位庫存數量應為零。是一種虛擬庫位。
按庫存生產(Make to Stock): 表示從倉庫取貨供給客戶的產品,如分銷商的情況,或者季節性產品。
接單後生產(Make to Order): 表示有銷售訂單時,根據訂單去採購或生產的產品,該種產品不會入庫。 樓上的大大也沒有寫哪些地方值得商榷。
五、產品補貨(Procurement)
銷售缺貨時需要及時“補貨”,這個補貨過程在OE裡叫產品補貨(Procurement)。OE的補貨,是通過手動或自動產生補貨單(Procurement Order)來實現。有多種情況會引發補貨:
1)倉管員發現某產品庫存太低,他可以手動產生一張補貨單(Procurement Order)。在產品畫面,右邊有個“Make Procurement”連結,當查看庫存時發現產品庫存太低,可以點擊該連結手工填寫補貨單。
2)按庫存生產(Make to Stock)的產品,當該產品庫存低於最低庫存(minimum stock rules)時,系統會自動產生補貨單。系統有一個批處理Job,該Job會定期執行(預設為一天一次),該Job根據設定的最低庫存規則(minimum stock rules),如果庫存不夠時,自動產生補貨單。
3)接單後生產(Make to Order)的產品,確認銷售訂單時候,系統會自動產生補貨單。
4)按庫存生產(Make to Stock)的產品,根據主生產計劃(master production schedule)產生補貨單。
疑問下:
1、為什麼2)跟4)有些不同呢,是否是2)的供應方法是buy而4)的供應方法為MRP?
2、產品補貨會自動產生補貨單,請問補貨單跟採購訂單是一樣的概念嗎?如果是一樣的,那麼,多張自動產生的補貨單中如果供應商相同,會不會合并採購呢?
向老大說明,OE還沒有用過,所以問的問題可能有點白,請見諒!
1、為什麼2)跟4)有些不同呢,是否是2)的供應方法是buy而4)的供應方法為MRP?
2)是系統自動運算產生補貨單,4)是在畫面“Master Procurement Schedule”上點擊按鈕“Procure Incoming Left”時候,系統產生的補貨單(系統計算“期末計劃庫存”與“實有庫存”之差額數量,產生補貨單補足差額)。“Master Procurement Schedule”表單用於物流主管計劃期間物流進出數量。該功能需要安裝模組Stock_Planning,訪問菜單是:Warehouse -> Stock Planning -> Master Procurement Schedule。
> 2、產品補貨會自動產生補貨單,請問補貨單跟採購訂單是一樣的概念嗎?如果是一樣的,那麼,多張自動產生的補貨單中如果供應商相同,會不會合并採購呢?
補貨單跟採購訂單不是一個概念,如果產品的供應方式是Buy,系統會根據補貨單會產生相應的採購單,如果產品供應方式是Produce,系統根據補貨單產生製造單(MO)。
由補貨單產生的採購單,系統不會自動將供應商相同的單子合并到一起,但有附加模組(merge_picking)允許使用者手工合并單子。 這裡值得商榷:庫位的Stock Input Account:產品入該庫位時,入庫分錄的借方。該參數通常是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。但如果是“盤點庫位”或“生產庫位”,不要設定成“庫存商品”的二級科目,你可以設定該參數為“盤點庫”、“生產庫”,或者不設。
庫位的Stock Output Account:產品出該庫位時,出庫分錄的貸方。該參數通常也是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。
------------------------------------------
6.0這裡和5.0不太一樣。
在5.0裡只能對庫位設定一個會計科目,也就是入庫出庫用同一個科目。
在6.0裡可以針對某個庫位的出庫和入庫分別設定科目。這樣就更靈活了。
在庫位上設定科目一般來說只適用於虛擬庫位。比如盤存、客戶、供應商、生產這些,而對物理庫位比如stock極其子庫位我們一般不設定科目。
- Re: OpenERP庫存管理的若干概念講解(新增庫存價值)« 回複 #6 於: 六月 06, 2011, 01:42:37 下午 »
- 引用
- Add Multi Quote
- Remove Multi Quote
1)採購入庫
產品 |數量 | 源庫位 | 目標庫位
單車 | 10 | Supplier | A庫位會計分錄
借:庫存商品 - A庫 2000
貸:外庫 2000
覺得會計分錄這樣怎麼樣
借:庫存商品 - A庫 2000
貸:物資採購 2000
註:中小企業的話直接就是
借:庫存商品 - A庫 2000
應交稅金-應交加值稅-進項稅金 340
貸:應付帳款 2340
2)銷售出庫
產品 |數量 | 源庫位 | 目標庫位
單車 | 5 | A庫位 | Customer
會計分錄
借:外庫 1000
貸:庫存商品 - A庫 1000
覺得會計分錄這樣怎麼樣
借:待發商品 1000
貸:庫存商品-A庫 1000
註:中小企業的話直接就是
借:主營業務成本 1000
貸:庫存商品-A庫 1000
3)盤虧
產品 |數量 | 源庫位 | 目標庫位
單車 | 1 | A庫位 | 盤點庫位
會計分錄
借:盤庫 200
貸:庫存商品 - A庫 200
這樣是不是更好:
借:待處理財產損益 200
貸:庫存商品-A庫 200謝謝魚(dquo)的專業意見,按魚的寫法,更符合專業財務要求。為了讓系統自動產生魚給出的分錄,系統的參數設定要改成:
產品“單車”的Stock Input Account=“物資採購”,Stock Output Account=“待發商品”
A庫位的Stock Input Account=“庫存商品 - A庫”,Stock Output Account=“庫存商品 - A庫”
盤點庫位的Stock Input Account=“待處理財產損益”,Stock Output Account=“待處理財產損益”。
另外,不建議採用中小企業的寫法,如:
註:中小企業的話直接就是
借:庫存商品 - A庫 2000
應交稅金-應交加值稅-進項稅金 340
貸:應付帳款 2340
原因是:採購過程,有多個經濟活動,一是採購下單,二是採購物資入庫,三是支付採購款。手工會計時候,為了方便,直接將多個活動的會計分錄合并,故而有中小企業的寫法。但現在分錄都是系統自動產生,不需要手寫,因而,分開成多個分錄更能詳細跟蹤經濟活動過程。即採購下單時讓系統自動產生分錄:
借:物資採購 2000
應交稅金-應交加值稅-進項稅金 340
貸:應付帳款 2340
採購物資入庫時讓系統自動產生分錄:
借:庫存商品 - A庫 2000
貸:物資採購 2000
實際付款時讓系統自動產生分錄:
借:應付賬款 2340
貸:銀行存款 2340
如何?