From ae9021bef01fa68482b0a523848431dc4174c2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Rodri=CC=81guez=20Gil?= Date: Fri, 14 Jul 2017 14:12:50 +0200 Subject: [PATCH] =?UTF-8?q?[8.0][aeat=5Fsii][FIX]=20Correcci=C3=B3n=20para?= =?UTF-8?q?=20c=C3=B3mputo=20correcto=20del=20signo=20de=20tipo=20impositi?= =?UTF-8?q?vo=20y=20cuota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- l10n_es_aeat_sii/models/account_invoice.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/l10n_es_aeat_sii/models/account_invoice.py b/l10n_es_aeat_sii/models/account_invoice.py index 2d85b18d0c4..14aa6d00889 100644 --- a/l10n_es_aeat_sii/models/account_invoice.py +++ b/l10n_es_aeat_sii/models/account_invoice.py @@ -1188,9 +1188,9 @@ def _update_sii_tax_line(self, tax_dict, tax_line): """ self.ensure_one() if tax_line.child_depend: - tax_type = tax_line.child_ids.filtered('amount')[:1].amount + tax_type = abs(tax_line.child_ids.filtered('amount')[:1].amount) else: - tax_type = tax_line.amount + tax_type = abs(tax_line.amount) if tax_type not in tax_dict: tax_dict[tax_type] = { 'TipoImpositivo': str(tax_type * 100), @@ -1198,6 +1198,11 @@ def _update_sii_tax_line(self, tax_dict, tax_line): 'CuotaRepercutida': 0, 'CuotaSoportada': 0, } + taxes = tax_line.compute_all( + self._get_sii_line_price_unit(), self.quantity, + self.product_id, self.invoice_id.partner_id, + ) + tax_dict[tax_type]['BaseImponible'] += taxes['total'] # Recargo de equivalencia tax_line_req = self._get_sii_tax_line_req() if tax_line_req: @@ -1207,16 +1212,16 @@ def _update_sii_tax_line(self, tax_dict, tax_line): tax_dict[tax_type].setdefault('CuotaRecargoEquivalencia', 0) tax_dict[tax_type]['CuotaRecargoEquivalencia'] += cuota_recargo # Rest of the taxes - taxes = tax_line.compute_all( - self._get_sii_line_price_unit(), self.quantity, - self.product_id, self.invoice_id.partner_id, - ) - tax_dict[tax_type]['BaseImponible'] += taxes['total'] if self.invoice_id.type in ['out_invoice', 'out_refund']: key = 'CuotaRepercutida' else: key = 'CuotaSoportada' - tax_dict[tax_type][key] += taxes['taxes'][0]['amount'] + if taxes['total'] >= 0: + sii_included_taxes = [t for t in taxes['taxes'] if t['amount'] >= 0] + else: + sii_included_taxes = [t for t in taxes['taxes'] if t['amount'] < 0] + for tax in sii_included_taxes: + tax_dict[tax_type][key] += tax['amount'] @job(default_channel='root.invoice_validate_sii')