From a61552565cad462f25b1accf4de49c18f60a81ed Mon Sep 17 00:00:00 2001 From: Carmen Bianca BAKKER Date: Tue, 20 Feb 2024 17:47:02 +0100 Subject: [PATCH] [IMP] cooperator: Force 'increase' type if already cooperator Signed-off-by: Carmen Bianca BAKKER --- cooperator/models/subscription_request.py | 13 +++++++++++-- cooperator/tests/test_cooperator.py | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/cooperator/models/subscription_request.py b/cooperator/models/subscription_request.py index 732db262c..1870db914 100644 --- a/cooperator/models/subscription_request.py +++ b/cooperator/models/subscription_request.py @@ -191,7 +191,7 @@ def _compute_subscription_amount(self): ) already_cooperator = fields.Boolean( - string="I'm already cooperator", + string="Already a cooperator", readonly=True, compute="_compute_already_cooperator", ) @@ -227,7 +227,7 @@ def _compute_subscription_amount(self): type = fields.Selection( [ ("new", "New Cooperator"), - ("increase", "Increase number of share"), + ("increase", "Increase number of shares"), ], string="Type of Subscription", default="new", @@ -849,6 +849,15 @@ def validate_subscription_request(self): if self.ordered_parts <= 0: raise UserError(_("Number of share must be greater than 0.")) + if self.already_cooperator and self.type != "increase": + raise UserError( + _( + "Partner %s is already a cooperator, subscription type" + " must be 'Increase number of shares'." + ) + % self.partner_id.name + ) + partner = self.setup_partner() invoice = self.create_invoice(partner) diff --git a/cooperator/tests/test_cooperator.py b/cooperator/tests/test_cooperator.py index 248f8570f..b2c4ce6e6 100644 --- a/cooperator/tests/test_cooperator.py +++ b/cooperator/tests/test_cooperator.py @@ -891,8 +891,12 @@ def test_partner_existing(self): "lang": "en_US", } ) + partner.create_cooperative_membership(self.env.company) + partner.member = True with Form(self.env["subscription.request"]) as request_form: + self.assertEqual(request_form.type, "new") request_form.partner_id = partner + self.assertEqual(request_form.type, "increase") self.assertEqual(request_form.firstname, partner.firstname) self.assertEqual(request_form.lastname, partner.lastname) self.assertEqual(request_form.email, partner.email) @@ -908,6 +912,23 @@ def test_partner_existing(self): # This is to make sure that the form can be saved. request_form.share_product_id = self.share_x + def test_constrain_type_if_already_cooperator(self): + """ + If a partner is already a cooperator, don't allow the 'new' type. + """ + partner = self.env["res.partner"].create({"name": "Test Partner"}) + partner.create_cooperative_membership(self.env.company) + partner.member = True + vals = self.get_dummy_subscription_requests_vals() + vals["type"] = "new" + subscription_request = self.env["subscription.request"].create(vals) + subscription_request.partner_id = partner + self.assertTrue(subscription_request.already_cooperator) + with self.assertRaises(UserError): + subscription_request.validate_subscription_request() + subscription_request.type = "increase" + subscription_request.validate_subscription_request() + @freeze_time("2023-06-21") def test_partner_company_dependent_fields_with_membership(self): """