From 69057a4a390e06dccaa4c0462675b49fab75ae63 Mon Sep 17 00:00:00 2001 From: Carmen Bianca BAKKER Date: Mon, 17 Jul 2023 14:35:39 +0200 Subject: [PATCH] [FIX] l10n_be_cooperator_national_number: Fix the tests --- .../models/__init__.py | 3 +- .../models/res_partner.py | 36 +++++++++++++++ .../models/subscription_request.py | 44 ++----------------- .../tests/test_cooperator_national_number.py | 20 ++++----- 4 files changed, 50 insertions(+), 53 deletions(-) create mode 100644 l10n_be_cooperator_national_number/models/res_partner.py diff --git a/l10n_be_cooperator_national_number/models/__init__.py b/l10n_be_cooperator_national_number/models/__init__.py index 397fcdcab..40cf510c0 100644 --- a/l10n_be_cooperator_national_number/models/__init__.py +++ b/l10n_be_cooperator_national_number/models/__init__.py @@ -1,2 +1,3 @@ -from . import subscription_request from . import company +from . import subscription_request +from . import res_partner diff --git a/l10n_be_cooperator_national_number/models/res_partner.py b/l10n_be_cooperator_national_number/models/res_partner.py new file mode 100644 index 000000000..c091fc891 --- /dev/null +++ b/l10n_be_cooperator_national_number/models/res_partner.py @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: 2023 Coop IT Easy SC +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from odoo import models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + def update_belgian_national_number(self, national_number): + self.ensure_one() + result = None + if national_number: + belgian_cat = self.env.ref( + "l10n_be_national_number.l10n_be_national_number_category" + ) + existing = self.env["res.partner.id_number"].search( + [ + ("partner_id", "=", self.id), + ("category_id", "=", belgian_cat.id), + ] + ) + # Update + if existing: + existing.name = national_number + result = existing + # Create new + else: + values = { + "name": national_number, + "category_id": belgian_cat.id, + "partner_id": self.id, + } + result = self.env["res.partner.id_number"].create(values) + return result diff --git a/l10n_be_cooperator_national_number/models/subscription_request.py b/l10n_be_cooperator_national_number/models/subscription_request.py index c05781c79..31d9c4c11 100644 --- a/l10n_be_cooperator_national_number/models/subscription_request.py +++ b/l10n_be_cooperator_national_number/models/subscription_request.py @@ -38,48 +38,12 @@ def validate_subscription_request(self): self.ensure_one() if self.require_national_number and not self.national_number: raise UserError(_("National Number is required.")) - super().validate_subscription_request() - - def create_national_number(self, partner): - self.ensure_one() + invoice = super().validate_subscription_request() if not self.is_company: - if not self.national_number and self.require_national_number: - raise ValueError(_("National Number is required.")) - elif not self.national_number: - # Do nothing if no national number is provided, but none is - # required. - pass - else: - values = { - "name": self.national_number, - "category_id": self.env.ref( - "l10n_be_national_number.l10n_be_national_number_category" # noqa - ).id, - "partner_id": partner.id, - } - self.env["res.partner.id_number"].create(values) - return partner - - def create_coop_partner(self): - self.ensure_one() - partner = super().create_coop_partner() - if self.display_national_number: - self.create_national_number(partner) - return partner - - def get_representative_vals(self): - contact_vals = super().get_representative_vals() - contact_vals["national_number"] = self.national_number - return contact_vals - - def get_partner_vals(self): - contact_vals = super().get_partner_vals() - return contact_vals + partner = invoice.partner_id + partner.update_belgian_national_number(self.national_number) + return invoice def get_person_info(self, partner): super().get_person_info(partner) self.national_number = self.get_national_number_from_partner(partner) - - def update_partner_info(self): - self.create_national_number(self.partner_id) - super().update_partner_info() diff --git a/l10n_be_cooperator_national_number/tests/test_cooperator_national_number.py b/l10n_be_cooperator_national_number/tests/test_cooperator_national_number.py index ee7d57b94..f13ac66ee 100644 --- a/l10n_be_cooperator_national_number/tests/test_cooperator_national_number.py +++ b/l10n_be_cooperator_national_number/tests/test_cooperator_national_number.py @@ -19,24 +19,22 @@ def create_subscription_request(self): return self.env["subscription.request"].create(vals) def set_national_number_required(self): - company = self.env.company - company.display_national_number = True - company.require_national_number = True + self.company.display_national_number = True + self.company.require_national_number = True def test_require_without_display(self): """You cannot require a national number without also displaying it.""" - company = self.env.company - company.write( + self.company.write( { "display_national_number": False, "require_national_number": False, } ) with self.assertRaises(ValidationError): - company.require_national_number = True + self.company.require_national_number = True self.set_national_number_required() with self.assertRaises(ValidationError): - company.display_national_number = False + self.company.display_national_number = False def test_company_not_required(self): """Subscription requests for companies do not require a national number.""" @@ -69,22 +67,20 @@ def test_error_if_missing_and_required(self): def test_no_national_number_provided(self): """Expect an error if no national number is given, but one is required.""" self.set_national_number_required() - vals = self.get_dummy_company_subscription_requests_vals() + vals = self.get_dummy_subscription_requests_vals() subscription_request = self.env["subscription.request"].create(vals) with self.assertRaises(UserError): subscription_request.validate_subscription_request() - with self.assertRaises(UserError): - subscription_request.create_coop_partner() def test_national_number_provided_not_required(self): """Expect no error when a number is given but not required.""" - vals = self.get_dummy_company_subscription_requests_vals() + vals = self.get_dummy_subscription_requests_vals() subscription_request = self.env["subscription.request"].create(vals) subscription_request.national_number = 12345 subscription_request.validate_subscription_request() def test_no_national_number_provided_not_required(self): """Expect no error when no number is given nor required.""" - vals = self.get_dummy_company_subscription_requests_vals() + vals = self.get_dummy_subscription_requests_vals() subscription_request = self.env["subscription.request"].create(vals) subscription_request.validate_subscription_request()