mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
56 lines
2.2 KiB
Python
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
|