UP | HOME |

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