From e973f54f2050ff26722eb67580a19daefdc641f4 Mon Sep 17 00:00:00 2001 From: Pablo Montenegro Date: Mon, 22 May 2023 11:27:20 -0300 Subject: [PATCH] [FW][IMP]l10n_ar_account_tax_settlement: retenciones y percepciones IVA txt #163 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cerré este FP: https://github.com/ingadhoc/odoo-argentina-ee/pull/163 El pr que viene de 13 es este: https://github.com/ingadhoc/odoo-argentina-ee/pull/153 --- l10n_ar_account_tax_settlement/README.rst | 3 + .../__manifest__.py | 2 +- .../models/account_journal.py | 57 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/l10n_ar_account_tax_settlement/README.rst b/l10n_ar_account_tax_settlement/README.rst index 03bf0f34..f084046c 100644 --- a/l10n_ar_account_tax_settlement/README.rst +++ b/l10n_ar_account_tax_settlement/README.rst @@ -45,6 +45,9 @@ Especificación de archivos: cuit (req): 11, razon_soc (req): 80, nro_certificado: 10, fecha_ret: 10 (formato "dd/mm/aaaa"), base_imp: 09.2, alicuota: 09.6, importe (req): 09.2 Los campos "base_imp","alicuota","importe" son numéricos , deben completarse con ceros a la izquierda y tienen "." decimal. +* Retenciones y percepciones de IVA sufridas: + * Especificación en ticket 54274 (en una archivo adjunto IVAEspecificación Percepcion y Retencinoes Iva.pdf) + * MISIONES: https://www.atm.misiones.gob.ar/index.php/guia-de-tramites/instructivos/category/53-agentes Correo DGR: mesadeayuda@tsgroup.com.ar diff --git a/l10n_ar_account_tax_settlement/__manifest__.py b/l10n_ar_account_tax_settlement/__manifest__.py index a064758c..3851da9e 100644 --- a/l10n_ar_account_tax_settlement/__manifest__.py +++ b/l10n_ar_account_tax_settlement/__manifest__.py @@ -19,7 +19,7 @@ ############################################################################## { 'name': 'Tax Settlements For Argentina', - 'version': "16.0.1.1.0", + 'version': "16.0.1.3.0", 'category': 'Accounting', 'website': 'www.adhoc.com.ar', 'license': 'LGPL-3', diff --git a/l10n_ar_account_tax_settlement/models/account_journal.py b/l10n_ar_account_tax_settlement/models/account_journal.py index a97036d6..36df5151 100644 --- a/l10n_ar_account_tax_settlement/models/account_journal.py +++ b/l10n_ar_account_tax_settlement/models/account_journal.py @@ -61,6 +61,7 @@ class AccountJournal(models.Model): ('iibb_aplicado_api', 'TXT Perc/Ret IIBB aplicadas API'), ('iibb_aplicado_sircar', 'TXT Perc/Ret IIBB aplicadas SIRCAR'), ('iibb_aplicado_dgr_mendoza', 'TXT Perc/Ret IIBB aplicado DGR Mendonza'), + ('retenciones_iva', 'TXT Retenciones/Percepciones Sufridas IVA'), # ('other', 'Other') ]) @@ -1345,3 +1346,59 @@ def misiones_files_values(self, move_lines): 'txt_filename': ('Retenciones ' if payment else 'Percepciones ') + 'Misiones.txt', 'txt_content': content, }] + + def retenciones_iva_files_values(self, move_lines): + """ Implementado segun especificación indicada en ticket 54274.""" + self.ensure_one() + content = '' + for line in move_lines.sorted(key=lambda r: (r.date, r.id)): + payment = line.payment_id + if payment: + # regimen (long 3) + codigo_regimen = payment.tax_withholding_id.codigo_regimen + if not codigo_regimen: + raise ValidationError(_('No hay código de régimen en la configuración del impuesto "%s"') % ( + payment.tax_withholding_id.name)) + if len(codigo_regimen) < 3: + raise ValidationError(_('El código de régimen tiene que tener 3 dígitos en la configuración del impuesto "%s"') % (payment.tax_withholding_id.name)) + content += codigo_regimen[:3] + + # cuit agente (long 11) + content += payment.partner_id.ensure_vat() + + # fecha retención (long 10) + content += fields.Date.from_string(payment.date).strftime('%d/%m/%Y') + + # número comprobante (long 16) + content += re.sub('[^0-9\.]', '', payment.withholding_number).ljust(16) + + # importe retención (long 16) + content += '%16.2f' % payment.amount + content += '\r\n' + elif line.move_id.is_invoice(): + # regimen (long 3) + codigo_regimen = line.tax_line_id.codigo_regimen + if not codigo_regimen: + raise ValidationError(_('No hay código de régimen en la configuración del impuesto "%s"') % ( + line.tax_line_id.name)) + if len(codigo_regimen) < 3: + raise ValidationError(_('El código de régimen tiene que tener 3 dígitos en la configuración del impuesto "%s"') % (line.tax_line_id.name)) + content += codigo_regimen[:3] + + # cuit agente (long 11) + content += line.move_id.partner_id.ensure_vat() + + # fecha retención (long 10) + content += fields.Date.from_string(line.move_id.invoice_date).strftime('%d/%m/%Y') + + # número comprobante (long 16) + content += line.move_id.l10n_latam_document_number.ljust(16) + + # importe retención (long 16) + content += '%16.2f' % line.balance + content += '\r\n' + + return [{ + 'txt_filename': ('Retenciones' if payment else 'Percepciones') + '_iva.txt', + 'txt_content': content, + }]