From 3c0c170daa8d463f002bb460e48f0ea7aebb678a Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Mon, 22 Jul 2024 17:54:35 +0200 Subject: [PATCH] [FIX] constrains error --- models/company_share_line.py | 4 +--- models/res_company.py | 18 +++++++++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/models/company_share_line.py b/models/company_share_line.py index e2b8284..f1a8dc9 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 888d9ba..423ab2e 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.")) -- GitLab