File: pos_config.py

package info (click to toggle)
odoo 18.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 878,716 kB
  • sloc: javascript: 927,937; python: 685,670; xml: 388,524; sh: 1,033; sql: 415; makefile: 26
file content (26 lines) | stat: -rw-r--r-- 1,208 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo import models, api, _
from odoo.exceptions import ValidationError


class PosConfig(models.Model):
    _inherit = 'pos.config'

    @api.constrains('payment_method_ids')
    def _check_online_payment_methods(self):
        """ Checks the journal currency with _get_online_payment_providers(..., error_if_invalid=True)"""
        for config in self:
            opm_amount = 0
            for pm in config.payment_method_ids:
                if pm.is_online_payment:
                    opm_amount += 1
                    if opm_amount > 1:
                        raise ValidationError(_("A POS config cannot have more than one online payment method."))
                    if not pm._get_online_payment_providers(config.id, error_if_invalid=True):
                        raise ValidationError(_("To use an online payment method in a POS config, it must have at least one published payment provider supporting the currency of that POS config."))

    def _get_cashier_online_payment_method(self):
        self.ensure_one()
        return self.payment_method_ids.filtered('is_online_payment')[:1]