UTILIZACION DE ESQUEMAS XML DE LA AGENCIA TRIBUTARIA PARA CALCULO RETENCIONES INTRODUCCION El conjunto de herramientas de ayuda aportados por la Agencia Tributaria, para facilitar las obligaciones fiscales de todos se están actualizando de forma sucesiva, incorporando nuevas tecnologías encaminadas a mejorar esta tarea de apoyo al cumplimiento de las obligaciones con Hacienda. Entre las novedades que se han dado a conocer para el recién estrenado 2005, figura para el cálculo de la retenciones correspondientes al IRPF el uso obligado (después de un período de ser una simple opción) de la tecnología XML (Extensible Markup Language) para el tratamiento de la información, en el formato especificado por medio de un esquema XML. Como se sabe XML es un lenguaje de casi siete años de vida impulsado desde el W3C, totalmente abierto y transparente y acerca del cual no es arriesgado afirmar, que va a convertirse en una “lingua franca” de la Web. Debido a lo reciente de su aparición y al hecho que nuestro Instituto fuera el primer miembro académico español del W3C, hemos recibido un gran número de consultas de distintas empresas y colegas sobre las particularidades de esta decisión de la AEAT(http://www.aeat.es); ello nos ha decidido a preparar estas páginas para ayudar en la puesta en marcha de esta posibilidad tecnológica ligada a la Web, y que esperamos sean de utilidad y permitan sacar ventajas de la decisión de la Agencia Tributaria. Recordemos que hasta ahora estas herramientas de ayuda informática para esta tarea concreta daban como resultado un texto plano, y con este cambio, éste pasa a tomar la forma de un dato semiestructurado, en forma de documento XML, que va a ser mas eficiente y útil tanto para la Agencia, como para el sistema de cada empresa que incorpore ya XML en su trabajo diario. Adelantemos el convencimiento que este cambio no va a causar ningún futuro problema, estando en la linea de modernización y racionalización propia de la Agencia. Las páginas que siguen tratan de facilitar la incorporación de esta ayuda basada en XML, con el ánimo de completar el programa de ayuda, facilitado por la Agencia Tributaria, y de facilitar su posible aplicación por parte de cada profesional informático, como una librería que facilite sus propios desarrollos. Breve recordatorio de XML y Esquema XML XML y sus tecnologías asociadas especifican como interaccionar y explotar el contenido de un documento, y separar datos y presentación, de forma que XML no incorpora ninguna semántica intrínseca de presentación dentro de la arquitectura de la Web. A la hora de superar un texto plano, la representación de un documento XML se puede resumir de la forma: Texto XML = datos + marcado. Esto significa que el texto de un documento XML consta de dos conjuntos disjuntos: marcado y dato. El marcado corresponde a las instrucciones que el analizador XML procesa (incluidos entre los paréntesis angulares) mientras que los datos son el texto entre la marca o etiqueta delimitada, en inicio y final por paréntesis angulares. En consecuencia el procesador, una vez determinado que todos los caracteres de un documento son aceptables, los diferencia entre texto de marcado y caracteres de datos. En XML un espacio de nombres (xmlns) proporciona un mecanismo por el que los nombres de elementos y atributos pueden asignarse para cada uso deseado, 1 utilizando prefijos adecuados a cada caso. Estos dominios nominales son objeto de una Recomendación del W3C elaborada para cumplir tres objetivos: a) Poder mezclar distintos vocabularios XML en un mismo documento. b) Identificar unívocamente cada etiqueta XML. c) Disponer de nombres universales cuya panorámica se extienda mas allá del documento que los contiene. Para proporcionar la estructura a un documento XML se utilizan cada vez más los llamados Esquemas XML, que son documentos XML que a su vez definen documentos XML que serán instancias o formularios de ellos. Aunque a un documento XML no se le exige que incorpore ningún Esquema, su uso es más que recomendable ya que por un lado ofrece un mecanismo para asegurar la conformidad del documento cuando vaya a ser intercambiado, y por otro evita el riesgo de generar inconsistencias. En consecuencia, si un Esquema especifica una clase de documentos que interesa tener bien especificados, como es el caso fiscal que nos ocupa, dentro de una determinada tarea, con el objetivo de poder obtener "documentos instancia" ajustados a la aplicación; ello significa especificar tanto la estructura de los documentos instancia como el tipo de dato de cada elemento/atributo, de forma que por una lado, se dicen cosas del tipo "este elemento contiene tales subelementos, que a su vez contiene estos otros, etc.", y otras del tipo "este elemento es un entero cuyo rango va de -90 a +90”. Los requisitos perseguidos por los Esquemas son: a) Usar la sintaxis XML. b) Disponer, a la hora de elaborar determinados documentos, de un documento XML que evoque a un Esquema que interesa declarando al nuevo documento como “válido” si está de acuerdo con el Esquema y en caso contrario el analizador declararlo no válido. c) Tener la máxima libertad para soportar tipos de datos a la hora de especificar elementos y atributos. Los Esquema tienen predefinidos 44 tipos de datos, y lo que es más importante, tienen capacidad para derivar todos los que se puedan necesitar. d) Recurrir y utilizar espacios de nombres. e) Tener la posibilidad de crecimiento de los documentos Esquemas a medida que se tengan que modificar distintos aspectos. f) Máxima flexibilidad para poder acceder a ellos desde la Web. Aunque la recomendación W3C de Esquemas XML es especialmente extensa podemos citar los siguientes puntos claves: Tipos de datos: Controla los tipos de datos que puede contener un elemento o un atributo (boolean, float, integer, date, time, etc.). Aspectos de restricción: Establece límites para el valor de los datos (longitud, modelo, enumeración, intervalos con mínimo y máximo, precisión etc.). Cardinalidad: Controla el número de apariciones permitidas (uno, cero o uno, cero o más y uno o más). Opción: Limita los valores a los de una lista de valores dada. Secuencia: Define el orden en el que se pueden utilizar los elementos. Valores predeterminados: Proporciona valores que se utilizan cuando no se especifica ningún otro valor. PROGRAMAS DE AYUDA 2005 Incluso en el caso que se tenga poca práctica con XML, todo técnico que acceda a la página correspondiente de la agencia tributaria estará en condiciones de enfrentarse 2 sin dificultades a lo que allí se ofrece, esto es un conjunto de herramientas para el cálculo de retenciones. Allí se proponen tres formas posibles para su cálculo: Opción 1. Corresponde al titulado por la propia Agencia “Algoritmo de cálculo de las retenciones”. Se trata de un documento que especifica los procedimientos a realizar para el cálculo de las retenciones. Esta opción supone programar en no importa que lenguaje para obtener los resultados deseados. Opción 2 Programa de ayuda, facilitado por la Agencia, que puede usarse de tres maneras: a. En el navegador, con lo que se tiene un programa de ayuda en línea, tipo formulario con tecnología Applet b. Aplicación JAVA, Equivalente al anterior con un Interfaz grafico en forma de formulario, para calcular las retenciones. c. Aplicación JAVA, Añade, al interfaz gráfico de la posibilidad b), la selección de un fichero de entrada XML y genera los ficheros de salida o de error según corresponda. Opción 3. Designado “Módulos de cálculo”; corresponde a la llamada en linea, (por tanto sin interfaz gráfica) permitiendo la correspondiente ejecución en línea, una vez especificado el fichero de entrada, salida y error. Obviamente esta opción presenta la particularidad de poder utilizarse como una librería JAVA para la incorporación del cálculo en aplicaciones propietarias de cada empresa. ESQUEMAS AGENCIA TRIBUTARIA Los esquemas de la agencia tributaria (Ver Anexo I) especifican el formato de los ficheros de entrada, salida y error, utilizados para el cálculo de las retenciones de los ficheros de ayuda (para los casos 2.c y 3). El esquema del fichero aeatretenciones2005.xsd define 3 tipos de documentos necesarios en el proceso: 1. AEATRetencionesEntrada2005 Se trata de un fichero de entrada, que especifica toda la información necesaria para el cálculo de las retenciones. 2. AEATRetencionesSalida2005 Es en fichero de salida, que proporciona y especifica toda la información necesaria, así como el resultado del cálculo de las retenciones corrspondientes. 3. AEATRetencionesError2005 Es un fichero de error, que especifica toda la información necesaria para resolver los posibles errores que surjan. Detallemos cada uno de ellos, con especial detalle del primero de ellos, que determina los restantes: AEATRetencionesEntrada2005 A partir de él se puede efectuar el cálculo de las retenciones, de forma que el documento contiene información sobre: • • • Tipo Documento y Ejercicio Información Retenedor o NIF y Nombre Apellidos Información Retenido o NIF y Nombre Apellidos o Retribuciones Anuales o Etc. 3 Esto es, toda la información necesaria para el cálculo de las retenciones del ejercicio y que el usuario conoce mucho mejor que nosotros mismos. Como se ha dicho el procedimiento en años anteriores para el cálculo de retenciones, utilizaba un fichero plano con etiquetas posicionales, es decir, según la posición de un valor se asociaba a un campo determinado de los datos utilizados para los cálculos. Con la utilización de XML, los valores de los campos se encuentran dentro de las etiquetas (<etiqueta> valor </etiqueta>). Por tanto, existe una correspondencia univoca entre posición del fichero plano antiguo y etiqueta del fichero XML que facilita la transición al nuevo formato. Además, la definición de un esquema permite realizar una comprobación sintáctica de todos los campos necesarios. Veamos un ejemplo sencillo de un Documento XML generado en un simple editor de texto: <?xml version="1.0" encoding="ISO-8859-1"?> <AEATRetencionesEntrada2005 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="retenciones.xsd"> <IdDoc> <CodModelo>RET</CodModelo> <Ejercicio>2005</Ejercicio> </IdDoc> <Retenedor> <Nif>X12345678</Nif> <ApellidosNombre>APELLIDOSNOMBRE</ApellidosNombre> <Retenido xsi:type="tipo_RetenidoEntrada2005"> <Nif>12345678A</Nif> <ApellidosNombre>APELLIDOS NOMBRE</ApellidosNombre> <AñoNacimiento>1970</AñoNacimiento> <SituacionFamiliar> <Situacion2> <NifConyuge>12345678B</NifConyuge> </Situacion2> </SituacionFamiliar> <SituacionLaboral> <TrabajadorActivo> <Contrato>1</Contrato> </TrabajadorActivo> </SituacionLaboral> <Descendiente> <AñoNacimiento>2004</AñoNacimiento> </Descendiente> <Ascendiente> <AñoNacimiento>1930</AñoNacimiento> <Convivencia>3</Convivencia> <Discapacidad> <Grado1> <NecesitaAyuda/> </Grado1> </Discapacidad> </Ascendiente> <RetribAnuales>100000.00</RetribAnuales> <Reducciones>100.00</Reducciones> <Regularizacion> <Causa>1</Causa> <Causa>2</Causa> <RetribSatisfechas>60.00</RetribSatisfechas> <TipoRetencion>21</TipoRetencion> </Regularizacion> </Retenido> </Retenedor> </AEATRetencionesEntrada2005> Las líneas de la 1 a la 8 son fijas. La etiqueta del <retenedor> de la linea 10 cierra con la etiqueta </retenedor> de la linea 91, corresponde a la empresa, de forma que en las líneas 11 y 12 hay que escribir respectivamente NIF y nombre de la empresa (en mayúsculas). 4 La etiqueta retenido de la linea 14, finaliza en la linea 90 y corresponde a un trabajador por lo que este bloque tiene que repetirse por cada empleado. La etiqueta de la linea 18 no contiene datos, ya que es un tipo de etiqueta especial para el caso que el trabajador tenga residencia en Ceuta o Melilla. El bloque 20 a 26 corresponde a la situación familiar: Solo tiene que aparecer una situación, es decir, si ésta es 1 solo aparecerá la linea 21, si es 2 el bloque 22 a 24 (siendo obligatorio introducir el NIF del cónyuge) y si es situación 3 la linea 25. El bloque 28 a 33 se refiere a la discapacidad del empleado, obviamente es opcional y en caso de usarla es obligatorio indicar el grado: Con grado 1 tiene que aparecer el bloque 29 a 31, de modo que si necesita ayuda tiene que aparecer la linea 30. Con grado 2 aparece la linea 32. El bloque 35 a 44 es obligatorio ya que define la situación laboral. Solo puede estar una situación a la vez. Si ésta es de trabajador activo (Bloque 39 a 43) el contrato (Linea 40) es obligatorio y sus valores van de 1 a 4. El resto de líneas son opcionales: Movilidad geográfica, prolongación laboral y Copa América. El bloque 46 a 56 se refiere a los descendientes este bloque puede aparecer de 0 a 15 veces (esto es, si no hay hijos no aparecen, y si el empleado tuviera 2 hijos aparece el bloque 2 veces). Dentro de descendiente hay escribir bien el año de nacimiento o el de adopción. La linea 49 (Computado entero) es opcional. Dentro del bloque de descendiente está el bloque discapacidad (Es opcional y similar al explicado antes). El bloque 58 a 66 para ascendientes es opcional y puede repetirse, por tanto, de 0 a 6 veces (tantos como ascendientes tenga el trabajador). Dentro de este bloque la Convivencia pude tener valores de 1 a 9 inclusive. En este bloque también aparece un bloque de discapacidad opcional. La linea 69 es obligatoria y el formato del importe debe escribirse con un único punto para los dos decimales: 1000000.00 Las líneas 70 - 73 son de tipo importe (Como la linea 69) y opcionales, así como la linea 75. El bloque 77 y 89 de regularizaciones es opcional. Si hay regularizaciones las líneas obligatorias son: 78 (Como mínimo puede haber una linea y se puede repetir hasta 12 veces). Los valores pueden ir de 1 a 15. Dentro de este bloque la linea 80 es obligatoria siendo de tipo importe (Con dos decimales y un punto para el signo decimal). Las líneas 81 a 84 de tipo importe son opcionales. La linea 85 Tipo retención es obligatoria y puede tener los valores de 0 a 45 siendo la 87 opcional. Las líneas restantes son obligatorias y cierran los elementos y el documento. AEATRetencionesSalida2005 El programa de ayuda, a partir de la información del fichero de entrada, genera el fichero de salida que contiene el cálculo de retenciones. El formato del fichero es el mismo que el fichero de entrada más la información de las retenciones según los valores de entrada. <Reduccion> <RdtosTrabajo>9999</RdtosTrabajo> </Reduccion> <TipoRetencion>45</TipoRetencion> AEATRetencionesError2005 En el caso de producirse algún error en el cálculo de las retenciones se genera un fichero XML indicando las causas del error. 5 ESCENARIOS A continuación se definen un conjunto de escenarios de utilización de estos Esquemas. Escenario 1: Cálculo de las retenciones por parte una empresa Como es conocido, una empresa a la hora de calcular las retenciones a aplicar a sus trabajadores, tiene varias opciones dependiendo del número de trabajadores de la empresa y la digitalización de la información que disponga. Veámoslas: 1. Utilizar las opciones (2.a y 2.b) lo que supone calcularlo individualmente para cada uno de los trabajadores. Esta seria la más costosa ya que se debe teclear toda la información por trabajador. 2. La empresa dispone un programa de gestión administrativa que se actualiza anualmente. En este caso, la aplicación: a. genera un fichero en formato XML según los esquemas de la agencia tributaria. Para ello se puede utilizar la opción 2.c ó 2.a. b. genera el cálculo internamente. No necesita ninguna tarea especial. Escenario 2: Desarrollo de una aplicación de gestión administrativa Si ya se trabaja con una aplicación de gestión, las opciones disponibles son, 1. Generación del cálculo por procedimientos propietarios, según lo especificado en la documentación, correspondería a la opción 1.a. 2. Generar un fichero según el formato de entrada definido en los esquemas, para la utilización de los programas de ayuda, corresponderá a las opciones 2.c y 3.a 3. Utilizar las librerías de JAVA, para su uso en la aplicación, generando los cálculos internamente, correspondería a la opción 3.b Escenario 3: Cálculo de las retenciones de un trabajador que quiera comprobar su declaración individual. Si un usuario deseara calcular las retenciones individualmente mediante los procedimientos correspondientes a las opciones 2.a y 2.b (posiblemente las opciones más sencillas) bastaría simplemente con rellenar el citado formulario gráfico, obteniendo el cálculo de sus retenciones. Anexo: ESQUEMA DE ENTRADA DE LA AGENCIA TRIBUTARIA (El correspondiente de salida es muy semejante) 6 7