[14.0][FIX] payment_environment: Fix state usage

As state field is now managed as server environment fields, the field is considered as a computed fields.
Then, we need to define a custom search function to be able to search on this field.
This commit is contained in:
jcoux 2021-12-15 11:03:57 +01:00
parent f01681272b
commit 7f07e96ea0
1 changed files with 28 additions and 1 deletions

View File

@ -2,7 +2,8 @@
# @author Iván Todorovich <ivan.todorovich@gmail.com>
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
from odoo import models
from odoo import fields, models
from odoo.osv import expression
class PaymentAcquirer(models.Model):
@ -21,3 +22,29 @@ class PaymentAcquirer(models.Model):
}
acquirer_fields.update(base_fields)
return acquirer_fields
state = fields.Selection(
search="_search_state",
)
def _search_state(self, operator, value):
"""
As state field is now managed as server environment fields,
the field is considered as a computed fields.
Then, we need to define a custom search function
to be able to search on this field.
We don't want to cover all cases,
just search implemented in core function
to display the acquirers when generating the payment link.
See module payment in controller/portal.py function pay()
Used domain is: ('state', 'in', ['enabled', 'test'])
"""
if operator == "in" and isinstance(value, list):
valid_acquirers = self.search([]).filtered_domain([("state", "in", value)])
if valid_acquirers:
return [("id", "in", valid_acquirers.ids)]
return expression.FALSE_DOMAIN