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