ÍNDICE

1. REQUERIMIENTOS


Características del Requisito

Línea de Producto:

Microsiga Protheus.

Segmento:

Servicios- Mercado Internacional.

Módulo:

SIGAFAT- Facturación.

Rutina:

Rutina

Nombre Técnico

LOCXFUNA.PRXFunciones Genéricas de Localizaciones

LOCXNF.PRW

Control de Notas Fiscales
LOCXNF2.PRWCálculos en Notas Fiscales
MATA486.PRWFactura Electrónica
M486PDFCOL.PRWImpresión de Representación Impresa Facturación Electrónica Colombia
M486XFUN.PRWFunciones de Factura Electrónica
FISA812.PRWDefinición de Catálogos
FISA813.PRWMantenimiento de Catálogos
FISA814.PRWCarga de Catálogos
UPDFATMI.PRWActualización al Diccionario de Datos
FATSCOL.INIScript de generación de archivos XML; NF y NDC nacional
FATECOL.INIScript de generación de archivos XML; NCC nacional y exportación
FATSECOL.INIScript de generación de archivos XML; NF y NDC de exportación
MATA468N.PRXGeneración Notas Fiscales
WSNFECOL.PRWCliente de servicio web - Ambiente de homologación
WSNFECOLPROD.PRWCliente de servicio web - Ambiente productivo
MATXFUNC.PRXFunciones generales internas

Rutina(s) Involucrada(s)

Nombre Técnico

UPDMODMI.PRWActualización al Diccionario de Datos
MATXFUNB.PRXFunciones genéricas
Issue:DMINA-2487, DMINA-2753, DMINA-2978, DMINA-3107, DMINA-3222, DMINA-3693, DMINA-4582, DMINA-5100 (v 12.1.17), DMINA-5175 (v 12.1.17), DMINA-6420, DMINA-5484, DMINA-8877, DMINA-8799

País(es):

Colombia.

Base(s) de Datos:

Todas.

Sistema(s) operativo(s):

Todos.

Tablas utilizadas:
  • SF1 - Encabezado de Facturas de Entrada.
  • SF2 - Encabezado de Facturas de Salida.
  • SA1 - Clientes.
  • SYA - Países.
  • SFB - Impuestos Variables.
  • SFC - Vínculo TES vs. Impuestos.
  • SD1 - Ítems de Facturas de Entrada.
  • SD2 - Ítems de Facturas de Salida.
  • SAH - Unidades de Medida.
  • SB1 - Descripción Genérica de Producto.
  • SFP - Control de Formularios.
  • F3H - Definición de catálogos.
  • F3I - Mantenimiento de catálogos.
  • SC5 - Encabezado de Pedidos de Venta.
  • CTO - Monedas.
  • SF4 - Tipos de Entrada/Salida (TES).
  • SFC - Detalle Tipos de Entrada/Salida (impuestos).
  • AIT - Responsabilidades-Tributos del cliente.
  • SE4 - Condiciones de pago.


Descripción 

La Factura Electrónica es el documento que soporta transacciones de venta de bienes y/o servicios, y que operativamente tiene lugar a través de sistemas computacionales y/o soluciones informáticas que permiten el cumplimiento de las características y condiciones que se establecen en el Decreto 2242 de 2015, compilado en el Decreto Único Reglamentario 1625 de 2016, relativas a la expedición, recibo, rechazo y conservación. La expedición de la factura electrónica comprende la generación por el facturador electrónico y su entrega al adquirente. El facturador electrónico tiene obligaciones registradas en el Registro Único Tributario, y en el decreto se denomina como Obligado a Facturar Electrónicamente.

Para lograr la generación de la factura electrónica debe el sistema de software permitir que tan pronto haya cerrado el registro de la información de la operación de venta, y de que haya almacenado la información de esta operación en forma adecuada, construya el formato XML de acuerdo con las especificaciones técnicas, calcule el CUFE, y aplique el método de firma electrónica avanzada apropiado para su modelo de negocio, y lo almacene en un formato convertible en un archivo de datos de tipo UTF-8.

Características de la Factura Electrónica:

Para dar cumplimiento a la legislación mencionada y de acuerdo a las especificaciones del Anexo Técnico 001 Formatos de los Documentos XML de Facturación Electrónica – Versión 2, en el presente documento se detalla la configuración que se debe realizar para la generación de la factura electrónica.


IMPORTANTE: El Código Único de Facturación Electrónica (CUFE) no es generado por el sistema Protheus, es un datos generado por el proveedor tecnológico The Factory HKA, informado en el XML retornado por el proveedor tecnológico dentro del nodo cbc:UUID (XML contenido en la carpeta autorizados).


Los cambios en la funcionalidad del sistema, derivados de actualizaciones de legislación sobre la factura electrónica, se anuncian al final de este documento. Es necesario revisar cada rubro de actualizaciones para una correcta configuración del sistema y así obtener los resultados esperados. 


(Solo para Microsiga Protheus, versiones anteriores a la 12)

Antes de ejecutar el compatibilizador UPDMODMI, es imprescindible:


Atención

¡El siguiente procedimiento debe realizarlo un profesional calificado como Administrador de base de datos (DBA) o su equivalente!

La activación indebida de la integridad referencial puede modificar drásticamente la relación entre tablas en la base de datos. Por lo tanto, antes de utilizarla, observe atentamente el siguiente procedimiento:

1.    En el Configurador (SIGACFG), verifique si la empresa utiliza Integridad referencial, seleccionando la opción Integridad/Verificación (APCFG60A).

2.    Si no hay Integridad referencial activa, se listan en una nueva ventana todas las empresas y sucursales registradas en el sistema y ninguna de estas estará seleccionada. SOLAMENTE en este caso no es necesario ningún otro procedimiento de activación o desactivación de integridad, basta finalizar la verificación y aplicar normalmente el compatibilizador, de acuerdo con las  instrucciones.

3.     Si la Integridad referencial está activa en todas las empresas y sucursales, se muestra un mensaje en la ventana Verificación de vínculo entre tablas. Confirme el mensaje para que se concluya la verificación, o;

4.     Si existe Integridad referencial activa en una o más empresas, que no representan la totalidad, se listan en una nueva ventana todas las empresas y sucursales registradas en el sistema y solamente se seleccionarán las que tienen integridad. Anote las empresas y/o sucursales que tienen la integridad activada y reserve esta anotación para posterior consulta en la reactivación (o incluso, entre en contacto con nuestro Help Desk Framework para informarse sobre los archivos que contienen esta información).

5.    En los casos descritos en los ítems “iii” o “iv”, Y SOLO EN ESTOS CASOS, es necesario desactivar dicha integridad, seleccionando la opción Integridad/ Desactivar (APCFG60D).

6.     Al desactivar la Integridad referencial, ejecute el compatibilizador, de acuerdo con las instrucciones.

7.    Después de aplicar el compatibilizador, la Integridad referencial debe reactivarse, SOLAMENTE CUANDO se haya desactivado, por medio de la opción Integridad/Activar (APCFG60). Para ello, tenga a disposición la información de la(s) empresa(s) y/o sucursal(es) que tenía(n) activación de la integridad, selecciónela(s) nuevamente y confirme la activación.

 

¡EN CASO DE DUDAS, entre en contacto con el Help Desk Framework!


  1. En Microsiga Protheus TOTVS Smart Client, digite UPDMODMI en el campo Programa Inicial. Importante: Para que se actualice correctamente el diccionario de datos, asegúrese de que la fecha del compatibilizador sea igual o superior al 18/04/2018.
  2. Haga clic en OK para continuar.
  3. Después de confirmar, aparece una pantalla para seleccionar la empresa en la cual se modificará el diccionario de datos o aparece la ventana para seleccionar el compatibilizador. Deberá seleccionar el módulo “SIGAFAT – Facturación” y posteriormente el actualizador “03 - Factura Electrónica v2”.
  4. Al confirmar, se muestra un mensaje de advertencia sobre la copia de seguridad y la necesidad de su ejecución de modo exclusivo.
    1. Haga clic en Procesar para iniciar el procesamiento. El primer paso de la ejecución es la preparación de los archivos. 
    1. Se muestra un mensaje explicativo en la pantalla.
    2. A continuación, se muestra la ventana Actualización concluida con el historial (log) de todas las actualizaciones procesadas. En este log de actualización se muestran únicamente los campos actualizados por el programa. El compatibilizador crea los campos que aún no existen en el diccionario de datos.
    3. Haga clic en Grabar para guardar el historial (log) mostrado.
    4. Haga clic en OK para finalizar el procesamiento.

1.1 Procedimientos de Implantación

El sistema se actualiza inmediatamente después de aplicar el paquete de actualizaciones (Patch) de este issue.

  1. Aplique el patch del issue y ejecute una vez la rutina UPDMODMI (este proceso sólo aplica para versión 11.8). Es importante respaldar el repositorio de objetos (RPO) antes de aplicar la actualización.
  2. En el módulo Configurador (SIGACFG), acceda a Actualizaciones | Diccionario de datos | Parámetros y configure el siguiente parámetro con la ruta donde se encuentran archivos .csv para carga de catálogos: 

Nombre de la Variable:

MV_PATH814

Tipo:

C

Descripción:

Ruta local donde se encuentran los archivos en formato .csv.

Valor Estándar:


El paquete de solución del issue contiene:

En el caso de que haya actualizaciones a esos catálogos, publicados en el Anexo Técnico 001 Formatos de los Documentos XML de Facturación Electrónica – Versión 2, disponible en el portal de la DIAN, realice los siguientes pasos para actualizar las tablas del sistema:


Consulte la sección 4. Anexo Técnico versión 1.8 DIAN para información sobre actualizaciones a los catálogos y reglas de validación.

1.2 Actualizaciones del compatibilizador 

(Solamente para Microsiga Protheus, versiones anteriores a la versión 12).

1. Creación de Preguntas en el archivo SX1 – Archivo de Preguntas:

Grupo: MATA486

Orden

01

020304050607

Pregunta

¿Tipo de Documento?

¿Serie?
¿Estatus¿Fecha Inicial?¿Fecha Final?¿Tipo Nota Ajuste?¿Envío a Email? 

Tipo

N

CCDDNN

Tamaño

1

318811
VariableMV_PAR01MV_PAR02MV_PAR03MV_PAR04MV_PAR05MV_PAR06MV_PAR07

Validación








Objeto

C-Combo

G - GetG - GetG - GetG - GetC-ComboC - Combo
Consulta Estándar
SERNF




Preselección

1







Opciones

Factura
Nota de Débito
Nota de Crédito





Ninguna
Débito
Crédito

Si

No

Si la rutina de Documentos Electrónicos (MATA486), tiene fecha superior o igual al 23/12/2022, la pregunta de ¿Envío de Email?, debe configurarse en el Orden 07 (MV_PAR07), en caso contrario debe configurarse en el Orden 06 (MV_PAR06)


Grupo: MATA486A

Orden

01

0203

Pregunta

¿Serie de la Factura?

¿Factura Inicial?¿Factura Final?

Tipo

C

CC

Tamaño

3

1313
Validación

!Empty(MV_PAR03) .And. MV_PAR02<=MV_PAR03
Objeto

G

GG
Consulta EstándarSERNF

Preselección


Opciones



Grupo: MATA486B

Orden

01

0203

Pregunta

¿Serie de la Nota de Debito?

¿Nota de Debito Inicial?¿Nota de Debito Final?

Tipo

C

CC

Tamaño

3

1313
Validación

!Empty(MV_PAR03) .And. MV_PAR02<=MV_PAR03
Objeto

G

GG
Consulta EstándarSERNF

Preselección


Opciones



Grupo: MATA486C

Orden

01

0203

Pregunta

¿Serie de la Nota de Credito?

¿Nota de Debito Credito?¿Nota de Debito Credito?

Tipo

C

CC

Tamaño

3

1313
Validación

!Empty(MV_PAR03) .And. MV_PAR02<=MV_PAR03
Objeto

G

GG
Consulta EstándarSERNF

Preselección


Opciones



Grupo: M486PDF

Orden

01

020304

Pregunta

¿Serie del Documento?

¿Documento inicial?¿Documento final?¿Formato?

Tipo

C

CCN

Tamaño

3

13131
Objeto

G

GGC
Preselección0001
Opciones


PDF/E-mail


2.    Creación de tablas en el archivo SX2– Tablas:

Clave

Nombre

Modo

PYME

F3H

Configuración de Catálogos

C

S

F3IInformación de CatálogosCS


3.  Creación o modificación de Tablas Genéricas en el archivo SX5 – Tablas Genéricas:

N/A

4.  Creación de campos en el archivo SX3 – Campos:

Tabla F3H - Configuración de Catálogos.

Campo

F3H_FILIAL

Tipo

C

Tamaño

2

Decimal

0

Formato


Título

Sucursal

Descripción

Sucursal

Nivel

1

Utilizado

No

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Digite el código de la sucursal.

Campo

F3H_CODIGO

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Código

Descripción

Código del parámetro

Nivel

1

Utilizado

Obrigatório

Browse

Opciones


When


Relación


Val. Sistema

NaoVazio() .and. ExistChav("F3H", M->F3H_CODIGO,1) .and. FreeForUse("F3H",M->F3H_CODIGO)

Help

Código del parámetro.

Campo

F3H_DESC

Tipo

C

Tamaño

30

Decimal

0

Formato

@!

Título

Descripción

Descripción

Descripción del parámetro

Nivel


Utilizado

Obrigatório

Browse

Opciones


When


Relación


Val. Sistema

NAOVAZIO()

Help

Descripción del parámetro.

Campo

F3H_ORDEM

Tipo

C

Tamaño

2

Decimal

0

Formato

99

Título

Orden

Descripción

Orden del Parámetro

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Orden del parámetro.

Campo

F3H_CAMPOS

Tipo

C

Tamaño

10

Decimal

0

Formato

AXXXXXXXXX

Título

Campos

Descripción

Nombre del Campo

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When


Relación


Val. Sistema

NaoVazio() .and.  f812VerChav("F3H",M->F3H_CAMPOS)

Help

Incluir el nombre del campo.

Campo

F3H_DESCPO

Tipo

C

Tamaño

25

Decimal


Formato

@!

Título

Desc.Campo

Descripción

Descripción del Campo

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Incluir la descripción del campo.

Campo

F3H_TIPO

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

Tipo

Descripción

Tipo

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones

N=Numérico;C=Carácter;D=Fecha

When

F812Valid()

Relación


Val. Sistema

NaoVazio() .and. Pertence("NCD")  .and. f812ChkTipo(M->F3H_TIPO)

Help

Incluya el tipo de campo. C = Carácter, D = Fecha, N = Numérico.

Campo

F3H_TAMAN

Tipo

N

Tamaño

3

Decimal


Formato

999

Título

Tamaño

Descripción

Tamaño del Campo

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When

F812Valid()

Relación


Val. Sistema

NaoVazio() .and. F812ChkTaman(M->F3H_TAMAN)

Help

Incluir el tamaño del campo.

Obs: si el campo fuera tipo D=Fecha,  el tamaño debe ser igual a 8.

Campo

F3H_DECIMA

Tipo

N

Tamaño

2

Decimal


Formato

99

Título

Decimal

Descripción

Decimal

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When

F812Valid()

Relación


Val. Sistema

f812ChkDec(M->F3H_DECIMA)

Help

Incluir el número de decimales que tendrá el campo. Campos tipo: Fecha y Carácter No tiene decimales

Campo

F3H_PICTUR

Tipo

C

Tamaño

45

Decimal

0

Formato

@!

Título

Formato

Descripción

Formato

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Digite la máscara para la exhibición del campo. Ej.: "@E 999,99

Campo

F3H_VALID

Tipo

C

Tamaño

120

Decimal

0

Formato

@!

Título

Validación

Descripción

Validación del Usuario

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Agregar una validación del campo si es necesario.

Ej,: Entre("01","10",M-> F3H_TAMAN,.T.)

En el caso que la función utilizada sea "PERTENECE", deberá informarse el campo como segundo parámetro.

Ej.: Pertence("12",cCampo)

Campo

F3H_PADRAO

Tipo

C

Tamaño

6

Decimal


Formato

@!

Título

Cons.Estand.

Descripción

Consulta Estandar

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema

f812ConsPad()

Help

Digite una consulta estándar para la tabla.

Campo

F3H_VERSAO

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Versión

Descripción

Versión

Nivel

1

Utilizado

No

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Versión del catálogo.

Campo

F3H_PESQ

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

¿Usado Busq?

Descripción

¿Usado en la Busqueda?

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones

1=Si;2=No

When


Relación


Val. Sistema


Help

¿Usado en la Búsqueda de la Consulta Estándar (SXB)? Informar Si para utilizar este campo como clave simples de búsqueda.


Tabla F3I - Información de Catálogos.

Campo

F3I_FILIAL

Tipo

C

Tamaño

2

Decimal

0

Formato


Título

Sucursal

Descripción

Sucursal

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Informe el código de la sucursal.

Campo

F3I_CODIGO

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Código

Descripción

Código del parámetro

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema

EXISTCPO("F31")

Help

Informe el contenido de identificación del ítem de la lista.

Por ejemplo, si la lista de modificación es la lista de países, este campo corresponde al código de identificación del país.

Campo

F3I_SEQUEN

Tipo

C

Tamaño

5

Decimal


Formato

99999

Título

Secuencia

Descripción

Secuencia

Nivel


Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Secuencia.

Campo

F3I_CONTEU

Tipo

C

Tamaño

250

Decimal


Formato

@!


Título

Contenido


Descripción

Contenido de tabla

Nivel

 1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Relación


Val. Sistema


Help

Informe el contenido.


Tabla CTO - Monedas.

Campo

CTO_MOESAT

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Moneda DIAN

Descripción

Moneda DIAN

Nivel

1

Utilizado

Obrigatório

Si

Browse

Opciones


When


Consulta

COL007

Val. Sistema

Vazio() .or. ValidF3I("S007", M->CTO_MOESAT,1,3)

Help

Clave de moneda de acuerdo al catálogo de la DIAN.


Tabla SFB - Impuestos Variables.

Campo

FB_IMPSAT

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Impuesto FE

Descripción

Impuesto factura electr.

Nivel

1

Utilizado

Obrigatório

Si

Browse

Opciones


When


Consulta

COL005

Val. Sistema

Vazio() .or. ValidF3I("S005", M->FB_IMPSAT,1,3)

Help

Clave de impuesto registrado en
la factura electrónica.

Campo

FB_RIMPSAT

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

Régimen IVA

Descripción

Tipo de régimen IVA.

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL010

Val. Sistema

Vazio() .or. ValidF3I("S010", M->FB_RIMPSAT,1,1)

Help

Tipo de régimen IVA.

Campo

FB_CLASSE

Tipo

C

Tamaño

1

Decimal

0

Formato

@!

Título

Clase Imp

Descripción

Clase Impuesto

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones

I=Impuesto;P=Percepcion;R=Retencion

Val. Sistema

PERTENCE("IPR")

Help

Tipo de clase de impuesto: Impuesto/Percepción/Retención.


Tabla SFP - Control de Formularios.

Campo

FP_CAI

Tipo

C

Tamaño

16

Decimal

0

Título

Nº Aprob.

Descripción

Nº aprob. de paginas

Nivel

1

Utilizado

Obrigatório

Browse

Help

Número autorización: Número o código de la resolución otorgada para la numeración.

Campo

FP_SERIE2

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Serie 2

Descripción

Serie 2

Nivel

1

Utilizado

Obrigatório

Browse

Val. Sistema

NaoVazio()

Help

Serie a 4 dígitos que será informada a la DIAN.

Campo

FP_DTRESOL

Tipo

D

Tamaño

8

Decimal

0

Título

Fch Resoluc.

Descripción

Fecha de Resolución

Nivel

1

Utilizado

Obrigatório

Browse

Help

Fecha Autorización: Fecha Autorización de la numeración.

Campo

FP_NRCERT

Tipo

C

Tamaño

38

Decimal

0

Título

Clave Tecnic

Descripción

Clave Técnica

Nivel

1

Utilizado

Obrigatório

Browse

Help

Clave técnica del rango de facturación.


