@@ -61,6 +61,7 @@ class AccountJournal(models.Model):
61
61
('iibb_aplicado_api' , 'TXT Perc/Ret IIBB aplicadas API' ),
62
62
('iibb_aplicado_sircar' , 'TXT Perc/Ret IIBB aplicadas SIRCAR' ),
63
63
('iibb_aplicado_dgr_mendoza' , 'TXT Perc/Ret IIBB aplicado DGR Mendonza' ),
64
+ ('retenciones_iva' , 'TXT Retenciones/Percepciones Sufridas IVA' ),
64
65
# ('other', 'Other')
65
66
])
66
67
@@ -1345,3 +1346,59 @@ def misiones_files_values(self, move_lines):
1345
1346
'txt_filename' : ('Retenciones ' if payment else 'Percepciones ' ) + 'Misiones.txt' ,
1346
1347
'txt_content' : content ,
1347
1348
}]
1349
+
1350
+ def retenciones_iva_files_values (self , move_lines ):
1351
+ """ Implementado segun especificación indicada en ticket 54274."""
1352
+ self .ensure_one ()
1353
+ content = ''
1354
+ for line in move_lines .sorted (key = lambda r : (r .date , r .id )):
1355
+ payment = line .payment_id
1356
+ if payment :
1357
+ # regimen (long 3)
1358
+ codigo_regimen = payment .tax_withholding_id .codigo_regimen
1359
+ if not codigo_regimen :
1360
+ raise ValidationError (_ ('No hay código de régimen en la configuración del impuesto "%s"' ) % (
1361
+ payment .tax_withholding_id .name ))
1362
+ if len (codigo_regimen ) < 3 :
1363
+ 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 ))
1364
+ content += codigo_regimen [:3 ]
1365
+
1366
+ # cuit agente (long 11)
1367
+ content += payment .partner_id .ensure_vat ()
1368
+
1369
+ # fecha retención (long 10)
1370
+ content += fields .Date .from_string (payment .date ).strftime ('%d/%m/%Y' )
1371
+
1372
+ # número comprobante (long 16)
1373
+ content += re .sub ('[^0-9\.-]' , '' , payment .name )[1 :].ljust (16 )
1374
+
1375
+ # importe retención (long 16)
1376
+ content += '%16.2f' % payment .amount
1377
+ content += '\r \n '
1378
+ elif line .move_id .is_invoice ():
1379
+ # regimen (long 3)
1380
+ codigo_regimen = line .tax_line_id .codigo_regimen
1381
+ if not codigo_regimen :
1382
+ raise ValidationError (_ ('No hay código de régimen en la configuración del impuesto "%s"' ) % (
1383
+ line .tax_withholding_id .name ))
1384
+ if len (codigo_regimen ) < 3 :
1385
+ raise ValidationError (_ ('El código de régimen tiene que tener 3 dígitos en la configuración del impuesto "%s"' ) % (line .tax_withholding_id .name ))
1386
+ content += codigo_regimen [:3 ]
1387
+
1388
+ # cuit agente (long 11)
1389
+ content += line .move_id .partner_id .ensure_vat ()
1390
+
1391
+ # fecha retención (long 10)
1392
+ content += fields .Date .from_string (line .move_id .invoice_date ).strftime ('%d/%m/%Y' )
1393
+
1394
+ # número comprobante (long 16)
1395
+ content += line .move_id .l10n_latam_document_number .ljust (16 )
1396
+
1397
+ # importe retención (long 16)
1398
+ content += '%16.2f' % line .balance
1399
+ content += '\r \n '
1400
+
1401
+ return [{
1402
+ 'txt_filename' : ('Retenciones' if payment else 'Percepciones' ) + '_iva.txt' ,
1403
+ 'txt_content' : content ,
1404
+ }]
0 commit comments