diff --git a/payment_environment/models/payment_acquirer.py b/payment_environment/models/payment_acquirer.py index 0709c5a..a298708 100644 --- a/payment_environment/models/payment_acquirer.py +++ b/payment_environment/models/payment_acquirer.py @@ -2,7 +2,8 @@ # @author Iván Todorovich # 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