Tabla SA1 - Clientes.

Campo

A1_TIPDOC

Tipo

C

Tamaño

7

Decimal


Formato

@!

Título

Tipo Doc.

Descripción

Tipo Documento Identidad

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL002

Val. Sistema

Vazio() .or. ValidF3I("S002", M->A1_TIPDOC,1,7)

Help

Tipo de documento de identidad.


Tabla SC5 - Pedidos de venta.

Campo

C5_INCOTER

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Incoterm

Descripción

Clave del INCOTERM de la factura.

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL011

Val. Sistema

Vazio() .or. ValidF3I("S011", M->C5_INCOTER,1,3)

Help

Clave del INCOTERM aplicable a la factura.


Campo

C5_TIPOPE

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

Tipo Oblig.

Descripción

Tipo de oblig.-resp.

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL014

Val. Sistema

Vazio() .or. ValidF3I("S014", M->C5_TIPOPE,1,4)

Help

Tipo de obligaciones-responsabilidades.


Campo

C5_CVEPED

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

Usua. Aduan.

Descripción

Tipo de usuario aduanero

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL015

Val. Sistema

Vazio() .or. ValidF3I("S015", M->C5_CVEPED,1,4)

Help

Tipo de usuario aduanero.


Campo

C5_TRASLA

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

T.Establecim

Descripción

Tipo establecimiento

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL016

Val. Sistema

Vazio() .or. ValidF3I("S016", M->C5_TRASLA,1,4)

Help

Tipo de establecimiento.


Tabla SF2 - Facturas de venta / Notas de débito cliente.

Campo

F2_DOC

Tipo

C

Tamaño

13

Decimal

0

Formato

@!

Título

Num. Doc.

Descripción

Número de Documento

Nivel

1

Utilizado

Si

Obrigatório

Si

Browse

Val. Sistema

ExistChav("SF2",M->F2_DOC+M->F2_SERIE) .and. CtrFolios(xFilial("SF2"),M->F2_SERIE,M->F2_ESPECIE,M->F2_DOC) .AND. LXEXSER2()

Help

Número de la Factura.

Campo

F2_SERIE

Tipo

C

Tamaño

3

Decimal

0

Formato

@!

Título

Serie Doc.

Descripción

Serie del Documento

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

Val. Sistema

MAFISREF("NF_SERIENF","MT100",M->F2_SERIE) .and. LxExSer2()

Help

Serie de la Factura.

Campo

F2_SERIE2

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Serie-2 Doc.

Descripción

Serie 2 del Documento

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

No

Val. Sistema

When

!(funname() $ 'MATA467N/MATA462N/MATA465N')

Help

Serie 2 de la Factura.

Campo

F2_INCOTER

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Incoterm

Descripción

Clave del INCOTERM de la factura.

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL011

Val. Sistema

Vazio() .or. ValidF3I("S011", M->F2_INCOTER,1,3)

Help

Clave del INCOTERM aplicable a la factura.


Campo

F2_TIPOPE

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

Tipo Oblig.

Descripción

Tipo de oblig.-resp.

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL014

Val. Sistema

Vazio() .or. ValidF3I("S014", M->F2_TIPOPE,1,4)

Help

Tipo de obligaciones-responsabilidades.


Campo

F2_UUID

Tipo

C

Tamaño

40

Decimal

0

Formato

@!

Título

Folio Fiscal

Descripción

Folio Fiscal

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Help

Folio fiscal de timbrado CUFE.

Campo

F2_TIPREF

Tipo

C

Tamaño

1

Decimal

0

Formato

@!

Título

Tipo Nota D

Descripción

Tipo de nota de débito

Nivel

1

Utilizado

Obrigatório

Browse

No

Consulta

COL004

Val. Sistema

Vazio() .or. ValidF3I("S004", M->F2_TIPREF,1,1)

Help

Catálogo 8.4. Concepto de Notas débito

conforme definición de la DIAN.

Campo

F2_MOTIVO

Tipo

M

Tamaño

100

Decimal

0

Formato

@!

Título

Motivo

Descripción

Motivo

Nivel

1

Utilizado

Obrigatório

Browse

No

Help

Motivo por el cuál se emite el documento.

Campo

F2_CVEPED

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

Usua. Aduan.

Descripción

Tipo de usuario aduanero

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta

COL015

Val. Sistema

Vazio() .or. ValidF3I("S015", M->F2_CVEPED,1,4)

Help

Tipo de usuario aduanero.


Campo

F2_TRASLA

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

T.Establecim

Descripción

Tipo establecimiento

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL016

Val. Sistema

Vazio() .or. ValidF3I("S016", M->F2_TRASLA,1,4)

Help

Tipo de establecimiento.


Campo

F2_FLFTEX

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

Status Trans

Descripción

Estatus transmision elec

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones

0=No Enviado;1=Enviado a Proveedor ;4=Esperando procesamiento;5=Rechazado;6=Autorizado

When


Consulta


Val. Sistema


Help

Indica el estatus del documento una vez

que ha sido enviado al Proveedor.


Campo

F2_HORA

Tipo

C

Tamaño

8

Decimal

0

Formato

@!

Título

Hora

Descripción

Hora

Nivel

1

Utilizado

Obrigatório

No

Browse

No


Campo

F2_URI

Tipo

C

Tamaño

45

Decimal


Formato

@!

Título

Cons URI

Descripción

URI para consulta

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta


Val. Sistema


Help

Uri para consulta.



Tabla SF1 - Notas de crédito cliente.

Campo

F1_DOC

Tipo

C

Tamaño

13

Decimal

0

Formato

@!

Título

Num. Doc.

Descripción

Número de Documento

Nivel

1

Utilizado

Si

Obrigatório

Si

Browse

Val. Sistema

fValSerDoc()

Help

Número de la Factura del proveedor.

Campo

F1_SERIE

Tipo

C

Tamaño

3

Decimal

0

Formato

@!

Título

Serie Doc.

Descripción

Serie del Documento

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

Val. Sistema

MAFISREF("NF_SERIENF","MT100",M->F1_SERIE)  .And. fValSerDoc()

Help

Serie de la Factura.

Campo

F1_SERIE2

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Serie-2 Doc.

Descripción

Serie 2 del Documento

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

No

When

!(funname() $ 'MATA467N/MATA462N/MATA465N')

Help

Serie 2 de la Factura de acuerdo a la DIAN.

Campo

F1_INCOTER

Tipo

C

Tamaño

3

Decimal


Formato

@!

Título

Incoterm

Descripción

Clave del INCOTERM de la factura.

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL011

Val. Sistema

Vazio() .or. ValidF3I("S011", M->F1_INCOTER,1,3)

Help

Clave del INCOTERM aplicable a la factura.


Campo

F1_TIPOPE

Tipo

C

Tamaño

4

Decimal

0

Formato

@!

Título

Tipo Oblig.

Descripción

Tipo de oblig.-resp.

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL014

Val. Sistema

Vazio() .or. ValidF3I("S014", M->F1_TIPOPE,1,4)

Help

Tipo de obligaciones-responsabilidades.


Campo

F1_TIPREF

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

Tipo Nota C

Descripción

Tipo de nota de Credito

Nivel

1

Utilizado

Obrigatório

Browse

No

Consulta

COL003

Val. Sistema

Vazio() .or. ValidF3I("S003", M->F1_TIPREF,1,1)

Help

Catálogo 8.4. Concepto de Notas Crédito

conforme definición de la DIAN.

Campo

F1_MOTIVO

Tipo

M

Tamaño

100

Decimal

0

Formato

@!

Título

Motivo NCC

Descripción

Motivo de nota de crédito

Nivel

1

Utilizado

Obrigatório

Browse

No

Opciones


When


Consulta


Val. Sistema


Help

Motivo por el cuál se emite el documento


Campo

F1_CVEPED

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

Usua. Aduan.

Descripción

Tipo de usuario aduanero

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL015

Val. Sistema

Vazio() .or. ValidF3I("S015", M->F1_CVEPED,1,4)

Help

Tipo de usuario aduanero.


Campo

F1_TRASLA

Tipo

C

Tamaño

4

Decimal


Formato

@!

Título

T.Establecim

Descripción

Tipo establecimiento

Nivel

1

Utilizado

Obrigatório

No

Browse

Opciones


When


Consulta

COL016

Val. Sistema

Vazio() .or. ValidF3I("S016", M->F1_TRASLA,1,4)

Help

Tipo de establecimiento.

Campo

F1_FLFTEX

Tipo

C

Tamaño

1

Decimal


Formato

@!

Título

Status Trans

Descripción

Estatus transmision elec

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones

0=No Enviado;1=Enviado a Proveedor;4=Esperando procesamiento;5=Rechazado;6=Autorizado

When


Consulta


Val. Sistema


Help

Indica el estatus del documento una vez

que ha sido enviado al Proveedor.

Campo

F1_URI

Tipo

C

Tamaño

45

Decimal


Formato

@!

Título

Cons URI

Descripción

URI para consulta

Nivel

1

Utilizado

Obrigatório

No

Browse

No

Opciones


When


Consulta


Val. Sistema


Help

Uri para consulta.



Tabla SYA - Países.

Campo

YA_CCEDIAN

Tipo

C

Tamaño

2

Decimal

0

Formato

@!

Título

Pais DIAN

Descripción

Clave del Pais de la DIAN

Nivel

0

Utilizado

Obrigatório

Browse

Consulta

COL008

Val. Sistema

Vazio() .or. ValidF3I("S008", M->YA_CCEDIAN,1,2)

Help

Código de país de acuerdo a catálogo de la DIAN.


Tabla AI0 - Complemento de Clientes:

Campo

AI0_RECE

Tipo

C

Tamaño

30

Decimal

0

Formato


Título

Email Recep.

Descripción

Email para Recepción FE

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

No

Help

Indica el Email de Recepción (Buzón Tributario de la DIAN), en caso de que no sea el mismo al informado en el campos Email (A1_EMAIL) del Cliente, y será utilizado para el envío automático al realizar la transmisión de documentos electrónicos o al realizar el envío desde la opción Imprimir PDF / Envío de Email.


Importante:

El tamaño de los campos que disponen de grupo puede variar de acuerdo con el entorno en uso.


5.  Creación o modificación de Consulta Estándar en el archivo SXB – Consulta Estándar:

Búsqueda COL001:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL001

1

01RETipos de FacturaF3I

COL001

2

0101Tipos de FacturaF812SXB("S001","Codigo")

COL001

5

01

VAR_IXB

Búsqueda COL002:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL002

1

01RETipos de Docs de IdentidadF3I

COL002

2

0101Tipos de Docs de IdentidadF812SXB("S002","Codigo")

COL002

5

01

VAR_IXB

Búsqueda COL003:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL003

1

01REConceptos de Notas de CréditoF3I

COL003

2

0101Conceptos de Notas de CréditoF812SXB("S003","Codigo")

COL003

5

01

VAR_IXB

Búsqueda COL004:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL004

1

01REConceptos de Notas de DébitoF3I

COL004

2

0101Conceptos de Notas de DébitoF812SXB("S004","Codigo")

COL004

5

01

VAR_IXB

Búsqueda COL005:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL005

1

01REImpuestos Factura ElectrónicaF3I

COL005

2

0101Impuestos Factura ElectrónicaF812SXB("S005","Codigo")

COL005

5

01

VAR_IXB

Búsqueda COL006:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL006

1

01REMedios de PagoF3I

COL006

2

0101Medios de PagoF812SXB("S006","Codigo")

COL006

5

01

VAR_IXB

Búsqueda COL007:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL007

1

01REMonedasF3I

COL007

2

0101MonedasF812SXB("S007","Codigo")

COL007

5

01

VAR_IXB

Búsqueda COL008:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL008

1

01REPaísesF3I

COL008

2

0101PaísesF812SXB("S008","Codigo")

COL008

5

01

VAR_IXB

Búsqueda COL009:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL009

1

01RETipos de Org Jurídica; Adquir.F3I

COL009

2

0101Tipos de Org Jurídica; Adquir.F812SXB("S009","Codigo")

COL009

5

01

VAR_IXB

Búsqueda COL010:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL010

1

01RETipos de Régimen IVAF3I

COL010

2

0101Tipos de Régimen IVAF812SXB("S010","Codigo")

COL010

5

01

VAR_IXB

Búsqueda COL011:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL011

1

01REIncotermsF3I

COL011

2

0101IncotermsF812SXB("S011","Codigo")

COL011

5

01

VAR_IXB

Búsqueda COL012:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL012

1

01RETipos de PagoF3I

COL012

2

0101Tipos de PagoF812SXB("S012","Codigo")

COL012

5

01

VAR_IXB

Búsqueda COL013:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL013

1

01RETipos de RepresentaciónF3I

COL013

2

0101Tipos de RepresentaciónF812SXB("S013","Codigo")

COL013

5

01

VAR_IXB

Búsqueda COL014:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL014

1

01RETipos de Obligaciones-Respon.F3I

COL014

2

0101Tipos de Obligaciones-Respon.F812SXB("S014","Codigo")

COL014

5

01

VAR_IXB

Búsqueda COL015:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL015

1

01RETipos de Usuarios AduanerosF3I

COL015

2

0101Tipos de Usuarios AduanerosF812SXB("S015","Codigo")

COL015

5

01

VAR_IXB

Búsqueda COL016:

Alias

Tipo

SecuenciaColumnaDescripciónContém

COL016

1

01RETipos de EstablecimientosF3I

COL016

2

0101Tipos de EstablecimientosF812SXB("S016","Codigo")

COL016

5

01

VAR_IXB


6.  Creación de Índices en el archivo SIX – Índices:

Índice

F3H

Orden

1

Clave

F3H_FILIAL+F3H_CODIGO

Descripción

Código

Propietario

S

Índice

F3H

Orden

2

Clave

F3H_FILIAL+F3H_DESC

Descripción

Descripción

Propietario

S

Índice

F3H

Orden

3

Clave

F3H_FILIAL+F3H_CAMPOS+F3H_CODIGO

Descripción

Campos + Código

Propietario

S

Índice

F3I

Orden

1

Clave

F3I_FILIAL+F3I_CODIGO+F3I_SEQUEN

Descripción

Código + Secuencia

Propietario

S


7.  Creación o modificación de Parámetros en el archivo SX6 – Parámetros:

Nombre de la Variable

MV_F3HNUM

Tipo

C

Descripción

Almacena el último número del código del parámetro.

Valor Estándar

U000

Nombre de la Variable

MV_PATH814

Tipo

C

Descripción

Ruta donde se encuentran los catálogos de la DIAN; archivos en formato csv.

Ejemplo: C:\CATALOGOSDIAN

Valor Estándar


Nombre de la Variable

MV_CFDFTE

Tipo

C

Descripción

Indica el directorio y archivo con la estructura para la generación de factura electrónica para doc. de entrada (NCC).

Valor EstándarGetSrvProfString('startpath','')+'\cfd\inicfd\fatecol.ini

Nombre de la Variable

MV_CFDFTS

Tipo

C

Descripción

Indica el directorio y archivo con la estructura para la generación de factura electrónica para doc. de salida (NF/NDC).

Valor EstándarGetSrvProfString('startpath','')+'\cfd\inicfd\fatscol.ini

Nombre de la Variable

MV_CFDFTSE

Tipo

C

Descripción

Indica el directorio donde se encuentra el archivo con la estructura para la generación de factura electrónica de Exportación para doc. de salida (NF/NDC).

Valor Estándar

Nombre de la Variable

MV_CFDDOCS

Tipo

C

Descripción

Directorio donde se grabarán las facturas electrónicas.

Valor EstándarGetSrvProfString('startpath','')+'\cfd\facturas\

Nombre de la Variable

MV_CFDANUL

Tipo

C

Descripción

Directorio donde se grabarán las facturas electrónicas anuladas.

Valor Estándar

Nombre de la Variable

MV_CFDIAMB

Tipo

C

Descripción

Ambiente de trabajo de certificación de factura electrónica:1=Producción, 2=Homologación.

Valor Estándar

Nombre de la Variable

MV_PROVFE

Tipo

C

Descripción

Identifica el Facturador Electrónico o el Proveedor Tecnológico de servicios de certificación de factura electrónica.

Indicar:

DFACTURA

Valor Estándar

Nombre de la Variable

MV_TPRESOB

Tipo

C

Descripción

Tipo de obligaciones y responsabilidades.

Valor Estándar

De acuerdo a la tabla Tipos de obligaciones-responsabilidades publicada en el Anexo Técnico 001. Formatos de los Documentos XML de Fac-e V2 y descrito ampliamente en el Anexo Técnico 003. Mecanismos Sistema Tecnico de Control V2 disponibles en el sitio de la DIAN.


Nombre de la Variable

MV_NCCONL

Tipo

C

Descripción

Indica el tipo de compensación OnLine para documentos de tipo Notas de Crédito, con opciones:

1 - Usa Factura Electrónica y compensa en línea.

2 - Usa Factura Electrónica y no compensa en línea (existe tiempo de espera en retorno de estatus de timbrado).

3 - No usa Factura Electrónica y compensa en línea.

Valor Estándar


NOTA: Si el parámetro MV_NCCONL no existe o se encuentra vacío la funcionalidad se comporta de la siguiente manera:


En los siguientes parámetros (MV_RETF05?) se deben registrar los códigos fiscales aplicables a cada concepto que se indica en la descripción. Si para un concepto aplica más de un código fiscal, se deben separar por el caracter “|” (pipe). Todos los impuestos variables de retención en la fuente deben configurarse con el código “05” correspondiente a la tabla S005 - Impuestos Factura Electrónica (rutina Actualizaciones | Archivos | Mantenimiento Catálogos).

Nombre de la Variable

MV_RETF053

Tipo

C

Descripción

Códigos fiscales de compras.

Valor Estándar

Nombre de la Variable

MV_RETF055

Tipo

C

Descripción

Códigos fiscales de honorarios.

Valor Estándar

Nombre de la Variable

MV_RETF056

Tipo

C

Descripción

Códigos fiscales de servicios generales.

Valor Estándar

Nombre de la Variable

MV_RETF057

Tipo

C

Descripción

Códigos fiscales de transporte de carga.

Valor Estándar


Importante:

Los siguientes parámetros aplican si en la implementación se utilizará el servicio web Dfactura del Proveedor Tecnológico The Factory HKA para la certificación de los comprobantes fiscales:

Nombre de la Variable

MV_ID_PWD

Tipo

C

Descripción

Password de la habilitación como software para la emisión de facturas.

Valor Estándar


Importante:

Nombre de la Variable

MV_TKN_EMP

Tipo

C

Descripción

Token Empresa - The Factory HKA.

Valor Estándar

Nombre de la Variable

MV_TKN_PAS

Tipo

C

Descripción

Token Password - The Factory HKA.

Valor Estándar

CONFIGURACIÓN DE PARÁMETROS

En el Configurador (SIGACFG), acceda a Entornos/Archivos/Parámetros (CFGX017). Configure los parámetros a continuación:


Ítems/Carpetas

Descripción

Nombre:

MV_PATH814

Tipo:

C

Contenido:


Descripción:

Ruta local (computadora cliente) donde se encuentran los catálogos de la DIAN; archivos en formato csv.

Por ejemplo: C:\CATALOGOSDIAN

Nombre:

MV_CFDDOCS

Tipo:

C

Contenido:


Descripción:
Directorio donde se grabarán las facturas electrónicas.

Nombre:

MV_CFDANUL

Tipo:

C

Contenido:


Descripción:
Directorio donde se grabarán las facturas electrónicas anuladas.

Nombre:

MV_CFDFTS

Tipo:

C

Contenido:


Descripción:
Indica el directorio donde se encuentra el archivo con la estructura para la generación de factura electrónica para doc. de salida (NF/NDC).

Nombre:

MV_CFDFTSE

Tipo:

C

Contenido:


Descripción:
Indica el directorio donde se encuentra el archivo con la estructura para la generación de factura electrónica exportación para doc. de salida (NF/NDC).


Nombre:

MV_CFDFTE

Tipo:

C

Contenido:


Descripción:
Indica el directorio donde se encuentra el archivo con la estructura para la generación de factura electrónica para doc. de entrada (NCC).


