partner-contact/partner_tier_validation/models/tier_validation.py

59 lines
2.2 KiB
Python
Raw Normal View History

2021-03-23 19:36:29 +00:00
# Copyright 2019 Open Source Integrators
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from flectra import api, models
class TierValidation(models.AbstractModel):
_inherit = "tier.validation"
@api.model
def _get_under_validation_exceptions(self):
"""Extend for more field exceptions."""
res = super(TierValidation, self)._get_under_validation_exceptions() or []
ex_fields = ["categ_id", "state", "customer", "supplier", "excise_tax"]
for val in ex_fields:
res.append(val)
return res
def validate_tier(self):
super(TierValidation, self).validate_tier()
# make sure to only work with res.partner object.
if self._name != "res.partner":
return
for partner in self:
rec = self.env["tier.review"].search(
[("res_id", "=", partner.id), ("model", "=", "res.partner")]
)
if rec and rec.status == "approved":
partner.state = "approved"
# Need to override for Partner Tier Validation since can_review field
# is set to True based only
# if current user is a member of reviewer_ids. This can_review field
# is used to enable or disable the boolean
# field Is Customer / Is Vendor not only during the Validation process
# but even if it is in Approved State.
@api.depends("review_ids")
def _compute_reviewer_ids(self):
if str(self.__class__) == "<class 'flectra.api.res.partner'>":
for rec in self:
rec.reviewer_ids = rec.review_ids.filtered(
lambda r: r.status in ("pending", "approved")
).mapped("reviewer_ids")
else:
for rec in self:
rec.reviewer_ids = rec.review_ids.filtered(
lambda r: r.status == "pending"
).mapped("reviewer_ids")
def request_validation(self):
res = super().request_validation()
for rec in self.filtered(lambda x: x._name == "res.partner"):
rec.message_subscribe(
partner_ids=[
self.env.user.partner_id.id,
]
)
return res