[ADD] mrp_subproduct: Added yaml.
bzr revid: uco@tinyerp.com-20100806085112-vym0raztj8tbor3h
This commit is contained in:
parent
688a010d05
commit
ee4b1ee38d
|
@ -38,6 +38,7 @@ With this module:
|
||||||
'init_xml': [],
|
'init_xml': [],
|
||||||
'update_xml': ['security/ir.model.access.csv', 'mrp_subproduct_view.xml'],
|
'update_xml': ['security/ir.model.access.csv', 'mrp_subproduct_view.xml'],
|
||||||
'demo_xml': [],
|
'demo_xml': [],
|
||||||
|
'test': ['test/mrp_subproduct.yml'],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'active': False,
|
'active': False,
|
||||||
'certificate': '0050060616733',
|
'certificate': '0050060616733',
|
||||||
|
|
|
@ -0,0 +1,169 @@
|
||||||
|
-
|
||||||
|
In order to test mrp_subproduct with OpenERP, I create a bill of material with subproducts.
|
||||||
|
I make a production order, confirm it so stock moves for subproducts are generated.
|
||||||
|
-
|
||||||
|
I create a record for the product Chair.
|
||||||
|
-
|
||||||
|
!record {model: product.product, id: product_product_woodenchair0}:
|
||||||
|
categ_id: product.cat1
|
||||||
|
name: Wooden Chair
|
||||||
|
procure_method: make_to_stock
|
||||||
|
supply_method: produce
|
||||||
|
type: product
|
||||||
|
uom_id: product.product_uom_unit
|
||||||
|
uom_po_id: product.product_uom_unit
|
||||||
|
property_stock_inventory: stock.location_inventory
|
||||||
|
property_stock_procurement: stock.location_procurement
|
||||||
|
property_stock_production: stock.location_production
|
||||||
|
-
|
||||||
|
I create a record for the product Wood.
|
||||||
|
-
|
||||||
|
!record {model: product.product, id: product_product_wood0}:
|
||||||
|
categ_id: product.cat1
|
||||||
|
name: Wood
|
||||||
|
procure_method: make_to_order
|
||||||
|
supply_method: buy
|
||||||
|
property_stock_inventory: stock.location_inventory
|
||||||
|
property_stock_procurement: stock.location_procurement
|
||||||
|
property_stock_production: stock.location_production
|
||||||
|
seller_ids:
|
||||||
|
- delay: 1
|
||||||
|
name: base.res_partner_maxtor
|
||||||
|
min_qty: 300.0
|
||||||
|
type: product
|
||||||
|
uom_id: product.product_uom_unit
|
||||||
|
uom_po_id: product.product_uom_unit
|
||||||
|
-
|
||||||
|
I create a record for the product Nails.
|
||||||
|
-
|
||||||
|
!record {model: product.product, id: product_product_nails0}:
|
||||||
|
categ_id: product.cat1
|
||||||
|
name: Nails
|
||||||
|
procure_method: make_to_order
|
||||||
|
supply_method: buy
|
||||||
|
property_stock_inventory: stock.location_inventory
|
||||||
|
property_stock_procurement: stock.location_procurement
|
||||||
|
property_stock_production: stock.location_production
|
||||||
|
seller_ids:
|
||||||
|
- delay: 1
|
||||||
|
name: base.res_partner_asus
|
||||||
|
min_qty: 500.0
|
||||||
|
type: product
|
||||||
|
uom_id: product.product_uom_unit
|
||||||
|
uom_po_id: product.product_uom_unit
|
||||||
|
-
|
||||||
|
I create a record for the product Table.
|
||||||
|
-
|
||||||
|
!record {model: product.product, id: product_product_woodentable0}:
|
||||||
|
categ_id: product.cat1
|
||||||
|
name: Wooden Table
|
||||||
|
procure_method: make_to_stock
|
||||||
|
supply_method: produce
|
||||||
|
type: product
|
||||||
|
uom_id: product.product_uom_unit
|
||||||
|
uom_po_id: product.product_uom_unit
|
||||||
|
property_stock_inventory: stock.location_inventory
|
||||||
|
property_stock_procurement: stock.location_procurement
|
||||||
|
property_stock_production: stock.location_production
|
||||||
|
-
|
||||||
|
Now I create a bill of material for the product Wooden Chair.
|
||||||
|
-
|
||||||
|
!record {model: mrp.bom, id: mrp_bom_woodenchair0}:
|
||||||
|
company_id: base.main_company
|
||||||
|
name: Wooden Chair
|
||||||
|
product_efficiency: 1.0
|
||||||
|
product_id: product_product_woodenchair0
|
||||||
|
product_qty: 1.0
|
||||||
|
product_uom: product.product_uom_unit
|
||||||
|
product_uos_qty: 0.0
|
||||||
|
type: normal
|
||||||
|
bom_lines:
|
||||||
|
- company_id: base.main_company
|
||||||
|
name: Wood
|
||||||
|
product_efficiency: 1.0
|
||||||
|
product_id: product_product_wood0
|
||||||
|
product_qty: 10.0
|
||||||
|
product_uom: product.product_uom_unit
|
||||||
|
product_uos_qty: 0.0
|
||||||
|
sequence: 0.0
|
||||||
|
type: normal
|
||||||
|
- company_id: base.main_company
|
||||||
|
name: Nails
|
||||||
|
product_efficiency: 1.0
|
||||||
|
product_id: product_product_nails0
|
||||||
|
product_qty: 35.0
|
||||||
|
product_uom: product.product_uom_unit
|
||||||
|
product_uos_qty: 0.0
|
||||||
|
sequence: 0.0
|
||||||
|
type: normal
|
||||||
|
sub_products:
|
||||||
|
- product_id: product_product_woodentable0
|
||||||
|
product_uom: product.product_uom_unit
|
||||||
|
product_qty: 1.0
|
||||||
|
subproduct_type: fixed
|
||||||
|
-
|
||||||
|
I create a production order for Wooden Chair.
|
||||||
|
-
|
||||||
|
!record {model: mrp.production, id: mrp_production_mo0}:
|
||||||
|
bom_id: mrp_bom_woodenchair0
|
||||||
|
company_id: base.main_company
|
||||||
|
date_planned: '2010-08-06 14:55:52'
|
||||||
|
location_dest_id: stock.stock_location_stock
|
||||||
|
location_src_id: stock.stock_location_stock
|
||||||
|
name: MO/00004
|
||||||
|
product_id: product_product_woodenchair0
|
||||||
|
product_qty: 10.0
|
||||||
|
product_uom: product.product_uom_unit
|
||||||
|
product_uos_qty: 0.0
|
||||||
|
-
|
||||||
|
I compute the data of production order.
|
||||||
|
-
|
||||||
|
!python {model: mrp.production}: |
|
||||||
|
self.action_compute(cr, uid, [ref("mrp_production_mo0")], {"lang": "en_US", "tz": False, "search_default_Current":
|
||||||
|
1, "active_model": "ir.ui.menu", "active_ids": [ref("mrp.menu_mrp_production_action")],
|
||||||
|
"active_id": ref("mrp.menu_mrp_production_action"), })
|
||||||
|
-
|
||||||
|
I confirm the production order.
|
||||||
|
-
|
||||||
|
!workflow {model: mrp.production, action: button_confirm, ref: mrp_production_mo0}
|
||||||
|
-
|
||||||
|
Now I check the stock moves for the subproduct I created in the bill of material.
|
||||||
|
This move is created automatically when I confirmed the production order.
|
||||||
|
-
|
||||||
|
!python {model: stock.move}: |
|
||||||
|
move_id = self.search(cr, uid, [('product_id','=',ref('product_product_woodentable0'))])
|
||||||
|
assert move_id, 'No moves are created !'
|
||||||
|
-
|
||||||
|
I want to start the production so I force the reservation of products.
|
||||||
|
-
|
||||||
|
!python {model: mrp.production}: |
|
||||||
|
self.force_production(cr, uid, [ref("mrp_production_mo0")], {"lang": "en_US", "tz": False,
|
||||||
|
"search_default_Current": 1, "active_model": "ir.ui.menu", "active_ids":
|
||||||
|
[ref("mrp.menu_mrp_production_action")], "active_id": ref("mrp.menu_mrp_production_action"),
|
||||||
|
})
|
||||||
|
-
|
||||||
|
I start the production.
|
||||||
|
-
|
||||||
|
!workflow {model: mrp.production, action: button_produce, ref: mrp_production_mo0}
|
||||||
|
-
|
||||||
|
I consume and produce the Production of products.
|
||||||
|
-
|
||||||
|
I create record for selecting mode and quantity of products to produce.
|
||||||
|
-
|
||||||
|
!record {model: mrp.product.produce, id: mrp_product_produce0}:
|
||||||
|
product_qty: 10.00
|
||||||
|
mode: 'consume_produce'
|
||||||
|
-
|
||||||
|
I finish the production order.
|
||||||
|
-
|
||||||
|
!python {model: mrp.product.produce}: |
|
||||||
|
self.do_produce(cr, uid, [ref("mrp_product_produce0")], {"lang": "en_US", "tz":
|
||||||
|
False, "search_default_Current": 1, "active_model": "mrp.production", "active_ids":
|
||||||
|
[ref("mrp_production_mo0")], "active_id": ref("mrp_production_mo0"), })
|
||||||
|
-
|
||||||
|
I see that stock moves of Wood and Nails including Wooden Table are done now.
|
||||||
|
-
|
||||||
|
!python {model: stock.move}: |
|
||||||
|
move_ids = self.search(cr, uid, [('product_id','in',[ref("product_product_woodenchair0"),ref("product_product_woodentable0"),ref("product_product_wood0"),ref("product_product_nails0")])])
|
||||||
|
moves = self.browse(cr, uid, move_ids)
|
||||||
|
assert all(move.state == 'done' for move in moves), 'Moves are not done!'
|
Loading…
Reference in New Issue