summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Guillot <benoit.guillot@akretion.com>2014-12-01 13:13:51 +0100
committerMartin Trigaux <mat@odoo.com>2014-12-03 10:48:23 +0100
commitbc2a52fb28a1ce690a148e87cf9bc7e0797ca4d0 (patch)
tree973f9f7b7797d426e7adae3a2fa36d32c9a69762
parent5f9280e854ac435bdcf903128d5e9d5d0b592070 (diff)
[IMP] mrp: add prepare method for manufacturing orders to allow override
Fixes #3973
-rw-r--r--addons/mrp/procurement.py50
1 files changed, 30 insertions, 20 deletions
diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py
index b07f6f6de9d..0897aa4fd0f 100644
--- a/addons/mrp/procurement.py
+++ b/addons/mrp/procurement.py
@@ -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,