diff options
| author | Benoit Guillot <benoit.guillot@akretion.com> | 2014-12-01 13:13:51 +0100 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2014-12-03 10:48:23 +0100 |
| commit | bc2a52fb28a1ce690a148e87cf9bc7e0797ca4d0 (patch) | |
| tree | 973f9f7b7797d426e7adae3a2fa36d32c9a69762 | |
| parent | 5f9280e854ac435bdcf903128d5e9d5d0b592070 (diff) | |
[IMP] mrp: add prepare method for manufacturing orders to allow override
Fixes #3973
| -rw-r--r-- | addons/mrp/procurement.py | 50 |
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, |
