Skip to content

Commit ceaf060

Browse files
committed
[MIG] product_restrict_payment_acquirer: “all” mode provider logic
Compute intersection inside the loop to avoid overwriting the set. Task: 4861
1 parent f3200a7 commit ceaf060

File tree

2 files changed

+10
-24
lines changed

2 files changed

+10
-24
lines changed

product_restrict_payment_acquirer/models/payment_provider.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,11 @@ def _get_compatible_providers(
4242

4343
# All-products mode
4444
if mode == "all":
45-
allowed = False
45+
common = False
4646
for line in self.env["sale.order"].browse(order_id).order_line:
4747
pps = line.product_id.allowed_payment_provider_ids
48-
49-
allowed = (allowed & pps) if allowed else pps
50-
return allowed or providers
48+
common = (common & pps) if common else pps
49+
return common or providers
5150

5251
# Fallback
5352
return providers

product_restrict_payment_acquirer/tests/test_payment_acquirer.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,12 @@ def setUpClass(cls):
1111
# Initialize providers
1212
cls.paypal = cls.env.ref("payment.payment_provider_paypal")
1313
cls.paypal.write({"state": "test"})
14-
cls.providers = cls.env["payment.provider"].search(
15-
[("state", "in", ["enabled", "test"])]
16-
)
1714
cls.wire_transfer = cls.env.ref("payment.payment_provider_transfer")
18-
cls.wire_transfer.write({"state": "enabled"})
1915

2016
# Initialize partner restrictions
2117
cls.res_partner_deco = cls.env.ref("base.res_partner_2")
2218
cls.res_partner_deco.write(
23-
{"allowed_payment_provider_ids": [(4, cls.wire_transfer.id)]}
19+
{"allowed_provider_ids": [(4, cls.wire_transfer.id)]}
2420
)
2521

2622
# Create products with provider restrictions
@@ -68,19 +64,16 @@ def test_get_compatible_providers_blank_option(self):
6864
self.assertCountEqual(
6965
list(result),
7066
[self.wire_transfer],
71-
"Must return only partner allowed provider",
7267
)
73-
7468
# without order: all enabled providers
75-
result = self.env["payment.provider"]._get_compatible_providers(
69+
result_no_order = self.env["payment.provider"]._get_compatible_providers(
7670
company_id=self.env.company.id,
7771
partner_id=self.res_partner_deco.id,
7872
amount=100.0,
7973
)
8074
self.assertCountEqual(
81-
list(result),
75+
list(result_no_order),
8276
[self.wire_transfer, self.paypal],
83-
"Must return all enabled providers",
8477
)
8578

8679
def test_get_compatible_providers_first_option(self):
@@ -98,19 +91,16 @@ def test_get_compatible_providers_first_option(self):
9891
self.assertCountEqual(
9992
list(result),
10093
[self.wire_transfer, self.paypal],
101-
"Must return providers allowed on first order line",
10294
)
103-
10495
# without order: all enabled providers
105-
result = self.env["payment.provider"]._get_compatible_providers(
96+
result_no_order = self.env["payment.provider"]._get_compatible_providers(
10697
company_id=self.env.company.id,
10798
partner_id=self.res_partner_deco.id,
10899
amount=50.0,
109100
)
110101
self.assertCountEqual(
111-
list(result),
102+
list(result_no_order),
112103
[self.wire_transfer, self.paypal],
113-
"Must return all enabled providers when no order",
114104
)
115105

116106
def test_get_compatible_providers_all_option(self):
@@ -128,17 +118,14 @@ def test_get_compatible_providers_all_option(self):
128118
self.assertCountEqual(
129119
list(result),
130120
[self.paypal],
131-
"Must return only common provider for all order lines",
132121
)
133-
134122
# without order: all enabled providers
135-
result = self.env["payment.provider"]._get_compatible_providers(
123+
result_no_order = self.env["payment.provider"]._get_compatible_providers(
136124
company_id=self.env.company.id,
137125
partner_id=self.res_partner_deco.id,
138126
amount=75.0,
139127
)
140128
self.assertCountEqual(
141-
list(result),
129+
list(result_no_order),
142130
[self.wire_transfer, self.paypal],
143-
"Must return all enabled providers when no order",
144131
)

0 commit comments

Comments
 (0)