[FIX] payment_environment: Fix state usage

This commit is contained in:
Telmo Santos 2022-04-26 07:35:15 +02:00
parent 41d195575f
commit cfc4b47142
1 changed files with 25 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,26 @@ 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