[IMP]mrp_subproduct:
Add new demo records of product and BOM Improve the test cases. bzr revid: dbr@tinyerp.com-20111220091857-gqn2yfrfl9xkpbms
This commit is contained in:
parent
8e2457efe8
commit
42529a1dc1
|
@ -329,10 +329,18 @@
|
||||||
<field model="product.product" name="product_id" ref="product.product_product_cpu3"/>
|
<field model="product.product" name="product_id" ref="product.product_product_cpu3"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="mrp_bom_arm1" model="mrp.bom">
|
||||||
|
<field name="name">ARM100 + Subproduct</field>
|
||||||
|
<field name="sequence">40</field>
|
||||||
|
<field name="product_uom" ref="product.product_uom_unit"/>
|
||||||
|
<field name="product_qty">1.0</field>
|
||||||
|
<field model="product.product" name="product_id" ref="product.product_product_arm" />
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="mrp_bom_kit3" model="mrp.bom">
|
<record id="mrp_bom_kit3" model="mrp.bom">
|
||||||
<field name="code">KIT</field>
|
<field name="code">KIT</field>
|
||||||
<field name="name">Kit Keyboard + Mouse</field>
|
<field name="name">Kit Keyboard + Mouse</field>
|
||||||
<field name="sequence">40</field>
|
<field name="sequence">42</field>
|
||||||
<field name="product_uom" ref="product.product_uom_unit"/>
|
<field name="product_uom" ref="product.product_uom_unit"/>
|
||||||
<field name="product_qty">1.0</field>
|
<field name="product_qty">1.0</field>
|
||||||
<field name="type">phantom</field>
|
<field name="type">phantom</field>
|
||||||
|
@ -602,7 +610,6 @@
|
||||||
<field name="bom_id" ref="mrp_bom_9"/>
|
<field name="bom_id" ref="mrp_bom_9"/>
|
||||||
<field model="product.product" name="product_id" ref="product.product_product_tow1"/>
|
<field model="product.product" name="product_id" ref="product.product_product_tow1"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="mrp_bom_kit2" model="mrp.bom">
|
<record id="mrp_bom_kit2" model="mrp.bom">
|
||||||
<field name="code">KIT</field>
|
<field name="code">KIT</field>
|
||||||
<field name="sequence">118</field>
|
<field name="sequence">118</field>
|
||||||
|
@ -613,7 +620,15 @@
|
||||||
<field name="bom_id" ref="mrp_bom_9"/>
|
<field name="bom_id" ref="mrp_bom_9"/>
|
||||||
<field model="product.product" name="product_id" ref="product.product_product_26"/>
|
<field model="product.product" name="product_id" ref="product.product_product_26"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="mrp_bom_34" model="mrp.bom">
|
||||||
|
<field name="name">SIDEPAN</field>
|
||||||
|
<field name="sequence">121</field>
|
||||||
|
<field name="product_uom" ref="product.product_uom_unit"/>
|
||||||
|
<field name="product_qty">1.0</field>
|
||||||
|
<field name="type">normal</field>
|
||||||
|
<field name="bom_id" ref="mrp_bom_arm1"/>
|
||||||
|
<field model="product.product" name="product_id" ref="product.product_product_sidepanel0"/>
|
||||||
|
</record>
|
||||||
<!--
|
<!--
|
||||||
Resource: mrp.bom new EVV
|
Resource: mrp.bom new EVV
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -1,135 +1,51 @@
|
||||||
-
|
-
|
||||||
In order to test mrp_subproduct with OpenERP, I create a bill of material with subproducts.
|
In order to test mrp_subproduct with OpenERP, I add subproduct in bill of material.
|
||||||
I make a production order, confirm it so stock moves for subproducts are generated.
|
I make a production order, confirm it so stock moves for subproducts are generated.
|
||||||
-
|
-
|
||||||
I create a record for the product Chair.
|
I add a sub product in Bill of material for product Cabinet.
|
||||||
-
|
-
|
||||||
!record {model: product.product, id: product_product_woodenchair0}:
|
!record {model: mrp.bom, id: mrp_bom_arm1}:
|
||||||
categ_id: product.cat1
|
product_id: product.product_product_arm
|
||||||
name: Wooden Chair
|
name: ARM100 + Subproduct
|
||||||
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_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:
|
sub_products:
|
||||||
- product_id: product_product_woodentable0
|
- product_id: product.product_product_woodentable0
|
||||||
product_uom: product.product_uom_unit
|
product_uom: product.product_uom_unit
|
||||||
product_qty: 1.0
|
product_qty: 2.0
|
||||||
subproduct_type: fixed
|
subproduct_type: fixed
|
||||||
-
|
-
|
||||||
I create a production order for Wooden Chair.
|
I create a production order for Cabinet.
|
||||||
-
|
-
|
||||||
!record {model: mrp.production, id: mrp_production_mo0}:
|
!record {model: mrp.production, id: mrp_production_mo0}:
|
||||||
bom_id: mrp_bom_woodenchair0
|
product_id: product.product_product_arm
|
||||||
date_planned: !eval datetime.today().strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
location_dest_id: stock.stock_location_stock
|
|
||||||
location_src_id: stock.stock_location_stock
|
|
||||||
product_id: product_product_woodenchair0
|
|
||||||
product_qty: 10.0
|
product_qty: 10.0
|
||||||
product_uos_qty: 0.0
|
product_uom: product.product_uom_unit
|
||||||
|
bom_id: mrp_bom_arm1
|
||||||
|
location_src_id: stock.stock_location_stock
|
||||||
-
|
-
|
||||||
I compute the data of production order.
|
I compute the data of production order.
|
||||||
-
|
-
|
||||||
!python {model: mrp.production}: |
|
!python {model: mrp.production}: |
|
||||||
self.action_compute(cr, uid, [ref("mrp_production_mo0")], {"lang": "en_US", "tz": False, "search_default_Current":
|
self.action_compute(cr, uid, [ref("mrp_production_mo0")], {"active_ids": [ref("mrp_production_mo0")],"active_id": ref("mrp_production_mo0")})
|
||||||
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.
|
I confirm the production order.
|
||||||
-
|
-
|
||||||
!workflow {model: mrp.production, action: button_confirm, ref: mrp_production_mo0}
|
!workflow {model: mrp.production, action: button_confirm, ref: mrp_production_mo0}
|
||||||
|
-
|
||||||
|
I check production order state.
|
||||||
|
-
|
||||||
|
!python {model: mrp.production}: |
|
||||||
|
order = self.browse(cr, uid, ref('mrp_production_mo0'))
|
||||||
|
assert order.state == 'confirm' or 'ready', 'Production order state should be in confirm or ready state.'
|
||||||
-
|
-
|
||||||
Now I check the stock moves for the subproduct I created in the bill of material.
|
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.
|
This move is created automatically when I confirmed the production order.
|
||||||
-
|
-
|
||||||
!python {model: stock.move}: |
|
!python {model: stock.move}: |
|
||||||
move_id = self.search(cr, uid, [('product_id','=',ref('product_product_woodentable0'))])
|
move_id = self.search(cr, uid, [('product_qty','>',ref('product.product_product_woodentable0'))])
|
||||||
|
print move_id
|
||||||
assert move_id, 'No moves are created !'
|
assert move_id, 'No moves are created !'
|
||||||
|
|
||||||
-
|
-
|
||||||
I want to start the production so I force the reservation of products.
|
I want to start the production so I force the reservation of products.
|
||||||
-
|
-
|
||||||
|
@ -161,6 +77,6 @@
|
||||||
I see that stock moves of Wood and Nails including Wooden Table are done now.
|
I see that stock moves of Wood and Nails including Wooden Table are done now.
|
||||||
-
|
-
|
||||||
!python {model: stock.move}: |
|
!python {model: stock.move}: |
|
||||||
move_ids = self.search(cr, uid, [('product_id','in',[ref("product_product_woodentable0"),ref("product_product_wood0"),ref("product_product_nails0")])])
|
move_ids = self.search(cr, uid, [('product_id','in',[ref("product.product_product_arm"),ref("product.product_product_sidepanel0")])])
|
||||||
moves = self.browse(cr, uid, move_ids)
|
moves = self.browse(cr, uid, move_ids)
|
||||||
assert all(move.state == 'done' for move in moves), 'Moves are not done!'
|
assert all(move.state == 'done' for move in moves), 'Moves are not done!'
|
||||||
|
|
|
@ -413,7 +413,19 @@
|
||||||
<field name="type">product</field>
|
<field name="type">product</field>
|
||||||
<field name="categ_id" ref="product_category_11"/>
|
<field name="categ_id" ref="product_category_11"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="product_product_arm" model="product.product">
|
||||||
|
<field name="default_code">ARM100</field>
|
||||||
|
<field name="supply_method">produce</field>
|
||||||
|
<field name="list_price">450.0</field>
|
||||||
|
<field name="standard_price">300.0</field>
|
||||||
|
<field name="uom_id" ref="product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="product_uom_unit"/>
|
||||||
|
<field name="procure_method">make_to_order</field>
|
||||||
|
<field name="sale_delay">3.0</field>
|
||||||
|
<field name="name">Cabinet</field>
|
||||||
|
<field name="type">product</field>
|
||||||
|
<field name="categ_id" ref="product_category_misc0"/>
|
||||||
|
</record>
|
||||||
<!--
|
<!--
|
||||||
Resource: product.product NEW EVV
|
Resource: product.product NEW EVV
|
||||||
-->
|
-->
|
||||||
|
@ -464,6 +476,19 @@
|
||||||
<field name="type">product</field>
|
<field name="type">product</field>
|
||||||
<field name="categ_id" ref="product_category_rawmaterial0"/>
|
<field name="categ_id" ref="product_category_rawmaterial0"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="product_product_woodentable0" model="product.product">
|
||||||
|
<field name="default_code">WOODTAB</field>
|
||||||
|
<field name="supply_method">produce</field>
|
||||||
|
<field eval="'make_to_stock'" name="procure_method"/>
|
||||||
|
<field name="standard_price">5.0</field>
|
||||||
|
<field name="uom_id" ref="product_uom_unit"/>
|
||||||
|
<field name="uom_po_id" ref="product_uom_unit"/>
|
||||||
|
<field name="name">Wooden Table</field>
|
||||||
|
<field eval="2" name="seller_delay"/>
|
||||||
|
<field eval="7.0" name="sale_delay"/>
|
||||||
|
<field name="type">product</field>
|
||||||
|
<field name="categ_id" ref="cat1"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="product_product_woodmm10" model="product.product">
|
<record id="product_product_woodmm10" model="product.product">
|
||||||
<field name="default_code">WOOD010</field>
|
<field name="default_code">WOOD010</field>
|
||||||
|
|
Loading…
Reference in New Issue