From 28eb6b478b6ec92d93d796c21184f82bd286167a Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Wed, 29 Jan 2025 11:33:19 +0100 Subject: [PATCH] Explain the reason for evtl. tax mismatch. --- document.py | 23 ++++++++++++++++++----- locale/de.po | 3 +++ message.xml | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/document.py b/document.py index 39b1f00..a3bf0c9 100644 --- a/document.py +++ b/document.py @@ -101,12 +101,15 @@ class Incoming(metaclass=PoolMeta): UserError: if calculated values dont match with xml-values """ + pool = Pool() + Configuration = pool.get('account.configuration.tax_rounding') + configuration = Configuration(1) + totals = self.parsed_data.get('total', None) if not totals: raise UserError(gettext( 'msg_convert_error.msg_convert_error', msg='no totals-section in xml-data')) - for xfield, inv_field in [ ('taxbase', 'untaxed_amount'), ('taxtotal', 'tax_amount'), @@ -115,15 +118,25 @@ class Incoming(metaclass=PoolMeta): inv_val = getattr(invoice, inv_field) if xml_val != inv_val: - raise UserError(gettext( - 'document_incoming_invoice_xml.msg_convert_error', - msg=' '.join([ + rounding = configuration.tax_rounding + field_name = 'tax_rounding' + selection_values = configuration.fields_get( + [field_name])[field_name]['selection'] + rounding_cfg = [ + i[1] for i in selection_values if i[0] == rounding][0] + msg = ' '.join([ inv_field + ' mismatch', 'from-xml=' + Report.format_currency( xml_val, None, invoice.currency), 'calculated=' + Report.format_currency( inv_val, None, invoice.currency) - ]))) + ]) + msg += '\n\n' + gettext( + 'document_incoming_invoice_xml.msg_tax_amount_mismatch', + rounding=rounding_cfg) + raise UserError(gettext( + 'document_incoming_invoice_xml.msg_convert_error', + msg=msg)) def _readxml_xpath(self, tags): """ generate xpath diff --git a/locale/de.po b/locale/de.po index 67a498c..84ba775 100644 --- a/locale/de.po +++ b/locale/de.po @@ -46,6 +46,9 @@ msgctxt "model:ir.message,text:msg_unused_linevalues" msgid "The following data was not used to generate the invoice line:" msgstr "Die folgenden Daten wurden für die Erzeugung der Rechnungszeile nicht verwendet:" +msgctxt "model:ir.message,text:msg_tax_amount_mismatch" +msgid "You have configured tax rounding method '%(rounding)s' in the account configuration. Maybe try with a different method" +msgstr "In Rechnungswesen/Einstellungen ist die Steuerrundungsmethode '%(rounding)s' eingetragen. Versuchen Sie es u.U. mit einer anderen Methode' ################################### # document.incoming.configuration # diff --git a/message.xml b/message.xml index e65f1a2..0b743d1 100644 --- a/message.xml +++ b/message.xml @@ -35,6 +35,9 @@ The following data was not used to generate the invoice line: + + You have configured tax rounding method '%(rounding)s' in the account configuration. Maybe try with a different method +