[FIX] l10n_it_edi: fix bank info when credit note
Import an italian E-invoice of type TD04 (Nota di Credito). The invoice type is marked as 'in_refund', but the bank information will still be parsed from the contact info instead of taking the currenct company info. This will fail the check 'validate_partner_bank_id' and the user will see the error 'The account selected for payment does not belong to the same company as this invoice.' Skipping the bank info when we have a credit note opw-2239652 closes odoo/odoo#49949 X-original-commit: 6b5400b Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
This commit is contained in:
@@ -480,34 +480,35 @@ class AccountMove(models.Model):
|
||||
amount_total_import))
|
||||
|
||||
# Bank account. <2.4.2.13>
|
||||
elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento/IBAN')
|
||||
if elements:
|
||||
if invoice_form.partner_id and invoice_form.partner_id.commercial_partner_id:
|
||||
bank = self.env['res.partner.bank'].search([
|
||||
('acc_number', '=', elements[0].text),
|
||||
('partner_id.id', '=', invoice_form.partner_id.commercial_partner_id.id)
|
||||
])
|
||||
else:
|
||||
bank = self.env['res.partner.bank'].search([('acc_number', '=', elements[0].text)])
|
||||
if bank:
|
||||
invoice_form.partner_bank_id = bank
|
||||
else:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Bank account not found, useful informations from XML file:"),
|
||||
self._compose_multi_info_message(
|
||||
body_tree, ['.//DatiPagamento//Beneficiario',
|
||||
'.//DatiPagamento//IstitutoFinanziario',
|
||||
'.//DatiPagamento//IBAN',
|
||||
'.//DatiPagamento//ABI',
|
||||
'.//DatiPagamento//CAB',
|
||||
'.//DatiPagamento//BIC',
|
||||
'.//DatiPagamento//ModalitaPagamento'])))
|
||||
else:
|
||||
elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento')
|
||||
if invoice_form.type not in ('out_invoice', 'in_refund'):
|
||||
elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento/IBAN')
|
||||
if elements:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Bank account not found, useful informations from XML file:"),
|
||||
self._compose_info_message(body_tree, './/DatiPagamento')))
|
||||
if invoice_form.partner_id and invoice_form.partner_id.commercial_partner_id:
|
||||
bank = self.env['res.partner.bank'].search([
|
||||
('acc_number', '=', elements[0].text),
|
||||
('partner_id.id', '=', invoice_form.partner_id.commercial_partner_id.id)
|
||||
])
|
||||
else:
|
||||
bank = self.env['res.partner.bank'].search([('acc_number', '=', elements[0].text)])
|
||||
if bank:
|
||||
invoice_form.partner_bank_id = bank
|
||||
else:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Bank account not found, useful informations from XML file:"),
|
||||
self._compose_multi_info_message(
|
||||
body_tree, ['.//DatiPagamento//Beneficiario',
|
||||
'.//DatiPagamento//IstitutoFinanziario',
|
||||
'.//DatiPagamento//IBAN',
|
||||
'.//DatiPagamento//ABI',
|
||||
'.//DatiPagamento//CAB',
|
||||
'.//DatiPagamento//BIC',
|
||||
'.//DatiPagamento//ModalitaPagamento'])))
|
||||
else:
|
||||
elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento')
|
||||
if elements:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Bank account not found, useful informations from XML file:"),
|
||||
self._compose_info_message(body_tree, './/DatiPagamento')))
|
||||
|
||||
# Invoice lines. <2.2.1>
|
||||
elements = body_tree.xpath('.//DettaglioLinee')
|
||||
|
||||
Reference in New Issue
Block a user