Nombre:

MV_CFDIAMB

Tipo:

C

Contenido:


Descripción:
Indica el ambiente de trabajo de certificación de factura electrónica:1=Producción, 2=Homologación.



Nombre:

MV_PROVFE

Tipo:

C

Contenido:


Descripción:

Identifica el Facturador Electrónico o el Proveedor Tecnológico de servicios de certificación de factura electrónica.

Por ejemplo: DFACTURA


Configure los siguientes parámetros si se utilizará el servicio web Dfactura del Proveedor Tecnológico The Factory HKA para la certificación de los comprobantes fiscales:

Nombre:

MV_TKN_EMP

Tipo:

C

Contenido:


Descripción:
Token Empresa - The Factory HKA.

Nombre:

MV_TKN_PAS

Tipo:

C

Contenido:


Descripción:
Token Password - The Factory HKA.


Para la funcionalidad de envío de la factura electrónica (archivos xml y pdf) por e-mail a clientes, es necesario configurar los siguientes parámetros:

Nombre:

MV_RELSERV

Tipo:

C

Contenido:


Descripción:
Servidor de envío de e-mail.

Nombre:

MV_RELACNT

Tipo:

C

Contenido:


Descripción:
Cuenta a ser utilizada en el envío de e-mail.

Nombre:

MV_RELPSW

Tipo:

C

Contenido:


Descripción:
Contraseña de la cuenta de e-mail.


En caso de que el servidor de correo requiera autenticación, se deben configurar los siguientes parámetros:


Nombre:

MV_RELATH

Tipo:

L

Contenido:

.T.

Descripción:

Servidor de email requiere autenticación.
.F. = No
.T. = Sí

Nombre:

MV_RELSSL

Tipo:

L

Contenido:


Descripción:

Habilita el SSL en el envío y recepción de emails.
.F. = No
.T. = Sí

Nombre:

MV_RELTLS

Tipo:

L

Contenido:


Descripción:

El servidor de SMTP tiene conexion del tipo segura ( SSL/TLS ).
.F. = No
.T. = Sí

Nombre:

MV_SRVPORT

Tipo:

N

Contenido:


Descripción:

Puerto de salida del servidor de envío.

Si no se define este parámetro, el sistema usa el puerto estándar 25, en este caso es importante no incluir el puerto en la identificación del servidor de correo, parámetro MV_RELSERV.


Nombre:

MV_RELAUSR

Tipo:

C

Contenido:


Descripción:

Usuario para autenticación en el servidor de correo.

Nombre:

MV_RELAPSW

Tipo:

C

Contenido:


Descripción:
Contraseña para autenticación en servidor de email.



CONFIGURACIÓN DE MENÚS.

2.  En el Configurador (SIGACFG), acceda a Entornos/Archivo/Menú (CFGX013). Informe la nueva opción de menú del informe el módulo SIGAFAT, conforme las instrucciones a continuación:

Menú

Actualizaciones.

Submenú

Archivos.

Nombre de la Rutina

Definición de Catálogos.

Programa

FISA812

Módulo

Facturación.

Tipo

Función Protheus.

Menú

Actualizaciones.

Submenú

Archivos.

Nombre de la Rutina

Mantenimiento de Catálogos.

Programa

FISA813

Módulo

Facturación.

Tipo

Función Protheus.

Menú

Actualizaciones.

Submenú

Facturación.

Nombre de la Rutina

Transmitir Factura Electron.

Programa

MATA486

Módulo

Facturación.

Tipo

Función Protheus.

1.3 Procedimiento de Utilización 

1. Ingrese a la rutina de definición de catálogos (Facturación SIGAFAT | Actualizaciones | Archivos | Definición de catálogos) para crear automáticamente los catálogos de Factura Electrónica a partir de los archivos .CSV.

2. En la rutina de mantenimiento de catálogos (Facturación SIGAFAT | Actualizaciones | Archivos | Mantenimiento de catálogos) se puede verificar el contenido de los catálogos creados.

En caso de que la certificación de los comprobantes fiscales se vaya a realizar a través del servicio web Dfactura de The Factory HKA, debe modificar el catálogo S005 - Impuestos Factura Electrónica, de acuerdo al listado que el Proveedor Tecnológico maneja.

Adicionalmente, configure uno o varios códigos especiales para autorretenciones. Las claves no deben estar en uso por el Proveedor Tecnológico ni por la DIAN y deben ser alfanuméricos. Por ejemplo: 0A.

Consulte la sección 4. Anexo Técnico versión 1.8 DIAN para información sobre actualizaciones a los catálogos y reglas de validación.


3. Configure la relación entre las tablas del sistema y los catálogos publicados por la DIAN en el documento:

Anexo Técnico 001. Formatos de los Documentos XML de Fac-e V2 .Por ejemplo:

Consulte la sección 4. Anexo Técnico versión 1.8 DIAN para información sobre actualizaciones a los catálogos y reglas de validación.

4. En la tabla de Control de folios (Libros Fiscales (SIGAFIS) | Actualizaciones | Archivos | Impuestos Variab.) registre los datos para cada serie y especie:

Adicionalmente, en la rutina de tablas genéricas (Configurador Protheus (SIGACFG) | Entorno | Archivos | Tablas), acceda a la tabla 01 - Series de Facturas y registre los consecutivos de las series correspondientes.

5. En el catálogo de clientes (Facturación (SIGAFAT) | Actualizaciones | Archivos | Clientes) registre la información requerida para la factura electrónica. Los datos requeridos para incluir en la factura electrónica son:

Opcionalmente, puede configurar estos campos como obligatorios a través del configurador de Protheus (SIGACFG | Base de Datos | Base de Datos), contacte al administrador del sistema para realizar estas configuraciones.

6. Registre facturas de venta (Facturación (SIGAFAT) | Actualizaciones | Facturación | Facturación). A continuación realice la transmisión electrónica (Facturación (SIGAFAT) | Actualizaciones | Facturación | Facturación Electrónica), podrá imprimir los comprobantes en PDF y/o enviarlos por email.

7. Registre notas de débito (Facturación (SIGAFAT) | Actualizaciones | Facturación | Notas de Cred./Deb.) por conceptos de intereses y gastos por cobrar. A continuación realice la transmisión electrónica, podrá imprimir los comprobantes en PDF y/o enviarlos por email.

8. Registre notas de crédito (Facturación (SIGAFAT) | Actualizaciones | Facturación | Notas de Cred./Deb.) por devolución, anulación y descuentos. A continuación realice la transmisión electrónica, podrá imprimir los comprobantes en PDF y/o enviarlos por email.

9. Realice el mismo procedimiento para generar facturas de venta, notas de débito y notas crédito de exportación, ejecute la transmisión electrónica.

La representación impresa de un comprobante electrónico (PDF) consta de los elementos necesarios indicados por la autoridad, entre los cuales se destaca:

Al transmitir un documento, si obtiene como resultado el mensaje "Se encontraron inconsistencias", proceda a imprimir el log de errores en el cual se informa el motivo de rechazo. Generalmente se tratará de un dato incorrecto o sin definir en la tabla de:

Si la transmisión es "exitosa", de acuerdo al método de certificación, eso indica:


2. BITÁCORA DE CAMBIOS


2.1 FACTURA ELECTRÓNICA VALIDACIÓN PREVIA


2.1.1 Visión general 

Realizar la transmisión de documentos electrónicos en el modelo de Facturación Electrónica con Validación Previa a la Dirección de Impuestos y Aduana Nacionales (DIAN), consumiendo los web services del proveedor tecnológico The Factory HKA.

El sustento legal y toda la información referente a Factura Electrónica se encuentra en el sitio de la DIAN.

NOTA: Para la implantación del proceso de validación previa, se deberá de contar con las configuraciones del modelo de validación posterior descrito en el inciso 1.REQUERIMIENTOS

Documentos a transmitir:


PROCEDIMIENTO DE IMPLANTACIÓN

Nota: La actualizaciones presentadas a continuación son compatibles con versiones mayor o igual a 12.1.17

1.- Se recomienda realizar un respaldo del repositorio de objetos (RPO) antes de aplicar el paquete de actualización (patch).

2.- Aplicar el paquete de actualización (patch) del presente issue, el cual contiene las siguientes rutinas:


RutinasFecha Actualización

FISA814.PRW

08/08/2019 

FISA827.PRW

08/08/2019

LOCXNF.PRW

19/082019

LOCXNF2.RW

19/082019

M486XFUN.PRW

08/08/2019 

M486XFUNCO.PRW

19/082019

MATA468N.PRX

16/08/2019

MATA486.PRW

19/082019

WSNFECOL.PRW

08/08/2019 

FATSCOL.INI

08/08/2019 

FATECOL.INI

08/08/2019 

FATSECOL.INI

20/08/2019
MATN030.PRX16/08/2019


3.- Realizar las actualizaciones al diccionario de datos de acuerdo a la sección 05, Diccionario de datos, del presente documento técnico.

4.- En el módulo Configurador (SIGACFG) acceda a Actualizaciones | Diccionario de Datos | Parámetros.

5.- En la ruta configurada en el parámetro MV_PATH814 actualizar los archivos 05ImpuestosFE.csv10TiposRegimen.csv 14TiposObligacionesResp.csv, y agregar el nuevo archivo 17TiposOperacion.csv.

Importante: Las actualizaciones a los catálogos deberán de ser de acuerdo al anexo Estructura UBL y Validaciones Factura Electrónica 2.1 Versión 2, y se deberán borrar en las tablas F3I y F3H los registros de los catálogos S005, S010 y S014.


Tasa de Cambio

Para la generación documentos en moneda diferente de pesos colombianos (COP) en el XML se deberá tenerse creado el nodo cac:PaymentExchangeRate, para lo cual se deberán agregar las siguientes líneas en los archivos con extensión .INI:

En la sección de XXX INICIALIZACION agregar la línea:

(PRE) _aTotal[109] := Posicione("CTO",1,xFilial("CTO")+Strzero(SF2→F2_MOEDA,2),"CTO_MOESAT")

En la sección XXX RECEPTOR agregar las siguientes líneas después de la finalización del nodo PaymentTerms:

(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cac:PaymentExchangeRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyCode>' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyBaseRate>1.00</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyCode>' + "COP" + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyBaseRate>1.00</cbc:TargetCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:CalculationRate>' + Alltrim(Str(SF2->F2_TXMOEDA,11,2)) + '</cbc:CalculationRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:Date>' + _aTotal[095] + '</cbc:Date>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' </cac:PaymentExchangeRate>' + ( chr(13)+chr(10) ) , "" )


Documento Referenciado

Para la generación del nodo AdditionalDocumentReference, en el script de generación del archivo XML, FATSCOL.INI, deben existir las siguientes líneas de tal manera que el nodo se genere en la raíz del nodo fe:Invoice

//Documentos referenciados (solo facturas)
(PRE) _aTotal[001] += IIf(SF2->(ColumnPos("F2_UUIDREL")) > 0 .And. AllTrim(SF2->F2_ESPECIE)=="NF",M486DRCOL(SF2->F2_UUIDREL,1),"")


Ejemplo del nodo:

<cac:AdditionalDocumentReference>

<cbc:ID>60</cbc:ID>

<cbc:DocumentTypeCode>AIJ</cbc:DocumentTypeCode> (Debe corresponder a valores de la tabla S018 - REFERENCIA A OTROS DOCUMENTOS)

<cbc:IssueDate>2020-02-05</cbc:IssueDate>

</cac:AdditionalDocumentReference>


Donde :

AtributoTamañoPath
numeroDocumento20fe:Invoice/cac:AdditionalDocumentReference/cbc:ID
fecha10fe:Invoice/cac:AdditionalDocumentReference/cbc:IssueDate
tipoDocumentoCodigo20fe:Invoice/cac:AdditionalDocumentReference/cbc:DocumentTypeCode
codigoInterno1"1"


Importante: Los documentos referenciados son tomados del campo Docs Relacs (F2_UUIDREL), el formato de captura debe ser:

t/n/aaaa-mm-dd

En donde:

t = Tipo de documento

n = Número de documento

aaaaa-mm-dd = Fecha del documento (año-mes-día)

Por ejemplo AIJ/60/2020-02-05, si es necesario registrar más de una referencia, cada documento debe ir en una línea,

Los diferentes Tipos de Documento deben registrarse en el catálogo S018 - REFERENCIA A OTROS DOCUMENTOS, en la rutina Mantenimiento de Catálogos (Verificar la estructura de que debe contener el archivo 18CodigoReferenciaDocs.csv).


Orden de Compra

Para la generación del nodo OrderReference, en el script de generación del archivo XML, FATSCOL.INI, deben existir las siguientes líneas de tal manera que el nodo se genere en la raíz del nodo fe:Invoice:

// Orden de Compra
(PRE) _aTotal[001] += IIf(SF2->(ColumnPos("F2_UUIDREL")) > 0 .And. AllTrim(SF2->F2_ESPECIE)=="NF",M486DRCOL(SF2→F2_UUIDREL,2),"")


Ejemplo del nodo:

<cac:OrderReference>

<cbc:ID>156</cbc:ID>

<cbc:IssueDate>2020-02-05</cbc:IssueDate>

</cac:OrderReference>


AtributoTamañoPath
numeroDocumento20fe:Invoice/cac:OrderReference/cbc:ID
fecha10fe:Invoice/cac:OrderReference/cbc:IssueDate


Importante:  El dato es tomado del campo Docs Relacs (F2_UUIDREL), el formato de captura debe ser:

ORDC/n/aaaa-mm-dd

En donde:

ORDC = Acrónimo de Orden de Compra (valor fijo)

n = Número de documento

aaaaa-mm-dd = Fecha del documento (año-mes-día)

Por ejemplo ORDC/156/2020-02-05Solo se permite informar una orden de compra de referencia por factura.


7.- Para el nodo de actividadEconomicaCIIU se deberá configurar el campo C.Actividad (A1_ATIVIDAD) del Cliente.


El archivo 05ImpuestosFE.csv deberá tener la siguiente estructura:


Importante: En el módulo Facturación (SIGAFAT) desde Actualizaciones | Archivos | Impuestos Variables (MATA995), se deberán re-configurar para cada impuesto el campo Impuesto FE (FB_IMPSAT) con los valores definidos por la DIAN, con la última actualización de catálogo S005 - IMPUESTOS FACTURA ELECTRÓNICA.



El archivo 10TiposRegimen.csv deberá tener la siguiente estructura:


El archivo 14TiposObligacionesResp.csv deberá tener la siguiente estructura:


El archivo 17TiposOperacion.csv deberá tener la siguiente estructura:


El archivo 18CodigoReferenciaDocs.csv deberá tener la siguiente estructura:


8.- En la ruta configurada en los parámetros MV_CFDFTSMV_CFDFTEMV_CFDFTSE, actualizar los archivos FATSCOL.INI, FATSECOL.INI y FATECOL.INI.


Consulte la sección 4. Anexo Técnico versión 1.8 DIAN para información sobre actualizaciones a los catálogos y reglas de validación.

2.1.2 Ejemplo de utilización.

Clientes

Nacionales, se les deben configurar los campos de Código de Departamento (A1_EST) y Código de Municipio (A1_COD_MUN)


Atributos para envió de datos del cliente:

AtributoTamañoPath
telefono20fe:Invoice/fe:AccountingCustomerParty/cac:Party/cac:Contact/cbc:Telephone
email1000fe:Invoice/fe:AccountingCustomerParty/cac:Party/cbc:ElectronicMail


NOTA: El departamento y municipio deben estar homologados con los códigos y descripciones de acuerdo a los puntos 6.4.2 Departamentos y 6.4.3 Municipios del anexo definido por la DIAN:


Configurar el Tipo de régimen del cliente, modificando el cliente y ejecutando desde Otras Acciones | Complementos del cliente.



Configurar las Responsabilidades tributarias del cliente, modificando el cliente y ejecutando desde Otras Acciones | Resp. Obligaciones DIAN.



Configurar los Tributos del cliente, modificando el cliente y ejecutando desde Otras Acciones | Tributos DIAN.



Para Facturas de Venta, Nota de Crédito y Nota de Débito

Desde el módulo Facturación (SIGAFAT) registrar los siguientes documentos:

En la captura de los documentos se debe informar el Tipo de operación (F1_TIPOPE/F2_TIPOPE).


Desde el módulo Facturación (SIGAFAT) acceder a Actualizaciones | Facturación | Facturación Electrónica (MATA486)

a) En los parámetros indicar el Tipo y Serie del documento a transmitir.

b) Ejecutar la acción Transmitir.

c) Indicar los parámetros de la serie y rango de folios a transmitir.

d) Una vez finalizado el proceso se visualizará el log donde se podrá consultar si la transmisión fue exitosa; en caso de haber inconsistencias, proceda a realizar las configuraciones necesarias e intente transmitir nuevamente.

e) Si el documento transmitido retorna código 200-Respuesta satisfactoria, el documento quedará con estatus Documento autorizado (Verde), si el código de retorno es 201 - El documento se entregó a DIAN, estamos a la espera del resultado de validación el documento quedará en estatus Pendiente de procesamiento (Amarillo) y cualquier otro código de retorno quedará con estatus No Transmitido (Gris).

f) Si los documentos transmitidos quedaron en estatus 201 - El documento se entregó a DIAN, estamos a la espera del resultado de validación, se deberá consultar mediante la acción Monitor para actualizar el estatus en Protheus de acuerdo a la respuesta de la DIAN, en caso de que el documento haya sido rechazado, mediante el botón Errores que se encuentra en la parte inferior de la pantalla Monitor se podrán visualizar las observaciones del documento.

a) Pantalla de factura electrónica

b) Otras Acciones / Acciones relacionadas

AcciónDescripción
MonitorPermite realizar la consulta del estatus de los documentos ante la DIAN.
Recupera XMLPermite descargar una copia de la factura electrónica (archivos XML y PDF) desde el sitio del proveedor tecnológico.
Imprimir PDFPermite descargar e imprimir la factura electrónica (archivo PDF) desde el sitio del proveedor tecnológico.
VisualizarPresenta visualización del documento fiscal.
LeyendaMuestra descripción de los estatus de documentos en el browse.


c) Impresión de documentos electrónicos

Importante: La impresión de documento en formato PDF obedece a la configuración del parámetro MV_PDFPRO.

Desde Otras acciones, ejecutar la acción Imprimir PDF.


Informar los parámetros del rango de documentos a imprimir.


Se imprime el documento electrónico en formato PDF.

d) Envío de documentos electrónicos(Correo Electrónico)1

La funcionalidad de Envío de documentos electrónicos, se implementó a partir del issue DMINA-8271, para la cual se debe consideras lo siguiente:

El parche debe contener la siguiente rutina:


Rutina

Nombre Técnico

Fechas del Parche

M486PDFCOL.PRXImpresión de Representación Impresa Facturación Electrónica Colombia19/02/2020 


También se deben realizar las siguiente configuraciones:

  1. Configurar los parámetros MV_RELSERV, MV_RELACNTMV_RELPSWMV_RELAUTHMV_RELSSLMV_RELTLSMV_SRVPORT como se muestra en la sección "04 - Diccionario de Datos".
  2. Configurar el Cliente como a continuación:


Importante:  El cliente debe tener informado el campo E-MAIL (A1_EMAIL) con la dirección de correo a donde se requiera mandar los documentos.


Al finalizar la configuración de pre-condiciones, realice lo siguiente para validar la funcionalidad:

Desde Otras acciones, ejecutar la acción Imprimir PDF:

Informar los parámetros del rango de documentos a enviar por E-mail:


Se espera mensaje de confirmación del envío, en donde indica la cantidad de documentos procesados:



Se confirma que se recibe el correo con la información solicitada adjunta en un archivo .ZIP:




2.1.3 Diccionario de datos 

El usuario debe realizar las siguientes actualizaciones al diccionario de datos a través del módulo Configurador de Protheus (SIGACFG):

Nota:


