Bharat Devnani (Open ERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements-mrp-bde into
lp:~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements.
Requested reviews:
OpenERP R&D Team (openerp-dev)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements-mrp-bde/+merge/115473
Hello Sir,
I have improved the YML's of MRP Module as per improved demo data.
Thanks & Regards,
Devnani Bharat R.
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements-mrp-bde/+merge/115473
Your team OpenERP R&D Team is requested to review the proposed merge of
lp:~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements-mrp-bde into
lp:~openerp-dev/openobject-addons/trunk-mrp-ymls-improvements.
=== modified file 'mrp/test/cancel_order.yml'
--- mrp/test/cancel_order.yml 2011-12-19 16:54:40 +0000
+++ mrp/test/cancel_order.yml 2012-07-18 05:26:29 +0000
@@ -1,25 +1,27 @@
-
- I first confirm order for shirt.
+ I first confirm order for PC Assemble + 2GB RAM.
-
- !workflow {model: mrp.production, action: button_confirm, ref: mrp_production_shirt}
+ !workflow {model: mrp.production, action: button_confirm, ref: mrp_production_pc_assemble_twogbram}
-
In order to cancel the production order, I first cancel its picking.
-
!function {model: stock.picking, name: action_cancel}:
- model: mrp.production
- eval: "[obj(ref('mrp_production_shirt')).picking_id.id]"
+ eval: "[obj(ref('mrp_production_pc_assemble_twogbram')).picking_id.id]"
-
Now I cancel the production order.
-
- !workflow {model: mrp.production, action: button_cancel, ref: mrp_production_shirt}
+ !python {model: mrp.production}: |
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"), context=context)
+ order.action_cancel(context=context)
-
Now I check that the production order is cancelled.
-
- !assert {model: mrp.production, id: mrp_production_shirt}:
+ !assert {model: mrp.production, id: mrp_production_pc_assemble_twogbram}:
- state == 'cancel'
-
I remove cancelled production order.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shirt"), context=context)
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"), context=context)
self.unlink(cr, uid, [order.id])
=== modified file 'mrp/test/order_demo.yml'
--- mrp/test/order_demo.yml 2012-03-12 11:07:50 +0000
+++ mrp/test/order_demo.yml 2012-07-18 05:26:29 +0000
@@ -1,27 +1,12 @@
-
- In order to test process of production order, I create Bill of material of Shelf 100cm.
--
- !record {model: mrp.bom, id: mrp_bom_defaultbomforshelfofcm0}:
- product_id: product.product_product_shelfofcm0
--
- !record {model: mrp.bom, id: mrp_bom_assemblysection1}:
- routing_id: mrp.mrp_routing_0
--
- !record {model: mrp.bom, id: mrp_bom_rearpanelarm1}:
- routing_id: mrp.mrp_routing_0
--
- I create Production Order of Shelf 100cm to produce 5.0 Dozen Unit.
--
- !record {model: mrp.production, id: mrp_production_shelf100cm}:
+ I create Production Order of PC Assemble + 2GB RAM to produce 5.0 Unit.
+-
+ !record {model: mrp.production, id: mrp_production_pc_assemble_twogbram}:
+ product_id: product.product_product_4
+ product_qty: 5.0
location_src_id: stock.stock_location_stock
location_dest_id: stock.stock_location_output
- product_id: product.product_product_shelfofcm0
- bom_id: mrp_bom_defaultbomforshelfofcm0
+ bom_id: mrp_bom_24
routing_id: mrp.mrp_routing_1
- product_uom: product.product_uom_dozen
- product_qty: 5.0
--
- !record {model: mrp.workcenter, id: mrp_workcenter_0}:
- product_id: product.product_assembly
-
-
+
+
\ No newline at end of file
=== modified file 'mrp/test/order_process.yml'
--- mrp/test/order_process.yml 2012-04-03 08:27:56 +0000
+++ mrp/test/order_process.yml 2012-07-18 05:26:29 +0000
@@ -2,54 +2,14 @@
I compute the production order.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"), context=context)
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"), context=context)
order.action_compute(context=context)
-
I check production lines after compute.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"), context=context)
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"), context=context)
assert len(order.product_lines) == 5, "Production lines are not generated proper."
- factor = 12.0*5.0
- sidepanel = False
- woodlintelm = False
- woodmm0 = False
- woodmm10 = False
- metalcleats = False
- for line in order.product_lines:
- if line.product_id.id == ref('product.product_product_sidepanel0'): #SIDEPAN 2 Unit
- assert not sidepanel, "Production line is already generated for SIDEPAN."
- assert line.product_qty == (2.0*factor), "Qty is not correspond."
- assert line.product_uom.id == ref('product.product_uom_unit'), "UOM is not correspond"
- sidepanel = True
- elif line.product_id.id == ref('product.product_product_woodlintelm0'): #LIN40 4*0.25 Meter
- assert not woodlintelm, "Production line is already generated for LIN40."
- assert line.product_qty == (4*0.25*factor), "Qty is not correspond."
- assert line.product_uom.id == ref('product.product_uom_meter'), "UOM is not correspond"
- woodlintelm = True
- elif line.product_id.id == ref('product.product_product_woodmm0'): #WOOD002 0.25 m
- assert not woodmm0, "Production line is already generated for WOOD002."
- assert line.product_qty == (0.25*factor), "Qty is not correspond."
- assert line.product_uom.id == ref('product.product_uom_meter'), "UOM is not correspond"
- woodmm0 = True
- elif line.product_id.id == ref('product.product_product_metalcleats0'): #METC000 4*3 Unit
- assert not metalcleats, "Production line is already generated for METC000."
- assert line.product_qty == (4*3*factor), "Qty is not correspond."
- assert line.product_uom.id == ref('product.product_uom_unit'), "UOM is not correspond"
- metalcleats = True
- elif line.product_id.id == ref('product.product_product_woodmm10'): #WOOD010 0.083*3 m
- assert not woodmm10, "Production line is already generated for WOOD010."
- assert line.product_qty == (0.083*3*factor), "Qty is not correspond."
- assert line.product_uom.id == ref('product.product_uom_meter'), "UOM is not correspond"
- woodmm10 = True
- else:
- raise AssertionError('unknown order line: %s' % line)
- assert sidepanel, "Production line is not generated for SIDEPAN."
- assert woodlintelm, "Production line is not generated for LIN40."
- assert woodmm0, "Production line is not generated for WOOD002."
- assert metalcleats, "Production line is not generated for METC000."
- assert woodmm10, "Production line is not generated for WOOD010."
-
-
Now I check workcenter lines.
-
@@ -57,40 +17,17 @@
from tools import float_compare
def assert_equals(value1, value2, msg, float_compare=float_compare):
assert float_compare(value1, value2, precision_digits=2) == 0, msg
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"), context=context)
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"), context=context)
assert len(order.workcenter_lines), "Workcenter lines are not generated proper."
- for line in order.workcenter_lines:
- wc = line.workcenter_id
- hours = ((wc.time_start or 0.0)+(wc.time_stop or 0.0)+line.cycle*(wc.time_cycle or 0.0)) * (wc.time_efficiency or 1.0)
- factor = 5*12
- d, m = divmod(factor, wc.capacity_per_cycle)
- cycle = (d + (m and 1.0 or 0.0))
- if line.name == "Short time assembly - Assembly Section":
- assert_equals(line.cycle, (4*cycle), "Computed cycles mismatch: %s" % (line.name))
- assert_equals(line.hour, (2*cycle*4 + hours), "Computed hours mismatch: %s"% (line.name))
- elif line.name == "Short time assembly - Rear Panel SHE100":
- assert_equals(line.cycle, (1*cycle), "Computed cycles mismatch: %s" % (line.name))
- assert_equals(line.hour, (2*cycle + hours), "Computed hours mismatch: %s"% (line.name))
- elif line.name == "long time assembly - Shelf of 100cm":
- assert_equals(line.cycle, (2*cycle), "Computed cycles mismatch: %s" % (line.name))
- assert_equals(line.hour, (5*cycle + hours), "Computed hours mismatch: %s"% (line.name))
- elif line.name == "Testing - Shelf of 100cm":
- assert_equals(line.cycle, (1*cycle), "Computed cycles mismatch: %s" % (line.name))
- assert_equals(line.hour, (1*cycle + hours), "Computed hours mismatch: %s"% (line.name))
- elif line.name == "Packing - Shelf of 100cm":
- assert_equals(line.cycle, (1*cycle), "Computed cycles mismatch: %s" % (line.name))
- assert_equals(line.hour, (0.5*cycle + hours), "Computed hours mismatch: %s"% (line.name))
- else:
- raise AssertionError('unknown workcenter line: %s' % line)
-
I confirm the Production Order.
-
- !workflow {model: mrp.production, action: button_confirm, ref: mrp_production_shelf100cm}
+ !workflow {model: mrp.production, action: button_confirm, ref: mrp_production_pc_assemble_twogbram}
-
I check details of Produce Move of Production Order to trace Final Product.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.state == 'confirmed', "Production order should be confirmed."
assert order.move_created_ids, "Trace Record is not created for Final Product."
move = order.move_created_ids[0]
@@ -121,13 +58,12 @@
assert move_line.product_uos.id == order_line.product_uos.id, "UOS is not correspond in 'To consume line'."
assert move_line.location_id.id == routing_loc or order.location_src_id.id, "Source location is not correspond in 'To consume line'."
assert move_line.location_dest_id.id == source_location_id, "Destination Location is not correspond in 'To consume line'."
-
-
I check details of an Internal Shipment after confirmed production order to bring components in Raw Materials Location.
-
!python {model: mrp.production}: |
procurement = self.pool.get('procurement.order')
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.picking_id, 'Internal Shipment should be created!'
routing_loc = None
@@ -167,12 +103,11 @@
assert shipment_procurement.product_uos.id == order_line.product_uos.id, "UOS is not correspond in procurement."
assert shipment_procurement.location_id.id == order.location_src_id.id, "Location is not correspond in procurement."
assert shipment_procurement.procure_method == order_line.product_id.procure_method, "Procure method is not correspond in procurement."
-
-
- I change production qty with 3 Dozen Shelf 100cm.
+ I change production qty with 3 PC Assemble + 2GB RAM.
-
!python {model: change.production.qty}: |
- context.update({'active_id': ref('mrp_production_shelf100cm')})
+ context.update({'active_id': ref('mrp_production_pc_assemble_twogbram')})
-
!record {model: change.production.qty, id: mrp_production_qty}:
product_qty: 3.0
@@ -183,7 +118,7 @@
I check qty after changed in production order.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.product_qty == 3, "Qty is not changed in order."
move = order.move_created_ids[0]
assert move.product_qty == order.product_qty, "Qty is not changed in move line."
@@ -196,23 +131,23 @@
The production order is Waiting Goods, I forcefully done internal shipment.
-
!python {model: mrp.production}: |
- self.force_production(cr, uid, [ref("mrp_production_shelf100cm")])
+ self.force_production(cr, uid, [ref("mrp_production_pc_assemble_twogbram")])
-
I check that production order in ready state after forcefully done internal shipment.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.state == 'ready', 'Production order should be in Ready State.'
assert order.picking_id.state == 'done', 'Internal shipment should be done.'
-
Now I start production.
-
- !workflow {model: mrp.production, action: button_produce, ref: mrp_production_shelf100cm}
+ !workflow {model: mrp.production, action: button_produce, ref: mrp_production_pc_assemble_twogbram}
-
I check that production order in production state after start production.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.state == 'in_production', 'Production order should be in production State.'
-
I consume raw materials and put one material in scrap location due to waste it.
@@ -220,16 +155,16 @@
!python {model: mrp.production}: |
scrap_location_ids = self.pool.get('stock.location').search(cr, uid, [('scrap_location','=',True)])
scrap_location_id = scrap_location_ids[0]
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
for move in order.move_lines:
move.action_consume(move.product_qty)
- if move.product_id.id == ref("product.product_product_metalcleats0"):
+ if move.product_id.id == ref("product.product_product_6"):
move.action_scrap(5.0, scrap_location_id)
-
I produce product.
-
!python {model: mrp.product.produce}: |
- context.update({'active_id': ref('mrp_production_shelf100cm')})
+ context.update({'active_id': ref('mrp_production_pc_assemble_twogbram')})
-
!record {model: mrp.product.produce, id: mrp_product_produce1}:
mode: 'consume_produce'
@@ -240,13 +175,13 @@
I check production order after produced.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
assert order.state == 'done', "Production order should be closed."
-
I check Total Costs at End of Production.
-
!python {model: mrp.production}: |
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
account_analytic_line = self.pool.get('account.analytic.line')
def rounding(f, r):
import math
@@ -275,28 +210,25 @@
assert line.journal_id.id == wc.costs_journal_id.id, "Account Journal is not correspond."
assert line.product_id.id == wc.product_id.id, "Product is not correspond."
assert line.product_uom_id.id == wc.product_id.uom_id.id, "UOM is not correspond."
-
-
I print a "BOM Structure".
-
!python {model: mrp.production}: |
import netsvc, tools, os
- order = self.browse(cr, uid, ref("mrp_production_shelf100cm"))
+ order = self.browse(cr, uid, ref("mrp_production_pc_assemble_twogbram"))
(data, format) = netsvc.LocalService('report.bom.structure').create(cr, uid, [order.bom_id.id], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'mrp-bom_structure_report.'+format), 'wb+').write(data)
-
-
I print "Production Order".
-
!python {model: mrp.production}: |
import netsvc, tools, os
- (data, format) = netsvc.LocalService('report.mrp.production.order').create(cr, uid, [ref("mrp_production_shelf100cm")], {}, {})
+ (data, format) = netsvc.LocalService('report.mrp.production.order').create(cr, uid, [ref("mrp_production_pc_assemble_twogbram")], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'mrp-production_order_report.'+format), 'wb+').write(data)
-
-
- I print "Work Center Load Report".
+ I print "Work Center Load Report".
-
!python {model: mrp.workcenter}: |
ctx = context.copy()
@@ -304,4 +236,4 @@
data_dict = {'time_unit': 'day', 'measure_unit': 'hours'}
from tools import test_reports
test_reports.try_report_action(cr, uid, 'action_mrp_workcenter_load_wizard',wiz_data=data_dict, context=ctx, our_module='mrp')
-
+
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp