36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
from collections import defaultdict
|
|
|
|
from odoo import api, models
|
|
|
|
|
|
class AccountMove(models.Model):
|
|
_name = 'account.move'
|
|
_inherit = ['account.move', 'pos.load.mixin']
|
|
|
|
@api.model
|
|
def _load_pos_data_domain(self, data, config):
|
|
return [('pos_order_ids', 'in', [order['id'] for order in data['pos.order']])]
|
|
|
|
def _l10n_ec_get_payment_data(self):
|
|
# EXTENDS l10n_ec_edi
|
|
# If an invoice is created from a pos order, then the payment is collected at the moment of sale.
|
|
if self.pos_order_ids:
|
|
payment_data = defaultdict(lambda: {'payment_total': 0})
|
|
for payment in self.pos_order_ids.payment_ids:
|
|
grouping_key = (payment.pos_order_id.id, payment.payment_method_id.id)
|
|
payment_data[grouping_key].update({
|
|
'payment_code': payment.payment_method_id.l10n_ec_sri_payment_id.code,
|
|
'payment_name': payment.payment_method_id.l10n_ec_sri_payment_id.display_name,
|
|
'payment_total': payment_data[grouping_key]['payment_total'] + payment.amount,
|
|
})
|
|
return list(payment_data.values())
|
|
return super()._l10n_ec_get_payment_data()
|
|
|
|
def _l10n_ec_get_formas_de_pago(self):
|
|
# EXTENDS l10n_ec_edi
|
|
self.ensure_one()
|
|
if self.l10n_ec_sri_payment_id.code == 'mpm' and (pos_order := self.pos_order_ids):
|
|
return [payment.payment_method_id.l10n_ec_sri_payment_id.code for payment in pos_order.payment_ids]
|
|
else:
|
|
return super()._l10n_ec_get_formas_de_pago()
|