Skip to content

Commit

Permalink
[IMP] cooperator: Force 'increase' type if already cooperator
Browse files Browse the repository at this point in the history
Signed-off-by: Carmen Bianca BAKKER <carmen@coopiteasy.be>
  • Loading branch information
carmenbianca committed Feb 20, 2024
1 parent 4ad0b38 commit a615525
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
13 changes: 11 additions & 2 deletions cooperator/models/subscription_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
)
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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)
Expand Down
21 changes: 21 additions & 0 deletions cooperator/tests/test_cooperator.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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):
"""
Expand Down

0 comments on commit a615525

Please sign in to comment.