Files
stock-logistics-warehouse/stock_request_purchase/models/stock_request.py
2021-08-17 13:50:04 -05:00

53 lines
1.8 KiB
Python

# Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class StockRequest(models.Model):
_inherit = "stock.request"
purchase_ids = fields.One2many(
"purchase.order",
compute="_compute_purchase_ids",
string="Purchase Orders",
readonly=True,
)
purchase_count = fields.Integer(compute="_compute_purchase_ids", readonly=True)
purchase_line_ids = fields.Many2many(
"purchase.order.line", string="Purchase Order Lines", readonly=True, copy=False
)
@api.depends("purchase_line_ids")
def _compute_purchase_ids(self):
for request in self:
request.purchase_ids = request.purchase_line_ids.mapped("order_id")
request.purchase_count = len(request.purchase_ids)
@api.constrains("purchase_line_ids", "company_id")
def _check_purchase_company_constrains(self):
if any(
any(line.company_id != req.company_id for line in req.purchase_line_ids)
for req in self
):
raise ValidationError(
_(
"You have linked to a purchase order line "
"that belongs to another company."
)
)
def action_view_purchase(self):
action = self.env.ref("purchase.purchase_rfq").read()[0]
purchases = self.mapped("purchase_ids")
if len(purchases) > 1:
action["domain"] = [("id", "in", purchases.ids)]
elif purchases:
action["views"] = [
(self.env.ref("purchase.purchase_order_form").id, "form")
]
action["res_id"] = purchases.id
return action