diff --git a/l10n_ar_account_tax_settlement/models/account_journal.py b/l10n_ar_account_tax_settlement/models/account_journal.py index 59b75e4c..f6e805dd 100644 --- a/l10n_ar_account_tax_settlement/models/account_journal.py +++ b/l10n_ar_account_tax_settlement/models/account_journal.py @@ -483,6 +483,8 @@ def iibb_aplicado_agip_files_values(self, move_lines): content = '1' alicuot = alicuot_line.alicuota_retencion + or_inv = line.move_id._found_related_invoice() + # notas de credito if internal_type == 'credit_note': # 2 - Nro. Nota de crédito @@ -510,7 +512,6 @@ def iibb_aplicado_agip_files_values(self, move_lines): # segun interpretamos de los daots que nos pasaron 6, 7, 8 y 11 # son del comprobante original - or_inv = line.move_id._found_related_invoice() if not or_inv: raise ValidationError(_( 'No pudimos encontrar el comprobante original para %s ' @@ -522,11 +523,51 @@ def iibb_aplicado_agip_files_values(self, move_lines): line.move_id.display_name)) # 6 - Tipo de comprobante origen de la retención - - #Identificamos si el comprobante de origen es una Factura de credito MiPyMEs sino lo - # tratamos como una factura normal - content += '10' if or_inv.l10n_latam_document_type_id.code in ['201', '206', '211'] else '01' + """ + No implementado 15-05-2024 + 03- Orden de Pago (Retenciones) + 04- Boleta de Depósito (Retenciones) + 05- Liquidación de pago (Retenciones) + 06- Certificado de obra (Retenciones) + 08- Cont de Loc de Servic. (Retenciones) + 12- Orden de Pago de Comp. Electrónica MiPyMEs (Retenciones) + """ + #Identificamos si el comprobante de origen es una Facturas + #(Es el mismo codigo para percepciones y retenciones) + if or_inv.l10n_latam_document_type_id.code in ['1', '6', '11']: + content += '01' + + #Identificamos si el comprobante de origen es una Factura de credito MiPyMEs + #(Es el mismo codigo para percepciones y retenciones) + elif or_inv.l10n_latam_document_type_id.code in ['201', '206', '211']: + content += '10' + + #Identificamos si el comprobante de Otro comprobante electronico MiPyMEs + #(Es el mismo codigo para percepciones y retenciones) + elif or_inv.l10n_latam_document_type_id.code in ['203', '208', '213']: + content += '13' + + elif not es_percepcion: + #Retenciones + + #Identificamos si el comprobante de origen es una Nota de debito + if or_inv.l10n_latam_document_type_id.code in ['2', '7', '12', '52']: + content += '02' + + #Identificamos si el comprobante de origen es un Recibo + if or_inv.l10n_latam_document_type_id.code in ['4', '9', '15', '54']: + content += '07' + + #Identificamos si el comprobante de origen es un Nota de debito electronica MiPyMEs + if or_inv.l10n_latam_document_type_id.code in ['202', '207', '212']: + content += '11' + + else: + #Otros comprobantes + #(Es el mismo codigo para percepciones y retenciones) + content += '09' + # 7 - Letra del Comprobante if payment: content += ' ' @@ -557,7 +598,8 @@ def iibb_aplicado_agip_files_values(self, move_lines): content += format_amount((line.balance if not ret_perc_applied else ret_perc_applied), 16, 2, ',') # 13 - Alícuota - content += format_amount(alicuot, 5, 2, ',') + #Hacer una constrain para que alicuot pueda ser 0 segun norma 28 y 29 ? + content += format_amount(alicuot, 2, 2, '') content += '\r\n' @@ -572,16 +614,50 @@ def iibb_aplicado_agip_files_values(self, move_lines): content += fields.Date.from_string(line.date).strftime('%d/%m/%Y') # 4 - Tipo de comprobante origen de la retención - if internal_type == 'invoice': + """ + No implementado 15-05-2024 + 03- Orden de Pago (Retenciones) + 04- Boleta de Depósito (Retenciones) + 05- Liquidación de pago (Retenciones) + 06- Certificado de obra (Retenciones) + 08- Cont de Loc de Servic. (Retenciones) + 12- Orden de Pago de Comp. Electrónica MiPyMEs (Retenciones) + """ + + #Identificamos si el comprobante de origen es una Facturas + #(Es el mismo codigo para percepciones y retenciones) + if or_inv.l10n_latam_document_type_id.code in ['1', '6', '11']: content += '01' - elif internal_type == 'debit_note': - if es_percepcion: - content += '09' - else: + + #Identificamos si el comprobante de origen es una Factura de credito MiPyMEs + #(Es el mismo codigo para percepciones y retenciones) + elif or_inv.l10n_latam_document_type_id.code in ['201', '206', '211']: + content += '10' + + #Identificamos si el comprobante de Otro comprobante electronico MiPyMEs + #(Es el mismo codigo para percepciones y retenciones) + elif or_inv.l10n_latam_document_type_id.code in ['203', '208', '213']: + content += '13' + + elif not es_percepcion: + #Retenciones + + #Identificamos si el comprobante de origen es una Nota de debito + if or_inv.l10n_latam_document_type_id.code in ['2', '7', '12', '52']: content += '02' + + #Identificamos si el comprobante de origen es un Recibo + if or_inv.l10n_latam_document_type_id.code in ['4', '9', '15', '54']: + content += '07' + + #Identificamos si el comprobante de origen es un Nota de debito electronica MiPyMEs + if or_inv.l10n_latam_document_type_id.code in ['202', '207', '212']: + content += '11' + else: - # orden de pago - content += '03' + #Otros comprobantes + #(Es el mismo codigo para percepciones y retenciones) + content += '09' # 5 - Letra del Comprobante # segun vemos en los archivos de ejemplo solo en percepciones