...
Línea de Producto: | Microsiga Protheus. |
Segmento: | Servicios- Mercado Internacional.
|
Módulo: | SIGAFAT- Facturación.
|
Rutina: | Rutina | Nombre Técnico | LOCXFUNA.PRX | Funciones Genéricas de Localizaciones | LOCXNF.PRW | Control de Notas Fiscales | LOCXNF2.PRW | Cálculos en Notas Fiscales | MATA486.PRW | Factura Electrónica | M486PDFCOL.PRW | Impresión de Representación Impresa Facturación Electrónica Colombia | M486XFUN.PRW | Funciones de Factura Electrónica | FISA812.PRW | Definición de Catálogos | FISA813.PRW | Mantenimiento de Catálogos | FISA814.PRW | Carga de Catálogos | UPDFATMI.PRW | Actualización al Diccionario de Datos | FATSCOL.INI | Script de generación de archivos XML; NF y NDC nacional | FATECOL.INI | Script de generación de archivos XML; NCC nacional y exportación | FATSECOL.INI | Script de generación de archivos XML; NF y NDC de exportación | MATA468N.PRX | Generación Notas Fiscales | WSNFECOL.PRW | Cliente de servicio web - Ambiente de homologación | WSNFECOLPROD.PRW | Cliente de servicio web - Ambiente productivo | MATXFUNC.PRX | Funciones generales internas |
Rutina(s) Involucrada(s) | Nombre Técnico | UPDMODMI.PRW | Actualización al Diccionario de Datos | MATXFUNB.PRX | Funciones 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.
|
...
Grupo: MATA486
Orden | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
Pregunta
| ¿Tipo de Documento?
| ¿Serie?
| ¿Estatus | ¿Fecha Inicial? | ¿Fecha Final? | ¿Tipo Nota Ajuste? | ¿Envío a Email? |
Tipo | N
| C | C | D | D | N | N |
Tamaño | 1 | 3 | 1 | 8 | 8 | 1 | 1 |
Variable | MV_PAR01 | MV_PAR02 | MV_PAR03 | MV_PAR04 | MV_PAR05 | MV_PAR06 | MV_PAR07 |
Validación |
|
|
|
|
|
|
|
Objeto | C-Combo | G - Get | G - Get | G - Get | G - Get | C-Combo | C - 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 |
Aviso |
---|
|
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 | 02 | 03 |
Pregunta
| ¿Serie de la Factura? | ¿Factura Inicial? | ¿Factura Final? |
Tipo | C | C | C |
Tamaño
| 3 | 13 | 13 |
Validación |
|
| !Empty(MV_PAR03) .And. MV_PAR02<=MV_PAR03 |
Objeto | G | G | G |
Consulta Estándar | SERNF |
|
|
Preselección |
|
|
|
Opciones |
|
|
|
...
Campo | F1_TIPREF |
Tipo | C |
Tamaño | 1 |
Decimal |
|
Formato | @! |
Título | Tipo Nota CrC |
Descripción | Tipo de nota de Credito |
Nivel | 1 |
Utilizado | Sí |
Obrigatório | Sí |
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. |
...
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:
Tabla 4 Tipos de Impuesto
...
Código
...
Descripción
...
01
...
IVA
...
02
...
ICA
...
03
...
ICO
...
04
...
Contribuciones
...
05
...
Subcódigo
...
Retención en la fuente por renta
...
3
...
Compras
...
5
...
Honorarios
...
6
...
Servicios Generales
...
7
...
Transporte de Carga
...
06
...
Retención en la fuente por ICA
...
07
...
Retención en la fuente por IVA
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.
...
Atributo | Tamaño | Path |
---|
numeroDocumento | 20 | fe:Invoice/cac:OrderReference/cbc:ID |
fecha | 10 | fe:Invoice/cac:OrderReference/cbc:IssueDate |
...
Informações |
---|
|
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-05. Solo se permite informar una orden de compra de referencia por factura. IMPORTANTE: Se recomienda no utilizar el / en los datos de la Orden de Compra ya que es el caracter utilizado como separador de la información necesaria para la Orden de Compra. |
7.- Para el nodo de actividadEconomicaCIIU se deberá configurar el campo C.Actividad (A1_ATIVIDAD) del Cliente.
...
2. Creación de consulta estándar en el archivo SXB - Consulta Estándar:
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
COL017 |
21 | 01 | RE | Tipo Operación | F3I |
COL017 | 2 | 01 | 01 | Tipo Operación | F812SXB("S017","Codigo",{||Substr(F3I_CONTEU,85,3)==IIf(FunName()$'MATA410','NF ',cEspecie)}) |
COL017 | 5 | 01 |
|
| VAR_IXB |
3. Creación de tablas en el archivo SX2 - Tablas:
...
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.
Informações |
---|
Verifique la configuración actual de la Tabla S005-Impuestos F.E. |
b) En b) En el módulo Facturación (SIGAFAT) desde Actualizaciones | Archivos | Impuestos Variables (MATA995).
...
Parámetro | Contenido | Descripción |
---|
MV_CFDIAMB | 2 | Indica el ambiente de trabajo de certificación de factura electrónica: 1=Producción, 2=Homologación. |
MV_PROVFE | DFACTURA | Identifica el Fact. Electrónico/Prov. Tecnológico servicios de certificación de factura electrónica. Indicar alguno de estos: TSS o DFACTURA |
MV_TIPOFE | 1 | Indica el modelo de transmisión electrónica, 0 o vacío = Val. Posterior y 1 = Val. Previa. |
MV_TKN_EMP | cf5a933c22080afd84ca4e699983e3952c811dd9 | Token Empresa - The Factory HKA. |
MV_TKN_PAS | 4219be96602655094acb0fe281ab1bf7e4ad9c46 | Token Password - The Factory HKA. |
MV_WSRTSS | http://demoemision21v4.thefactoryhka.com.co/ws/v1.0/Service.svc?wsdl | URL del servicio web. |
MV_CFDDOCS | GetSrvProfString('startpath','')+'\cfd\facturas\' | Directorio donde se grabaran las facturas electrónicas. |
MV_ALTNUM | 1 | Verifica si el sistema permite o no, o si solamente informa, cuando se modifica el número de la factura. 1 - Informa. 2 - Pregunta. 3 - No permite. |
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.
...
- Documento Soporte.
- Transmisión de Documento Soporte.
- Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
- Capturar los parámetros correspondientes para realizar el filtro de documentos.
¿Tipo de Documento? seleccionar “Docto. Soporte”.
¿Serie? seleccionar “DCS”.
¿Estatus? seleccionar “0” para obtener todos los documentos.
Asignar las Fechas Inicio/Fin. - Confirmar.
- En la pantalla principal verificar que exista el Documento Soporte.
- Dar clic en el botón “Transmitir”.
- Asignar la serie “DCS” y el Número de Documento Inicial y Final.
- Confirmar Transmisión.
- Revisar el Log de transmisión.
- Archivo XML del Documento Soporte.
Los archivos XML autorizados se crean en la carpeta configurada en el parámetro MV_CFDDOCS + "/autorizados/".
- Revisar que el elemento "tipoDocumento" sea igual a "05" que indica que se transmitió un Documento Soporte. Ejemplo:
<cbc:InvoiceTypeCode>05</cbc:InvoiceTypeCode> - Dentro del elemento FacturaDetalle (cac:InvoiceLine) revisar que se haya creado el sub-elemento de "cac:InvoicePeriod" y revisar que informen los siguientes sub-elementos:
- StartDate: Fecha de emisión del documento.
- DescriptionCode: Forma de generación. El número "1" que indica que la forma de generación es "Por Operación".
- Description: Descripción de Forma de generación.
Ejemplo:
<cac:InvoicePeriod>
<cbc:StartDate>2022-04-11</cbc:StartDate>
<cbc:DescriptionCode>1</cbc:DescriptionCode>
<cbc:Description>Por operación</cbc:Description>
</cac:InvoicePeriod>
- Revisar que el elemento "tipoOperacion" sea igual a "10" si el Proveedor es "Residente", si el Proveedor es "No Residente" se informará "11". Ejemplo:
<cbc:CustomizationID>10</cbc:CustomizationID> - Dentro del elemento Proveedor (<cac:AccountingSupplierParty>) revisar que se haya informado el subelemento "detallesTributarios" y sus "Tributos". Ejemplo:
<cac:TaxScheme><cbc:ID>01</cbc:ID><cbc:Name>IVA</cbc:Name></cac:TaxScheme> - Revisar que se informen correctamente los valores del Documento Soporte (datos del Proveedor, Empresa emisora, Productos, Totales, etc..)
- Monitor de Transmisión.
- Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
- Capturar los parámetros correspondientes para realizar el filtro de documentos.
¿Tipo de Documento? seleccionar “Docto. Soporte”.
¿Serie? seleccionar “DCS”.
¿Estatus? seleccionar “0” para obtener todos los documentos.
Asignar las Fechas Inicio/Fin. - Confirmar.
- Dar clic en el botón “Monitor”.
- Asignar la Serie “DCS” y el Número de Documento Inicial y Final.
- Confirmar.
- Revisar el estatus del Documento Soporte.
- Imprimir PDF.
- Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
- Capturar los parámetros correspondientes para realizar el filtro de documentos.
¿Tipo de Documento? seleccionar “Docto. Soporte”.
¿Serie? seleccionar “DCS”.
¿Estatus? seleccionar “0” para obtener todos los documentos.
Asignar las Fechas Inicio/Fin. - Confirmar.
- Dar clic en el botón “Otras Acciones”.
- Seleccionar la opción "Imprimir PDF".
- Asignar la Serie “DCS”, el Número de Documento Inicial y Final e indicar el Formato PDF.
- Confirmar.
- Revisar la información impresa en el archivo PDF del Documento Soporte.
- Recuperar XML.
- Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
- Capturar los parámetros correspondientes para realizar el filtro de documentos.
¿Tipo de Documento? seleccionar “Docto. Soporte”.
¿Serie? seleccionar “DCS”.
¿Estatus? seleccionar “0” para obtener todos los documentos.
Asignar las Fechas Inicio/Fin. - Confirmar.
- Dar clic en el botón “Otras Acciones”.
- Seleccionar la opción "Recuperar XML"
- Asignar la Serie “DCS”, el Número de Documento Inicial y Final, y la Carpeta dónde será guardado el archivo.
- Confirmar.
- Revisar que el archivo XML del Documento Soporte se haya almacenado en la carpeta indicada.
- Uso del parámetro MV_ALTNUM
- El sistema actúa de acuerdo al valor que se configure siempre y cuando el numero de documento asignado ya exista, siendo:
MV_ALTNUM = 1 Se reasigna el consecutivo que corresponda de manera automática.
Image Added
MV_ALTNUM = 2 El sistema pregunta al usuario si desea que se actualice el número de documento.
Image Added
MV_ALTNUM = 3 No se reasigna número, el usuario podrá editar el número de documento.
Image Added
En caso de editar el Núm. de Doc. (F1_DOC), y si se introduce un número de documento mayor al consecutivo que corresponda, el sistema reasigna automáticamente el número y presenta un aviso de la acción realizada.
2.10.4 Diccionario de datos
...
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación. |
---|
Función: | Rutinas | Nombre Técnico | Fecha |
---|
MATA486 | Documentos Electrónicos | 31/07/2022 | M486XFUN | Funciones genéricas para generación de XML para Colombia | 29/07/2022 | M486PDFCOL | Impresión de Representación Impresa Facturación Electrónica Colombia | 29/07/2022 |
|
---|
País: | Colombia (COL) / Pacote atusx: 010898 |
---|
Ticket: | 14200456 |
---|
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-15818 |
---|
...
En la rutina de Funciones genéricas para generación de XML para Colombia (M486XFUNCO):
Se modificó la Función para el llenado del objeto oWSfactura solicitado por TheFactory HKA, con datos obtenidos del XML (M486XMLHKA) para que si existe el parámetro ¿Envío de Email? (MV_PAR06) y está informado con la opción Sí, se envíen los siguientes atributos al web service de The Factory HKA:
En la clase Destinatarios:
Aviso |
---|
|
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) |
En la clase Destinatarios:
- El atributo canalDeEntrega sea informado con valor 0 (para opción de envío por Email)
- El atributo email, donde si existe el campo Email
- El atributo canalDeEntrega sea informado con valor 0 (para opción de envío por Email)
- El atributo email, donde si existe el campo Email Recep. (AI0_RECE) en los Complementos del Cliente se tome de ahí el para el envío, en caso de no existir o que se encuentre vacío se toma como opción de email de envío el valor configurado en el campo Email (A1_EMAIL).
...
En el grupo de preguntas MATA486, agregar la pregunta 06:
Orden | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
Pregunta
| ¿Tipo de Documento?
| ¿Serie?
| ¿Estatus | ¿Fecha Inicial? | ¿Fecha Final? | ¿Tipo Nota Ajuste? | ¿Envío a Email? |
Tipo | N
| C | C | D | D | N | N |
Tamaño | 1 | 3 | 1 | 8 | 8 | 1 | 1 |
Variable | MV_PAR01 | MV_PAR02 | MV_PAR03 | MV_PAR04 | MV_PAR05 | MV_PAR06 | MV_PAR07 |
Validación |
|
|
|
|
|
|
|
Objeto | C-Combo | G - Get | G - Get | G - Get | G - Get | C-Combo | C - 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 |
Aviso |
---|
|
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:
...
- Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
- Capturar los parámetros correspondientes para realizar el filtro de documentos.
¿Tipo de Documento? seleccionar “Docto. Soporte”.
¿Serie? seleccionar “DCS”.
¿Estatus? seleccionar “0” para obtener todos los documentos.
Asignar las Fechas Inicio/Fin. - Confirmar.
- Dar clic en el botón “Otras Acciones”.
- Seleccionar la opción "Imprimir PDF".
- Asignar la Serie “DCS”, el Número de Documento Inicial y Final e indicar el Formato PDF.
- Confirmar.
- Revisar la información impresa en el archivo PDF del Documento Soporte, y validar que en la parte inferior en la sección Medios de Pago se muestre la información de manera correcta.
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.
Image Removed
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
- En la generación de NCC/NDC se eliminan los códigos de tipo de operación que hacen referencia a facturas del modelo de validación posterior.
- Los Grupos de Direcciones (nodos de direcciones del emisor y del receptor) ahora son opcionales, sin embargo, el comprobante electrónico continua incluyendo estas informaciones.
- Anticipo a la factura, dato informativo opcional en el comprobante electrónico. El sistema no usa esta información.
- Aproximaciones de impuesto sobre las ventas cobradas. Proceso opcional que no es necesario adoptar en el sistema.
- Código postal de la dirección del adquiriente. Actualmente el sistema no usa la tabla correspondiente, el usuario registra el dato que proporciona el adquiriente, sin restricción.
- Tipos de operación no controlados en el sistema:
- Sector Transporte
- Sector Salud
- Sector Notaria
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
...
3 - Rebaja o Descuento Parcial o Total
4 - Ajuste de Precio
5 - Otros
...
08 - IC Porcentual
30 - IC Datos
...
06 - ReteRenta
22 - INC Bolsas
...
1 - Persona Jurídica y Asimiladas
2 - Persona Natural y Asimiladas
...
23 - NCC v1
33 - NDC v1
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 |
---|
M486XFUNCO | Funciones genéricas para generación de XML para Colombia | 17/04/2023 |
Compilar el punto de entrada M486PEADJU, el cual recibe los siguientes parámetros:
- Serie del documento.
- Folio del documento.
- Código del Cliente.
- Código de la Tienda.
- Prefijo (f-Factura, c-Nota de Crédito, d-Nota de Débito y n - Nota de Ajuste)
2.13.3 Ejemplo del Punto de Entrada
Bloco de código |
---|
title | Ejemplo de M486PEADJU |
---|
|
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 |
---|
MATA486 | Documentos Electrónicos
| 17/04/2023 |
Compilar el punto de entrada M486PELEYE.
2.14.3 Ejemplo del Punto de Entrada
Bloco de código |
---|
title | Ejemplo de M486PELEYE |
---|
|
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 |
---|
MATA486 | Documentos Electrónicos
| 17/04/2023 |
Compilar el punto de entrada M486PESTA.
2.15.3 Ejemplo del Punto de Entrada
Bloco de código |
---|
title | Ejemplo de M486PESTA |
---|
|
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 |
---|
FISA812 | Definición de Catálogos. | 25/04/2023 |
FISA814 | Carga de Catálogos. | 25/04/2023 |
FISA827 | Registro Responsabilidades/Obligaciones DIAN y Tributos. | 27/04/2023 |
FATXFUMI | Funciones genéricas para Facturación - Mercado Internacional | 18/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) |
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre Técnico | Fecha |
---|
M486XFUNCO | Funciones Genéricas FE Colombia | 13/10/2023 | FISA814 | Carga 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:
Image Added
Informações |
---|
|
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
Image Added
Image Added
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).
Image Added
Informações |
---|
|
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
- En el módulo Facturación (SIGAFAT), ir al menú Actualización | Facturación | Documentos Electrónicos (MATA486).
- Informar los siguientes parámetros para el filtrado de los Documentos a transmitir:
- ¿Tipo de Documento? = Seleccionar “Factura”.
- ¿Serie? = <Serie de la Factura a transmitir>.
- ¿Estatus? = Seleccionar la opción “0”, para obtener todos los Documentos, sin realizar filtrado por estatus.
- Informar el rango de Fecha Inicial y Final para considerar el filtrado por la fecha de emisión del Documento a transmitir.
- Ejecutar la acción Transmitir.
- Informar los siguientes parámetros:
- ¿Serie de la Factura? = <Serie de la Factura a transmitir>
- ¿Factura Inicial? = <Folio Inicial de la Factura a transmitir>
- ¿Factura Final? = <Folio Final de la Factura a transmitir>
- 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').
- En Otras acciones ejecutar la acción Imprimir PDF.
- Informar los parámetros:
- ¿Serie de Documento? = <Serie de la Factura de Venta creada en las pre-condiciones>.
- ¿Documento Inicial? = <Folio de la Factura de Venta creada en las pre-condiciones>.
- ¿Documento Final? = <Folio de la Factura de Venta creada en las pre-condiciones>.
- 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.
Image Added
2.18 Cálculo de Impuestos saludables ICUI/IBUA y la impresión de documentos transmitidos
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre | Fecha |
---|
M100ICUI.PRW | Cálculo de Entrada de impuestos saludables | 07/11/2023 | M460ICUI.PRW | Cálculo de Salida de impuestos saludables | 01/11/2023 | M486XFUNCO.PRW | Funciones genericas FE Colombia | 03/11/2023 | M486XFUN.PRW | Funciones genericas FE | 03/11/2023 | FISA814.prw | Carga 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.
- Para los documentos de entrada o de salida se realizará el cálculo cuando el documento tenga un producto con el campo ¿Imp Salud? igual a "S - Si", si el producto tiene informado el campo ¿Imp Salud? igual a "N - No" o esta vacio o el campo no existe, el impuesto no será calculado.
2.18.2 Configuraciones Previas
- En el módulo Facturación(SIGAFAT), ir al menú Actualizaciones | Archivos | Clientes.
- Configurar un Cliente con los valores estandar.
- En el módulo Compras(SIGACOM), ir al menú Actualizaciones | Archivos | Productos.
- Configurar un Producto con el campo ¿Imp Salud? igual a "S - Si"
- En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida.
- Configurar un Tipo de Salida, con cálculo de Impuesto a los productos comestibles.
- Image Added
- En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Imp. Variables
- Configurar el impuesto ICUI:
- Impuesto (FB_CODIGO): CUI
- Descripción (FB_DESCR): PRODUCTOS COMESTIBLES ULTRAPRO
- Fórmula Entrada (FB_FORMENT): M100ICUI
- Fórmula Salida (FB_FORSAI): M460ICUI
- % Alícuota (FB_ALIQ): 10
- Cpo del L.F. (FB_CPOLVRO): C
- Clase Impuesto (FB_CLASSE): I-Impuesto
- Impuesto FE (FB_IMPSAT): ZZ
- Image Added
- En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Definición de Catálogos (FISA812).
- Validar que para el catálogo S020 - Impuestos Extras y que sea la siguiente:
Image Added
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
Image Added
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).
Image Added
2.18.3 Ejemplo de utilización
Para Documento de Entrada con cálculo de impuestos saludables ICUI/IBUA
- En el Encabezado informar del Documento informar los campos:
- Proveedor (F1_FORNECE)
- Tienda (F1_LOJA)
- Serie (F1_SERIE)
- Num. de Doc. (F1_DOC)
- En los Ítems del Documento informar los siguientes campos:
- Producto (D1_COD) - campo ¿Imp Salud? igual a "S - Si"
- Cantidad (D1_QUANT)
- Valor Unit. (D1_VUNIT)
- Valor Total (D1_TOTAL)
- Tipo Entrada (D1_TES)
- En la pestaña "Impuestos" en el pie del Documento, validar el cálculo de impuestos saludables ICUI/BUA
Para Documento de Salida con cálculo de impuestos saludables ICUI/IBUA
- En el Encabezado informar del Documento informar los campos:
- Cliente (F2_CLIENTE)
- Tienda (F2_LOJA)
- Serie Docto. (F2_SERIE)
- N. Documento (F2_DOC)
- En los Ítems del Documento informar los siguientes campos:
- Producto (D2_COD) - campo ¿Imp Salud? igual a "S - Si"
- Cantidad (D2_QUANT)
- Valor Unit. (D2_PRCVEN)
- Valor Total (D2_TOTAL)
- Tipo Salida (D2_TES)
- En la pestaña "Impuestos" en el pie del Documento, validar el cálculo de impuestos saludables ICUI/IBUA
2.19 Rechazos al transmitir una Factura de Exportación (ZE02,FAR02,FAR03).
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre Técnico | Fecha |
---|
M486XFUNCO | Funciones Genéricas de Facturación Electrónica - Colombia | 07/05/2024 | FATSECOL | Script de generación de archivos XML; NF y NDC de exportación | 08/05/2024 |
|
---|
País: | Colombia (COL) |
---|
Ticket: | 20049456 |
---|
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23201 |
---|
SITUACIÓN/REQUISITO
En la rutina de Documentos Electrónicos (MATA486), al intentar transmitir una Factura de Exportación (NF) se presenta las siguientes reglas de rechazo:
- ZE02 ,Valor de la Firma inválido.
- FAR02, Descargo de Responsabilidad - "Remítase a regla FAD15b ya que al cumplirse dicha regla verifica que este elemento corresponder al mismo valor informado en DocumentCurrencyCode.
- FAR03, Descargo de Responsabilidad - "SourceCurrencyBaseRate trae valor diferente a 1.00.
SOLUCION
En la rutina de Funciones Genéricas de Facturación Electrónica - Colombia (M486XFUNCO):
En la función Función para llenado de oWSfactura solicitado por TheFactory HKA, se realiza el ajuste para cuando el documento es una Factura de Exportación, envié en los Datos adicionales (oWSextras) el valor del campo extra "FEXP2".
Regla de Rechazo ZE02- Mensaje: Valor de la Firma inválido
En la INI de Script de generación de archivos XML; NF y NDC de exportación (FATSECOL):
Para las reglas de rechazo FAR02 y FAR03 se requiere modificar las siguientes lineas en al archivo INI.
Nota |
---|
|
(PRE) _aTotal[001] += ' <cbc:SourceCurrencyCode>' + "COP" + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:SourceCurrencyBaseRate>' + Alltrim(Str(SF2->F2_TXMOEDA,11,2)) + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:TargetCurrencyCode>' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) |
2.20 Transmisión de Factura de Venta (NF), Nota de Crédito (NCC) y Nota de Débito con Cliente Nacional con Moneda diferente de 1-Pesos (Anexo 1.9)
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre Técnico | Fecha |
---|
M486XFUN | Funciones Genéricas de Documentos Electrónicos | 27/06/2024 | M486XFUNCO | Funciones Genéricas de Facturación Electrónica de Colombia | 25/06/2024 | FATSCOL.INI | Estructura del XML de Documentos de Salida | 26/06/2024 | FATECOL.INI | Estructura del XML de Documentos de Entrada | 26/06/2024 | FATSECOL.INI | Estructura del XML de Documentos de Exportación | 26/06/2024 |
|
---|
País: | Colombia (COL) |
---|
Ticket: | 20240417 |
---|
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23601 |
---|
SITUACIÓN/REQUISITO
En la rutina de Documentos Electrónicos (MATA486), al realizar la transmisión de una Factura de Venta (NF), Nota de Crédito de Cliente (NCC) o Nota de Débito de Cliente (NDC) con Cliente Nacional no está realizando la conversión de los montos a Pesos Colombianos (COP) y los atributos MonedaOrigen, MonedaDestino, BaseMonedaOrigen y BaseMonedaDestino se envían invertidos, lo cual presenta los siguientes rechazos:
FAR02, Descargo de Responsabilidad - "Remítase a regla FAD15b ya que al cumplirse dicha regla verifica que este elemento corresponder al mismo valor informado en DocumentCurrencyCode.
FAR03, Descargo de Responsabilidad - "SourceCurrencyBaseRate trae valor diferente a 1.00
Al realizar la transmisión de una Factura de Venta de Exportación (Cliente Extranjero), en el SoapRequest en los nodos direccionCliente y direccionFiscal, se solicita que sólo se envíen los atributos Dirección y País.
SOLUCION
En la rutina de Funciones Genéricas de Documentos Electrónicos (M486XFUN):
En las Funciones que generan los nodos de Impuestos a nivel encabezado y detalle (fGetTaxas/fGetTaxDet), se desactivó el uso del parámetro MV_ANEXO19, que permitía desactivar la funcionalidad del Anexo 1.9, el cual ya es obligatorio a partir del 01 de Mayo del 2024, y se eliminó condición de que el Cliente sea Extranjero (A1_EST igual a 'EX') para que la conversión a moneda Pesos Colombianos (COP) de los Impuestos y la conversión se realizará si la especie del documento es Factura de Venta (NF), Nota de Crédito de Cliente (NDC) o Nota de Débito de Cliente (NDC) y la Moneda (F1_MOEDA/F2_MOEDA) es diferente de 1.
En la rutina de Funciones Genéricas de Facturación Electrónica de Colombia (M486XFUNCO):
Se realizaron los siguientes ajuste, que aplican si el Cliente es Extranjero (A1_EST = 'EX') o Nacional, y la Moneda DIAN (CTO_MOESAT) de la Moneda es diferente de (COP) :
- El atributo moneda se envía con el valor COP.
- Se envían los campos extras FEXP1, FEXP2 y FEXP3, para activar el UBL Extensión y enviar los valores en la moneda original del Documento.
- Se realiza ajuste para que no se envié en los campos extras la tasa de cambio para las Facturas de Exportación o Nacional.
Se realiza ajuste para que al transmitir una Factura de Venta (NF), Nota de Crédito de Cliente (NCC) o Nota de Débito de Cliente (NDC), si el Cliente es Extranjero (A1_EST igual a 'EX') en los nodos direccionCliente y direccionFiscal del Soap Request, se envien únicamente los atributos Direccion y Pais.
En los archivos de la Estructura del XML de Documentos de Salida y Estructura del XML de Documentos de Entrada (FATSCOL.INI/FATECOL.INI):
Se realizaron los siguientes ajustes, para cuando la moneda del documento es diferente de la moneda local:
- Informar el atributo SourceCurrencyCode con el valor COP.
- Informar el atributo SourceCurrencyBaseRate con el valor del campo Tasa Moneda (F1_TXMOEDA/F2_TXMOEDA).
- Informar el atributo TargetCurrencyCode con el valor del campo Moneda DIAN (CTO_MOESAT) de la moneda del documento.
- Realizar la conversión del Descuento y Precio de Venta para cada uno de los ítems.
En el archivo de la Estructura del XML de Documentos de Exportación (FATSECOL.INI): - Se elimina el uso del parámetro MV_ANEXO19, que permitía desactivar la funcionalidad del Anexo 1.9, el cual ya es obligatorio a partir del 01 de Mayo del 2024.
- Se realiza conversión del atributo LineExtensionAmount del nodo InvoiceLine/DebitNoteLine, para enviar de manera correcta el atributo MontoBase del nodo Descuentos del Soap Request.
2.20.1 Configuraciones Previas
Realizar los ajustes que se indican en color azul para cada uno de los archivos FATSCOL.INI ,FATECOL.INI y FATSECOL.INI:
Informações |
---|
|
FATSCOL.INI //FATSCOL.INI -- NFE Colombia v2 - Resolucion 0019 / FEB. 2016 [XXX POSICIONAMENTOS] (PRE) SA2->(DbSetOrder(1)) (PRE) _aTotal[116] := If(SF2->(ColumnPos("F2_MARK")) > 0 ,If(SF2->F2_MARK=='S'.AND. Alltrim(SF2->F2_TIPOPE) $'10|11', .T.,.F. ) , .F.) (PRE) If(_aTotal[116] ,SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(_aTotal[116] ,SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI" .AND. !_aTotal[116] ,SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.) (PRE) ( If(!_aTotal[116],AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)), AI0->(MSSeek(xFilial("AI0")+SA2->(A2_CLIENTE+A2_LOJCLI)))), .T.) [XXX INICIALIZACION] (PRE) SD2->(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[117] := IIF(_aTotal[116] .AND. SF2->(ColumnPos("F2_TIPNOTA")) > 0, SF2->F2_TIPNOTA , "") (PRE) _aTotal[033] := ALLTRIM (SF2->F2_ESPECIE) (PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM) (PRE) _aTotal[093] := "" (PRE) _aTotal[094] := "" (PRE) _aTotal[095] := DtoS(SF2->F2_EMISSAO) (PRE) _aTotal[095] := Left(_aTotal[095],4) + "-" + Substr(_aTotal[095],5,2)+ "-" + Right(_aTotal[095],2) (PRE) _aTotal[096] := SF2->F2_HORA (PRE) _aTotal[097] := fGetTaxas(SF2->F2_DOC, SF2->F2_SERIE, SF2->F2_CLIENTE, SF2->F2_LOJA,SF2->F2_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] := {"SD2",""} (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" , IIF( _aTotal[116] , "n" , "f" ) ) ) ) (PRE) _aTotal[106] := M486XHEX(PADR( ALLTRIM( substr( SF2->F2_DOC , 4 , Len(SF2->F2_DOC) - 3 ) ) , 10 , "0" ),10) (PRE) _aTotal[107] := IIF(AllTrim(SF2->F2_ESPECIE)=="NDC" .OR. _aTotal[116],fGetRef(SF2->F2_DOC, SF2->F2_SERIE, SF2->F2_CLIENTE, SF2->F2_LOJA,SF2->F2_ESPECIE,_aTotal[117]),"") (PRE) _aTotal[108] := "" (PRE) _aTotal[109] := Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_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='" + SF2->F2_SERIE + "' AND FP_ESPECIE= '" + IIf(_aTotal[033] == "NF","1",IIf(_aTotal[116] ,"8","3")) + "' AND FP_NUMINI <='" + SF2->F2_DOC + "' AND FP_NUMFIM >='" + SF2->F2_DOC + "' AND FP_ATIVO ='1'" (PRE) _aTotal[115] := "SFP->FP_FILUSO=cFilAnt .AND. SFP->FP_SERIE=SF2->F2_SERIE .AND. SFP->FP_ESPECIE='" + IIf(_aTotal[033] == "NF","1",IIf(_aTotal[116] ,"8","3")) + "' .AND. SFP->FP_NUMINI<=SF2->F2_DOC .AND. FP_NUMFIM >=SF2->F2_DOC .AND. SFP->FP_ATIVO = '1'","FP_ATIVO" (PREREG) FsQuery(_aTotal[101],1,"D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'","SD2->D2_DOC=SF2->F2_DOC .AND. SD2->D2_SERIE=SF2->F2_SERIE .AND. SD2->D2_CLIENTE=SF2->F2_CLIENTE .AND. SD2->D2_LOJA=SF2->F2_LOJA","D2_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 ) [SD2 GENERANDO_XML] (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_MOEDA,2))) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",IIf(_aTotal[116], SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)), SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA))) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_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(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.) (PRE) _aTotal[001] := IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116] ,'<fe:Invoice ','<fe:DebitNote ') (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>'+ SF2->F2_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)">'+ _aTotal[098] +'</sts:ProviderID>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <sts:SoftwareID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)">'+ _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)">'+ _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>'+ SF2->F2_SERIE2 + Alltrim( Str( Val( Substr( SF2->F2_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) ) // Manual sin serie (PRE) _aTotal[001] += ' <cbc:ID>'+ Alltrim( Str( Val( Substr( SF2->F2_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) ) (PRE) FsQuery(_aTotal[110],2) // CUFE Aplica solo para NF (PRE) _aTotal[093] := "" (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[016],' <cbc:UUID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)">'+ _aTotal[093] +'</cbc:UUID>' + ( 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:InvoiceTypeCode listAgencyID="195" listAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)" listSchemeURI="http://www.dian.gov.co/contratos/facturaelectronica/v1/InvoiceType">'+ IIF(AllTrim(SF2->F2_ESPECIE)=="NF","01","92") +'</cbc:InvoiceTypeCode>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:Note><![CDATA['+ IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",SF2->F2_MOTIVO,"") + ']]></cbc:Note>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:DocumentCurrencyCode>'+ Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) +'</cbc:DocumentCurrencyCode>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:CustomizationID>'+ Alltrim(SF2->F2_TIPOPE) +'</cbc:CustomizationID>' + ( chr(13)+chr(10) ) //Documentos referenciados (solo facturas) (PRE) _aTotal[001] += IIf(SF2->(ColumnPos("F2_UUIDREL")) > 0 .And. AllTrim(SF2->F2_ESPECIE)=="NF",M486DRCOL(SF2->F2_UUIDREL,1),"") // Orden de Compra (PRE) _aTotal[001] += IIf(SF2->(ColumnPos("F2_UUIDREL")) > 0 .And. AllTrim(SF2->F2_ESPECIE)=="NF",M486DRCOL(SF2->F2_UUIDREL,2),"") // DiscrepancyResponse Solo para la Nota de Débito (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cac:DiscrepancyResponse>' + chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cbc:ReferenceID/>' + chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cbc:ResponseCode listName="concepto de notas débito" listSchemeURI="http://www.dian.gov.co/micrositios/fac_electronica/documentos/Anexo_Tecnico_001_Formatos_de_los_Documentos_XML_de_Facturacion_Electron.pdf" name="1:= intereses">' + SF2->F2_TIPREF + "</cbc:ResponseCode>"+ chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' </cac:DiscrepancyResponse>' + chr(13)+chr(10),"") // BillingReference solo para la Nota de Débito (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC" .OR. _aTotal[116], _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(SF2->F2_ESPECIE) <> "NDI" (PRE) IIf(_aTotal[116], SA1->(MSSeek(xFilial("SA1")+SA2->A2_CLIENTE+SA2->A2_LOJCLI)),SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_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] += 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] += ' <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: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(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(SF2->F2_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")+SF2->(F2_CLIENTE+F2_LOJA+F2_SERIE+F2_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")+SF2->(F2_CLIENTE+F2_LOJA+F2_SERIE+F2_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>' + "COP" + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" ) (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyBaseRate>' + Alltrim(Str(SF2->F2_TXMOEDA,11,2)) + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" ) (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyCode>' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '</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) ) , "" ) (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] [SD2 INVOICE] (PRE) DbGoTop() (PREREG) (SB1->(DbSeek(xFilial("SB1") + SD2->D2_COD)),.T.) (PREREG) (SAH->(DbSeek(xFilial("SAH") + SB1->B1_UM)),.T.) (PREREG) _aTotal[108] := fGetTaxDet(SD2->D2_DOC,SD2->D2_SERIE,SD2->D2_CLIENTE,SD2->D2_LOJA,SD2->D2_TES,IIF(!_aTotal[116],AllTrim(SF2->F2_ESPECIE),"NDC")) (PREREG) (_aTotal[001] := IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116],' <fe:InvoiceLine>' + ( chr(13)+chr(10) ),' <cac:DebitNoteLine>' + ( chr(13)+chr(10) )),.T.) (PREREG) (_aTotal[001] += ' <cbc:ID>'+ Alltrim(Str(Val(SD2->D2_ITEM))) +'</cbc:ID>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116],' <cbc:InvoicedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT, 14, 2)) +'</cbc:InvoicedQuantity>' + ( chr(13)+chr(10) ),' <cbc:DebitedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT)) +'</cbc:DebitedQuantity>' + ( chr(13)+chr(10) )),.T.) (PREREG) (_aTotal[001] += ' <cbc:LineExtensionAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(AllTrim(SF2->F2_ESPECIE)$"NF|NDC" .And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_TOTAL,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_TOTAL),14,2)) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += _aTotal[108][1],.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:ChargeIndicator>false</cbc:ChargeIndicator>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:AllowanceChargeReason><![CDATA[Aplicación de descuento]]></cbc:AllowanceChargeReason>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:MultiplierFactorNumeric>' + Alltrim(Str(SD2->D2_DESC,5,2)) + '</cbc:MultiplierFactorNumeric>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(IIf(SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_DESCON,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_DESCON),14,2)) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' </cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += _aTotal[108][2],.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _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(SD2->D2_COD) + '</cbc:ID>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' </cac:SellersItemIdentification>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116],' </fe:Item>', ' </cac:Item>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116],' <fe:Price>',' <cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_PRCVEN,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_PRCVEN),14,2)) +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' <cbc:BaseQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT)) +'</cbc:BaseQuantity>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116] ,' </fe:Price>', ' </cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116],' </fe:InvoiceLine>' ,' </cac:DebitNoteLine>') ,.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(AllTrim(SF2->F2_ESPECIE)=="NF" .OR. _aTotal[116], '</fe:Invoice>','</fe:DebitNote>')) |
Informações |
---|
|
FATECOL.INI //FATECOL.INI -- NFE Colombia v2 - Resolucion 0019 / FEB. 2016 [XXX POSICIONAMENTOS] (PRE) SA2->(DbSetOrder(1)) (PRE) _aTotal[116] := If(SF1->(ColumnPos("F1_SOPORT")) > 0 ,If(SF1->F1_SOPORT =='S'.AND. Alltrim(SF1->F1_TIPOPE) $'10|11', .T.,.F. ) , .F.) (PRE) _aTotal[117] := If(SF1->(ColumnPos("F1_MARK")) > 0 ,If(SF1->F1_MARK =='S'.AND. Alltrim(SF1->F1_TIPOPE) $'10|11', .T.,.F. ) , .F.) (PRE) _aTotal[089] := If(_aTotal[117] .AND. SF1->(ColumnPos("F1_TIPNOTA")) > 0, SF1->F1_TIPNOTA , "") (PRE) _aTotal[090] := "" (PRE) _aTotal[091] := SuperGetMV("MV_ANEXO19",.F.,.F.) Se debe eliminar (PRE) If(_aTotal[116] .OR. _aTotal[117] ,SA2->(MSSeek(xFilial("SA2")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.) (PRE) If(_aTotal[116] .OR. _aTotal[117] ,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] .AND. !_aTotal[117] ,SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA)) , .T.) (PRE) (SE4->(MSSeek(xFilial("SE4")+SF1->F1_COND)) , .T.) (PRE) IF( _aTotal[116] .OR. _aTotal[117], 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] .OR. _aTotal[117], 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" , IIF( _aTotal[033] == "NDP" , "n" , "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,_aTotal[089]) (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'",IIf(_aTotal[117] ,"'9'","'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'",IIf(_aTotal[117] ,"'9'","'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] .OR. _aTotal[117], 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] .OR. _aTotal[117],'<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="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] .OR. _aTotal[117], 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>' + "COP" + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" ) (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyBaseRate>' + Alltrim(Str(SF1->F1_TXMOEDA,11,2)) + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" ) (PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyCode>' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '</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] .OR. _aTotal[117], "NCC",AllTrim(SF1->F1_ESPECIE))) (PREREG) (_aTotal[001] := IIF( _aTotal[116] .OR. _aTotal[117],' <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] .OR. _aTotal[117],' <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(IIf(Alltrim(SF1->F1_ESPECIE)=="NCC" .And. SF1->F1_MOEDA<>1,Round(xMoeda(SD1->D1_TOTAL,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),SD1->D1_TOTAL))) +'</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(IIf(Alltrim(SF1->F1_ESPECIE)=="NCC" .And. SF1->F1_MOEDA<>1,Round(xMoeda(SD1->D1_VALDESC,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),SD1->D1_VALDESC))) + '</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] .OR. _aTotal[117] ,' <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] .OR. _aTotal[117],' </fe:Item>', ' </cac:Item>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF( _aTotal[116] .OR. _aTotal[117],' <fe:Price>',' <cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) _aTotal[090] := Alltrim(IIf(AllTrim(SF1->F1_ESPECIE)=="NCC" .And. SF1->F1_MOEDA<>1,Str(Round(xMoeda(SD1->D1_VUNIT,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),14,2),Str(SD1->D1_VUNIT,14,2))) (PREREG) (_aTotal[001] += ' <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + _aTotal[090] +'</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] .OR. _aTotal[117],' </fe:Price>', ' </cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF( _aTotal[116] .OR. _aTotal[117],' </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] .OR. _aTotal[117], '</fe:Invoice>','</fe:CreditNote>'))
|
Informações |
---|
|
FATSECOL.INI //FATSCOL.INI -- NFE Colombia v2 - Resolucion 0019 / FEB. 2016 [XXX POSICIONAMENTOS] (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.) (PRE) (AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) [XXX INICIALIZACION] (PRE) SD2->(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 (SF2->F2_ESPECIE) (PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM) (PRE) _aTotal[093] := "" (PRE) _aTotal[094] := "" (PRE) _aTotal[095] := DtoS(SF2->F2_EMISSAO) (PRE) _aTotal[095] := Left(_aTotal[095],4) + "-" + Substr(_aTotal[095],5,2)+ "-" + Right(_aTotal[095],2) (PRE) _aTotal[096] := SF2->F2_HORA (PRE) _aTotal[097] := fGetTaxas(SF2->F2_DOC, SF2->F2_SERIE, SF2->F2_CLIENTE, SF2->F2_LOJA,SF2->F2_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] := {"SD2",""} (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( SF2->F2_DOC , 4 , Len(SF2->F2_DOC) - 3 ) ) , 10 , "0" ),10) (PRE) _aTotal[107] := IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",fGetRef(SF2->F2_DOC, SF2->F2_SERIE, SF2->F2_CLIENTE, SF2->F2_LOJA,SF2->F2_ESPECIE),"") (PRE) _aTotal[108] := "" (PRE) _aTotal[109] := {"SFP",""} (PRE) _aTotal[110] := "" (PRE) _aTotal[111] := "" (PRE) _aTotal[112] := "" (PRE) _aTotal[113] := "FP_FILUSO='" + cFilAnt + "' AND FP_SERIE='" + SF2->F2_SERIE + "' AND FP_ESPECIE= '" + IIf(_aTotal[033] == "NF","1","3") + "' AND FP_NUMINI <='" + SF2->F2_DOC + "' AND FP_NUMFIM >='" + SF2->F2_DOC + "' AND FP_ATIVO ='1'" (PRE) _aTotal[114] := "SFP->FP_FILUSO=cFilAnt .AND. SFP->FP_SERIE=SF2->F2_SERIE .AND. SFP->FP_ESPECIE='" + IIf(_aTotal[033] == "NF","1","3") + "' .AND. SFP->FP_NUMINI<=SF2->F2_DOC .AND. FP_NUMFIM >=SF2->F2_DOC .AND. SFP->FP_ATIVO = '1'","FP_ATIVO" (PRE) _aTotal[115] := SuperGetMV("MV_ANEXO19",.F.,.F.) Se debe eliminar (PREREG) FsQuery(_aTotal[101],1,"D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'","SD2->D2_DOC=SF2->F2_DOC .AND. SD2->D2_SERIE=SF2->F2_SERIE .AND. SD2->D2_CLIENTE=SF2->F2_CLIENTE .AND. SD2->D2_LOJA=SF2->F2_LOJA","D2_ITEM") .And. .T. (PREREG) FsQuery(_aTotal[109],1,_aTotal[113],_aTotal[114]) .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[110] := Alltrim( SFP->FP_NUMINI ) (PRE) _aTotal[111] := Alltrim( SFP->FP_NUMFIM ) (PRE) _aTotal[112] := Alltrim( SFP->FP_CAI ) [SD2 GENERANDO_XML] (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SA2->(MSSeek(xFilial("SA2")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_MOEDA,2))) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.) (PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_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(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (PRE) (SE4->(MSSeek(xFilial("SE4")+SF2->F2_COND)) , .T.) (PRE) _aTotal[001] := IIF(AllTrim(SF2->F2_ESPECIE)=="NF",'<fe:Invoice ','<fe:DebitNote ') (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[112] +'</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>'+ SF2->F2_SERIE2 +'</sts:Prefix>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <sts:From>'+ _aTotal[110] +'</sts:From>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <sts:To>'+ _aTotal[111] +'</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)">'+ _aTotal[098] +'</sts:ProviderID>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <sts:SoftwareID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)">'+ _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)">'+ _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>'+ SF2->F2_SERIE2 + Alltrim( Str( Val( Substr( SF2->F2_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) ) // Manual sin serie (PRE) _aTotal[001] += ' <cbc:ID>'+ Alltrim( Str( Val( Substr( SF2->F2_DOC , 4 , 10) ) ) ) +'</cbc:ID>' + ( chr(13)+chr(10) ) (PRE) FsQuery(_aTotal[109],2) // CUFE Aplica solo para NF (PRE) _aTotal[093] := "" (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' <cbc:UUID schemeAgencyID="195" schemeAgencyName="CO, DIAN (Direccion de Impuestos y Aduanas Nacionales)">'+ _aTotal[093] +'</cbc:UUID>' + ( 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) ) // DiscrepancyResponse Solo para la Nota de Débito (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cac:DiscrepancyResponse>' + chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cbc:ReferenceID/>' + chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' <cbc:ResponseCode listName="concepto de notas débito" listSchemeURI="http://www.dian.gov.co/micrositios/fac_electronica/documentos/Anexo_Tecnico_001_Formatos_de_los_Documentos_XML_de_Facturacion_Electron.pdf" name="1:= intereses">' + SF2->F2_TIPREF + "</cbc:ResponseCode>"+ chr(13)+chr(10),"") (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",' </cac:DiscrepancyResponse>' + chr(13)+chr(10),"") // BillingReference solo para la Nota de Débito (PRE) _aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",_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(SF2->F2_ESPECIE) <> "NDI" (PRE) SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_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] += 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] += ' <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: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(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(SF2->F2_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")+SF2->(F2_CLIENTE+F2_LOJA+F2_SERIE+F2_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")+SF2->(F2_CLIENTE+F2_LOJA+F2_SERIE+F2_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] += ' <cac:PaymentExchangeRate>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:SourceCurrencyCode>' + "COP" + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:SourceCurrencyBaseRate>' + Alltrim(Str(SF2->F2_TXMOEDA,11,2)) + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:TargetCurrencyCode>' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:TargetCurrencyBaseRate>1.00</cbc:TargetCurrencyBaseRate>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:CalculationRate>' + Alltrim(Str(SF2->F2_TXMOEDA,11,2)) + '</cbc:CalculationRate>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' <cbc:Date>' + _aTotal[095] + '</cbc:Date>' + ( chr(13)+chr(10) ) (PRE) _aTotal[001] += ' </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] [SD2 INVOICE] (PRE) DbGoTop() (PREREG) (SB1->(DbSeek(xFilial("SB1") + SD2->D2_COD)),.T.) (PREREG) (SAH->(DbSeek(xFilial("SAH") + SB1->B1_UM)),.T.) (PREREG) _aTotal[108] := fGetTaxDet(SD2->D2_DOC,SD2->D2_SERIE,SD2->D2_CLIENTE,SD2->D2_LOJA,SD2->D2_TES,AllTrim(SF2->F2_ESPECIE)) (PREREG) (_aTotal[001] := IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' <fe:InvoiceLine>' + ( chr(13)+chr(10) ),' <cac:DebitNoteLine>' + ( chr(13)+chr(10) )),.T.) (PREREG) (_aTotal[001] += ' <cbc:ID>' + Alltrim(Str(Val(SD2->D2_ITEM))) + '</cbc:ID>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' <cbc:InvoicedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT)) +'</cbc:InvoicedQuantity>' + ( chr(13)+chr(10) ),' <cbc:DebitedQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT)) +'</cbc:DebitedQuantity>' + ( chr(13)+chr(10) )),.T.) (PREREG) (_aTotal[001] += ' <cbc:LineExtensionAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(AllTrim(SF2->F2_ESPECIE)$"NF|NDC" .And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_TOTAL,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_TOTAL),14,2)) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += _aTotal[108][1],.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:ChargeIndicator>false</cbc:ChargeIndicator>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:AllowanceChargeReason><![CDATA[Aplicación de descuento]]></cbc:AllowanceChargeReason>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:MultiplierFactorNumeric>' + Alltrim(Str(SD2->D2_DESC,5,2)) + '</cbc:MultiplierFactorNumeric>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(IIf(AllTrim(SF2->F2_ESPECIE)$"NF|NDC" .And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_DESCON,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_DESCON),14,2)) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' </cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.) (PREREG) (_aTotal[001] += _aTotal[108][2],.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' <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(SD2->D2_COD) + '</cbc:ID>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' </cac:SellersItemIdentification>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' </fe:Item>', ' </cac:Item>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' <fe:Price>',' <cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(AllTrim(SF2->F2_ESPECIE)$"NF|NDC" .And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_PRCVEN,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_PRCVEN),14,2)) +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += ' <cbc:BaseQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">'+ Alltrim(Str(SD2->D2_QUANT)) +'</cbc:BaseQuantity>' + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' </fe:Price>', ' </cac:Price>') + ( chr(13)+chr(10) ),.T.) (PREREG) (_aTotal[001] += IIF(AllTrim(SF2->F2_ESPECIE)=="NF",' </fe:InvoiceLine>' ,' </cac:DebitNoteLine>') ,.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(AllTrim(SF2->F2_ESPECIE)=="NF", '</fe:Invoice>','</fe:DebitNote>')) |
2.20.2 Ejemplo de utilización
En el módulo Facturación (SIGAFAT):
Desde el Actualizaciones | Archivos | Clientes, configurar un Cliente Nacional para la Factura de Venta/Nota de Crédito de Cliente.
Desde el Actualizaciones | Archivos | Productos, configurar el o los Productos para la Factura de Venta/Nota de Crédito de Cliente.
Desde el Actualizaciones | Archivos | Tipos de Entrada y Salida, configurar el Tipo de Salida (TES) para la Factura de Venta y Tipo de Entrada (TES) para la Nota de Crédito de Cliente.
En el módulo Facturación (SIGAFAT):
- Ir al menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una nueva Factura de Venta (NF).
- Informar en el encabezado el Cliente Nacional configurado previamente.
- Informar en el detalle el o los Productos (D2_COD), Cantidad (D2_QUANT), Valor Unit. (D2_PRCVEN), Valor Total D2_TOTAL) y Tipo Salida (D2_TES).
- Ir al menú Actualizaciones | Facturación | Transmisión Electrónica (MATA486).
- Realizar la transmisión de la Factura de Venta (Validar que la transmisión haya sido exitosa)
- Desde Otras acciones ejecutar la acción Imprimir PDF.
- Validar que en el formato PDF, los montos se muestren en moneda COP, y que se visualice la información en la moneda origen del Documento.
2.21 Catálogo TRIBUTOS DIAN en Proveedores/Clientes
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre Técnico | Fecha |
---|
FISA814 | Carga de Catálogos | 05/08/2024 | FISA827 | Registro de Responsabilidades/Obligaciones DIAN y Tributos. | 05/08/2024 |
|
---|
País: | Colombia (pacote 014357) |
---|
Ticket: | 20750366 |
---|
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23942 |
---|
SITUACIÓN/REQUISITO
Se solicita habilitar una tabla para el catálogo de los Tributos en la rutina de Mantenimiento de Catálogos "FISA812", y esta asociarla al campo Cód. Tributo (AIT_CODTRI), debido a que la consulta la actual que esta relacionada al campo Cód. Tributo (AIT_CODTRI) esta usando una tabla con información que no es correspondiente a los Tributos válidos por la DIAN.
Por lo tanto, se solicita que la consulta que se muestra para informar el Tributo DIAN en Clientes y Proveedores, use el catálogo correcto y solo muestre las opciones correspondientes a los Tributos válidos.
Image Added
SOLUCION
En la rutina de Carga de Catálogos (FISA814):
Se realiza ajuste para crea la estructura y contenido para la Tabla S021 - "Tributos".
En la rutina de Registro de Responsabilidades/Obligaciones DIAN y Tributos (FISA827):
Se realiza ajuste para el campo Cód. Tributo (AIT_CODTRI), donde se modificó la consulta asociada al campo con la nueva tabla creada de Tributos (S021).
Aviso |
---|
|
- Contar con los cambios a diccionario indicados en 2.21.1 Configuraciones Previas
- En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Definición de Catálogos (FISA812).
Se debe configurar el parámetro MV_PATH814 con la ruta donde se encuentra el archivo 21Tributos.csv, con los código de Tributos de acuerdo al catálogo definido por la SUNAT, ya que de no ser así únicamente se genera le definición de la tabla y los datos de la tabla no son generados: Image Added
Es importante considerar que cuando se cuente con la rutina Registro de Responsabilidades/Obligaciones DIAN y Tributos (FISA827) con fecha 05/08/2024 o superior se debe realizar la generación de la tabla "S021 - Tributos", para poder asignar un tributo al Proveedor/Cliente, en caso contrario no se mostrará la descripción del Tributo seleccionado. |
2.21.1 Configuraciones Previas
Creación de consulta COL021:
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
COL021 | 1 | 01 | RE | Tributos | F3I |
COL021 | 2 | 01 | 01 | Tributos | F812SXB("S021","Codigo") |
COL021 | 5 | 01 |
|
| VAR_IXB |
Modificación en la tabla SX3 - Campos
Campo | AIT_CODTRI |
Tipo | C |
Consulta | COL021 |
Val. Sistema | Vazio() .Or. ValidF3I("S021", M->AIT_CODTRI,1,2) |
2.22 Transmisión Electrónica en el guardado de los Documentos.
Producto | |
---|
Línea de producto: | |
---|
Segmento: | |
---|
Módulo: | SIGAFAT - Facturación |
---|
Función: | Rutina | Nombre Técnico | Fecha |
---|
LOCXNF | Documentos Fiscales | 20/08/2024 | LOCXNF2 | Funciones Genéricas para Notas Fiscales | 20/08/2024 | LOCXCOL | Documentos Fiscales - Colombia | 21/08/2024 | LOCXFUNA | Funciones Genéricas Notas Fiscales | 13/08/2024 | MATA486 | Documentos Electrónicos | 13/08/2024 | FATECOL.INI | Generación de XML para Documentos de Entrada | 14/08/2024 |
|
---|
País: | Colombia (pacote 014357) |
---|
Ticket: | No aplica (Pacote: 014412) |
---|
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23953 |
---|
SITUACIÓN/REQUISITO
Al finalizar la inclusión de una Factura de Venta (NF), Nota de Crédito de Cliente (NCC), Nota de Débito de Cliente (NDC), Documento Soporte (NF), Nota de Ajuste de Crédito (NCP) y Nota de Ajuste de Débito (NDP), se debe permitir la tranmisión electrónica de los documentos.
SOLUCION
En la rutina de Documentos Fiscales - Colombia (LOCXCOL):
Se crea la función LxTraCOL(), para llamar las funciones que Realiza Pre-validación de Datos para Transmisión (M486VLDDOC), Genera el XML (M486GERXML), Realiza la Transmisión Electrónica (M486SENDPT) y Actualiza el Estatus (M486UPDST).
En la función que Carga la configuración de los documentos 22 y 23 (NCP y NDP de Ajuste) en el array aCfg (lxEstrcCol), se ajustó la posición 3 a .T. para Notas de Ajuste de Crédito (NCP) y Notas de Ajuste de Débito (NDP) para permitir el llamado de la función CFDVerific() para validar si se realiza la transmisión electrónica después de guardar los documentos.
En la rutina de Documentos Fiscales (LOCXNF):
En la Función que realiza el grabado de las Notas Fiscales (GravaNfGeral), se excluye para el país Colombia el llamado a la Función para la creación de documentos electrónicos en formato XML (CFDGerXML) para que se realice cuando el usuario confirme la transmisión electrónica de acuerdo al uso del parámetro MV_CFDUSO, y se realiza el llamado a la Función que Realiza la transmisión electrónica de documentos fiscales para el país Colombia (LxTraCOL), para llamar las funciones que Realiza Pre-validación de Datos para Transmisión (M486VLDDOC), Genera el XML (M486GERXML), Realiza la Transmisión Electrónica (M486SENDPT) y Actualiza el Estatus (M486UPDST).
En la rutina de Funciones Genéricas Notas Fiscales (LOCXFUNA):
En la Función para la creación de documentos electrónicos en formato XML (CFDGerXML), se realiza ajuste para que se realice la generación del XML, sin importar si la rutina llamadora es la rutina de Documento Electrónicos (MATA486).
En la rutina de Documentos Electrónicos (MATA486):
En la Función que Realiza la Transmisión Electrónica (M486SENDPT), se activan parámetros para la funcionalidad de envío por email, desde rutinas diferentes de Documentos Electrónicos (MATA486), para evitar el uso de la pregunta ¿Envío a Email? (MV_PAR07 )del grupo de preguntas MATA486.
Se realiza ajuste para eliminar que las funciones que Realiza Pre-validación de Datos para Transmisión (M486VLDDOC), Genera el XML (M486GERXML), Realiza la Transmisión Electrónica (M486SENDPT) y Actualiza el Estatus (M486UPDST) no sean estáticas y se puedan mandar llamar desde cualquier rutina diferente de la de Documentos Electrónicos (MATA486)
Para la funcionalidad del parámetro MV_CFDUSO, se tienen las siguientes reglas:
Valor | Comportamiento |
---|
1 | Preguntará si se quiere transmitir el documento una vez finalizado el registro, si es afirmativa la respuesta, también preguntará si se realizará el envío por mail. |
2 | Preguntará si se quiere transmitir el documento una vez finalizado el registro, y si no hubo errores, enviará por mail el documento sin preguntar. |
3 | No preguntará si se quiere transmitir el documento una vez finalizado el registro, lo transmitirá y realizará el envío por mail del documento sin preguntar. |
Aviso |
---|
|
Si el parámetro MV_CFDUSO, contiene un valor diferente de 1, 2, 3, vacio o no existe, no se realizará el proceso de transmisión electrónica al guardar los documentos de tipo Factura de Venta (NF), Nota de Crédito de Cliente (NCC), Nota de Débito de Cliente (NDC), Documento Soporte (NF), Nota de Ajuste de Crédito (NCP) o Nota de Ajuste de Débito (NDP). Las Facturas de Venta (NF), generadas a partir del Pedido de Venta desde la rutina de Generación de Notas (MATA468N), deben ser transmitidas desde la rutina de Documentos Electrónico (MATA486). |
2.22.1 Configuraciones previas
En la sección [XXX INVOICE_FIN] del archivo FATECOL.INI agregar la siguiente línea:
Image Added
Configurar el siguiente parámetro:
Nombre de la Variable | MV_CFDUSO |
Tipo | C - Caracter |
Descripción | Indica modo de trans. electrónica al guardar doc., 1-Confirma trans. y envío,2-Confirma trans. y envío automático, 3-trans. y envío automático. |
Valor Estándar | 0 |
2.22.2 Ejemplo de utilización
a) Parámetro MV_CFDUSO igual a 1
- Configurar el parámetro MV_CFDUSO con el valor 1.
- En el módulo Facturación (SIGAFAT), menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta (NF).
- Informar los datos del Encabezado e ítems.
- Presionar el botón Grabar, para realizar el grabado de la Factura.
- Confirmar la transmisión del documento:
Image Added Informações |
---|
|
Si el usuario selecciona la opción No en la confirmación de la Transmisión Eletrónica, no se realiza la validación para la transmisión, generación del XML, transmisión del documento electrónico, y no se visualiza la pregunta de confirmación de envío por email. |
Confirmar el envío por mail del documento electrónico.
Image Added
Informações |
---|
|
Si el usuario selecciona la opción No en la confirmación del envío por email, no se realiza el proceso de envío de email una vez finalizado el proceso de transmisión. El envío de email, es un proceso que es realizado por el Proveedor Tecnológico denominado The Factory HKA, durante el proceso de transmisión electrónica. |
- Una vez que se realizó la validación, generación del XML y transmisión del documento electrónico, se visualiza el aviso que informa que la Factura de Venta Electrónica fue Autorizada.
Image Added
b) Parámetro MV_CFDUSO igual a 2
- Configurar el parámetro MV_CFDUSO con el valor 2.
- En el módulo Facturación (SIGAFAT), menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta (NF).
- Informar los datos del Encabezado e ítems.
- Presionar el botón Grabar, para realizar el grabado de la Factura.
Confirmar la transmisión del documento:
Image Added
Informações |
---|
|
Cuando el parámetro MV_CFDUSO está configurado con el valor 2, no se visualiza pregunta para confirmar el envío de mail ya que este proceso se realiza en automático, enviando el documento autorizado al correo que fue informado en el campo E-Mail (A1_EMAIL) del Cliente. El envío de email, es un proceso que es realizado por el Proveedor Tecnológico denominado The Factory HKA, durante el proceso de transmisión electrónica. |
- Una vez que se realizó la validación, generación del XML y transmisión del documento electrónico, se visualiza el aviso que informa que la Factura de Venta Electrónica fue Autorizada.
Image Added
c) Parámetro MV_CFDUSO igual a 3
- Configurar el parámetro MV_CFDUSO con el valor 3.
- En el módulo Facturación (SIGAFAT), menú Actualizaciones | Facturación | Facturaciones (MATA467N).
- Incluir una Factura de Venta (NF).
- Informar los datos del Encabezado e ítems.
Presionar el botón Grabar, para realizar el grabado de la Factura.
Informações |
---|
|
Cuando el parámetro MV_CFDUSO está configurado con el valor 3, se realiza en automático el proceso de transmisión electrónica y envío de email. El envío de email, es un proceso que es realizado por el Proveedor Tecnológico denominado The Factory HKA, durante el proceso de transmisión electrónica. |
- Una vez que se realizó la validación, generación del XML y transmisión del documento electrónico, se visualiza el aviso que informa que la Factura de Venta Electrónica fue Autorizada.
Image Added
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.
Image Added
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
- En la generación de NCC/NDC se eliminan los códigos de tipo de operación que hacen referencia a facturas del modelo de validación posterior.
- Los Grupos de Direcciones (nodos de direcciones del emisor y del receptor) ahora son opcionales, sin embargo, el comprobante electrónico continua incluyendo estas informaciones.
- Anticipo a la factura, dato informativo opcional en el comprobante electrónico. El sistema no usa esta información.
- Aproximaciones de impuesto sobre las ventas cobradas. Proceso opcional que no es necesario adoptar en el sistema.
- Código postal de la dirección del adquiriente. Actualmente el sistema no usa la tabla correspondiente, el usuario registra el dato que proporciona el adquiriente, sin restricción.
- Tipos de operación no controlados en el sistema:
- Sector Transporte
- Sector Salud
- Sector Notaria
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 |
---|
S002 | Tipos de Documentos de Identidad | Agrega registro | 47 - PEP |
S003 | Conceptos de Notas de Crédito | Cambio de descripciones | 3 - Rebaja o Descuento Parcial o Total 4 - Ajuste de Precio 5 - Otros |
|
| Elimina registro | 6 - Otros |
S005 | Catálogo de Tributos DIAN | Agrega registro | 08 - IC Porcentual 30 - IC Datos |
|
| Cambio de descripciones | 06 - ReteRenta 22 - INC Bolsas |
S009 | Tipos de Org. Jurídica | Cambio de descripciones | 1 - Persona Jurídica y Asimiladas 2 - Persona Natural y Asimiladas |
S014 | Tipos de Obligaciones - Responsabilidades | Cambio de descripción | R-99-PN - No Aplica - Otros |
S017 | Tipo de Operación | Elimina registro | 23 - NCC v1 33 - NDC v1 |
Nota:
- Los documentos del sistema (NF, NCC, NDC) así como los electrónicos (XML/UBL) que actualmente utilizan códigos que sufren alteración o que son eliminados, no serán afectados ni inválidos.
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:
Image Added
Informações |
---|
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: | Rutina | Nombre Técnico | Fecha |
---|
M486XFUN | Funciones Genéricas de Documentos Electrónicos | 23/01/2024 | M486XFUNCO | Funciones Genéricas de Facturación Electrónica de Colombia | 23/01/2024 | LOCXCOL | Funciones localizadas de Documentos fiscales - Colombia | 23/01/2024 | FATSECOL.INI | Estructura del XML de Facturas de Exportación | 23/01/2024 | INPUTFIELDSCOL | Estructura de campos documentos de entrada para país Colombia | 23/01/2024 | OUTPUTFIELDSCOL | Estructura de campos documentos de salida para país Colombia | 23/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.
Aviso |
---|
|
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: Rutina | Nombre Técnico | Fecha |
---|
M486XFUN | Funciones Genéricas de Documentos Electrónicos | 28/02/2024 | M486XFUNCO | Funciones Genéricas de Facturación Electrónica de Colombia | 27/02/2024 | LOCXCOL | Funciones localizadas de Documentos fiscales - Colombia | 27/02/2024 | INPUTFIELDSCOL | Estructura de campos documentos de entrada para país Colombia | 28/02/2024 | OUTPUTFIELDSCOL | Estructura de campos documentos de salida para país Colombia | 01/03/2024 | FATSECOL.INI | Estructura del XML de Facturas de Exportación | 29/02/2024 | FATECOL.INI | Estructura del XML de Notas de Crédito | 29/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 | Tipo | 3 - Lógico | Cont. Esp |
| Descripción | Permite 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
- Separación de catálogos del anexo técnico
- Se elimina el redondeo al total de impuesto a nivel de detalle y total para facturas, notas crédito y débito.
- Se elimina la regla de 10 días posterior e inferior a la fecha y se ha incorporado una nueva regla de rechazo.
- Medios de pago.
- Nombre o razón social del emisor debe coincidir al informado en el RUT.
- Se crea el tipo de documento PPT.
- Factura de exportación.
- Nuevos tipos de operación.
- Cambios incorporados en las notas crédito.
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
- No se permite notas crédito referenciadas para facturas aceptadas, es decir, se debe realizar una nota crédito no referenciada.
- Solo se puede anular facturas cuando el tipo de operación es igual a 20, es decir, Nota Crédito que referencia una factura electrónica.
- Para todas las notas sin referencia debe incluir el periodo (mes) que afecta.
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.
Image Added
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.
Campo | F1_PTOEMIS |
Tipo | C |
Tamaño | 7 |
Decimal | 0 |
Formato | 99-9999 |
Título | Period Fact |
Descripción | Periodo de Facturación |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Opciones |
|
When |
|
Relación |
|
Val. Sistema | Vazio() .Or. (FindFunction("LxVldPeri") .And. LxVldPeri('SF1')) |
Help | Digite el mes y año del periodo de facturación en formato "MM-YYYY. |
Tabla SF2- Encabezado Doc. de Salida.
FATSECOL
Campo | F2_PTOEMIS |
Tipo | C |
Tamaño | 7 |
Decimal | 0 |
Formato | 99-9999 |
Título | Period Fact |
Descripción | Periodo de Facturación |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Opciones |
|
When |
|
Relación |
|
Val. Sistema | Vazio() .Or. (FindFunction("LxVldPeri") .And. LxVldPeri('SF2')) |
Help | Digite el mes y año del periodo de facturación en formato "MM-YYYY |
Nota:
- Los documentos del sistema (NF, NCC, NDC) así como los electrónicos (XML/UBL) que actualmente utilizan códigos que sufren alteración o que son eliminados, no serán afectados ni inválidos.
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