Nombre de la variableMV_RELSERV
TipoCarácter
DescripciónNombre de Servidor de Envío de E-mail utilizado en los informes.
Valor EstándarSMTP.Office365.com
Nombre de la variableMV_RELACNT
TipoCarácter
DescripciónCuenta a ser utilizada en el envio de E-Mail para lo informes.
Valor EstándarCorreo electrónico emisor
Nombre de la variableMV_RELPSW
TipoCarácter
DescripciónContraseña de cta. de E-mail para enviar informes
Valor EstándarContraseña del correo emisor
Nombre de la variableMV_RELAUTH
TipoLógico
DescripciónDetermina si el servidor requiere Autenticacion.
Valor Estándar.T.
Nombre de la variableMV_RELSSL
TipoLógico
DescripciónDefine si debe habilitarse el SSL en el envio y recepcion de e-mails
Valor Estándar.T.
Nombre de la variableMV_RELTLS
TipoLógico
DescripciónInforme si el servidor de SMTP tiene conexion del tipo segura ( SSL/TLS ).
Valor Estándar.T.
Nombre de la variableMV_SRVPORT
TipoNúmerico
DescripciónPuerto de conexión del servidor de E-mail.
Valor Estándar587


NOTA: Las siguientes actualizaciones fueron incorporadas en los pacotes 006386 - DMINA-7002 - FACT. ELECTRÓNICA VAL. PREVIA COL V 1 y 006600 - DMINA-7459 - FACTURACIÓN ELECTRÓNICA VAL PREV COL.

1. Creación de parámetro en el archivo SX6 - Parámetros:

Nombre de la variableMV_TIPOFE
TipoCarácter
DescripciónModelo de transmisión electrónica: 0 o vacío = Val. Posterior, 1 = Val. Previa.
Valor Estándar1
Nombre de la variableMV_PDFPRO
TipoCarácter
DescripciónHabilita la impresión de documentos electrónicos en formato PDF de Protheus: 1 = Sí, 2 = No.
Valor Estándar2
Nombre de la variableMV_IMPMILL
TipoCarácter
DescripciónContiene los códigos de impuestos que son calculados al millar, separados por "|" (Por ejemplo ICA).
Valor Estándar


Nota:


2. Creación de consulta estándar en el archivo SXB - Consulta Estándar:

AliasTipoSecuenciaColumnaDescripciónContenido
COL017101RETipo OperaciónF3I
COL01720101Tipo OperaciónF812SXB("S017","Codigo",{||Substr(F3I_CONTEU,85,3)==IIf(FunName()$'MATA410','NF ',cEspecie)})
COL017501

VAR_IXB


3. Creación de tablas en el archivo SX2 - Tablas:

ClaveNombreModoModo UnidadeModo Empresa
AITResponsabilidades-Tributos ClieCompartidoExclusivoExclusivo


4. Creación de campos en el archivo SX3 - Campos:

CampoAIT_FILIAL
Orden01
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloSucursal
DescripciónSucursal del sistema
Nivel1
UtilizadoNo
ObligatorioNo
BrowseNo
Val. SistemaNo aplica
Grp. Campos033
HelpCódigo que identifica la sucursal de la empresa usuaria del sistema.
CampoAIT_CODCLI
Orden02
TipoCarácter
TamañoDebe corresponder al configurado en el grupo de campos 001.
Decimal0
Formato@!
TítuloCód. Cliente
DescripciónCódigo del cliente
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaNo aplica
Grp. Campos001
HelpCódigo que individualiza a cada uno de los clientes de la empresa. Se complementa con el código de la tienda.
CampoAIT_LOJA
Orden03
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloTienda
DescripciónCódigo de la tienda
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaNo aplica
Grp. Campos002
HelpCódigo que identifica la tienda del cliente. Permite que haya un control de las operaciones por tienda.
CampoAIT_CODRES
Orden04
TipoCarácter
Tamaño4
Decimal0
Formato@!
TítuloCód. Resp.
DescripciónCódigo resp. fiscal
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaVazio() .Or. ValidF3I("S014", M->AIT_CODRES,1,4)
ConsultaCOL014
HelpCódigo de la obligación o responsabilidad fiscal del cliente de acuerdo al RUT del adquirente. 
CampoAIT_CODTRI
Orden05
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloCód. Tributo
DescripciónCódigo del tributo.
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaVazio() .Or. ValidF3I("S005", M->AIT_CODTRI,1,3)
ConsultaCOL005
HelpCódigo de identificador del tributo (acuerdo al numeral 6.2.2 de la DIAN).
CampoAIT_TIPO
Orden06
TipoCarácter
Tamaño1
Decimal0
Formato@!
TítuloTipo
DescripciónTipo de información
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaNo aplica
HelpIndica la opción del tipo de registro, teniendo las opciones R=Responsabilidades o T=Tributo.
CampoAI0_TPREG
Orden18
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloTipo Régimen
DescripciónTipo de Régimen
Nivel1
UtilizadoSi
ObligatorioObligatorio
BrowseNo
Val. SistemaVazio() .Or. ValidF3I("S010", M->AI0_TPREG,1,2)
ConsultaCOL010
HelpIndica el régimen al que pertenece el adquirente, lista las opciones del catálogo S010 - Tipo de régimen (Facturación electrónica).
CampoF1_UUID
OrdenZZ
TipoCarácter
Tamaño96
Decimal0
Formato@!
TítuloCUFE
DescripciónCód. Único de Fact. Elect
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. Sistema
Consulta
HelpContiene el código único de facturación electrónica (CUFE).


5. Creación de índices en el archivo SIX - Índices:

ÍndiceAIT
Orden1
ClaveAIT_FILIAL+AIT_CODCLI+AIT_LOJA+AIT_TIPO
DescripciónSucursal + Cód. Cliente + Tienda + Tipo
PropietarioS


6. Modificación de campos en el archivo SX3 - Campos:


CampoF1_TIPOPE
OrdenZZ
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloTipo Oper.
DescripciónTipo de operación
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaVazio() .or. ValidF3I("S017", M->F1_TIPOPE,1,2)
ConsultaCOL017
HelpIndica el tipo de operación del documento, de acuerdo al punto 6.1.5 de códigos relacionados con documentos definida por la DIAN.
CampoF2_TIPOPE
OrdenZZ
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloTipo Oper.
DescripciónTipo de operación
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaVazio() .or. ValidF3I("S017", M->F2_TIPOPE,1,2)
ConsultaCOL017
HelpIndica el tipo de operación del documento, de acuerdo al punto 6.1.5 de códigos relacionados con documentos definida por la DIAN.
CampoF2_UUID
OrdenZZ
TipoCarácter
Tamaño96
Decimal0
Formato@!
TítuloCUFE
DescripciónCód. Único de Fact. Elect
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. Sistema
Consulta
HelpContiene el código única de facturación electrónica.
CampoC5_TIPOPE
OrdenZZ
TipoCarácter
Tamaño2
Decimal0
Formato@!
TítuloTipo Oper.
DescripciónTipo de operación
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaVazio() .or. ValidF3I("S017", M->C5_TIPOPE,1,2)
ConsultaCOL017
HelpIndica el tipo de operación del documento, de acuerdo al punto 6.1.5 de códigos relacionados con documentos definida por la DIAN.


Para la funcionalidad de Ordenes de Compra (cac:OrderReference) y Referencias adicionales (cac:AdditionalDocumentReference), se debe agregar los siguiente campo (Agregados en el pacote 006943):

CampoC5_UUIDREL
OrdenZZ
TipoMemo
Tamaño10
Decimal0
Formato@!
TítuloDocs Relacs
DescripciónDocumentos relacionados
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
HelpIndica el Documento Relacionado, separar cada documento a relacionar con un salto de línea, y cada uno de los documentos informados deberá tener la nomenclatura: Código de Referencia a otros documentos definido por la DIAN + diagonal("/") + Número de folio del documento, por ejemplo AIJ/CTG16, para ordenes de compra utilizar el código ORDC.



CampoF2_UUIDREL
OrdenZZ
TipoMemo
Tamaño10
Decimal0
Formato@!
TítuloDocs Relacs
DescripciónDocumentos relacionados
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
CondiciónM486VLDDR(M->F2_UUIDREL,.T.)
HelpIndica el Documento Relacionado, separar cada documento a relacionar con un salto de línea, y cada uno de los documentos informados deberá tener la nomenclatura: Código de Referencia a otros documentos definido por la DIAN + diagonal("/") + Número de folio del documento, por ejemplo AIJ/CTG16, para ordenes de compra utilizar el código ORDC.



2.2 PUNTO DE ENTRADA ADICIÓN DE CAMPOS A XML


2.2.1 Visión general

Con la finalidad de proporcionar al usuario un medio para agregar datos adicionales a la factura electrónica, se crea el punto de entrada M486CEXT para la incorporación de Campos Extensibles al documento electrónico XML/PDF (Resolución N° 000019 24-02-2016 DIAN) que genera el proveedor tecnológico The Factory HKA (TFHKA). Los datos adicionales pueden ser por ejemplo campos de los registros de clientes: Teléfono, Teléfono 2, Dirección, etc.

2.2.2 Ejemplo de utilización 

Creación del PE M486CEXT 

El usuario creará el código y compilará la función de usuario M486CEXT con las estructuras de los campos extensibles a integrar en el XML/PDF que genera TFHKA, el Punto de Entrada constará de:

Parámetros recibidos, el nombre ParamIXB y tipo (arreglo) son fijos:

Cada campo se debe definir en un arreglo de 6 elementos, donde:

Retorno:

Procedimiento de Implantación 

Nota: La actualizaciones presentadas a continuación son compatibles con versiones mayor o igual a 11.0

RutinasFecha Actualización

MATA486.PRW

19/02/2019 


a) Ejemplo de Punto de Entrada M486CEXT

#Include "Protheus.ch"

#Include "rwmake.ch"


User Function M486CEXT()

 Local aArea  := getArea()

Local aAreaSA1 := SA1->(GetArea())

Local aCampos := {}

Local cSerie := ParamIXB[1,1]

Local cFactura := ParamIXB[1,2]

Local cCliente := ParamIXB[1,3]

Local cLoja := ParamIXB[1,4]

Local cEspecie := ParamIXB[2]


dbSelectArea("SA1")

dbSetOrder(1) //A1_FILIAL+A1_COD+A1_LOJA

dbSeek(xFilial("SA1")+cCliente+cLoja)


If !Empty(SA1->A1_CONTATO)

aAdd( aCampos , {"Destinatario", "", "48", "1", Alltrim(SA1->A1_CONTATO), "1"} )

EndIf


If !Empty(SA1->A1_HPAGE)

aAdd( aCampos , {"Pagina web", "", "1", "1", Alltrim(SA1->A1_HPAGE), "1"} )

EndIf


SA1->(RestArea(aAreaSA1))

RestArea(aArea)

Return aCampos

b) Ejemplo de documento electrónico generado por TFHKA con campos extensibles

c) Ejemplo de documento electrónico en PDF generado por TFHKA con campos extensibles




2.3 PUNTO DE ENTRADA EXPORTACIÓN CAMPOS TRM

2.3.1 Visión General

Desarrollar funcionalidad para que al transmitir los documentos de exportación genere de forma automática los campos extensibles relacionados a TRM.

Actualmente al momento de intentar Transmitir una Factura de Exportación (Cliente con A1_EST = EX), se obtiene la respuesta "109-[Linea 02 Factura General] El campo TRM es un campo compuesto requerido para Facturas de Exportación, debe enviar los códigos 81,83,84,85".

2.3.2 Ejemplo de utilización 


Nota: La actualizaciones presentadas a continuación son compatibles con versiones mayor o igual a 11.0

RutinasFecha Actualización

MATA486.PRW

09/04/2019 


Se debe tener un cliente extranjero; Campo de estado (A1_EST) igual a "EX".

El campo Moneda DIAN (CTO_MOESAT) de la moneda contable "01" debe ser diferente a la Moneda del documento (F2/F1_MOEDA).

Procedimiento de Implantación 

  1. Acceda a la rutina de facturación; SIGAFAT | Actualizaciones | Facturación | Facturación (MATA467N).
    - Registre una Factura de Exportación.
  2. Acceda a la rutina de transmisión; SIGAFAT | Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486).
    - Seleccione la opción Otras Acciones | Transmitir.
    - Especifique los parámetros del proceso y confirme.
    - El sistema indicará que la transmisión fue exitosa.
    - Desde la ruta de facturas autorizadas, visualice el archivo XML recibido del proveedor tecnológico. Verifique la existencia del nodo cac:PaymentExchangeRate el cual contiene los campos TRM:


a) Ejemplo de Punto de Entrada M486CEXT - Campos extensibles.

Ejemplo de generación de los campos correspondientes a TRM (81, 83, 84 y 85):

#Include "Protheus.ch"
#Include "rwmake.ch"

User Function M486CEXT()

Local aArea := getArea()
Local aAreaSA1 := SA1->(GetArea())
Local aAreaSF1 := SF1->(GetArea())
Local aAreaSF2 := SF2->(GetArea())
Local aCampos := {}
Local cSerie := ParamIXB[1,1]
Local cFactura := ParamIXB[1,2]
Local cCliente := ParamIXB[1,3]
Local cLoja := ParamIXB[1,4]
Local cEspecie := ParamIXB[2]
Local cEst := ""
Local cTxMoeda := ""

dbSelectArea("SA1")
dbSetOrder(1)
dbSeek(xFilial("SA1")+cCliente+cLoja)
If !Empty(SA1->A1_CONTATO)
    aAdd( aCampos , {"Destinatario", "", "48", "1", Alltrim(SA1->A1_CONTATO), "1"} )
EndIf

If !Empty(SA1->A1_HPAGE)
    aAdd( aCampos , {"Pagina web", "", "1", "1", Alltrim(SA1->A1_HPAGE), "1"} )
EndIf
SA1->(RestArea(aAreaSA1))

If Alltrim(cEspecie) $ "NF|NDC"
    dbSelectArea("SF2")
    dbSetOrder(1)
    dbSeek(xFilial("SF2")+cFactura+cSerie)
    cEst := SF2->F2_EST
    cTxMoeda := Alltrim(Str(SF2->F2_TXMOEDA))
    SF2->(RestArea(aAreaSF2))

Else
    dbSelectArea("SF1")
    dbSetOrder(1)
    dbSeek(xFilial("SF1")+cFactura+cSerie)
    cEst := SF1->F1_EST
    cTxMoeda := Alltrim(Str(SF1->F1_TXMOEDA))
    SF1->(RestArea(aAreaSF1))

EndIf

If cEst == "EX"
    aAdd( aCampos , {"Tasa de Cambio" , "", "81", "1", "" , "1"} )
    aAdd( aCampos , {"Moneda Origen" , "", "83", "1", "USD" , "1"} )
    aAdd( aCampos , {"Moneda Final" , "", "84", "1", "COP" , "1"} )
    aAdd( aCampos , {"Valor del Calculo", "", "85", "1", cTxMoeda, "1"} )
Endif

RestArea(aArea)

Return aCampos


Scripts de generación de documentos electrónicos (archivos XML).

Las modificaciones realizadas son para el correcto manejo de campos cuando el cliente es persona física. En el nodo fe:AccountingCustomerParty (datos del receptor) se incluye uno de los siguientes subnodos dependiendo del tipo de persona:


Tipo de persona

Subnodo

Atributo

Contenido

Descripción

Jurídicafe:PartyLegalEntitycbc:RegistrationNameA1_NOMERazón social / Nombre completo
Físicafe:Personcbc:FirstNameA1_NOMEPRIPrimer nombre


cbc:MiddleNameA1_NOMEPESSegundo nombre


cbc:FamilyNameA1_NOMEPATSegundo apellido


2.4 OBLIGATORIEDAD DOCUMENTOS REFERENCIADOS (NDC/NCC)

2.4.1 Visión General

Se solicita funcionalidad para incluir y transmitir documentos electrónicos de tipo Nota de Débito de Cliente (NDC) o Nota de Crédito de Cliente (NCC), para referenciar Facturas de Salida (NF) que hayan sido transmitidas mediante el modelo de Facturación Electrónica de validación posterior de acuerdo al Anexo técnico del Sistema Electrónico de Factura Electrónica de Venta con Validación Previa versión 1.8.

2.4.2 Configuraciones Previas

a) Actualizar la estructura del catálogo S017 - TIPOS DE OPERACIÓN, donde se agregaron los campos Tipo Doc. y Tipo Val.

b) Actualizar el contenido del catálogo S017 - TIPOS DE OPERACIÓN, en donde el archivo 17TiposOperacion.csv deberá estar en la ruta configurada en el parámetro MV_PATH814, debiendo tener la siguiente estructura:

ColumnaContenido
1Código de Tipo de Operación DIAN
2Descripción del Tipo de Operación DIAN

3

Especie del documento para el que aplica el Tipo de Operación, donde:

NF - Para Factura de Salida.

NDC - Para Notas de Débito de Cliente.

NCC - Para Notas de Crédito de Cliente.

4

Indica la opción de validación que aplica para el Tipo de Operación, donde:

0 - Sin referencia a Factura de Salida.

1 - Referencia a Factura de Salida de modelo validación previa.

2 - Referencia a Factura de Salida de modelo validación posterior.

Importante: Para realizar la actualización del catálogo S017 - TIPOS DE OPERACIÓN, es necesario realizar el borrado lógico del código S017 en las tablas Configuración de Catálogos (F3H) y Mantenimiento de Catálogos (F3I) y que el archivo 17TiposOperacion.csv contenga los datos de acuerdo a la nueva estructura.

c) Actualizar la expresión de la consulta especifica COL017 para que, al desplegar la consulta desde los campos Tipo Oper. (F1/F2_TIPOPE), se realice el filtrado por especie del documento y así solo visualizar los que pertenecen al tipo de documento a generar.

Importante: Ajuste realizado en el pacote 007262 - DMINA-8101 - TIPO OPERACIÓN FE COLOMBIA 12.1.25.

2.4.3 Ejemplo de utilización 

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Generac. de Notas de Crédito y Débito (MATA465).

  1. Informar en los parámetros:
  2. Incluir un nuevo documento  e informar en el encabezado el Cliente (F1_FORNECE), Loja (F1_LOJA), Núm. Doc (F1_DOC), Serie (F1_SERIE)
  3. Indica en el campo Tipo Oper.  (F1_TIPOPE) el valor 23 - Nota de Crédito para Facturación Electrónica v1.
  4. Informar el detalle del documento (Puede ser desde Otras Acciones ejecutando la acción Doc Orig o de forma manual)
  5. La Factura de Salida informada en los campos Doc. Original (D1_NFORI) y Serie Orig. (D1_SERIORI), deberá cumplir con los siguientes requisitos:
  6. Una vez que se han informado todos los datos presionar Grabar para confirmar el guardado del documento.

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturación Electrónica (MATA486).

  1. Informar en los parámetros:
  2. ¿Tipo de documento? = Nota de Crédito
  3. Ejecutar la acción Transmitir, e informar los parámetros:
  4. Validar que el proceso de transmisión sea exitoso.
  5. Ejecutar desde otras acciones la acción Imprimir PDF y validar que se visualice en el informe la sección Documentos Referenciados.


IMPORTANTE:

Para las Notas de Débito de Cliente (NDC) y Notas de Crédito de Cliente (NCC) que no afectan a Factura deberán de usarse los siguientes tipos de operación:

Para las Notas de Débito de Cliente (NDC) y Notas de Crédito de Cliente (NCC) que afectan a Facturas transmitidas por el método de validación Posterior deberán de usarse los siguientes tipos de operación:

Para las Notas de Débito de Cliente (NDC) y Notas de Crédito de Cliente (NCC) que afectan a Facturas transmitidas por el método de validación Previa deberán de usarse los siguientes tipos de operación:

2.5 PUNTO DE ENTRADA ANULACIÓN DE VALIDACIÓN DOC. RELACIONADO - M465DORIFE (NCC/NDC)

Se activa el Punto de Entrada M465DORIFE, mediante el cual el usuario podrá agregar reglas de negocio para excluir la validación de transmisión previa de documentos a relacionar a Notas de Crédito de Cliente (NCC) y Notas de Débito de Cliente (NDC), para verificar la funcionalidad del punto de entrada ir al documento técnico: 7275299_DMINA-7702_DT_PE_M465DORIFE_Valida_estatus_NF_relacionada_a_NCC_COL


