diff --git a/addons/l10n_it_edi/models/account_edi_format.py b/addons/l10n_it_edi/models/account_edi_format.py index 49e705dfcc5255932ba2d6fe06485ea3d4895dc7..7bdc07fcc666a65de1e13ea51a3ccf9a521de0a7 100644 --- a/addons/l10n_it_edi/models/account_edi_format.py +++ b/addons/l10n_it_edi/models/account_edi_format.py @@ -1,7 +1,7 @@ # -*- coding:utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import api, models, fields, _, _lt +from odoo import Command, api, models, fields, _, _lt from odoo.exceptions import UserError from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyError from odoo.addons.l10n_it_edi.tools.remove_signature import remove_signature @@ -722,11 +722,11 @@ class AccountEdiFormat(models.Model): general_discount = discounted_amount - taxable_amount sequence = len(elements) + 1 - with invoice_form.invoice_line_ids.new() as invoice_line_global_discount: - invoice_line_global_discount.tax_ids.clear() - invoice_line_global_discount.sequence = sequence - invoice_line_global_discount.name = 'SCONTO' if general_discount < 0 else 'MAGGIORAZIONE' - invoice_line_global_discount.price_unit = general_discount + invoice_form.invoice_line_ids = [Command.create({ + 'sequence': sequence, + 'name': 'SCONTO' if general_discount < 0 else 'MAGGIORAZIONE', + 'price_unit': general_discount, + })] new_invoice = invoice_form diff --git a/addons/l10n_it_edi/tests/test_edi_import.py b/addons/l10n_it_edi/tests/test_edi_import.py index 5ef4727f826483dddbe713d8649a9770c65c5607..6fb77c310ef76cb432e95180ce68b80cb6007cb9 100644 --- a/addons/l10n_it_edi/tests/test_edi_import.py +++ b/addons/l10n_it_edi/tests/test_edi_import.py @@ -129,3 +129,21 @@ class TestItEdiImport(TestItEdi): self.assertEqual(len(attachments), 1) invoices = self.env['account.move'].search([('payment_reference', '=', 'TWICE_TEST')]) self.assertEqual(len(invoices), 1) + + def test_receive_bill_with_global_discount(self): + content = self.with_applied_xpath( + etree.fromstring(self.invoice_content), + ''' + <xpath expr="//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento" position="inside"> + <ScontoMaggiorazione> + <Tipo>SC</Tipo> + <Importo>10</Importo> + </ScontoMaggiorazione> + </xpath> + ''') + invoices = self.edi_format._create_invoice_from_xml_tree(self.invoice_filename2, content) + + discount_line = invoices.invoice_line_ids.filtered(lambda line: line.name == 'SCONTO') + self.assertRecordValues(discount_line, [{ + 'price_unit': -10, + }])