Resolución No.
03841 |
AHORRO VOLUNTARIO EN FONDOS
DE PENSIONES
Formato 1022
- Versión 7
OBJETIVO
Definir las características y contenido de los archivos donde se reporta el Ahorro voluntario en fondos de pensiones.
ESPECIFICACIÓN TECNICA
El formato de Ahorro voluntario en fondos de pensiones, debe enviarse en un archivo XML que cumpla las siguientes especificaciones:
1. Estándar del Nombre de los Archivos
El nombre de cada uno de los archivos, debe especificarse mediante la siguiente secuencia de caracteres:
Dmuisca_ccmmmmmvvaaaacccccccc.xml
cc : Concepto (Inserción = 01, Reemplazo = 02)
mmmmm : Formato (Ahorro voluntario en fondos de pensiones = 01022)
vv : Versión del formato (Versión = 07).
aaaa : Año de envío.
cccccccc : Consecutivo de envío por año.
2. Formato del Archivo
El formato de Ahorro voluntario en fondos de pensiones, contiene un documento XML, que está compuesto por dos elementos complejos: Encabezado y Contenido, las cuales se deben enviar en el orden enunciado.
Encabezado |
Contenido Información 1 |
Contenido Información 2 |
... |
Contenido Información N |
1. El documento XML debe cumplir con la especificación 1.0 Tercera edición.
2. El conjunto de caracteres utilizado en el documento XML debe ser el alfabeto latino No. 1: “ISO-8859-1”.
3. El archivo debe contener un documento XML bien formado y valido de acuerdo al esquema XSD que incluye en esta especificación técnica.
4. El archivo debe contener un elemento único elemento raíz llamado “mas”, que a su vez contendrá toda la información del archivo, tanto el encabezado como los registros.
2.1. Formato del Encabezado
El encabezado del archivo viene en el elemento “Cab” y contiene los siguientes datos, todos de carácter obligatorio:
ETIQUETA |
DENOMINACION CASILLA |
TIPO |
LONGITUD CAMPO |
VALIDACIONES |
OBSERVACIONES |
Ano |
Año de envío |
Int |
4 |
|
Formato AAAA |
CodCpt |
Concepto |
Int |
2 |
|
1 = Inserción |
Formato |
Código del formato |
Int |
5 |
|
Ahorro voluntario en fondos de pensiones = 1022 |
Versión |
Versión del formato |
Int |
2 |
|
Versión = 7 |
NumEnvio |
Número de envío |
Int |
8 |
Debe ser un número consecutivo por año para todos los formatos que el remitente envíe a la DIAN |
Consecutivo de envío por año. |
FecEnvio |
Fecha de envío |
DateTime |
19 |
Debe ser la fecha calendario. |
Formato AAAA-MM-DDTHH:MM:SS |
FecInicial |
Fecha Inicial |
Date |
10 |
Debe ser la fecha calendario. |
Los registros corresponden mínimo ésta fecha inicial. Formato AAAA-MM-DD |
FecFinal |
Fecha Final |
Date |
10 |
Debe ser la fecha calendario. |
Los registros corresponden máximo a ésta fecha final. Formato AAAA-MM-DD |
ValorTotal |
Valor Total |
double |
20 |
Corresponde a la sumatoria de la casilla “aho” (Ahorro efectuado durante el año) de los registros reportados.
|
|
CantReg |
Cantidad de registros |
Int |
4 |
Se enviarán archivos con máximo 5000 registros (*). |
Cantidad de registros reportados en el contenido. |
(*) Se enviarán archivos con máximo 5000 registros; si es necesario informar más de 5000 registros, se fraccionará la información en archivos de 5000 registros o menos.
2.3. Formato del Contenido
En el contenido del archivo se deben incluir tantos registros como se informó en la cabecera en el campo “Cantidad de registros”.
Cada registro reportado debe mantener la misma estructura previamente explicada y usada para la cabecera.
El contenido del archivo viene en el elemento “afp” y se deben incluir los siguientes datos para cada transacción reportada.
ATRIBUTO |
DENOMINACION CASILLA |
TIPO |
LONGITUD |
CRITERIOS |
tdoc |
Tipo de Documento |
int |
2 |
De acuerdo
a los definidos por resolución. |
nid |
Número de Identificación |
string |
20 |
Diligenciar sin
guiones, puntos, comas o espacios en blanco. |
dv |
Digito de Verificación |
int |
1 |
Si se conoce debe diligenciarse |
apl1 |
Primer Apellido del Ahorrador |
string |
60 |
En caso de ser una Persona Natural siempre debe diligenciarse. |
apl2 |
Segundo Apellido del Ahorrador |
string |
60 |
En caso de ser una Persona Natural y si se conoce debe diligenciarse. |
nom1 |
Primer Nombre del Ahorrador |
string |
60 |
En caso de ser una Persona Natural siempre debe diligenciarse. |
nom2 |
Otros Nombres del Ahorrador |
string |
60 |
En caso de ser una Persona Natural y si se conoce debe diligenciarse. |
raz |
Razón Social Ahorrador |
string |
450 |
En caso de ser una Persona Jurídica siempre debe diligenciarse. |
dir |
Dirección |
string |
200 |
Siempre debe diligenciarse |
dpto |
Código del Departamento |
int |
2 |
Código DANE Numérico, debe incluir los ceros
a la izquierda. |
mun |
Código del Municipio |
int |
3 |
Código DANE Numérico, debe incluir los ceros
a la izquierda. |
sal |
Saldo Inicial |
double |
20 |
El valor debe ser
positivo, entero y no debe incluir ni puntos ni comas. |
aho |
Ahorro efectuado durante el año |
double |
20 |
El valor debe ser
positivo, entero y no debe incluir ni puntos ni comas. |
ret |
Retiros efectuados gravados durante el Año |
double |
20 |
El valor debe ser positivo, entero y no debe incluir ni puntos ni comas |
retng |
Retiros efectuados no gravados durante el año |
double |
20 |
El valor debe ser positivo, entero y no debe incluir ni puntos ni comas |
ren |
Rendimientos Causados |
double |
20 |
El valor debe ser positivo, entero y no debe incluir ni puntos ni comas |
saldic |
Saldo a 31 de Diciembre |
double |
20 |
El valor debe ser
positivo, entero y no debe incluir ni puntos ni comas. |
Los campos Tipo de Documento y Número de Identificación, conforman una llave única para este formato, la cual no debe repetirse para los registros de un mismo envió.
3. Validaciones
3.1. Validaciones Generales
3.2. Validaciones del Encabezado
1. Los campos concepto, formato y versión, deben venir diligenciados con los valores estipulados en las especificaciones técnicas,
2. Año de envío, debe ser el año calendario.
3. Numero de envío, debe ser un número consecutivo por año para todos los formatos que el remitente envié a la DIAN.
4. Fecha de envío, debe ser la fecha calendario, en formato AAAA-MM-DDTHH:MM:SS.
5. Cantidad de registros, debe ser igual a la cantidad de registros reportadas en el contenido, que como máximo puede ser 5000 registros.
6. Valor total, corresponde a la sumatoria de la casilla “aho” (Ahorro efectuado durante el año) de los registros reportados.
4. Esquema XSD
A continuación se incluye el esquema XSD para esta especificación técnica.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="afp">
<xs:annotation>
<xs:documentation>Elemento que encapsula la información del formulario 1022 AHORRO VOLUNTARIO EN FONDOS DE PENSIONES</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="tdoc" use="required">
<xs:annotation>
<xs:documentation>Tipo de documento</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="nid" use="required">
<xs:annotation>
<xs:documentation>Número de Identificación</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="dv" use="optional">
<xs:annotation>
<xs:documentation>Dígito de verificación</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="9"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="apl1" use="optional">
<xs:annotation>
<xs:documentation>Primer Apellido del Ahorrador</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="apl2" use="optional">
<xs:annotation>
<xs:documentation>Segundo Apellido del Ahorrador</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="nom1" use="optional">
<xs:annotation>
<xs:documentation>Primer Nombre del Ahorrador</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="nom2" use="optional">
<xs:annotation>
<xs:documentation>Otros nombres del Ahorrador </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="raz" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="450"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="dir" use="required">
<xs:annotation>
<xs:documentation>Dirección</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="200"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="dpto" use="required">
<xs:annotation>
<xs:documentation>Código Dpto</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="mun" use="required">
<xs:annotation>
<xs:documentation>Código Municipio</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="sal" use="optional">
<xs:annotation>
<xs:documentation>Saldo Inicial</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="aho" use="required">
<xs:annotation>
<xs:documentation>Ahorro efectuado en el año</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ret" use="optional">
<xs:annotation>
<xs:documentation>Retiros efectuados en el año</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name=" retng " use="optional">
<xs:annotation>
<xs:documentation> Retiros efectuados no gravados durante el año </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ren" use="optional">
<xs:annotation>
<xs:documentation>Rendimientos Causados</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="saldic" use="required">
<xs:annotation>
<xs:documentation>Saldo a 31 de Diciembre</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:pattern value="[0-9]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="mas">
<xs:annotation>
<xs:documentation>Elemento raiz del xml de carga masiva</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cab" type="CabType"/>
<xs:element ref="afp" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="CabType">
<xs:sequence>
<xs:element name="Ano" type="xs:gYear" nillable="false">
<xs:annotation>
<xs:documentation>Año de envio</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CodCpt" nillable="false">
<xs:annotation>
<xs:documentation>Concepto</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Formato" fixed="1022">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Version" type="xs:positiveInteger" fixed="7"/>
<xs:element name="NumEnvio">
<xs:annotation>
<xs:documentation>Numero de envio</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="8"/>
<xs:maxInclusive value="99999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FecEnvio" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Fecha de envio</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FecInicial" type="xs:date">
<xs:annotation>
<xs:documentation>Fecha inicial</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FecFinal" type="xs:date">
<xs:annotation>
<xs:documentation>Fecha Final</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ValorTotal" type="xs:double">
<xs:annotation>
<xs:documentation>Valor Total</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CantReg">
<xs:annotation>
<xs:documentation>Cantidad de registros</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="4"/>
<xs:maxInclusive value="9999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>