2.6 AUTORRETENCIONES

2.6.1 Visión General

Se solicita funcionalidad para incluir y transmitir documentos electrónicos que tengan cálculo de autorretenciones.

Ticket: 8674296

2.6.2 Configuraciones Previas

Contar con las siguientes rutinas actualizadas con fecha igual o posterior:

RutinaNombre técnicoFecha
M486XFUNFunciones genéricas para generación de XML 22/04/2020
M486XFUNCOFunciones genéricas para generación de XML para país Colombia22/04/2020


a) En el módulo Facturación (SIGAFAT) desde Actualizaciones | Archivos | Mantenimiento de Catálogos (FISA813).


En el catálogo S005-Impuestos Factura Electrónica, agregar un nuevo código de impuesto que sea diferente a los reservados por la DIAN, por ejemplo A0.



Verifique la configuración actual de la Tabla S005-Impuestos F.E.


b)
 En el módulo Facturación (SIGAFAT) desde Actualizaciones | Archivos | Impuestos Variables (MATA995).


Configurar el impuesto de autorretención indicando en el campo Impuesto FE (FB_IMPSAT) con el valor del código agregado en el catálogo S005-Impuestos Factura Electrónica, y el campo Clase Imp. (FB_CLASSE) con el valor R-Recepción.

2.6.3 Ejemplo de utilización 

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).

  1. Informar en los parámetros:
  2. Incluir un nuevo documento  e informar en el encabezado el Cliente (F2_CLIENTE), Loja (F2_LOJA), Núm. Doc (F2_DOC), Serie (F2_SERIE)
  3. Indica en el campo Tipo Oper.  (F2_TIPOPE).
  4. Informar el detalle del documento, utilizando un Tipo de Salida/Entrada con calculo de autorretención (Las autoretenciones no suman ni restan al valor bruto del documento). 
  5. Una vez que se han informado todos los datos presionar Grabar para confirmar el guardado del documento.

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturación Electrónica (MATA486).

  1. Informar en los parámetros:
    1. ¿Tipo de documento? = Factura
    2. ¿Serie? = Serie de la Factura de Salida incluida anteriormente.
    3. ¿Estatus? = vacío o cero.
    4. ¿Fecha Inicial? / ¿Fecha Final? = Rango que contemple la fecha de emisión de la Factura de Salida.
  2. Ejecutar la acción Transmitir, e informar los parámetros:
  3. Validar que el proceso de transmisión sea exitoso.
  4. Ejecutar desde otras acciones la acción Imprimir PDF y validar que en la sección Información adicional se visualicen los datos de la autorretención.


2.7 PUNTO DE ENTRADA PARA ATRIBUTOS OPCIONALES (M486OWSCOL)

2.7.1 Visión General

Punto de Entrada para enviar los atributos opcionales disponibles en las clases de los web services de The Factory HKA (Ticket: 8394670).

IMPORTANTE:

La activación de dicho Punto de Entrada deberá ser realizado por algún analista con conocimientos de programación (AdvPL), ya que será responsabilidad de este si al no definir correctamente la regla de negocio en el Punto de Entrada, esto pudiera causar rechazo en la transmisión de Facturas de Venta, Notas de Débito o Notas de Crédito.

2.7.2 Configuraciones Previas

Contar con la siguiente rutina actualizada, con fecha igual o posterior:

RutinaNombre técnicoFecha
M486XFUNCOFunciones genéricas para generación de XML para Colombia28/04/2020


Compilar el punto de entrada M486OWSCOL, el cual recibe los siguientes parámetros:


#include 'protheus.ch'

User Function M486OWSCOL()

	Local cSerieDoc	:= PARAMIXB[1] //Serie
	Local cNumDoc	:= PARAMIXB[2] //Número de Documento
	Local cCodCli	:= PARAMIXB[3] //Código de Cliente
	Local cCodLoj	:= PARAMIXB[4] //Código de la Tienda
	Local oXML		:= PARAMIXB[5] //Objeto del XML
	Local nOpc		:= PARAMIXB[6] //1=Nivel documento 2=Nivel detalle
	Local oWS		:= PARAMIXB[7] //Objeto de web services

	Local nItem		:= Val(oXML:_CBC_ID:TEXT)
	Local cCodProd	:= ""
	Local cSDITem	:= ""
	Local cFilSD	:= xFilial("SD2")

	If nOpc == 1 //Encabezado
		//F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJA+F2_FORMUL+F2_TIPO (Índice 1)
        //Clase oWSCliente
        oWS:oWSCliente:cnombreComercial := "NOMBRE COMERCIAL PE"
		
		//Clase oWSterminosEntrega
        oWS:oWSterminosEntrega := Service_TerminosDeEntrega():New()
        oWS:oWSterminosEntrega:ccostoTransporte:= "18.00"
	ElseIf nOpc == 2 //Detalle del documento
		cCodProd := Padr(oXML:_FE_ITEM:_CAC_SELLERSITEMIDENTIFICATION:_CBC_ID:TEXT,TamSX3("D2_COD")[1],' ')
        cSDITem := Padl(oXML:_CBC_ID:TEXT,TamSX3("D2_ITEM")[1],'0')
        
		dbSelectArea("SD2")
        SD2->(dbSetOrder(3)) //D2_FILIAL + D2_DOC + D2_SERIE + D2_CLIENTE + D2_LOJA + D2_COD + D2_ITEM

		If SD2->(dbSeek( cFilSD + cNumDoc + cSerieDoc + cCodCli + cCodLoj + cCodProd + cSDITem))
			//Clase oWSextras (Factura_Detalle)
            oWS:oWSextras := Service_ArrayOfExtras():New()
            oWSExtDet := Service_Extras():NEW()
            oWSExtDet:ccontrolInterno1 := "NO. SERIE"
            oWSExtDet:cnombre := "1"
            oWSExtDet:cpdf := "1"
            oWSExtDet:cvalor := SD2->D2_NUMSERI
            oWSExtDet:cxml := "1"
            aAdd(oWS:oWSextras:oWSextras,oWSExtDet)
        EndIf
	EndIf

Return Nil

Nota:


IMPORTANTE:


Clases disponibles:

NombreWSLD Data
AnticiposService_ArrayOfAnticipos

Service_Anticipos
AutorizadoService_Autorizado
Cargos/DescuentosService_ArrayOfCargosDescuentos

Service_CargosDescuentos
Condición de PagoService_ArrayOfCondicionDePago

Service_CondicionDePago
Documentos referenciadosService_ArrayOfDocumentoReferenciado

Service_DocumentoReferenciado
ExtrasService_ArrayOfExtras

Service_Extras
Medios de PagoService_ArrayOfMediosDePago

Service_MediosDePago
Tasa de cambio alternativaService_TasaDeCambioAlternativa
Términos de entregaService_TerminosDeEntrega
Entrega de mercancíaService_Entrega
Información adicionalService_ArrayOfLineaInformacionAdicional

Service_LineaInformacionAdicional
Detalle FacturaService_ArrayOfFacturaDetalle

Service_FacturaDetalle

2.7.3 Ejemplo de utilización

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).

  1. Informar en los parámetros:
  2. Incluir un nuevo documento  e informar en el encabezado el Cliente (F2_CLIENTE), Loja (F2_LOJA), Núm. Doc (F2_DOC), Serie (F2_SERIE)
  3. Indica en el campo Tipo Oper.  (F2_TIPOPE).
  4. Informar el detalle del documento, utilizando un Tipo de Salida/Entrada con cálculo de autorretención (Las autorretenciones no suman ni restan al valor bruto del documento). 
  5. Una vez que se han informado todos los datos, presionar Grabar para confirmar el guardado del documento.

En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Documentos Electrónicos (MATA486).

  1. Informar en los parámetros:
    1. ¿Tipo de documento? = Factura
    2. ¿Serie? = Serie de la Factura de Salida incluida anteriormente.
    3. ¿Estatus? = vacío o cero.
    4. ¿Fecha Inicial? / ¿Fecha Final? = Rango que contemple la fecha de emisión de la Factura de Salida.
  2. Ejecutar la acción Transmitir, e informar los parámetros:
  3. Validar que el proceso de transmisión sea exitoso.
  4. Validar que se hayan enviado los datos definidos en el Punto de Entrada.


IMPORTANTE:

2.7.4 Envío por email desde el servicio DFACTURA del TFHKA

En el siguiente enlace, se describe el procedimiento para utilizar el punto de entrada para establecer el envío de la factura electrónica por email desde el servicio del proveedor tecnológico.

 9091035 DMINA-9454 DT Envío de la factura electrónica por correo desde el servicio DFACTURA de TFHKA COL

2.7.5 Cambio de documento XML descargado desde TFHKA

De acuerdo a la resolución 000042 del 5 de mayo del 2020 emitida por la DIAN, se realiza cambio para descargar el contenedor electrónico AttachedDocument el cual contiene en un único documento XML un DE y todos los documentos registrados hasta la fecha. En el enlace a continuación, hay más información acerca de esta actualización.

9082470 DMINA-9425 DT Cambio en el XML descargado de The Factory HKA COL


2.8 IMPRESIÓN DE RETENCIONES EN REPRESENTACIÓN GRÁFICA

2.8.1 Visión General

Permitir la impresión de la retenciones en la representación gráfica de los documentos electrónicos transmitidos a la DIAN a través dl proveedor tecnológico denominado The Factory HKA.

IMPORTANTE:

Se debe tener configurado el parámetro MV_PDFPRO con el valor "2", y los documentos electrónicos deben contener el cálculo de impuestos de tipo Retención, para más detalle ver el siguiente documento técnico:

Documento Técnico de Impresión de Retenciones en Notas de Crédito de Cliente (NCC).


2.9 ACTUALIZACIÓN DE F1/F2_FLFTEX DOCUMENTOS ELECTRÓNICOS TRANSMITIDOS PREVIAMENTE

2.9.1 Visión General

Se realizó ajuste para que si al transmitir un documento electrónico desde la rutina de Documentos Electrónicos (MATA486), se recibe de respuesta el código 114 (Documento emitido previamente), el campo Status Trans (F1/F2_FLFTEX) sea actualizado a estatus Recibido, es decir, valor 1.

Para más detalle ver el siguiente documento técnico: DMINA-11442 DT Actualización de F1_FLFTEX y F2_FLFTEX cuanto ocurre una intermitencia FE COL



2.10 DOCUMENTO SOPORTE DE ADQUISICIONES EFECTUADAS A SUJETOS NO OBLIGADOS A EXPEDIR FACTURA DE VENTA O DOCUMENTO EQUIVALENTE

2.10.1 Visión General

En Colombia, para el 01 de Agosto, entra en función que los proveedores que no están obligados a facturar, la empresa que les compre debe presentar una factura por ellos, a lo que llama Documento Soporte.
Se realizan modificaciones en el módulo de facturación para dar solución a lo establecido en la Resolución Número 000167 del 30 DIC 2021 de la DIAN, Anexo técnico del documento soporte en adquisiciones efectuadas a sujetos no obligados a expedir factura de venta o documento equivalente. En el registro de la Factura de Entrada, se identifica cuando es una factura por Documento Soporte. Este tipo de documentos deben generar un comprobante electrónico (XML) y éste debe ser autorizado por la DIAN. 


2.10.2 Configuraciones Previas

Contar con las siguientes rutina actualizadas, con fecha igual o posterior:

RutinaNombre técnicoFecha
MATA486.PRWDocumentos electrónicos29/03/2022
M486XFUNCO.PRWFunciones genéricas para transmisión de documentos electrónicos11/03/2022
M486PDFCOL.PRWGeneración de factura electrónica en PDF29/03/2022
LOCXNF.PRWNotas Fiscales29/03/2022
LOCXNF2.PRW

Funciones genéricas de Documentos Fiscales

29/03/2022
LOCXCOL.PRWFunciones Genéricas de Notas Fiscales Colombia29/03/2022
FATECOL.INIGeneración de XML para Documentos de Entrada29/03/2022
WSNFECOL.PRWCliente de servicio web de facturación

29/03/2022


Configurar los siguientes parámetros (SX6):

ParámetroContenidoDescripción
MV_CFDIAMB  2Indica el ambiente de trabajo de certificación de factura electrónica: 1=Producción, 2=Homologación.
MV_PROVFE    DFACTURAIdentifica el Fact. Electrónico/Prov. Tecnológico servicios de certificación de factura electrónica. Indicar alguno de estos: TSS o DFACTURA
MV_TIPOFE     1Indica el modelo de transmisión electrónica, 0 o vacío = Val. Posterior y 1 = Val. Previa.
MV_TKN_EMP cf5a933c22080afd84ca4e699983e3952c811dd9Token Empresa - The Factory HKA.
MV_TKN_PAS 4219be96602655094acb0fe281ab1bf7e4ad9c46Token Password - The Factory HKA.
MV_WSRTSS    http://demoemision21v4.thefactoryhka.com.co/ws/v1.0/Service.svc?wsdlURL del servicio web.
MV_CFDDOCSGetSrvProfString('startpath','')+'\cfd\facturas\'                                   Directorio donde se grabaran las facturas electrónicas.      

