[IMP] mrp: add prepare method for manufacturing orders to allow override
Fixes #3973
This commit is contained in:
parent
5f9280e854
commit
bc2a52fb28
|
@ -25,6 +25,8 @@ from openerp.osv import fields
|
|||
from openerp.osv import osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp import netsvc
|
||||
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
|
||||
|
||||
class procurement_order(osv.osv):
|
||||
_inherit = 'procurement.order'
|
||||
|
@ -78,36 +80,44 @@ class procurement_order(osv.osv):
|
|||
res = procurement_obj.make_mo(cr, uid, ids, context=context)
|
||||
res = res.values()
|
||||
return len(res) and res[0] or 0
|
||||
|
||||
|
||||
def _get_date_planned(self, cr, uid, procurement, context=None):
|
||||
format_date_planned = datetime.strptime(procurement.date_planned,
|
||||
DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
date_planned = format_date_planned - relativedelta(days=procurement.product_id.produce_delay or 0.0)
|
||||
date_planned = date_planned - relativedelta(days=procurement.company_id.manufacturing_lead)
|
||||
return date_planned
|
||||
|
||||
def _prepare_mo_vals(self, cr, uid, procurement, context=None):
|
||||
res_id = procurement.move_id.id
|
||||
newdate = self._get_date_planned(cr, uid, procurement, context=context)
|
||||
return {
|
||||
'origin': procurement.origin,
|
||||
'product_id': procurement.product_id.id,
|
||||
'product_qty': procurement.product_qty,
|
||||
'product_uom': procurement.product_uom.id,
|
||||
'product_uos_qty': procurement.product_uos and procurement.product_uos_qty or False,
|
||||
'product_uos': procurement.product_uos and procurement.product_uos.id or False,
|
||||
'location_src_id': procurement.location_id.id,
|
||||
'location_dest_id': procurement.location_id.id,
|
||||
'bom_id': procurement.bom_id and procurement.bom_id.id or False,
|
||||
'date_planned': newdate.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'move_prod_id': res_id,
|
||||
'company_id': procurement.company_id.id,
|
||||
}
|
||||
|
||||
def make_mo(self, cr, uid, ids, context=None):
|
||||
""" Make Manufacturing(production) order from procurement
|
||||
@return: New created Production Orders procurement wise
|
||||
"""
|
||||
res = {}
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
|
||||
production_obj = self.pool.get('mrp.production')
|
||||
move_obj = self.pool.get('stock.move')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
procurement_obj = self.pool.get('procurement.order')
|
||||
for procurement in procurement_obj.browse(cr, uid, ids, context=context):
|
||||
res_id = procurement.move_id.id
|
||||
newdate = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') - relativedelta(days=procurement.product_id.produce_delay or 0.0)
|
||||
newdate = newdate - relativedelta(days=company.manufacturing_lead)
|
||||
produce_id = production_obj.create(cr, uid, {
|
||||
'origin': procurement.origin,
|
||||
'product_id': procurement.product_id.id,
|
||||
'product_qty': procurement.product_qty,
|
||||
'product_uom': procurement.product_uom.id,
|
||||
'product_uos_qty': procurement.product_uos and procurement.product_uos_qty or False,
|
||||
'product_uos': procurement.product_uos and procurement.product_uos.id or False,
|
||||
'location_src_id': procurement.location_id.id,
|
||||
'location_dest_id': procurement.location_id.id,
|
||||
'bom_id': procurement.bom_id and procurement.bom_id.id or False,
|
||||
'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'move_prod_id': res_id,
|
||||
'company_id': procurement.company_id.id,
|
||||
})
|
||||
|
||||
vals = self._prepare_mo_vals(cr, uid, procurement, context=context)
|
||||
produce_id = production_obj.create(cr, uid, vals, context=context)
|
||||
res[procurement.id] = produce_id
|
||||
self.write(cr, uid, [procurement.id], {'state': 'running', 'production_id': produce_id})
|
||||
bom_result = production_obj.action_compute(cr, uid,
|
||||
|
|
Loading…
Reference in New Issue