OpenMRP code refactoring

Registered by Daniel Stenlöv

OpenMRP code need to be refactored, because lots of code is copied and not reused. This makes the code bloated and hard to manage. This will also reduce complexity and make room for future improvement.

For example [mrp_master_extension/mrp_bom.py]:
-------------------- CUT --------------------
if not operation.final_products_ids:
    final_product_id = final_product_obj.create(cr, uid, {
        'mrp_bom_operations_product_id': operation.id,
        'bom_id': operation.bom_id.id,
        'product_id': my_product,
        'product_qty': qty,
        'product_uom': product.uom_id.id,
        'location_id': location_ids[0]
    })
    final_product_obj.write(cr, uid, [final_product_id], {'location_id': location_ids[0]})
else:
    found = 0
    for final_product in operation.final_products_ids:
        if final_product.product_id.id == my_product:
            found = 1
            final_product_obj.write(cr, uid, [final_product.id], {'product_qty': qty})
    if found == 0:
        if not location_ids:
            raise osv.except_osv(_('Error'), _('No scrap location found.'))
        final_product_id = final_product_obj.create(cr, uid, {
            'mrp_bom_operations_product_id': operation.id,
            'bom_id': operation.bom_id.id,
            'product_id': my_product,
            'product_qty': qty,
            'product_uom': product.uom_id.id,
            'location_id': location_ids[0]
        })
        final_product_obj.write(cr, uid, [final_product_id], {'location_id': location_ids[0]})
-------------------- CUT --------------------

Could be rewritten into:

-------------------- CUT --------------------
final_product_id = final_product_obj.create(cr, uid, {
    'mrp_bom_operations_product_id': operation.id,
    'bom_id': operation.bom_id.id,
    'product_id': my_product,
    'product_qty': qty,
    'product_uom': product.uom_id.id,
    'location_id': location_ids[0]
})

found = 0
if operation.final_products_ids:
    for final_product in operation.final_products_ids:
        if final_product.product_id.id == my_product:
            found = 1
            final_product_obj.write(cr, uid, [final_product.id], {'product_qty': qty})

if found == 0:
    final_product_obj.write(cr, uid, [final_product_id], {'location_id': location_ids[0]})
-------------------- CUT --------------------

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Daniel Stenlöv
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

Work items:
mrp_advanced_lot_control: TODO
mrp_analytics_control: TODO
mrp_manufacturing_cost: TODO
mrp_phantom_ext: TODO
mrp_sequence_in_products_of_bom_list: TODO
mrp_advanced_operations: TODO
mrp_automatic_lots_in_internal_pickings: TODO
mrp_master_extension: INPROGRESS
mrp_production_bysumqty: TODO
mrp_super_operation: TODO

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.