Leer el modelo 720 de la Agencia Tributaria española en R
Leer el modelo 720 de la Agencia Tributaria española en R
El modelo 720 de la Agencia Tributaria española está definido en el anexo DISEÑOS FÍSICOS Y LÓGICOS A LOS QUE DEBEN AJUSTARSE LOS ARCHIVOS QUE SE GENEREN PARA LA PRESENTACIÓN TELEMÁTICA DEL MODELO 720 de la Orden HAP/72/2013, de 30 de enero, por la que se aprueba el modelo 720, declaración informativa sobre bienes y derechos situados en el extranjero, a que se refiere la disposición adicional decimoctava de la Ley 58/2003, de 17 de diciembre, General Tributaria y se determinan el lugar, forma, plazo y el procedimiento para su presentación.
Consta de dos tipos de registros. El primero identifica al declarante y el segundo identifica los bienes declarados. Vienen definidos en el anexo. Como norma general, los campos aparecen rellenados con blancos a la derecha en caso de ser caracteres y en el caso de los campos numéricos, con ceros a la izquierda.
En la siguiente tabla aparecen la posición de inicio (inicio
) y fin (fin
) de cada campo, un nombre para el mismo (campo
), si cuando se escribe se ha de rellenar a la derecha o izquierda (side
) y el carácter de relleno (pad
). Para los interesados en cómo se escribe este modelo, aquí se muestra un ejemplo.
library(data.table);setDTthreads(0L); ## Detalle del declarante camposregistrodedeclarante <- fread(' inicio,fin,campo,side,pad 1,1,tipoderegistro, 2,4,modelodedeclaracion 5,8,ejercicio 9,17,nifdeclarante,left,0 18,57,apellidosynombre,right," " 58,58,tipodesoporte 59,67,telefono 68,107,apellidosynombreconquienrelacionarse, 108,120,numeroidentificativodeladeclaracion,right,0 121,121,declaracioncomplementaria, 122,122,declaracionsustitutiva, 123,135,numeroidentificativodeclaracionanterior,right,0 136,144,numerototalderegistrosdeclarados,left,0 145,145,signosumatotaldevaloracion1, 146,162,importesumatotaldevaloracion1,left,0 163,163,signosumatotaldevaloracion2, 164,180,importesumatotaldevaloracion2,left,0 181,500,blancosfinales ',fill=TRUE ) camposregistrodedeclarante$width <- camposregistrodedeclarante$fin - camposregistrodedeclarante$inicio + 1L if(sum(camposregistrodedeclarante$width)!= 500L) stop("Error en los campos de registrodedelarante") ## Detalle de los bienes camposregistrodedetalle <- fread(' inicio,fin,campo,side,pad 1,1,tipoderegistro, 2,4,modelodedeclaracion 5,8,ejercicio 9,17,nifdeclarante,left,0 18,26,nifdeclarado,left,0 27,35,nifrepresentantelegal, 36,75,apellidosynombre,right," " 76,76,clavecondiciondeldeclarante 77,101,tipodetitularidad,right," " 102,102,clavetipodebien 103,103,subclavedebien 104,128,tipodederechosobreinmueble,right," " 129,130,paisbroker 131,131,clavedeidentificacion 132,143,claveidentificacionvaloresisin,right," " 144,144,claveidentificaciondecuenta 145,155,bic,right," " 156,189,codigodecuenta,right," " 190,230,identificacionentidad,right," " 231,250,numeroidentificacionfiscalpaisresidencia,right," " 251,302,nombreviapublica,right," " 303,342,complementonombreviapublica,right," " 343,372,poblacionciudad,right," " 373,402,provincia,right," " 403,412,codigopostal,right," " 413,414,codigopais 415,422,fechadeincorporacion,left,0 423,423,origendelbien 424,431,fechadeextincion,left,0 432,432,valoracion1signodelsaldo 433,446,valoracion1importe,left,0 447,447,valoracion2signodelsaldo 448,461,valoracion2importe,left,0 462,462,claverepresentaciondevalores 463,474,numerodevalores,left,0 475,475,clavetipobieninmueble 476,480,porcentajedeparticipacion,left,0 481,500,blancosfinales ',fill=TRUE ) camposregistrodedetalle$width <- camposregistrodedetalle$fin - camposregistrodedetalle$inicio + 1L if(sum(camposregistrodedetalle$width)!= 500L) stop("Error en los campos")
Procedemos a la lectura del fichero que recoge los datos del modelo 720.
ficheromodelo720 <- "30000000X.720" ## Leemos el modelo 720 ## Primera línea. Datos del declarante camposregistrodedeclarante <- camposregistrodedeclarante[order(inicio)] datosresumenmodelo720 <- as.data.table(read.fwf(ficheromodelo720, widths = camposregistrodedeclarante$width,n=1)) names(datosresumenmodelo720) <- camposregistrodedeclarante$campo datosresumenmodelo720 ## Registro de los bienes camposregistrodedetalle <- camposregistrodedetalle[order(inicio)] datosbienesmodelo720 <- as.data.table(read.fwf(ficheromodelo720, widths = camposregistrodedetalle$width,skip=1)) names(datosbienesmodelo720) <- camposregistrodedetalle$campo datosbienesmodelo720