[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.osv import osv
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp import netsvc
|
from openerp import netsvc
|
||||||
|
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||||
|
|
||||||
|
|
||||||
class procurement_order(osv.osv):
|
class procurement_order(osv.osv):
|
||||||
_inherit = 'procurement.order'
|
_inherit = 'procurement.order'
|
||||||
|
@ -78,36 +80,44 @@ class procurement_order(osv.osv):
|
||||||
res = procurement_obj.make_mo(cr, uid, ids, context=context)
|
res = procurement_obj.make_mo(cr, uid, ids, context=context)
|
||||||
res = res.values()
|
res = res.values()
|
||||||
return len(res) and res[0] or 0
|
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):
|
def make_mo(self, cr, uid, ids, context=None):
|
||||||
""" Make Manufacturing(production) order from procurement
|
""" Make Manufacturing(production) order from procurement
|
||||||
@return: New created Production Orders procurement wise
|
@return: New created Production Orders procurement wise
|
||||||
"""
|
"""
|
||||||
res = {}
|
res = {}
|
||||||
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
|
|
||||||
production_obj = self.pool.get('mrp.production')
|
production_obj = self.pool.get('mrp.production')
|
||||||
move_obj = self.pool.get('stock.move')
|
move_obj = self.pool.get('stock.move')
|
||||||
wf_service = netsvc.LocalService("workflow")
|
wf_service = netsvc.LocalService("workflow")
|
||||||
procurement_obj = self.pool.get('procurement.order')
|
procurement_obj = self.pool.get('procurement.order')
|
||||||
for procurement in procurement_obj.browse(cr, uid, ids, context=context):
|
for procurement in procurement_obj.browse(cr, uid, ids, context=context):
|
||||||
res_id = procurement.move_id.id
|
vals = self._prepare_mo_vals(cr, uid, procurement, context=context)
|
||||||
newdate = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') - relativedelta(days=procurement.product_id.produce_delay or 0.0)
|
produce_id = production_obj.create(cr, uid, vals, context=context)
|
||||||
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,
|
|
||||||
})
|
|
||||||
|
|
||||||
res[procurement.id] = produce_id
|
res[procurement.id] = produce_id
|
||||||
self.write(cr, uid, [procurement.id], {'state': 'running', 'production_id': produce_id})
|
self.write(cr, uid, [procurement.id], {'state': 'running', 'production_id': produce_id})
|
||||||
bom_result = production_obj.action_compute(cr, uid,
|
bom_result = production_obj.action_compute(cr, uid,
|
||||||
|
|
Loading…
Reference in New Issue