# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import fields, models class ResPartner(models.Model): _inherit = 'res.partner' def get_total_due(self, pos_currency): pos_payments = self.env['pos.order'].search([ ('partner_id', '=', self.id), ('state', '=', 'paid'), ('session_id.state', '!=', 'closed')]).mapped('payment_ids') total_settled = sum(pos_payments.filtered_domain( [('payment_method_id.type', '=', 'pay_later')]).mapped('amount')) self_sudo = self group_pos_user = self.env.ref('point_of_sale.group_pos_user') if group_pos_user in self.env.user.groups_id: self_sudo = self.sudo() # allow POS users without accounting rights to settle dues if self.env.company.currency_id.id != pos_currency: pos_currency = self.env['res.currency'].browse(pos_currency) return self.env.company.currency_id._convert(self_sudo.total_due, pos_currency, self.env.company, fields.Date.today()) + total_settled return self_sudo.total_due + total_settled