Importante : En caso de hacer uso de un servidor proxy, la ruta en el contenido del parametro  MV_WSRTSS  debe inicar con https en vez de http.


  1. Los proveedores no obligados a facturar, se registran como Proveedores con toda la información de identificación, dirección, responsabilidades, etc..
  2. Dentro del configurador en la opción "Diccionarios / tablas genéricas", en la tabla genérica "00 - 01 - Series de Facturas", agregar la serie "DCS" y el número inicial para el Documento Soporte.




  3. Dentro de Control de Formularios (MATA992), agregar la serie "DCS" con especie "1=FCT / NF" y en la Serie 2 agregar el prefijo MXDS (puede ser cualquier otro prefijo siempre y cuando cuente con 4 caracteres), también asignar el número inicial y final y los campos que son obligatorios.


  4. Realizar las siguientes modificaciones al archivo de configuración FATECOL.INI. Las líneas en color azul se agregan, las líneas en color verde se modifican.


    //FATECOL.INI -- NFE Colombia v2 - Resolucion 0019 / FEB. 2016
    [XXX POSICIONAMENTOS]
    (PRE) SA2->(DbSetOrder(1))
    (PRE) _aTotal[116] := If(SF1->(FieldPos("F1_SOPORT")) > 0 ,If(SF1->F1_SOPORT =='S'.AND. Alltrim(SF1->F1_TIPOPE) $'10|11', .T.,.F. ) , .F.)
    (PRE) If(_aTotal[116] ,SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
    (PRE) If(_aTotal[116] ,SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC" .AND. !_aTotal[116] ,SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
    (PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.)
    (PRE) IF( _aTotal[116], AI0->(MSSeek(xFilial("AI0")+SA2->(A2_CLIENTE+A2_LOJCLI))) , AI0->(MSSeek(xFilial("AI0")+SF1->(F1_FORNECE+F1_LOJA))) )



    [XXX INICIALIZACION]
    (PRE) SD1->(DbSetOrder(1))
    (PRE) SB1->(DbSetOrder(1))
    (PRE) SYA->(DbSetOrder(1))
    (PRE) SC6->(DbSetOrder(1))
    (PRE) SE4->(DbSetOrder(1))
    (PRE) CTO->(DbSetOrder(1))
    (PRE) SAH->(DbSetOrder(1))
    (PRE) SE1->(DbSetOrder(2))

    (PRE) _aTotal[033] := ALLTRIM (SF1->F1_ESPECIE)
    (PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
    (PRE) _aTotal[092] := IIF(_aTotal[116], Posicione("SA1",1,xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI,"A1_EST") ,Posicione("SA1",1,xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA,"A1_EST"))
    (PRE) _aTotal[093] := ""
    (PRE) _aTotal[094] := ""
    (PRE) _aTotal[095] := DtoS(SF1->F1_EMISSAO)
    (PRE) _aTotal[095] := Left(_aTotal[095],4) + "-" + Substr(_aTotal[095],5,2)+ "-" + Right(_aTotal[095],2)
    (PRE) _aTotal[096] := SF1->F1_HORA
    (PRE) _aTotal[097] := fGetTaxas(SF1->F1_DOC, SF1->F1_SERIE, SF1->F1_FORNECE, SF1->F1_LOJA, If(_aTotal[116], "NCC",SF1->F1_ESPECIE))
    (PRE) _aTotal[098] := ALLTRIM( GETNEWPAR( "MV_ID_PROV" , "" ) )
    (PRE) _aTotal[099] := ALLTRIM( GETNEWPAR( "MV_ID_SOFT" , "" ) )
    (PRE) _aTotal[100] := ALLTRIM( GETNEWPAR( "MV_CODESEC" , "" ) )
    (PRE) _aTotal[101] := {"SD1",""}
    (PRE) _aTotal[102] := IIF( _aTotal[033] == "NF" , "1" , IIF( _aTotal[033] == "NCC" , "2" , IIF( _aTotal[033] == "NDC" , "3" , IIF( _aTotal[033] == "NDI" , "4" , IIF( _aTotal[033] == "NCI" , "5" , "" ) ) ) ) )
    (PRE) _aTotal[103] := ""
    (PRE) _aTotal[104] := PADR( Alltrim(SM0->M0_CGC) , 10 , "0" )
    (PRE) _aTotal[105] := IIF( _aTotal[033] == "NF" , "f" , IIF( _aTotal[033] == "NCC"  .or. _aTotal[033] == "NCI" , "c" , IIF( _aTotal[033] == "NDC" .or. _aTotal[033] == "NDI" , "d" , "f" ) ) )
    (PRE) _aTotal[106] := M486XHEX(PADR( ALLTRIM( substr( SF1->F1_DOC , 4 , Len(SF1->F1_DOC) - 3 ) ) , 10 , "0" ),10)
    (PRE) _aTotal[107] := fGetRef(SF1->F1_DOC, SF1->F1_SERIE, SF1->F1_FORNECE, SF1->F1_LOJA, SF1->F1_ESPECIE)
    (PRE) _aTotal[108] := ""
    (PRE) _aTotal[109] := Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT")
    (PRE) _aTotal[110] := {"SFP",""}
    (PRE) _aTotal[111] := ""
    (PRE) _aTotal[112] := ""
    (PRE) _aTotal[113] := ""
    (PRE) _aTotal[114] := "FP_FILUSO='" + cFilAnt + "' AND FP_SERIE='" + SF1->F1_SERIE + "' AND FP_ESPECIE= " +  If(_aTotal[116], "'1'","'2'") + " AND FP_NUMINI <='" + SF1->F1_DOC + "' AND FP_NUMFIM >='" + SF1->F1_DOC + "' AND FP_ATIVO ='1'"
    (PRE) _aTotal[115] := "SFP->FP_FILUSO=cFilAnt .AND. SFP->FP_SERIE=SF1->F1_SERIE .AND. SFP->FP_ESPECIE=" +  If(_aTotal[116], "'1'","'2'") + ".AND. SFP->FP_NUMINI<=SF1->F1_DOC .AND. FP_NUMFIM >=SF1->F1_DOC .AND. SFP->FP_ATIVO = '1'","FP_ATIVO"

    (PREREG) FsQuery(_aTotal[101],1,"D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'","SD1->D1_DOC=SF1->F1_DOC .AND. SD1->D1_SERIE=SF1->F1_SERIE .AND. SD1->D1_FORNECE=SF1->F1_FORNECE .AND. SD1->D1_LOJA=SF1->F1_LOJA","D1_ITEM") .And. .T.
    (PREREG) FsQuery(_aTotal[110],1,_aTotal[114],_aTotal[115]) .And. .T.

    [SFP CONTROL FOMULARIOS]
    (PRE) _aTotal[103] := Dtos( SFP->FP_DTRESOL )
    (PRE) _aTotal[103] := Left(_aTotal[103],4) + "-" + Substr(_aTotal[103],5,2)+ "-" + Right(_aTotal[103],2)
    (PRE) _aTotal[111] := Alltrim( SFP->FP_NUMINI )
    (PRE) _aTotal[112] := Alltrim( SFP->FP_NUMFIM )
    (PRE) _aTotal[113] := Alltrim( SFP->FP_CAI )

    [SD1 GENERANDO_XML]
    (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",CTO->(MsSeek(xFilial("CTO")+Strzero(SF1->F1_MOEDA,2))) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",If(_aTotal[116], SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)),SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA))) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.)
    (PRE) If(AllTrim(SF1->F1_ESPECIE)<>"NCC",CTO->(MsSeek(xFilial("CTO")+Strzero(SF1->F1_MOEDA,2))) , .T.)

    [XXX CABECERA]
    Linha1     C 060 0 Chr(239) + Chr(187) + Chr(191) + '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'

    [XXX FACTURA]
    (PRE) IIf(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.)
    (PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.)

    (PRE) _aTotal[001] := IIF(_aTotal[116],'<fe:Invoice ','<fe:CreditNote ')
    (PRE) _aTotal[001] += 'xmlns:fe="http://www.dian.gov.co/contratos/facturaelectronica/v1" '
    (PRE) _aTotal[001] += 'xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" '
    (PRE) _aTotal[001] += 'xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" '
    (PRE) _aTotal[001] += 'xmlns:clm54217="urn:un:unece:uncefact:codelist:specification:54217:2001" '
    (PRE) _aTotal[001] += 'xmlns:clm66411="urn:un:unece:uncefact:codelist:specification:66411:2001" '
    (PRE) _aTotal[001] += 'xmlns:clmIANAMIMEMediaType="urn:un:unece:uncefact:codelist:specification:IANAMIMEMediaType:2003" '
    (PRE) _aTotal[001] += 'xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" '
    (PRE) _aTotal[001] += 'xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" '
    (PRE) _aTotal[001] += 'xmlns:sts="http://www.dian.gov.co/contratos/facturaelectronica/v1/Structures" '
    (PRE) _aTotal[001] += 'xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" '
    (PRE) _aTotal[001] += 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
    (PRE) _aTotal[001] += 'xsi:schemaLocation="http://www.dian.gov.co/contratos/facturaelectronica/v1 ../xsd/DIAN_UBL.xsd '
    (PRE) _aTotal[001] += 'urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2 ../../ubl2/common/UnqualifiedDataTypeSchemaModule-2.0.xsd '
    (PRE) _aTotal[001] += 'urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2 ../../ubl2/common/UBL-QualifiedDatatypes-2.0.xsd" '
    (PRE) _aTotal[001] += '>' + ( chr(13)+chr(10) )

    (PRE) _aTotal[001] += ' <ext:UBLExtensions>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <ext:UBLExtension>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <ext:ExtensionContent>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <sts:DianExtensions>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <sts:InvoiceControl>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <sts:InvoiceAuthorization>'+ _aTotal[113] +'</sts:InvoiceAuthorization>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <sts:AuthorizationPeriod>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                         <cbc:StartDate>'+ _aTotal[103] +'</cbc:StartDate>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                         <cbc:EndDate>'+ _aTotal[103] +'</cbc:EndDate>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     </sts:AuthorizationPeriod>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <sts:AuthorizedInvoices>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                         <sts:Prefix>'+ SF1->F1_SERIE2 +'</sts:Prefix>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                         <sts:From>'+ _aTotal[111] +'</sts:From>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                         <sts:To>'+ _aTotal[112] +'</sts:To>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     </sts:AuthorizedInvoices>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </sts:InvoiceControl>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <sts:InvoiceSource>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <cbc:IdentificationCode listAgencyID="6" listAgencyName="United Nations Economic Commission for Europe" listSchemeURI="urn:oasis:names:specification:ubl:codelist:gc:CountryIdentificationCode-2.0">CO</cbc:IdentificationCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </sts:InvoiceSource>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <sts:SoftwareProvider>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <sts:ProviderID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" schemeURI="http://www.unece.org/trade/untdid/d08a/tred/tred3055.htm" schemeName="NIT, RUT" schemeDataURI="www.dian.gov.co/contenidos/servicios/rut_preguntasfrecuentes.html">'+ _aTotal[098] +'</sts:ProviderID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <sts:SoftwareID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" schemeURI="http://www.unece.org/trade/untdid/d08a/tred/tred3055.htm" schemeName="Código de Activación" schemeDataURI="http://www.dian.gov.co/micrositios/fac_electronica/documentos/Guia_del_usuario_Habilitacion_Adquirente.pdf">'+ _aTotal[099] +'</sts:SoftwareID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </sts:SoftwareProvider>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <sts:SoftwareSecurityCode schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" schemeURI="http://www.unece.org/trade/untdid/d08a/tred/tred3055.htm" schemeName="Código de Seguridad del Software" schemeDataURI="http://www.dian.gov.co/micrositios/fac_electronica/documentos/Anexo_Tecnico_003_Mecanismos_Sistema_Tecnico_de_Control.pdf">'+ _aTotal[100] +'</sts:SoftwareSecurityCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             </sts:DianExtensions>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </ext:ExtensionContent>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     </ext:UBLExtension>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <ext:UBLExtension>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <ext:ExtensionContent>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </ext:ExtensionContent>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     </ext:UBLExtension>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' </ext:UBLExtensions>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:UBLVersionID>UBL 2.0</cbc:UBLVersionID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:ProfileID>DIAN 1.0</cbc:ProfileID>' + ( chr(13)+chr(10) )
    // Manual con serie
    //(PRE) _aTotal[001] += '   <cbc:ID>'+ SF1->F1_SERIE2 + Alltrim( Str( Val( Substr( SF1->F1_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) )
    // Manual sin serie
    (PRE) _aTotal[001] += ' <cbc:ID>'+ Alltrim( Str( Val( Substr( SF1->F1_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:IssueDate>'+ _aTotal[095] +'</cbc:IssueDate>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:IssueTime>'+ _aTotal[096] +'</cbc:IssueTime>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:Note><![CDATA['+ Alltrim(SF1->F1_MOTIVO) + ']]></cbc:Note>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:InvoiceTypeCode listAgencyID="195" listAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" listSchemeURI="http://www.dian.gov.co/contratos/facturaelectronica/v1/InvoiceType">91</cbc:InvoiceTypeCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:DocumentCurrencyCode>'+ Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) +'</cbc:DocumentCurrencyCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cbc:CustomizationID>'+ Alltrim(SF1->F1_TIPOPE) +'</cbc:CustomizationID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' <cac:DiscrepancyResponse>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cbc:ReferenceID/>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cbc:ResponseCode>' + Alltrim(SF1->F1_TIPREF) + '</cbc:ResponseCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' </cac:DiscrepancyResponse>' + ( chr(13)+chr(10) )

    // BillingReference
    (PRE) _aTotal[001] += _aTotal[107]
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [XXX EMISOR]
    (PRE) _aTotal[001] := ' <fe:AccountingSupplierParty>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cbc:AdditionalAccountID>'+ "1" +'</cbc:AdditionalAccountID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <fe:Party>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cac:PartyIdentification>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:ID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" schemeID="31">'+ Alltrim(SM0->M0_CGC) +'</cbc:ID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </cac:PartyIdentification>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cac:PartyName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:Name><![CDATA['+ _aTotal[075] +']]></cbc:Name>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </cac:PartyName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <fe:PhysicalLocation>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <fe:Address>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:Department><![CDATA['+ AllTrim(SM0->M0_BAIRENT) +']]></cbc:Department>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:CitySubdivisionName><![CDATA['+ AllTrim(SM0->M0_CODMUN) +']]></cbc:CitySubdivisionName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:CityName><![CDATA['+ Alltrim(SM0->M0_CIDENT) +']]></cbc:CityName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cac:AddressLine>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <cbc:Line><![CDATA['+ Alltrim(SM0->M0_ENDENT) + " " + Alltrim(SM0->M0_COMPENT) +']]></cbc:Line>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </cac:AddressLine>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cac:Country>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <cbc:IdentificationCode>'+ "CO" +'</cbc:IdentificationCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </cac:Country>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             </fe:Address>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </fe:PhysicalLocation>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <fe:PartyTaxScheme>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:TaxLevelCode>'+ AllTrim(SM0->M0_DSCCNA) +'</cbc:TaxLevelCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cac:TaxScheme/>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </fe:PartyTaxScheme>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <fe:PartyLegalEntity>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:RegistrationName><![CDATA['+ _aTotal[075] + ']]></cbc:RegistrationName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </fe:PartyLegalEntity>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     </fe:Party>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' </fe:AccountingSupplierParty>'
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [XXX RECEPTOR]
    (PRE) AllTrim(SF1->F1_ESPECIE) <> "NCC"
    (PRE) If(_aTotal[116], SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)) ,SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)))
    (PRE) SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS))

    (PRE) _aTotal[001] := '<fe:AccountingCustomerParty>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cbc:AdditionalAccountID>'+ IIF( AllTrim(SA1->A1_PESSOA) == "F" , "2" , "1" ) +'</cbc:AdditionalAccountID>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <fe:Party>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <fe:PartyTaxScheme>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cbc:RegistrationName><![CDATA['+ Alltrim(SA1->A1_NOME) +']]></cbc:RegistrationName>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cbc:CompanyID schemeID="' + Right( Alltrim(SA1->A1_CGC), 1 ) + '" schemeName="' + AllTrim(SA1->A1_TIPDOC)+ '" schemeAgencyName="CO, DIAN (Dirección de Impuestos y Aduanas Nacionales)" schemeAgencyID="195">'+ IIF(AllTrim(SA1->A1_TIPDOC) == "31",Left(Alltrim(SA1->A1_CGC),Len(Alltrim(SA1->A1_CGC))-1),AllTrim(SA1->A1_PFISICA))+'</cbc:CompanyID>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cbc:TaxLevelCode listName="' + Alltrim(AI0->AI0_TPREG) + '">' + AllTrim(M486RESOBL(SA1->A1_COD,SA1->A1_LOJA,"R")) + '</cbc:TaxLevelCode>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cac:RegistrationAddress>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:ID>' + Alltrim(SA1->A1_COD_MUN) + '</cbc:ID>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:CityName><![CDATA[' + Alltrim(POSICIONE("CC2",3,xFilial("CC2") + SA1->A1_COD_MUN,"CC2_MUN")) + ']]></cbc:CityName>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:PostalZone>' + Alltrim(SA1->A1_CEP) + '</cbc:PostalZone>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:CountrySubentity><![CDATA[' + Alltrim(M486VALSX5('12' + SA1->A1_EST)) + ']]></cbc:CountrySubentity>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:CountrySubentityCode>' + Alltrim(SA1->A1_EST) + '</cbc:CountrySubentityCode>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cac:AddressLine>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:Line><![CDATA[' + Alltrim(SA1->A1_END) + ']]></cbc:Line>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             </cac:AddressLine>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cac:Country>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:IdentificationCode>'+Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCEDIAN")+'</cbc:IdentificationCode>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             </cac:Country>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </cac:RegistrationAddress>'  + ( chr(13)+chr(10) )  
    (PRE) _aTotal[001] += '         </fe:PartyTaxScheme>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cac:PartyIdentification>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:CompanyID schemeID="' + Right( Alltrim(SA1->A1_CGC), 1 ) + '" schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" schemeName="' + AllTrim(SA1->A1_TIPDOC)+ '">'+ IIF(AllTrim(SA1->A1_TIPDOC) == "31",Left(Alltrim(SA1->A1_CGC),Len(Alltrim(SA1->A1_CGC))-1),AllTrim(SA1->A1_PFISICA))+'</cbc:CompanyID>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </cac:PartyIdentification>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '          <cac:PartyName>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '              <cbc:Name><![CDATA['+ Alltrim(SA1->A1_NOME) +']]></cbc:Name>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '          </cac:PartyName>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += '         <fe:PhysicalLocation>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <fe:Address>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:Department><![CDATA['+ AllTrim(SA1->A1_BAIRRO) +']]></cbc:Department>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:CitySubdivisionName><![CDATA['+ AllTrim(SA1->A1_MUN) +']]></cbc:CitySubdivisionName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cbc:CityName><![CDATA['+ Alltrim(Posicione("SX5",1,xFilial("SX5")+"12"+SA1->A1_EST,"X5_DESCRI")) +']]></cbc:CityName>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cac:AddressLine>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <cbc:Line><![CDATA['+ AllTrim(SA1->A1_END) +']]></cbc:Line>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </cac:AddressLine>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 <cac:Country>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                     <cbc:IdentificationCode>'+Posicione("SYA",1,xFilial("SYA")+SA1->A1_PAIS,"YA_CCEDIAN")+'</cbc:IdentificationCode>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '                 </cac:Country>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             </fe:Address>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </fe:PhysicalLocation>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cac:Contact>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:ElectronicMail>' + AllTrim(SA1->A1_EMAIL) + '</cbc:ElectronicMail>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '             <cbc:Telephone>' + AllTrim(SA1->A1_TEL) + '</cbc:Telephone>'  + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         </cac:Contact>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '          <fe:PartyLegalEntity>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '              <cbc:RegistrationName><![CDATA['+ Alltrim(SA1->A1_NOME) +']]></cbc:RegistrationName>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , "" , '          </fe:PartyLegalEntity>' + ( chr(13)+chr(10) ) )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , '           <fe:Person>'  + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , '               <cbc:FirstName><![CDATA[' + Alltrim(SA1->A1_NOMEPRI) +']]></cbc:FirstName>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , '               <cbc:MiddleName><![CDATA[' + Alltrim(SA1->A1_NOMEPES) +']]></cbc:MiddleName>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , '               <cbc:FamilyName><![CDATA[' + Alltrim(SA1->A1_NOMEPAT) + ' ' + Alltrim(SA1->A1_NOMEMAT) +']]></cbc:FamilyName>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIF( AllTrim(SA1->A1_PESSOA) == "F" , '           </fe:Person>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += '     </fe:Party>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' </fe:AccountingCustomerParty>' + ( chr(13)+chr(10) )

    (PRE) _aTotal[001] += ' <cac:PaymentTerms>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(SF1->F1_VALBRUT,14,2)) + '</cbc:Amount>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     <cac:SettlementPeriod>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cbc:StartDate>' + Transform( DtoS( Posicione("SE1",2,xFilial("SE1")+SF1->(F1_FORNECE+F1_LOJA+F1_SERIE+F1_DOC),"E1_EMISSAO") ) , "@R 9999-99-99") + '</cbc:StartDate>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '         <cbc:EndDate>' + Transform( DtoS( Posicione("SE1",2,xFilial("SE1")+SF1->(F1_FORNECE+F1_LOJA+F1_SERIE+F1_DOC),"E1_VENCTO") ) , "@R 9999-99-99") + '</cbc:EndDate>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += '     </cac:SettlementPeriod>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += ' </cac:PaymentTerms>' + ( chr(13)+chr(10) )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '    <cac:PaymentExchangeRate>'  + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:SourceCurrencyCode>' +  Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:SourceCurrencyBaseRate>1.00</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:TargetCurrencyCode>' + "COP" + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:TargetCurrencyBaseRate>1.00</cbc:TargetCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:CalculationRate>' +  Alltrim(Str(SF1->F1_TXMOEDA,11,2)) + '</cbc:CalculationRate>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:Date>' + _aTotal[095] + '</cbc:Date>' + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '    </cac:PaymentExchangeRate>'  + ( chr(13)+chr(10) ) , "" )
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [XXX IMPUESTOS]
    (PRE) _aTotal[001] := _aTotal[097][1]
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [XXX TOTALES]
    (PRE) _aTotal[001] := _aTotal[097][2]
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [SD1 INVOICE]
    (PRE) DbGoTop()
    (PREREG) (SB1->(DbSeek(xFilial("SB1") + SD1->D1_COD)),.T.)
    (PREREG) (SAH->(DbSeek(xFilial("SAH") + SB1->B1_UM)),.T.)

    (PREREG) _aTotal[108] := fGetTaxDet(SD1->D1_DOC,SD1->D1_SERIE,SD1->D1_FORNECE,SD1->D1_LOJA,SD1->D1_TES,If(_aTotal[116], "NCC",AllTrim(SF1->F1_ESPECIE)))
    (PREREG) (_aTotal[001] := IIF( _aTotal[116],'   <fe:InvoiceLine>'  + ( chr(13)+chr(10) ),'  <cac:CreditNoteLine>'  + ( chr(13)+chr(10) )),.T.)
    (PREREG) (_aTotal[001] += '     <cbc:ID>' + Alltrim(Str(Val(SD1->D1_ITEM))) + '</cbc:ID>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += IIF(_aTotal[116],'        <cbc:InvoicedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD1->D1_QUANT, 14, 2)) +'</cbc:InvoicedQuantity>'  + ( chr(13)+chr(10) ),'     <cbc:CreditedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD1->D1_QUANT)) +'</cbc:CreditedQuantity>'  + ( chr(13)+chr(10) )),.T.)
    (PREREG) (_aTotal[001] += '     <cbc:LineExtensionAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(SD1->D1_TOTAL,14,2)) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += _aTotal[108][1],.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '        <cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '            <cbc:ChargeIndicator>false</cbc:ChargeIndicator>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '                <cbc:AllowanceChargeReason><![CDATA[Aplicación de descuento]]></cbc:AllowanceChargeReason>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '                <cbc:MultiplierFactorNumeric>' + Alltrim(Str(SD1->D1_DESC,5,2)) + '</cbc:MultiplierFactorNumeric>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '            <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(SD1->D1_VALDESC,14,2)) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '        </cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.)
    (PREREG) (_aTotal[001] += _aTotal[108][2],.T.)
    (PREREG) (_aTotal[001] += IIF(_aTotal[116] ,'       <fe:Item>', '       <cac:Item>')  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         <cbc:Description><![CDATA[' + Alltrim(SB1->B1_DESC) +']]></cbc:Description>' + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         <cbc:PackSizeNumeric>'+ IIf(!Empty(SB1->B1_CONV),Alltrim(STR(SB1->B1_CONV)),"1") +'</cbc:PackSizeNumeric>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         <cac:SellersItemIdentification>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '             <cbc:ID>' + Alltrim(SD1->D1_COD) + '</cbc:ID>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         </cac:SellersItemIdentification>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += IIF( _aTotal[116],'       </fe:Item>', '      </cac:Item>')  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += IIF( _aTotal[116],'       <fe:Price>','       <cac:Price>')  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(SD1->D1_VUNIT,14,2)) +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += '         <cbc:BaseQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">' + Alltrim(Str(SD1->D1_QUANT)) + '</cbc:BaseQuantity>'  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += IIF(_aTotal[116],'        </fe:Price>', '     </cac:Price>')  + ( chr(13)+chr(10) ),.T.)
    (PREREG) (_aTotal[001] += IIF( _aTotal[116],'   </fe:InvoiceLine>' ,'   </cac:CreditNoteLine>') ,.T.)
    (PREREG) ENCODEUTF8(_aTotal[001])

    [XXX INVOICE_FIN]
    (POS) FsQuery(_aTotal[101],2)

    [XXX FACTURA]
    (PRE) _aTotal[094] := &("Lower('face') + '_' + Lower(_aTotal[105]) + Lower(_aTotal[104]) + Lower(_aTotal[106]) + '.xml'")

    (ARQ) _aTotal[094]
    FACTURA    C 019 0 ENCODEUTF8( IIF( _aTotal[116], '</fe:Invoice>','</fe:CreditNote>'))


2.10.3 Ejemplo de utilización.


  1. Documento Soporte.

  2. Transmisión de Documento Soporte.
     
  3. Archivo XML del Documento Soporte.

    Los archivos XML autorizados se crean en la carpeta configurada en el parámetro MV_CFDDOCS + "/autorizados/".

  4. Monitor de Transmisión.

  5. Imprimir PDF.

  6. Recuperar XML.


2.10.4 Diccionario de datos 

El usuario debe realizar las siguientes actualizaciones al diccionario de datos a través del módulo Configurador de Protheus (SIGACFG):

Campos en el archivo SX3 - Campos:

Crear campo F1_SOPORT

CampoF1_SOPORT
OrdenZZ
TipoCaracter
Tamaño1
Decimal0
Formato@!
TítuloDoc. Soporte
DescripciónDocumento Soporte        
UtilizadoSi
ObligatorioNo
BrowseNo
Val. SistemaPertence("SN")                                                                                                                  
Inicializador"S"
OpcionesS=Si;N=No                                                                                                                       
Help

