Files
manufacture/mrp_production_request/models/procurement.py
lreficent 3376a07566 [FIX] security issues:
* Some manager can't access all records.
* Interfering purchase_request_procurement
2017-07-27 11:01:05 +02:00

56 lines
2.2 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 procurement.check_bom_exists():
procurement.message_post(
body=_("No BoM exists for this product!"))
return False
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'].sudo().search([
('procurement_id', '=', procurement.id)])
if mrp_production_requests and not self.env.context.get(
'from_mrp_production_request'):
mrp_production_requests.sudo().button_cancel()
for mr in mrp_production_requests:
mr.sudo().message_post(
body=_("Related procurement has been cancelled."))
procurement.write({'mrp_production_request_id': None})
return result