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):