Si la factura que registra corresponde a un proveedor no obligado a facturar y éste comprobante será transmitido a la DIAN, indique Si, de lo contrario indique No.


Preguntas en el archivo SX1 – Archivo de Preguntas:

Modificar grupo MATA486

Orden

01

Pregunta

¿Tipo de Documento ?          

Tipo

N

Tamaño

1

Decimal0
Validación
Objeto

Combo

Consulta Estándar
Preselección0
Ítem 1

Factura        

Ítem 2

Nota de Debito 

Ítem 3

Nota de Credito

Ítem 4Docto Soporte  


Modificar grupo MT101N

Orden

01

Pregunta

¿Tipo de factura ?                     

Tipo

N

Tamaño

1

Decimal0
Validación
Objeto

Combo

Consulta Estándar
Preselección0
Ítem 1

Normal         

Ítem 2

Benef.         

Ítem 3

Gastos Imp.    

Ítem 4Conoc. Transp. 
Ítem 5Doc. Soporte   


Crear grupo MATA486I

Orden

01

0203

Pregunta

¿Serie de Documento Soporte?         

¿Documento Soporte Inicial?¿Documento Soporte Final?

Tipo

C

CC

Tamaño

3

1313
Decimal000
Validación

NaoVazio() .and. MV_PAR02<=MV_PAR03
Objeto

Edit

EditEdit
Consulta EstándarSERNF

HelpSerie del documento soporte.Número inicial del documento soporte.Número final de documento soporte. 


Tablas Genéricas en el archivo SX5 – Tablas Genéricas:

Crear nuevos registros en la 00 - 01 Series de Facturas 

Clave

Descripción

DCS0000000000001


2.11 ENVÍO DE EMAIL AL REALIZAR TRANSMISIÓN AUTOMÁTICA

2.11.1 Visión General

Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación.
Función:

   

Rutinas

Nombre Técnico

Fecha

MATA486Documentos Electrónicos31/07/2022
M486XFUNFunciones genéricas para generación de XML para Colombia29/07/2022
M486PDFCOLImpresión de Representación Impresa Facturación Electrónica Colombia29/07/2022

   

País:

Colombia (COL) / Pacote atusx: 010898

Ticket:14200456
Requisito/Story/Issue (informe el requisito vinculado):DMINA-15818

Situación:

En la rutina de Documentos Electrónicos (MATA486), se solicita la funcionalidad de envío automático de los archivos en formato XML y PDF vía Email en el proceso estándar de Transmisión Electrónica.

Solución:

En la rutina de Documentos Electrónicos (MATA486):

En la rutina de Funciones genéricas para generación de XML para Colombia (M486XFUNCO):

En la clase Destinatarios:

En la clase Clientes:

En la rutina de Impresión de Representación Impresa Facturación Electrónica Colombia (M486PDFCOL):

2.11.2 Configuraciones Previas

En el grupo de preguntas MATA486, agregar la pregunta 06:


Orden

01

020304050607

Pregunta

¿Tipo de Documento?

¿Serie?
¿Estatus¿Fecha Inicial?¿Fecha Final?¿Tipo Nota Ajuste?¿Envío a Email?

Tipo

N

CCDDNN

Tamaño

1

318811
VariableMV_PAR01MV_PAR02MV_PAR03MV_PAR04MV_PAR05MV_PAR06MV_PAR07

Validación








Objeto

C-Combo

G - GetG - GetG - GetG - GetC-ComboC - Combo
Consulta Estándar
SERNF




Preselección

1







Opciones

Factura
Nota de Débito
Nota de Crédito





Ninguna
Débito
Crédito

Si

No

Si la rutina de Documentos Electrónicos (MATA486), tiene fecha superior o igual al 23/12/2022, la pregunta de ¿Envío de Email?, debe configurarse en el Orden 07 (MV_PAR07), en caso contrario debe configurarse en el Orden 06 (MV_PAR06)


Creación de campos en el archivo Campos - SX3:

Tabla AI0 - Complemento de Clientes:

Campo

AI0_RECE

Tipo

C

Tamaño

30

Decimal

0

Formato


Título

Email Recep.

Descripción

Email para Recepción FE

Nivel

1

Utilizado

Si

Obrigatório

No

Browse

No

Help

Indica el Email de Recepción (Buzón Tributario de la DIAN), en caso de que no sea el mismo al informado en el campos Email (A1_EMAIL) del Cliente, y será utilizado para el envío automático al realizar la transmisión de documentos electrónicos o al realizar el envío desde la opción Imprimir PDF / Envío de Email.


Envío de Email

Para la funcionalidad de envío de la factura electrónica (archivos XML y PDF) por E-mail a clientes, es necesario configurar los siguientes parámetros:

Nombre:

MV_RELSERV

Tipo:

C

Contenido:


Descripción:
Servidor de envío de e-mail.

Nombre:

MV_RELACNT

Tipo:

C

Contenido:


Descripción:
Cuenta a ser utilizada en el envío de e-mail.

Nombre:

MV_RELPSW

Tipo:

C

Contenido:


Descripción:
Contraseña de la cuenta de e-mail.


En caso de que el servidor de correo utilice autenticación, se deben configurar los siguientes parámetros:


Nombre:

MV_RELATH

Tipo:

L

Contenido:

.T.

Descripción:

Servidor de email requiere autenticación.
.F. = No
.T. = Sí

Nombre:

MV_RELSSL

Tipo:

L

Contenido:


Descripción:

Habilita el SSL en el envío y recepción de emails.
.F. = No
.T. = Sí

Nombre:

MV_RELTLS

Tipo:

L

Contenido:


Descripción:

El servidor de SMTP tiene conexión del tipo segura ( SSL/TLS ).
.F. = No
.T. = Sí

Nombre:

MV_SRVPORT

Tipo:

N

Contenido:


Descripción:

Puerto de salida del servidor de envío.

2.11.3 Ejemplo de Utilización

  1. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Archivos | Productos.
  2. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida.
  3. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Archivos | Clientes.

Proceso de Transmisión de Documentos

  1. Ingresar al módulo Facturación (SIGAFAT) e ir al menú "Actualización | Facturación | Facturación Electrónica" (MATA486).
  2. Informar los parámetros:
  3. Dar clic en el botón "Transmitir".
  4. Informar los parámetros:
  5. Dar clic en "Ok".
  6. Revisar la bandeja del email del correo que fue configurado para el envío automático, validando que se haya recibido un email que contiene adjuntos en un archivo .zip el XML y PDF del documento electrónico transmitido.

El proceso de envío automático de los Documentos Eelctrónicos aplica para lso Documentos de tipo Factura de Venta (NF), Nota de Crédito de Cliente (NCC)  y Nota de Débito de Cliente (NDC).

2.12 Medios de Pago para Documentos Electrónicos

2.12.1 Visión General

El Proveedor Tecnológico denominado The Factory HKA, tiene disponible la clase MediosDePago que corresponde a la información del pago del Documento Electrónico, para poder activar la funcionalidad de enviar los atributos medioPago y metodoDePago es necesario tener configurados los campos  Método Pago (E4_MPAGSAT), Medio Pago (F1_TPDOC), Medio Pago (F2_TPDOC) y Medio Pago (F1_TPDOC).


Si se tiene compilado el Punto de Entrada M486OWSCOL, la funcionalidad tomará como prioridad el Punto de Entrada, por lo cual si quiere tomar la funcionalidad estándar deberá de descompilarse del rpo el Punto de Entrada.

La solución respecto a la clase Medios de Pago, aplica para todos los documentos que son transmitidos electrónicamente.


2.12.2 Configuraciones Previas

Contar con las siguientes rutina actualizadas, con fecha igual o posterior:

RutinaNombre técnicoFecha
LOCXCOL.PRWFunciones Genéricas de Notas Fiscales Colombia28/11/2022
M486XFUNCO.PRWFunciones Genéricas FE Colombia27/11/2022
MATA468N.PRXGeneración automática de Facturas/Remitos26/11/2022
MATA462ANGeneración de Remitos26/11/2022


  1. Ingresar al módulo Facturación (SIGAFAT) ir al menú "Actualizaciones | Archivos | Condiciones de Pago " (MATA360).
  2. Configurar una Condición de Pago informando el campo Método de Pago(E4_MPAGSAT) con el valor "2-Crédito".
  3. Contar con el catálogo de Medios de Pago actualizado:

  4. Configurar el parámetro MV_PATH814, con la ruta local donde se colocarán los archivos en formato .csv para la carga de Catálogos.
  5. Colocar los siguientes archivos en formato .csv en la ruta definida en el parámetro MV_PATH814, conteniendo las siguientes estructuras:
  6. Configurar los siguientes campos en el Diccionario de Datos:

Consulta Estándar:

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU022101REMedios de PagoF3I
ECU02220101
F812SXB("S006","Codigo")
ECU022501

VAR_IXB



CampoC5_TPDOC
TipoC - Caracter
Tamaño2
Decimal0
Formato@!
TítuloMedio Pago
DescripciónMedio de Pago
Estandar"1"
ConsultaCOL006
Validación de sistemaNaovazio() .or. ValidF3I("S006", M->C5_TPDOC,1,2)
Nivel1
Utilizado
BrowseNo
Help

Informe el Medio de Pago para el Documento generado, de acuerdo al catálogo 06MediosPago.

CampoF2_TPDOC
TipoC - Caracter
Tamaño2
Decimal0
Formato@!
TítuloMedio Pago
DescripciónMedio de Pago
Estandar"1"
ConsultaCOL006
Validación de sistemaNaovazio() .or. ValidF3I("S006", M->F2_TPDOC,1,2)
Nivel1
Utilizado
BrowseNo
Help

Informe el Medio de Pago para el Documento generado, de acuerdo al catálogo 06MediosPago.

CampoF1_TPDOC
TipoC - Caracter
Tamaño2
Decimal0
Formato@!
TítuloMedio Pago
DescripciónMedio de Pago
Estandar"1"
ConsultaCOL006
Validación de sistemaNaovazio() .or. ValidF3I("S006", M->F1_TPDOC,1,2)
Nivel1
Utilizado
BrowseNo
Help

Informe el Medio de Pago para el Documento generado, de acuerdo al catálogo 06MediosPago.

CampoE4_MPAGSAT
TipoC - Caracter
Tamaño1
Decimal0
Formato@!
TítuloMétodo Pago
DescripciónMétodo de Pago
Lista de Opciones1=Contado;2=Credito                                                           
Nivel1
Utilizado
BrowseNo
Help

Informe el Método de Pago para la condición de pago

1= Contado

2=Credito

2.10.3 Ejemplo de utilización.

Pre-condiciones:

Ingresar al módulo de Compras (SIGACOM), ir al menú | Actualizaciones | Archivos | Condiciones de Pago

Configurar una Condición de Pago, informado el campo Método Pago (E4_MPAGSAT) con la opción 1-Contado o 2- Crédito.

Documento Soporte.


Transmisión de Documento Soporte.
 

Imprimir PDF.


2.13 Punto de Entrada para Modificar el atributo adjuntos (M486PEADJU)

2.13.1 Visión General

Punto de Entrada, que permite modificar el atributo Adjuntos, que es informado al realizar la transmisión de documentos y que actualmente se envía con el valor fijo "0", que corresponde a la opción de No se admiten adjuntos.

2.13.2 Configuraciones Previas

Contar con la siguiente rutina actualizada, con fecha igual o posterior:

Rutina

Nombre técnico

Fecha

M486XFUNCOFunciones genéricas para generación de XML para Colombia17/04/2023

Compilar el punto de entrada M486PEADJU, el cual recibe los siguientes parámetros:

2.13.3 Ejemplo del Punto de Entrada


User Function M486PEADJU()
    Local cSerieDoc := PARAMIXB[1] //Serie
    Local cNumDoc   := PARAMIXB[2] //Numero de Documento
    Local cCodCli   := PARAMIXB[3] //Código de Cliente
    Local cCodLoj   := PARAMIXB[4] //Código de la Tienda
    Local cPrefijo  := PARAMIXB[5] //f-Factura, c-Nota de Crédito, d-Nota de Débito y n - Nota de Ajuste
    Local cAdjunto  := "0"
    
    cAdjunto := "1"
Return cAdjunto


2.14 Punto de Entrada para Agregar nuevas opciones de Leyendas (M486PELEYE)

2.14.1 Visión General

Punto de Entrada, que permite agregar nuevas opciones de Leyendas para la pantalla de Documentos Electrónicos (MATA486).

2.14.2 Configuraciones Previas

Contar con la siguiente rutina actualizada, con fecha igual o posterior:

Rutina

Nombre técnico

Fecha

MATA486Documentos Electrónicos
17/04/2023

Compilar el punto de entrada M486PELEYE.

2.14.3 Ejemplo del Punto de Entrada


User Function M486PELEYE()
	Local aColorPE := {}

	aAdd(aColorPE, {"BR_PINK",OemToAnsi("En espera de adjunto")})

Return aColorPE


2.15 Punto de Entrada para Agregar nuevas opciones de Leyendas (M486PESTA)

2.15.1 Visión General

Punto de Entrada, que permitE visualizar las nuevas Leyendas en el Borwse de la pantalla de Documentos Electrónicos (MATA486).

2.15.2 Configuraciones Previas

Contar con la siguiente rutina actualizada, con fecha igual o posterior:

Rutina

Nombre técnico

Fecha

MATA486Documentos Electrónicos
17/04/2023

Compilar el punto de entrada M486PESTA.

2.15.3 Ejemplo del Punto de Entrada


User Function M486PESTA()
	Local nTipoD := PARAMIXB //1 = SF2, 2 = SF1 y 3 = SFE
	Local aEstatus := {}

	If nTipoD == 1
		aAdd(aEstatus, {"F2_FLFTEX=='2' .AND. F2_CODMUN =='05001'","BR_PINK"})
	EndIf
Return aEstatus


2.16 Ampliación de longitud del campo "Código" de tabla S014

2.16.1 Visión General

Se activa funcionalidad para ampliar la longitud permitida en el campo "Código" de la tabla S014 - "Tipos de Obligaciones-Respon." de 4 a 7 posiciones, para que al cargar el catálogo no se corten los códigos de responsabilidad existentes y permita transmitir Documentos de Soporte con dichos códigos.

2.16.2 Configuraciones Previas

Contar con la siguiente rutina actualizada, con fecha igual o posterior:

Rutina

Nombre técnico

Fecha

FISA812Definición de Catálogos.25/04/2023
FISA814

Carga de Catálogos.

25/04/2023
FISA827Registro Responsabilidades/Obligaciones DIAN y Tributos.27/04/2023
FATXFUMIFunciones genéricas para Facturación - Mercado Internacional18/11/2022


En la rutina de Carga de Catálogos (FISA814), se amplia longitud permitida en el campo "Código" de Definición de la Tabla S014 - "Tipos de Obligaciones-Respon.", de 4 a 7 posiciones para que al cargar el Catálogo no se trunquen los Códigos de Responsabilidad de acuerdo a lo definido por la DIAN.  

En la rutina de Registro de Responsabilidades/Obligaciones DIAN y Tributos (FISA827), para el campo Cod. Resp. (AIT_CODRES), se modificó para realizar la búsqueda por el campo "Código" de acuerdo al tamaño del campo configurado para la consulta de Tipos de Obligaciones y Responsabilidades (S014).

En la rutina de Definición de Catálogos (FISA812), se modifica la funcionalidad para que se permita el Borrado de la estructura y datos de las Tablas, para permitir volver a cargarlo cuando se requiera desde interfaz del sistema, este proceso solo se podrá realizar de usuarios que estén configurados como administradores.

Para mayor información : 16671949 DMINA-19202 DT Error 109 en transmisión de Docto. de Soporte MATA486 COL

2.16.3 Diccionario de Datos

Modificación en la tabla SX3 - Campos (Pacote:012097)

Campo

AIT_CODRES

Tipo

C

Tamaño

7

Val. Sistema

Vazio() .Or. ValidF3I("S014", M->AIT_CODRES,1,7)


2.17  Fabricante de Software campo extra 5170007 en la impresión de documentos transmitidos

Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación
Función:

Rutina

Nombre Técnico

Fecha

M486XFUNCOFunciones Genéricas FE Colombia13/10/2023
FISA814Carga de Catálogos.16/10/2023
País:Colombia
Ticket:No aplica.
Requisito/Story/Issue (informe el requisito vinculado):DMINA-21078


2.17.1 Visión general

En la rutina de Transmisión Electrónica (MATA486) al realizar la transmisión electrónica y ejecutar la impresión gráfica desde la acción "Imprimir PDF", a través del Proveedor Tecnológico denominado The Factory HKA de los documentos de tipo Factura de Venta (NF), Nota de Débito de Cliente (NDC) y Nota de Crédito de Cliente (NCC), Nota de Ajuste de Débito, Nota de Ajuste de Crédito y Documento de Soporte, se requiere que en la representación gráfica se visualice el Fabricante de Software.

2.17.2 Configuraciones Previas

En la rutina de Carga de Catálogos (FISA814):

Se agrega la estructura de la definición de la Tabla S019 - Fabricante de Software,  para permitir incluir la información requerida para el campo extra 5170007 del fabricante de software.

En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Definición de Catálogos (FISA812).

Validar que para el catálogo S019 - Fabricante de Software exista la estructura y que sea la siguiente:

Si se requiere se puede modificar el tamaño de los campos según se requiera solo es importante mencionar que la suma del tamaño de los campos no debe superar un total de 250.

En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Mantenimiento de Catálogos (FISA813).

Incluir manualmente o por medio del 19FabricanteSoftware.csv, la información de Fabricante de Software.


Ejemplo para el proceso manual



Ejemplo para el proceso por medio del archivo .CSV

Configurar el parámetro MV_PATH814, con la ruta local donde se colocarán los archivos en formato .csv para la carga de catálogos.
Tener el siguiente archivo con la información de la fabrica de software, el cual debe tener la siguiente información separa por pipes (|), donde:

Posición 1 = Valor para el atributo controlInterno1 (informar el nombre del Software).

Posición 2 = Valor para el atributo controlInterno2 (informar el NIT del Fabricante de Software).

Posición 3 = Valor para el atributo nombre (para el nombre de fabricante se debe colocar el valor 5170007).

Posición 4 = Valor para el atributo pdf (colocar el valor 1 para visualizar los datos del fabricante en el PDF de la representación gráfica).

Posición 5 = Valor para el atributo valor (informar la Razón Social del Fabricante de Software).

Posición 6 = Valor para el atributo xml (colocar el valor 1 para visualizar los datos del fabricante en el XML).


Es importante indicar en el campo "Nombre" en la 3ra posición del catálogo el valor 5170007 ya que esté indica como el campo "Fabricante de Software" por parte del proveedor tecnológico denominado The Factory HKA.


2.17.3 Ejemplo de utilización

  1. En el módulo Facturación (SIGAFAT), ir al menú Actualización | Facturación | Documentos Electrónicos (MATA486).
  2. Informar los siguientes parámetros para el filtrado de los Documentos a transmitir: 
  3. Ejecutar la acción Transmitir.
  4. Informar los siguientes parámetros:
  5. Validar en el log del proceso que la transmisión haya sido exitosa y que el documento se actualice con estatus autorizado (F1_FLFTEX = '6').
  6. En Otras acciones ejecutar la acción Imprimir PDF.
  7. Informar los parámetros:
  8. Validar que la representación gráfica proporcionada por The Factory HKA en la sección Pie de Página se visualice la etiquetas de Fabricante de Software.

2.18  Cálculo de Impuestos saludables ICUI/IBUA y la impresión de documentos transmitidos

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación
Función:
RutinaNombreFecha
M100ICUI.PRW

Cálculo de Entrada de impuestos saludables

07/11/2023

M460ICUI.PRWCálculo de Salida de impuestos saludables01/11/2023
M486XFUNCO.PRWFunciones genericas FE Colombia03/11/2023
M486XFUN.PRWFunciones genericas FE03/11/2023
FISA814.prwCarga de catálogos 26/10/2023
País:Colombia Pacote: 012985
Ticket:NA
Requisito/Story/Issue (informe el requisito vinculado):DMINA-21264


