https://www.zhiyunerp.com/forum/erp-1/question/odoo-group-id-536
全面解析Odoo的補貨、補貨組(group_id)、補貨規則
- SO、PO、Procurement、Stock Picking、Stock Move、Production Order、補貨規則(procurement.rule)幾個對象上都有補貨組(group_id)字段
- SO確認時候,如果SO上沒有填寫group_id,系統自動以SO單號為名創建一個補貨組作為SO的補貨組(同時SO上的partner_id字段值也作為該補貨組的partner_id值)
- PO確認時候,如果PO上沒有填寫group_id,系統自動以PO單號為名創建一個補貨組作為PO的補貨組(同時SO上的partner_id字段值也作為該補貨組的partner_id值)
- SO確認時候,系統為每個Order Line創建一個Procurement Order,Procurement Order的group_id取自SO的補貨組。如果SO Order Line上指定了補貨規則,該規則傳遞到Procurement Order的補貨規則(rule_id)
- PO確認時候,創建采購入庫的Picking,該Picking及其Stock Move的group_id都取自PO
- Procurement Order確認時候,如果Procurement Order沒有規則,則系統自動查找合適的規則作為Procurement Order的規則。而后根據規則采取不同的處理方法。
- 補貨規則(procurement.rule)的處理。如果是移庫規則,系統自動產生一條Stock Move,如果是購買的規則,系統自動產生一個PO,如果是制造的規則,系統自動產生一個MO。
- 如果規則的group_propagation_option字段取值為 propagate,則Procurement Order的group_id會被傳遞到新產生的后續單據(Stock Move、PO、MO),如果為fixed,則將規則上的指定的補貨組傳遞給后續單據,如果為空,則不往下傳遞group_id
- 如果規則的procre_method字段是mto(只有移庫規則有此選項),則規則進一步產生新的Procurement Order。新的Procurement Order的取值基本上全來自產生該Procurement Order的移庫Stock Move。其產生邏輯是,Stock Move confirm時候,系統會查找源庫位、目標庫位和該Stock Move相同的補貨規則,如果找到了,且其procre_method字段是mto,則系統拷貝Stock Move的字段值創建一個新的Procurement Order,Stock Move上的group_id也被傳遞到了新Procurement Order。
- MO confirm時候,如果MO沒有指定group_id,系統自動以MO的name為名創建一個新補貨組。MO根據BoM展開原料消耗和成品生成的Stock Move時候,MO上的補貨組傳遞到Stock Move上。
- MO的原料消耗的Stock Move Confirm時候,系統可能產生進一步的Procurement Order,其group_id來自Stock Move,也即MO的name。該Procurement Order進一步運行時候,系統根據rule_id上的group_propagation_option字段決定是否將group_id(MO單號)繼續傳遞下去。如果希望主MO和子MO的投料單、成品入庫單、或者原料采購單匯總到一個Picking或PO,則傳遞下去。如果希望主MO和子MO分開投料,則不必傳遞下去。
- SO確認時候,如果是MTO產品,系統自動創建的Procurement Order的rule_id是MTO,該規則產生一條 總庫 -> 客戶的Stock Move,該Stock Move confirm時候,系統又產生了一個新的Buy的Procurement Order。系統默認配置的 Buy的規則上,group_propagation_option字段值是留空,因而補貨組(SO單號)不會傳遞到PO的group_id。這樣系統會將不同SO的采購需求匯總成一個PO。如果修改一下 Buy規則的group_propagation_option成propagate,則SO單號會傳遞下去作為PO的group_id,不同SO的PO則不會自動合並。
- Stock Move confirm時候,系統自動查找未Done的、相同補貨組的Stock Picking,找到了則將自己添加進去,找不到則創建一個新的Stock Picking,其補貨組取自該Stock Move。