Files
manufacture/mrp_production_request/models/procurement.py
2017-06-29 13:07:53 +02:00

52 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, fields, models, _
class ProcurementOrder(models.Model):
_inherit = "procurement.order"
mrp_production_request_id = fields.Many2one(
comodel_name="mrp.production.request", string="Manufacturing Request",
copy=False)
@api.model
def _prepare_mrp_production_request(self, procurement):
data = self._prepare_mo_vals(procurement)
data['procurement_id'] = procurement.id
data['state'] = 'to_approve'
return data
@api.model
def _run(self, procurement):
if (procurement.rule_id and
procurement.rule_id.action == 'manufacture' and
procurement.product_id.mrp_production_request):
if not self.mrp_production_request_id:
request_data = self._prepare_mrp_production_request(
procurement)
req = self.env['mrp.production.request'].create(request_data)
procurement.message_post(body=_(
"Manufacturing Request created"))
procurement.mrp_production_request_id = req.id
return True
return super(ProcurementOrder, self)._run(procurement)
@api.multi
def propagate_cancels(self):
result = super(ProcurementOrder, self).propagate_cancels()
for procurement in self:
mrp_production_requests = \
self.env['mrp.production.request'].search([
('procurement_id', '=', procurement.id)])
if mrp_production_requests and not self.env.context.get(
'from_mrp_production_request'):
mrp_production_requests.button_cancel()
for mr in mrp_production_requests:
mr.message_post(
body=_("Related procurement has been cancelled."))
procurement.write({'mrp_production_request_id': None})
return result