一、復式庫存(DOUBLE-ENTRY STOCK MANAGEMENT)和庫存移動(STOCK MOVE)
OpenERP的庫存管理采取了獨特的復式庫存(Double-Entry Stock Management)。什么是復式庫存?就是每一筆庫存變動,同時記錄庫存減少和庫存增加。例如賣了10輛自行車給客戶,OpenERP會在你的庫位(Location,這個概念后面再說)減去10輛自行車,再在客戶庫位(Customers Location)增加10輛自行車。因此,任何時候,OpenERP的所有庫位的庫存數(shù)量加起來總是為零。
系統(tǒng)中,復式庫存是通過記錄庫存移動(stock move)來實現(xiàn)的。例如,前面的賣10輛自行車給客戶,系統(tǒng)記錄的是:
產品 |數(shù)量 | 源庫位 | 目標庫位
自行車 | 10 | stock | Partner Locations > Customers
這條記錄的意思是,有10輛自行車從自己的庫位(stock)轉移到了客戶的庫位(Partner Locations > Customers)。任何一筆庫存變動,系統(tǒng)中都記錄了一筆如此形式的庫存移動。在OE中,“庫存變動”的概念非常廣泛,如庫存盤點發(fā)現(xiàn)盤虧了2輛自行車,系統(tǒng)記錄的是:
產品 |數(shù)量 | 源庫位 | 目標庫位
自行車 | 2 | stock | Virtual Locations > Inventory Loss
這條記錄的意思是,有2輛自行車從自己的庫位(stock)轉移到了“盤點庫位”(Virtual Locations > Inventory Loss)。反之,盤盈的話,就是從盤點庫位轉移到了stock。又如生產,生產領料系統(tǒng)記錄庫存移動:從原料庫位轉移到生產庫位(Produce Location)。成品入庫系統(tǒng)記錄庫存移動:從生產庫位(Produce Location)轉移到成品庫位。
二、實際庫存(REAL STOCK)和虛擬庫存(VIRTUAL STOCK OR FUTURE STOCK)
系統(tǒng)中不記錄各庫位的產品庫存數(shù)量,只記錄庫存變動,那么,怎么知道某庫位中某產品的數(shù)量呢?這個其實很容易,例如自行車在庫位A中的數(shù)量,移入庫位A(庫存移動的目標庫位是庫位A)使得自行車數(shù)量增加,反之,移出使得自行車數(shù)量減少。因此,只要統(tǒng)計自行車的庫存移動記錄中,目標庫位為A的數(shù)量,以及源庫位為A的數(shù)量,兩者相減,即得到庫位A中自行車的庫存數(shù)量。
現(xiàn)實中,庫存分實際庫存(Real Stock)和虛擬庫存(Virtual Stock or Future Stock)。實際庫存是庫位中實有數(shù)量,虛擬庫存是庫位中的將來數(shù)量。例如,采購時候,假設今天下單,采購物資要5天后到達。那么,采購員考慮今天要不要下單,以及采購多少數(shù)量時候,他應該參考5天后的庫存數(shù)量來決定。在未來的5天中,有一部分產品已銷售出去,將在5天內出庫,還有一部分產品之前已下單(采購單或生產單),將在5天內入庫。實際庫存,加上未來一段時間將要入庫的數(shù)量,減去未來一段時間將要出庫的數(shù)量,就是虛擬庫存。注意,虛擬庫存的數(shù)量和時間相關,例如10天后的虛擬庫存顯然和5天后的虛擬庫存不同。
系統(tǒng)如何計算實際庫存和虛擬庫存呢?還是基于庫存移動記錄來計算,不過,要用到庫存移動記錄中的更多信息。系統(tǒng)中實際記錄的庫存移動(Stock Move)記錄,還包括移動狀態(tài)和計劃移動日期、實際移動日期等字段。統(tǒng)計實際庫存時,統(tǒng)計那些已經實際發(fā)生(移動狀態(tài)為Done)的庫存移動記錄的數(shù)量即得到。計算虛擬庫存時,統(tǒng)計那些實際已經發(fā)生的、以及將要發(fā)生(移動狀態(tài)為Valid,以及計劃移動日期在計算時間段內)但尚未發(fā)生(沒有實際移動日期)的移動記錄數(shù)量即得到。
三、倉庫(WAREHOUSE)和庫位(LOCATION)
倉庫是我們通常說的實際“倉庫”。一個實際倉庫中,通常分為若干貨區(qū),如成品區(qū)、原料區(qū)、廢品區(qū),貨區(qū)還分貨架、貨層等,貨區(qū)、貨架等形成樹狀層次結構,這個層次結構在OE中可以用庫位建模。
在OE的倉庫(Warehouse)設置中,一個倉庫分為三個庫位(Location):存貨庫位(Location Stock)、進貨庫位(Location Input)、出貨庫位(Location Output)。
存貨庫位:倉庫中存放貨物的貨區(qū),下面還可按貨架、貨層等進一步細分。
進貨庫位:倉庫中收貨的暫存貨區(qū),例如存放已收貨但尚未驗收的臨時存放區(qū)。簡單情況,不需要臨時收貨區(qū),進貨庫位可以和存放庫位設置成同一個庫位。
出貨庫位:倉庫中發(fā)貨的暫存貨區(qū),例如存放已發(fā)貨等待裝運的臨時存放區(qū)。簡單情況,不需要臨時發(fā)貨區(qū),出貨庫位可以和存放庫位設置成同一個庫位。
庫位類似于倉庫里面的貨區(qū),用于存放產品(注意,OE的產品包括原料、消耗品、成品等一切物資)。庫存移動中記錄的源庫位、目標庫位都是庫位,不可用倉庫。OE的庫位概念非常靈活,可以是實際庫位(庫區(qū)),也可以是虛擬庫位。虛擬庫位是物理上不存在,僅用于復式庫存的庫存移動記錄的需要。例如,盤虧時候的庫存移動記錄,目標庫位是“盤點庫位”,該庫位就是一種虛擬庫位。OE的庫存移動概念非常廣泛,對應的庫位也有多種類型。
供應商庫位(Supplier Location): 用于從供應商處收貨時的庫存移動的源庫位,是一種虛擬庫位。
視圖庫位(View): 庫位樹狀結構的中間節(jié)點,用于組織庫位樹狀結構。該種視圖不可在庫存移動中使用,但可用于庫存統(tǒng)計,即統(tǒng)計其下面的各個庫位的總庫存。
內部庫位(Internal Location): 倉庫中實際存放貨物的庫位,即庫區(qū)。
客戶庫位(Customer Location): 用于供貨給客戶時的庫存移動的目標庫位,是一種虛擬庫位。
盤點庫位(Inventory): 用于盤虧時的目標庫位,或者盤盈時的源庫位。注意,新上OE系統(tǒng)時候也是從該庫位中“移動”產品至各庫位,以建立期初庫存。
補貨庫位(Procurement): 產品補貨單(Procurement Order,這個概念很重要,后面再講)引起的庫存移動的“臨時”源庫位或目標庫位。當系統(tǒng)初次生成補貨單時候,系統(tǒng)不能確定補貨的來源(不確定是通過購買還是通過生產補貨)。只有當系統(tǒng)運行完補貨調度計劃(Procurement Scheduler)后,才知道補貨來源。默認情況下,系統(tǒng)每天運行一次補貨調度計劃,當然,你可以在任何時候手動執(zhí)行補貨調度計劃。補貨庫位用于初次生成的補貨單中的庫存移動。每當運行完補貨調度計劃后,該庫位庫存數(shù)量應為零。
生產庫位(Production): 生產時候,生產領料或成品入庫時候的目標庫位或源庫位,是一種虛擬庫位。
多公司中間庫位(Transit Location for Inter-Companies Transfers): 多公司時候,用于庫存移動時候的中間庫位。
四、庫位鏈(LOCATION CHAIN)
OE的庫位間可以串聯(lián)起來形成庫位鏈。舉個簡單例子,你希望收到貨物后先進入質檢區(qū),經質檢人員確認后再入庫。要實現(xiàn)這個業(yè)務,一個簡單辦法是利用庫位鏈。設置一個質檢庫位,該庫位鏈接到你的存貨庫位,每當貨物進入質檢庫位時候(系統(tǒng)記錄到一個目標庫位為質檢庫位的庫存移動),系統(tǒng)自動生成一個從質檢庫位到存貨庫位的移動單,要求質檢人員確認該單子。
庫位鏈中,從前一庫位到下一庫位的移動,有三種移動方式:
手動轉移(Manual Operation):系統(tǒng)自動生成一張到下一庫位的移動單,要求操作員確認后才實際移動。
自動轉移(Automatic Move):系統(tǒng)自動生成一張到下一庫位的移動單,不需要操作員確認,直接移動。此時通常還會指定庫鏈提前時間(Chaining Lead Time),該時間表示,貨物進入庫位后,等待該時間,再進入下一庫位。這個概念可以用于建模物流路徑結點及其時間。
自動跳移(Automatic No Step Added):系統(tǒng)不生成到下一庫位的移動單,而是直接修改原庫存移動的目標庫位為下一庫位。
可以利用OE靈活的庫位及庫位鏈的概念建模物流處理過程。如:
銷售發(fā)貨的多次確認:例如,系統(tǒng)默認的銷售發(fā)貨過程是兩次確認,一次是出庫前確認待發(fā)貨產品合格,其次是客戶收到貨物后聯(lián)系客戶確認收貨無誤。第一次確認在銷售單確認時系統(tǒng)自動產生的裝箱單(Packing List,其內容是存貨庫位Stock到出貨庫位Output的庫存移動)上確認,第二次在第一次確認后產生的運輸單(Delivery Order,其內容是從出貨庫位Output到客戶庫位Cusomer的庫存移動)上確認。如果不需要第二次確認,那么,只要將Output -> Customer設置成自動轉移庫位鏈,則第二次將自動移動,無需確認。
跟蹤貨物進出口的海運路徑:例如,假設某產品從美國公司A進口,A公司發(fā)貨后2天到達美國西岸港口,1個月后到達上海港口,5天后應到達公司倉庫。為了跟蹤該物流過程,可以建立庫位鏈:Supplier A -> 西岸港 -> 上海港 -> Input -> Stock,并設置該庫位鏈各環(huán)節(jié)的庫鏈提前時間,則系統(tǒng)可以自動產生庫存移動供用戶確認貨物是否按時到達各節(jié)點。
管理單個產品的物流路徑:安裝Location_Path模塊后,OE支持為每個產品設置特定的物流路徑。
管理出租產品:例如某設備A出租給某客戶A 3個月,可以為設備A設置庫位鏈:Stock -> Output -> Customer A -> Input ->Stock,并將Customer A -> Input環(huán)節(jié)的庫鏈提前時間設置為3個月。這樣,系統(tǒng)將于3個月后自動產生庫存移動單供用戶確認設備A是否按時歸還。
管理委托產品:委托產品是指,存放于客戶或供應商處,但產權屬于自己的產品,或者,存放于本公司倉庫,但產權不屬于本公司的產品。例如,對于產權屬于自己,但存放于客戶處的產品,可以在自己公司的總存貨庫位下設置一個“客戶庫位”,用于記錄該類產品庫存。
五、產品補貨(PROCUREMENT)
銷售缺貨時需要及時“補貨”,這個補貨過程在OE里叫產品補貨(Procurement)。OE的補貨,是通過手動或自動生成補貨單(Procurement Order)來實現(xiàn)。有多種情況會引發(fā)補貨:
1)倉管員發(fā)現(xiàn)某產品庫存太低,他可以手動生成一張補貨單(Procurement Order)。在產品畫面,右邊有個“Make Procurement”鏈接,當查看庫存時發(fā)現(xiàn)產品庫存太低,可以點擊該鏈接手工填寫補貨單。
2)按庫存生產(Make to Stock)的產品,當該產品庫存低于最低庫存(minimum stock rules)時,系統(tǒng)會自動生成補貨單。系統(tǒng)有一個批處理Job,該Job會定期執(zhí)行(默認為一天一次),該Job根據(jù)設定的最低庫存規(guī)則(minimum stock rules),如果庫存不夠時,自動生成補貨單。
3)按訂單生產(Make to Order)的產品,確認銷售訂單時候,系統(tǒng)會自動生成補貨單。
4)按庫存生產(Make to Stock)的產品,根據(jù)主生產計劃(master production schedule)生成補貨單。
隨著補貨單的執(zhí)行,系統(tǒng)會產生一系列的動作。如自動生成采購單(Purchase Order),自動生成制造單(Manufacturing Order),自動生成任務(Task)。具體采取什么動作,取決于產品(Product)的供應方法(Supply Method)、補貨方法(Procurement Method)、產品類型(Product Type)三個屬性的設置。
OE支持兩種產品補貨方法:按庫存生產(Make to Stock)、按訂單生產(Make to Order)。
按庫存生產(Make to Stock): 表示從倉庫取貨供給客戶的產品,如分銷商的情況,或者季節(jié)性產品。
按訂單生產(Make to Order): 表示有銷售訂單時,根據(jù)訂單去采購或生產的產品,該種產品不會入庫。
OE支持兩種產品供應方法:生產(Produce)、購買(Buy)。
生產(Produce): 表示該產品通過自己生產來供應,或者該服務是通過內部資源來提供。
購買(Buy): 表示該產品或服務通過購買來供應。
OE支持三種產品類型:可庫存品(Stockable)、消耗品(Cosumable)、服務(Service)
可庫存品(Stockable):需要計量其庫存數(shù)量的物資,通常的有形產品都是該類型。
消耗品(Cosumable):不需要計量其庫存數(shù)量的物資,通常是低值易耗品,如小螺釘?shù)取?/p>
服務(Service):非有形物,OE中將服務也看做產品。如咨詢服務、軟件開發(fā)服務。
對于可庫存產品,補貨單(Procurement Order)的后續(xù)動作:
補貨方法 | 供應方法(Produce) | 供應方法(Buy)
MTS | 等待 | 等待
MTO | 自動生成生產單 | 自動生成采購單
對于服務產品,補貨單(Procurement Order)的后續(xù)動作:
補貨方法 | 供應方法(Produce) | 供應方法(Buy)
MTS | - | -
MTO | 自動生成項目任務 | 自動生成服務外包合同
下面舉個復雜點的例子說明OE的補貨(Procurement)過程:
1)銷售出某MTO的產品A
2)銷售單(SO:Sale Order)確認時候,系統(tǒng)自動生成產品A的補貨單(PO:Procurement Order)
3)該PO導致系統(tǒng)生成產品A的制造單(MO:Manufacturing Order)
4)隨著該MO的執(zhí)行,系統(tǒng)會根據(jù)BOM計算產品零部件的補貨單
5)零部件補貨單會導致系統(tǒng)生成庫間移動單(INT:Internal Moves,相當于領料單)
6)如果零部件是MTO的產品,該INT又會觸發(fā)新的PO及MO,如果該零部件是MTS的,且?guī)齑娌蛔泐I料數(shù)量,則系統(tǒng)將處于待料狀態(tài)(Waiting)
7)待料狀態(tài)下,等待一天后,最小庫存規(guī)則會自動引發(fā)該零部件的補貨單,該補貨單又會產生采購單(PO:Purchase Order)
8)采購員確認系統(tǒng)生成的采購單,且采購零部件入庫后,待料狀態(tài)結束,生產可以繼續(xù)進行。
從上述補貨過程可以看出,有多種原因會導致補貨過程中斷(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):這種情況,需要設置該供應商的地址,系統(tǒng)自動生成采購單時需要該地址。
庫存不足(No quantity available in stock):這種情況需要定義最小庫存規(guī)則,以使系統(tǒng)能夠自動補貨,或者手工錄入補貨單補足庫存。
六、庫存價值(STOCK VALUATION)
庫存價值計算比較難,財務經理給出的庫存價值往往和庫管經理給出的庫存價值相差很多,所謂庫存“兩張皮”現(xiàn)象。在OE中,非常巧妙的將“兩張皮”統(tǒng)一成了一張皮。OE中統(tǒng)一“兩張皮”的辦法是,每一筆庫存移動都會自動生成會計上的一筆庫存移動分錄。因為系統(tǒng)自動生成,避免了人為錯誤,故而會計分錄和庫存移動能夠保持一致,財務經理從會計分錄計算的庫存價值和庫管經理從庫存移動計算出的庫存價值總是相等的。
為了統(tǒng)一庫存價值的“兩張皮”,在OE中需要設置如下一些基礎參數(shù):產品(Product)畫面的Stock Input Account、Stock Output Account,庫位(Location)畫面的Stock Input Account、Stock Output Account。
產品的Stock Input Account:該產品入庫時,入庫分錄的貸方。產品入庫時候,借方通常固定是“庫存商品”。
產品的Stock Output Account:該產品出庫時,出庫分錄的借方。產品出庫時候,貸方通常固定是“庫存商品”。
庫位的Stock Input Account:產品入該庫位時,入庫分錄的借方。該參數(shù)通常是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。但如果是“盤點庫位”或“生產庫位”,不要設置成“庫存商品”的二級科目,你可以設置該參數(shù)為“盤點庫”、“生產庫”,或者不設。
庫位的Stock Output Account:產品出該庫位時,出庫分錄的貸方。該參數(shù)通常也是“庫存商品”下的以庫位名命名的二級科目,如“A庫”。
考慮如下例子,
產品“自行車”的Stock Input Account=“外庫”,Stock Output Account=“外庫”
A庫位的Stock Input Account=“庫存商品 - A庫”,Stock Output Account=“庫存商品 - A庫”
盤點庫位的Stock Input Account=“盤庫”,Stock Output Account=“盤庫”
自行車單價200元,期初自行車庫存數(shù)量為0,依次發(fā)生業(yè)務:1)采購入庫自行車10輛,入A庫位;2)銷售出庫自行車5輛,從A庫出;3)月末盤點盤虧1輛自行車。
當確認上述庫存移動時候,系統(tǒng)會自動生成如下會計分錄:
1)采購入庫
產品 |數(shù)量 | 源庫位 | 目標庫位
自行車 | 10 | Supplier | A庫位
會計分錄
借:庫存商品 - A庫 2000
貸:外庫 2000
2)銷售出庫
產品 |數(shù)量 | 源庫位 | 目標庫位
自行車 | 5 | A庫位 | Customer
會計分錄
借:外庫 1000
貸:庫存商品 - A庫 1000
3)盤虧
產品 |數(shù)量 | 源庫位 | 目標庫位
自行車 | 1 | A庫位 | 盤點庫位
會計分錄
借:盤庫 200
貸:庫存商品 - A庫 200
從系統(tǒng)的記錄中,庫管經理很容易得出結論:A庫位4輛(10輛-5輛-1輛),盤點庫位1輛。
財務經理很容易得出結論:A庫位價值800元(2000元-1000元-200元),盤點庫位價值200元。
盤點庫位的價值表示盤虧了200元。