diff --git a/models/company_share_line.py b/models/company_share_line.py index e2b8284a3f1d905d51e1c5d7d8b6deb2767e930b..f1a8dc9fa0dd5b6890725cd2ff2d01616b9e79e9 100644 --- a/models/company_share_line.py +++ b/models/company_share_line.py @@ -13,9 +13,7 @@ class CompanyShareLine(models.Model): # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ - share_number = fields.Integer( - string="Number of Share", required=True - ) + share_number = fields.Integer(string="Number of Share", required=True) share_unit_price = fields.Monetary( string="Share price", currency_field="company_currency_id", diff --git a/models/res_company.py b/models/res_company.py index 888d9ba9e1d3fff468c56b7bf3be68f5891450a3..423ab2ea2f91b466eca5e768345b6b2638b0a94b 100644 --- a/models/res_company.py +++ b/models/res_company.py @@ -19,16 +19,20 @@ class ResCompany(models.Model): # ------------------------------------------------------ # Constraints # ------------------------------------------------------ - @api.constrains( - "company_share_line_ids", - "company_share_line_ids.share_count", - "company_share_line_ids.company_id", - ) + @api.constrains("company_share_line_ids",) def _check_share_line(self): for company in self: company_share_line = company.company_share_line_ids - share_in = sum(company_share_line(lambda s: s.share_action == "purchase")) - share_out = sum(company_share_line(lambda s: s.share_action == "refund")) + share_in = sum( + company_share_line.filtered( + lambda s: s.share_action == "purchase" + ).mapped("share_number") + ) + share_out = sum( + company_share_line.filtered( + lambda s: s.share_action == "refund" + ).mapped("share_number") + ) if share_out > share_in: raise ValidationError(_("You cannot refund more shares that you have."))