fix: Allow multiple liquidity lines for POS payments and safely retrieve payment details.
This commit is contained in:
parent
85ade7855b
commit
2cde9d3c45
@ -129,7 +129,10 @@ class AccountPayment(models.Model):
|
||||
# This module creates additional lines that don't fit the standard pattern
|
||||
has_substract = hasattr(pay, 'amount_substract') and pay.amount_substract and pay.amount_substract > 0
|
||||
|
||||
if not has_substract:
|
||||
# POS Combination Payments can have multiple liquidity lines
|
||||
is_pos_payment = pay._context.get('pos_payment')
|
||||
|
||||
if not has_substract and not is_pos_payment:
|
||||
if len(liquidity_lines) != 1:
|
||||
raise UserError(_(
|
||||
"Journal Entry %s is not valid. In order to proceed, the journal items must "
|
||||
@ -161,24 +164,32 @@ class AccountPayment(models.Model):
|
||||
move.display_name,
|
||||
))
|
||||
|
||||
if counterpart_lines.account_id.account_type == 'asset_receivable':
|
||||
partner_type = 'customer'
|
||||
if counterpart_lines:
|
||||
if counterpart_lines[0].account_id.account_type == 'asset_receivable':
|
||||
partner_type = 'customer'
|
||||
else:
|
||||
partner_type = 'supplier'
|
||||
else:
|
||||
partner_type = 'supplier'
|
||||
partner_type = 'customer'
|
||||
|
||||
liquidity_amount = liquidity_lines.amount_currency
|
||||
liquidity_amount = sum(liquidity_lines.mapped('amount_currency')) if len(liquidity_lines) > 1 else liquidity_lines.amount_currency
|
||||
|
||||
# Use the first line for currency and partner if multiple
|
||||
first_liquidity_line = liquidity_lines[0] if len(liquidity_lines) > 0 else liquidity_lines
|
||||
|
||||
if first_liquidity_line:
|
||||
move_vals_to_write.update({
|
||||
'currency_id': first_liquidity_line.currency_id.id,
|
||||
'partner_id': first_liquidity_line.partner_id.id,
|
||||
})
|
||||
payment_vals_to_write.update({
|
||||
'amount': abs(liquidity_amount),
|
||||
'partner_type': partner_type,
|
||||
'currency_id': first_liquidity_line.currency_id.id,
|
||||
'destination_account_id': counterpart_lines[0].account_id.id if counterpart_lines else False,
|
||||
'partner_id': first_liquidity_line.partner_id.id,
|
||||
})
|
||||
|
||||
move_vals_to_write.update({
|
||||
'currency_id': liquidity_lines.currency_id.id,
|
||||
'partner_id': liquidity_lines.partner_id.id,
|
||||
})
|
||||
payment_vals_to_write.update({
|
||||
'amount': abs(liquidity_amount),
|
||||
'partner_type': partner_type,
|
||||
'currency_id': liquidity_lines.currency_id.id,
|
||||
'destination_account_id': counterpart_lines.account_id.id,
|
||||
'partner_id': liquidity_lines.partner_id.id,
|
||||
})
|
||||
if liquidity_amount > 0.0:
|
||||
payment_vals_to_write.update({'payment_type': 'inbound'})
|
||||
elif liquidity_amount < 0.0:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user