From d85a8acdcccf0702267181e2f4a34152349e003b Mon Sep 17 00:00:00 2001 From: Daniel Blanco Date: Thu, 30 Sep 2021 19:33:20 +0000 Subject: [PATCH] [FIX] l10n_cl: modifications needed to create electronic vendor bill document type (46) since it is mandatory for some customers. Adds new account to withhold vat tax, and new vat tax Enables document type 46 Allow electronic docs in purchase journals [FIX] l10n_latam_invoice_document Consider doc type 46 as a vendor document More information -> https://www.sii.cl/preguntas_frecuentes/catastro/001_012_3665.htm [RM] l10n_cl: remove _filter_taxes_included method closes odoo/odoo#79479 X-original-commit: 0c34fe795cee7eb6f0c5678f9e505ccc9b6e57e8 Related: odoo/enterprise#22160 Signed-off-by: Josse Colpaert --- addons/l10n_cl/data/account_tax_data.xml | 38 +++++++++++++++++++ .../l10n_cl/data/account_tax_report_data.xml | 7 ++++ addons/l10n_cl/data/l10n_cl_chart_data.xml | 8 ++++ .../l10n_cl/data/l10n_latam.document.type.csv | 2 +- addons/l10n_cl/models/account_move.py | 10 ++++- .../models/l10n_latam_document_type.py | 3 ++ .../models/account_move.py | 6 +-- .../wizards/account_move_reversal.py | 2 +- 8 files changed, 70 insertions(+), 6 deletions(-) diff --git a/addons/l10n_cl/data/account_tax_data.xml b/addons/l10n_cl/data/account_tax_data.xml index 13c7ece44c2..223a3a62391 100644 --- a/addons/l10n_cl/data/account_tax_data.xml +++ b/addons/l10n_cl/data/account_tax_data.xml @@ -115,6 +115,44 @@ ]"/> + + + Retención Total IVA + Retención total IVA + -19.00 + + percent + purchase + 15 + + + + + Específico Compra diff --git a/addons/l10n_cl/data/account_tax_report_data.xml b/addons/l10n_cl/data/account_tax_report_data.xml index d55ad2d2e07..9df13d9af2d 100644 --- a/addons/l10n_cl/data/account_tax_report_data.xml +++ b/addons/l10n_cl/data/account_tax_report_data.xml @@ -36,6 +36,13 @@ + + Retención Total (compras) + Retención Total (compras) + + + + Impuesto Originado por la Venta Impuesto Originado por la Venta diff --git a/addons/l10n_cl/data/l10n_cl_chart_data.xml b/addons/l10n_cl/data/l10n_cl_chart_data.xml index 9910f1eb7b4..5ae9251a694 100644 --- a/addons/l10n_cl/data/l10n_cl_chart_data.xml +++ b/addons/l10n_cl/data/l10n_cl_chart_data.xml @@ -944,6 +944,14 @@ + + 210715 + IVA Retenido a terceros + + + + + 210750 Impuesto Renta 1a Categoría por Pagar diff --git a/addons/l10n_cl/data/l10n_latam.document.type.csv b/addons/l10n_cl/data/l10n_latam.document.type.csv index 97119bd79e8..45aee008624 100644 --- a/addons/l10n_cl/data/l10n_latam.document.type.csv +++ b/addons/l10n_cl/data/l10n_latam.document.type.csv @@ -12,7 +12,7 @@ dc_y_f_dtn,10,32,Factura de Ventas y Servicios no Afectos o Exentos de IVA,F-EXE dc_l_f_dtn,10,40,Liquidación Factura,L-FACTURAM,invoice,FAL,base.cl,False dc_l_f_dte,10,43,Liquidación Factura Electrónica,L-FACTURAE,invoice,FAL,base.cl,False dc_fc_f_dtn,10,45,Factura de Compra,FACTURA,invoice_in,FAC,base.cl,False -dc_fc_f_dte,10,46,Factura de Compra Electrónica,FACTURA,invoice_in,FAC,base.cl,False +dc_fc_f_dte,10,46,Factura de Compra Electrónica,FACTURA,invoice_in,FAC,base.cl,True dc_nd_f_dtn,10,55,Nota de Débito,NOTA DE DEBITO,debit_note,N/D,base.cl,False dc_nc_f_dtn,10,60,Nota de Crédito,NOTA DE CREDITO,credit_note,N/C,base.cl,False dc_s_f_dtn,10,108,SRF Solicitud de Registro de Factura,SOL REGISTRO,,REG,base.cl,False diff --git a/addons/l10n_cl/models/account_move.py b/addons/l10n_cl/models/account_move.py index fdc20d0b6c4..4d02b00e19e 100644 --- a/addons/l10n_cl/models/account_move.py +++ b/addons/l10n_cl/models/account_move.py @@ -109,9 +109,12 @@ class AccountMove(models.Model): if self.company_id.account_fiscal_country_id.code == "CL" and self.l10n_latam_use_documents: where_string = where_string.replace('journal_id = %(journal_id)s AND', '') where_string += ' AND l10n_latam_document_type_id = %(l10n_latam_document_type_id)s AND ' \ - 'company_id = %(company_id)s AND move_type IN (\'out_invoice\', \'out_refund\')' + 'company_id = %(company_id)s AND move_type IN %(move_type)s' + param['company_id'] = self.company_id.id or False param['l10n_latam_document_type_id'] = self.l10n_latam_document_type_id.id or 0 + param['move_type'] = (('in_invoice', 'in_refund') if + self.l10n_latam_document_type_id._is_doc_type_vendor() else ('out_invoice', 'out_refund')) return where_string, param def _get_name_invoice_report(self): @@ -142,3 +145,8 @@ class AccountMove(models.Model): def _l10n_cl_include_sii(self): self.ensure_one() return self.l10n_latam_document_type_id.code in ['39', '41', '110', '111', '112', '34'] + + def _is_manual_document_number(self): + if self.journal_id.company_id.country_id.code == 'CL': + return self.journal_id.type == 'purchase' and not self.l10n_latam_document_type_id._is_doc_type_vendor() + return super()._is_manual_document_number() diff --git a/addons/l10n_cl/models/l10n_latam_document_type.py b/addons/l10n_cl/models/l10n_latam_document_type.py index 6e5916b9527..627390294c8 100644 --- a/addons/l10n_cl/models/l10n_latam_document_type.py +++ b/addons/l10n_cl/models/l10n_latam_document_type.py @@ -28,3 +28,6 @@ class L10nLatamDocumentType(models.Model): return False return document_number.zfill(6) + + def _is_doc_type_vendor(self): + return self.code == '46' diff --git a/addons/l10n_latam_invoice_document/models/account_move.py b/addons/l10n_latam_invoice_document/models/account_move.py index 1b9d5a1af36..d37fdd3fd81 100644 --- a/addons/l10n_latam_invoice_document/models/account_move.py +++ b/addons/l10n_latam_invoice_document/models/account_move.py @@ -74,12 +74,12 @@ class AccountMove(models.Model): """ Indicates if this document type uses a sequence or if the numbering is made manually """ recs_with_journal_id = self.filtered(lambda x: x.journal_id and x.journal_id.l10n_latam_use_documents) for rec in recs_with_journal_id: - rec.l10n_latam_manual_document_number = self._is_manual_document_number(rec.journal_id) + rec.l10n_latam_manual_document_number = rec._is_manual_document_number() remaining = self - recs_with_journal_id remaining.l10n_latam_manual_document_number = False - def _is_manual_document_number(self, journal): - return True if journal.type == 'purchase' else False + def _is_manual_document_number(self): + return self.journal_id.type == 'purchase' @api.depends('name') def _compute_l10n_latam_document_number(self): diff --git a/addons/l10n_latam_invoice_document/wizards/account_move_reversal.py b/addons/l10n_latam_invoice_document/wizards/account_move_reversal.py index caef7474472..002b6486502 100644 --- a/addons/l10n_latam_invoice_document/wizards/account_move_reversal.py +++ b/addons/l10n_latam_invoice_document/wizards/account_move_reversal.py @@ -19,7 +19,7 @@ class AccountMoveReversal(models.TransientModel): for rec in self.filtered('move_ids'): move = rec.move_ids[0] if move.journal_id and move.journal_id.l10n_latam_use_documents: - rec.l10n_latam_manual_document_number = self.env['account.move']._is_manual_document_number(move.journal_id) + rec.l10n_latam_manual_document_number = move._is_manual_document_number() @api.model def _reverse_type_map(self, move_type):