2.18.1 Visión general

Estatuto tributario - Articulo 513

Conforme al artículo 513 del Estatuto Tributario, titulado “Impuestos Saludables”, por el cual establecen los parámetros normativos para reportar los impuestos a bebidas Ultraprocesadas Azucaradas y Alimentos Ultraprocesados en el caso en el que el producto aplique.

Los impuestos saludables deben calcularse a los documentos de entrada como lo son Factura de Entrada(MATA101N), Documento Soporte(MATA101N), Notas de Crédito y Debito de Proveedor y Notas de ajuste(MATA466N) y a los documentos de salida como lo son Facturas de Cliente(MATA467N) y Notas de Crédito y Débito de cliente(MATA465N).

Regla de negocio.

2.18.2 Configuraciones Previas

  1. En el módulo Facturación(SIGAFAT), ir al menú Actualizaciones Archivos | Clientes.
  2. En el módulo Compras(SIGACOM), ir al menú Actualizaciones Archivos | Productos.
  3. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida.
  4. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Imp. Variables
  5. En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Definición de Catálogos (FISA812).
    1. Validar que para el catálogo S020 - Impuestos Extras y que sea la siguiente:


En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Mantenimiento de Catálogos (FISA813).

Incluir manualmente o por medio del 20ImpuestosExtras.csv, la información de los Impuestos que serán impresos como campos extras.


Ejemplo para el proceso manual



Ejemplo para el proceso por medio del archivo .CSV

Configurar el parámetro MV_PATH814, con la ruta local donde se colocarán los archivos en formato .csv para la carga de catálogos.
Tener el siguiente archivo con la información de la fabrica de software, el cual debe tener la siguiente información separa por pipes (|), donde:

Posición 1 = Valor para el atributo controlInterno1 (informar el nombre del Software).

Posición 2 = Valor para el atributo controlInterno2 (informar el NIT del Fabricante de Software).

Posición 3 = Valor para el atributo nombre (para el nombre de fabricante se debe colocar el valor 5170007).

Posición 4 = Valor para el atributo pdf (colocar el valor 1 para visualizar los datos del fabricante en el PDF de la representación gráfica).

Posición 5 = Valor para el atributo valor (informar la Razón Social del Fabricante de Software).

Posición 6 = Valor para el atributo xml (colocar el valor 1 para visualizar los datos del fabricante en el XML).

Posición 7 = Valor que se utilizará para determinar el Impuesto que se va a imprimir (colorcar el código del impuesto de la tabla SFB - Impuestos Varibles).


2.18.3 Ejemplo de utilización

Para Documento de Entrada con cálculo de impuestos saludables ICUI/IBUA

Para Documento de Salida con cálculo de impuestos saludables ICUI/IBUA

3. PROBLEMAS COMUNES

3.1 Facturas de Venta

3.1.1 Transmisión de más de 200 Facturas de Venta

Si al transmitir más de 200 documentos electrónicos desde la rutina Facturación Electrónica (MATA486), se presenta el error.log:

THREAD ERROR ([12408], cristian.hidalgo, 4069-NB) 03/06/2020 13:51:53
Application Server Work area table full (Max= 1024)
( PREVIOUS ERROR : Application Server Work area table full (Max= 1024) )
on MPSYSOPENQUERY(MPSYSOPENTABLES.PRW) 28/06/2019 18:27:43 line : 697


Solución:

Eliminar del archivo FATSCOL.INI la sección de generación del Código Único de Facturación Electrónica (CUFE), ya que es un dato que NO es enviado a los servicios web del proveedor tecnológico The Factory HKA, el CUFE es generado por proveedor tecnológico e incluido en el XML retornado dentro del nodo cbc:UUID.


Adicional se requiere contar con la siguientes solución: 9091119 DMINA-9855 DT Application Server Work area table full (Max= 1024) Documentos Electrónicos COL


4. Anexo Técnico versión 1.8 DIAN

Descripción de actualizaciones de acuerdo al Anexo Técnico de Factura Electrónica de Venta - Versión 1.8 de la DIAN, vigente a partir del 9 de Mayo de 2021.

4.1 Generales

4.2 Actualizaciones a catálogos 

La siguiente lista corresponde a conceptos de códigos nuevos, eliminados o modificados de las tablas de la DIAN consideradas en el sistema.

El usuario deberá realizar el movimiento según corresponda en la rutina SIGAFAT | Actualizaciones | Archivos | Mantenimiento de Catálogos.


Código de tabla

en el sistema


Descripción


Movimiento


Códigos afectados - Descripción

S002Tipos de Documentos de IdentidadAgrega registro47 - PEP
S003Conceptos de Notas de CréditoCambio de descripciones

3 - Rebaja o Descuento Parcial o Total

4 - Ajuste de Precio

5 - Otros



Elimina registro6 - Otros
S005Catálogo de Tributos DIANAgrega registro

08 - IC Porcentual

30 - IC Datos



Cambio de descripciones

06 - ReteRenta

22 - INC Bolsas

S009Tipos de Org. JurídicaCambio de descripciones

1 - Persona Jurídica y Asimiladas

2 - Persona Natural y Asimiladas

S014Tipos de Obligaciones - ResponsabilidadesCambio de descripciónR-99-PN - No Aplica - Otros
S017Tipo de OperaciónElimina registro

23 - NCC v1

33 - NDC v1


Nota:

4.2.1 TABLA S005 - Impuestos F. E.

En base a la última Resolución DIAN - No. 000012, la actual tabla de Tributos DIAN (S005 - Impuestos FE) corresponde a los siguientes datos:



Para consultar cualquier cambio o actualización de esté u otro catálogo de la resolución información aquí Resolución DIAN 000012



4.3 Nuevas reglas de rechazo

La lista a continuación indica los códigos que corresponden a los ID de condiciones técnicas de formato de la DIAN para la generación, transmisión, validación, expedición y recepción de documentos electrónicos.

Estas reglas de rechazo corresponden a condiciones previas, así como de nuevos casos, en los datos de los archivos XML/UBL.


ID

Descripción

Funcionalidad

FAJ71

Correo electrónico de recepción de documentos electrónicos del ecosistema de facturación electrónica de venta con validación previa.

Configurar cuenta de email en el módulo de datos fiscales del portal TFHKA-Dfactura.

FAU14

Valor total factura sin incluir anticipos.

No aplica.

FAQ01

Descuentos o cargos a nivel factura, deben reflejarse en las bases de impuestos.

El sistema ya tiene esa funcionalidad.

FAQ06, CAQ06, DAQ06

Porcentaje de descuento a nivel factura no debe ser > 100.

El sistema ya tiene esa funcionalidad.

FAQ07, CAQ07, DAQ07

Valor del cargo o descuento no debe ser mayor al monto base.

El sistema ya tiene esa funcionalidad.

FAQ09, CAQ09, DAQ09

Valor base para calcular descuento o cargo, debe ser mayor a cero, el descuento no puede superior al valor total de la factura.

El sistema ya tiene esa funcionalidad.

FAV08a, FAV08b

schemeID debe ser informado cuando el tipo de operación es “11”.

Tipo de Operación no controlada en el sistema.

FBE01

Grupo de campos de cargo o descuento a nivel ítem. Deben incluirse los campos indicador, porcentaje, monto y montoBase.

El sistema ya tiene esa funcionalidad.

FBE03, CBE03, DBE03

Indicador de cargo o descuento a nivel ítem.

El sistema ya tiene esa funcionalidad.

FBE05, CBE05, DBE05

Porcentaje de descuento en ítem no debe ser > 100.

El sistema ya tiene esa funcionalidad.

FBE06, CBE06, DBE06

Valor del descuento no puedes er superior al valor base a nivel detalle factura.

El sistema ya tiene esa funcionalidad.

FBE08, CBE08, DBE08

Valor base para calcular de cargo o descuento a nivel detalle, no debe ser mayor al valor total de la factura.

El sistema ya tiene esa funcionalidad.

FBE09, CBE09, DBE09

Código de moneda de acuerdo a la tabla de monedas.

El sistema ya tiene esa funcionalidad.

CAD09c, CAD09d

En la emisión de NCC, la fecha factura debe estar entre 5 días anteriores y hasta 10 posteriores a la fecha actual.

Ya se tiene esa funcionalidad por parte de TFHKA.

CAD12b

Tipo de NCC válido de acuerdo a la tabla de tipos de operación.

El sistema ya tiene esa funcionalidad.

CAD15b

NCC con el mismo código de divisa en todo el documento.

El sistema ya tiene esa funcionalidad.

CAJ08, DAK08

En NCC informar datos de dirección: municipio, ciudad, departamento, código departamento, dirección y país.

El sistema ya tiene esa funcionalidad.

CAJ50

Prefijo de la NCC.

El sistema ya tiene esa funcionalidad.

CAJ60

En NCC, el DV del NIT dbe ser informado.

El sistema ya tiene esa funcionalidad.

CAJ56

En NCC, informar Nombre o Razón Social de participante de consorcio.

Ya se tiene esa funcionalidad por parte de TFHKA.

CAJ57

En NCC, informar el NIT del participante de consorcio

Ya se tiene esa funcionalidad por parte de TFHKA.

CAV06, DAV06

El Valor Total de la línea de detalle, debe ser igual Cantidad x Precio Unidad - Descuentos + Recargos.

 El sistema ya tiene esa funcionalidad.

CAZ02, DAZ02

Informar la descripción de producto en NCC y NDC.

El sistema ya tiene esa funcionalidad.

CAZ12, DAZ12

Código de producto en NCC/NDC.

Se puede informar subpartida arancelaria a 10 dígitos (EXP), UNSPSC, GTIN o partida arancelaria.

Se utiliza el código “999” (Estándar de adopción del contribuyente).

CBB05, DBB05

En NCC y NDC la Unidad de medida debe corresponder con la tabla indicada por la DIAN (inciso 13.3.6 del Anexo Técnico).

El sistema ya tiene esa funcionalidad.

DAD09c, DAD09d

En la emisión de NDC, la fecha factura debe estar entre 5 días anteriores y hasta 10 posteriores a la fecha actual.

Ya se tiene esa funcionalidad por parte de TFHKA.

DAD15b

NDC con el mismo código de divisa en todo el documento.

El sistema ya tiene esa funcionalidad.

DAJ41

NDC con la descripción del identificador tributario del emisor correspondiente (Catálogo definido en la tabla 13.2.6.2 del Anexo Técnico).

El sistema ya tiene esa funcionalidad.

DAJ50

Prefijo de NDC.

El sistema ya tiene esa funcionalidad.

DAK20

En NDC indicar el nombre o razón social del adquiriente.

El sistema ya tiene esa funcionalidad.

DAK21

En NDC informar el NIT del adquiriente.

El sistema ya tiene esa funcionalidad.

DAV05

En NDC la unidad de medida del artículo solicitado debe ser de acuerdo a la tabla 13.3.6 del Anexo Técnico.

El sistema ya tiene esa funcionalidad.

FAV04b

En NF, las cantidades deben ser mayor a cero.

El sistema ya tiene esa funcionalidad.

FBF04, CAZ17, DAZ17

Informar la cantidad del bien en tipo de operación 12.

No aplica.

FBF05, CAZ18, DAZ18

Informar la unidad de medida del bien en tipo de operación 12.

No aplica.

FAS18, CAS18, DAS18

Redondeo agregado al total de impuesto.

No aplica.

FAS19, CAS19, DAS19

Código de moneda, en redondeo de impuestos, de acuerdo a la tabla 13.3.3.

No aplica.

FAX18, CAX18, DAX18

Redondeo al total del impuesto.

No aplica.

FAX19, CAX19, DAX19

Código de moneda en impuestos, de acuerdo a la tabla 13.3.3.

El sistema ya tiene esa funcionalidad.

FAV04b, CAV04b, DAV04b

Cantidad de producto en todas las líneas del documento.

El sistema ya tiene esa funcionalidad.

CDG01

Correspondencia de códigos de departamento y municipio.

El sistema ya tiene esa funcionalidad.

RUT01

Estado activo del Facturador electrónico y del Proveedor tecnológico en el RUT.

Responsabilidad de los actores involucrados, Facturador electrónico y Proveedor tecnológico.


5. Anexo Técnico versión 1.9 DIAN

Producto

Línea de producto: 

Segmento:

Módulo:SIGAFAT - Facturación
Función:
RutinaNombre TécnicoFecha
M486XFUNFunciones Genéricas de Documentos Electrónicos23/01/2024
M486XFUNCOFunciones Genéricas de Facturación Electrónica de Colombia23/01/2024
LOCXCOLFunciones localizadas de Documentos fiscales - Colombia23/01/2024
FATSECOL.INIEstructura del XML de Facturas de Exportación23/01/2024
INPUTFIELDSCOLEstructura de campos documentos de entrada para país Colombia23/01/2024
OUTPUTFIELDSCOLEstructura de campos documentos de salida para país Colombia23/01/2024
País:Colombia (COL)
Ticket:18954487
Requisito/Story/Issue (informe el requisito vinculado):DMINA-21954 (pacote 013347)


El anexo técnico 1.9, que forma parte esencial de la resolución Resolución 000165 de 01-11-2023, debe ser implementado de manera obligatoria por los emisores de facturas electrónicas a partir del 2 de febrero de 2024. Se otorga plazo hasta dicha fecha para que realicen las adecuaciones necesarias en sus sistemas de información, cumpliendo con lo establecido en esta resolución, a continuación se informan los cambios mas relevantes.


Debido a que se aplazó la obligatoriedad del Anexo 1.9 para el 01 de Mayo de 2024, se activó el parámetro MV_ANEXO19, para activar la funcionalidad, el cual deberá ser configurado con el valor .T..

Para tener activo el parámetro se deben tener en el repositorio las siguientes rutinas, con fecha igual o superior:

RutinaNombre TécnicoFecha
M486XFUNFunciones Genéricas de Documentos Electrónicos28/02/2024
M486XFUNCOFunciones Genéricas de Facturación Electrónica de Colombia27/02/2024
LOCXCOLFunciones localizadas de Documentos fiscales - Colombia27/02/2024
INPUTFIELDSCOLEstructura de campos documentos de entrada para país Colombia28/02/2024
OUTPUTFIELDSCOLEstructura de campos documentos de salida para país Colombia01/03/2024
FATSECOL.INIEstructura del XML de Facturas de Exportación29/02/2024
FATECOL.INIEstructura del XML de Notas de Crédito29/02/2024

Creación del parámetro en la tabla SX6 - Parámetros:

Ajustes en el Estructura del XML de Facturas de Exportación:

Campo

Valor

Nombre de Var.MV_ANEXO19
Tipo3 - Lógico
Cont. Esp
DescripciónPermite activar la funcionalidad del Anexo 1.9 para el país Colombia, con el valor .T. se activa, en caso contrario queda desactivado.


5.1 Generales

5.2 Separación de catálogos del anexo técnico

Dentro del proceso de revisión, se ha tomado la decisión de eliminar los catálogos de datos del anexo. Este ajuste tiene la finalidad de facilitar la modificación de los valores de manera más ágil y eficiente. En adelante, estos catálogos permanecerán fuera del anexo y estarán disponibles en una caja de herramientas independiente. Además, se establecerá un proceso de actualización de los catálogos de forma independiente a las resoluciones vigentes.

5.3 Se elimina el redondeo al total de impuesto a nivel de detalle y total para facturas, notas crédito y débito

Reglas eliminadas:

FAS18, CAS18,DAS18:

Redondeo aplicado al total del impuesto a nivel de FacturaGeneral, nota crédito, nota débito (no se manejaría el atributo RoundingAmount del nodoTaxTotal que pertenece al Invoice/CreditNote/DebitNote).


FAX18, CAX18, DAX18:

Redondeo aplicado al total del impuesto a nivel de FacturaDetalle, nota crédito, nota débito(no se manejaría el atributo RoundingAmount del nodoTaxTotal que pertenece al InvoiceLine/CreditNoteLine/DebitNoteLine)


5.4 Se elimina la regla de 10 días posterior e inferior a la fecha y se ha incorporado una nueva regla de rechazo

Reglas eliminadas:

FAD09c, CAD09c, DAD09c:

La fecha de emisión no puede ser inferior a 10 días calendarios de la fecha actual.


FAD09d, CAD09d, DAD09d:

La fecha de emisión no sea posterior a 10 días calendarios de la fecha actual.

Reglas nuevas:

FAD09e, CAD09e, DAD09e

Valida que fecha de generación sea igual a la fecha de firma, aplica para facturas, notas crédito y débito.

5.5 Medios de pago

Anteriormente, se establecía la obligatoriedad de indicar el medio de pago únicamente en las facturas de contado. Sin embargo, según el Anexo 1.9, esta obligación se extenderá tanto a las facturas de contado como a las de crédito.

5.6 Nombre o Razón social del emisor debe coincidir al informado en el RUT

Se llevará a cabo una validación para asegurar que el Número de Identificación Tributaria (NIT) y el nombre del emisor de las facturas concuerden con los datos registrados en el Registro Único Tributario (RUT), tanto en el proceso de emisión como en el de recepción de dichas facturas.

Reglas nuevas:

FAJ44a: NIT no autorizado a facturar electrónicamente.

FAJ43b: Nombre o Razón Social del emisor debe corresponder al informado en el RUT y debe coincidir con el NIT informado.

FAJ44b: NIT o documento de identificación del emisor debe corresponder al informado en el RUT y debe coincidir con la Razón Social o Nombre comercial registrado.

FAJ43a: Nombre o Razón Social del emisor debe ser informado.

5.7 Se crea el tipo de documento PPT

Dentro del catálogo de tipo de documento se crea PPT (Permiso de protección temporal) con el código 48, el cual es un documento de identificación para personas en movilidad humana provenientes de Venezuela, este documento permite aplicar a los programas sociales del estado, y acceder de manera amplia a derechos como la salud, la educación y el trabajo. (Tabla S002 - Tipos de Docs de Identidad de Mantenimiento de Tablas de Protheus).

5.8 Factura de exportación

Las facturas de exportación deben expresarse en COP, y se crea una segmento XML para poner los valores en otra moneda, se puede colocar en las dos monedas en la representación gráfica.

5.9 Nuevos tipos de operación

Para el control cambiario se Incluyen dos modos de operación (Compra Divisas y Venta Divisas) con los códigos 15 y 16 respectivamente (Tabla S017- Tipos de operación de Mantenimiento de Tablas de Protheus).

5.10 Cambios incorporados en las notas crédito

5.11 Configuraciones

Para la funcionalidad del Anexo 1.9 en Protheus se deben de realizar los siguientes ajustes:

Para la Factura de Exportación, agregar las siguientes líneas para la generación del nodo cac:PaymentExchangeRate, el cual generará en el SOAP Request que es enviado a The Factory HKA en nodo de Tasa de Cambio.


Crear los siguientes campos para la funcionalidad de Transmisión de Notas de Crédito de Cliente (NCC) con tipo de Operación 22 (Nota de Crédito sin referencia a facturas) y Notas de Débito de Cliente (NDC) con tipo de Operación 32 (Nota de débito sin referencia a facturas):

Tabla SF1- Encabezado Doc. de Entrada.


CampoF1_PTOEMIS
TipoC
Tamaño7
Decimal0
Formato99-9999
TítuloPeriod Fact
DescripciónPeriodo de Facturación
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Opciones
When
Relación
Val. Sistema

Vazio() .Or. (FindFunction("LxVldPeri") .And. LxVldPeri('SF1'))

HelpDigite el mes y año del periodo de facturación en formato "MM-YYYY.


Tabla SF2- Encabezado Doc. de Salida.


CampoF2_PTOEMIS
TipoC
Tamaño7
Decimal0
Formato99-9999
TítuloPeriod Fact
DescripciónPeriodo de Facturación
Nivel1
UtilizadoSi
ObligatorioNo
BrowseNo
Opciones
When
Relación
Val. Sistema

Vazio() .Or. (FindFunction("LxVldPeri") .And. LxVldPeri('SF2'))

HelpDigite el mes y año del periodo de facturación en formato "MM-YYYY.