Árvore de páginas


ÍNDICE


01. VISIÓN GENERAL

Generar Notas de Ajuste de tipo Débito o Crédito referenciadas únicamente a Documentos Soporte e implementar la Transmisión Electrónica para estos documentos.

Las notas de ajuste son documentos electrónicos o físicos según el caso, que constituyen el medio por el cual se realizan ajustes o se anula el documento soporte, por errores aritméticos o de contenido, cumpliendo las condiciones, términos, mecanismos técnicos y tecnológicos que para el efecto señale la DIAN conforme al contenido del anexo técnico previsto en el artículo 17 de la Resolución 000167 de 2021. https://www.dian.gov.co/normatividad/Normatividad/Resoluci%C3%B3n%20000167%20de%2030-12-2021.pdf   

Procedimiento de Implantación.

        Realice las configuraciones necesarias para la transmisión del Documento Soporte informadas en el siguiente Documento Técnico DT_Facturacion_Electronica_Validacion_Previa_COL

Se recomienda respaldar el repositorio de objetos (RPO) antes de aplicar el paquete de actualización (patch).

  1. Realice la aplicación del paquete de actualizaciones (patch) asociado a este requisito. El patch contiene la actualización de los siguientes fuentes:


    Rutina(s)Nombre TécnicoFecha
    MATA486.PRWDocumentos Electrónicos26/09/2022
    M486XFUNCO.PRWFunciones genéricas para transmisión de Documentos Electrónicos26/09/2022
    M486PDFCOL.PRWGeneración de Factura Electrónica en PDF.26/09/2022
    LOCXNF.PRWNotas Fiscales.26/09/2022
    LOCXNF2.PRW

    Funciones genéricas de Documentos Fiscales.

    26/09/2022
    LOCXCOL.PRWFunciones Genéricas de Notas Fiscales Colombia.26/09/2022
    LOCXGEN.PRWComponentes de Ventanas en Notas Fiscales.26/09/2022
    SIGACUS.PRWFunciones Genéricas para Documentos Fiscales.23/09/2022
    LOCXFUNA.PRXFunciones Genéricas para Notas Fiscales.26/09/2022
    M486XFUN.PRWFunciones genéricas de Facturación Electrónica .26/09/2022


    Archivos de Configuración

    Archivo

    Nombre Técnico

    Fecha

    FATECOL.INIGeneración de XML para Documentos de Entrada26/09/2022
    FATSCOLINIGeneración de XML para Documentos de Salida26/09/2022




  2. Verifique en el diccionario de datos de su ambiente, éste debe contener las configuraciones indicadas en la sección 04. DICCIONARIO DE DATOS.
    1. Los cambios al diccionario de datos fueron incorporados en el pacote "011023".
  3. Configure los parámetros del sistema que se indican en la sección 03. CONFIGURACIONES, inciso a. Parámetros.
  4. Configure los catálogos que se indican en la sección 03. CONFIGURACIONES, inciso b. Catálogos.
  5. Configure los scripts de documentos electrónicos que se indican en la sección 03. CONFIGURACIONES, inciso c. Archivos de Configuración.
  6. Proceso de Nota de Ajuste Electrónica.
    • Se utilizan principalmente para realizar ajustes o anulaciones de los Documentos Soporte. 
    • Por medio de las Notas de Ajuste de tipo Crédito se puede realizar la “Anulación”, “Devolución” y “Descuento” del Documento Soporte.
    • Por medio de las Notas de Ajuste de tipo Débito se puede realizar “Ajustes de Precio”, cobro de “Intereses” y “Comisiones” sobre el Documento Soporte. 
    • Generan Egresos o Ingresos a favor del Proveedor.
    • Son aplicadas únicamente a los Documentos Soporte y son referenciados por medio del menú "Otras acciones" con las opciones "Factura" o "Doc. Orig".
    • Las Notas de Ajuste de tipo Crédito o Débito aplicadas a Documentos Soporte funcionan de la misma forma que las Notas de Crédito o Débito de Proveedor (NCP) aplicadas a las Facturas de Entrada.
    • Se identifican por medio del campo F1_MARK/F2_MARK.
    • Utilizan Proveedores referenciados a Clientes y una Serie especial. Ver la sección 03. CONFIGURACIONES, inciso b. Catálogos


      IMPORTANTE

      Para que la funcionalidad de tomar los datos unicamente del Proveedor, sin necesidad de configurar adicionalmente un Cliente, se deberán tener actualizadas las siguientes rutinas con fecha igual o superior:

      RutinaNombre TécnicoFecha
      LOCXCOLFunciones Genéricas de Notas Fiscales para ColombiaXX/XX/XXXX
      MATA486Documentos ElectrónicosXX/XX/XXXX
      M486XFUNCOFunciones Genéricas de Facturación Electrónica para ColombiaXX/XX/XXXX
      FISA827Responsabilidades/Tributos DIAN de Clientes y ProveedoresXX/XX/XXXX
      FATXFUMIFunciones genéricas para Facturación - Mercado InternacionalXX/XX/XXXX
      MATA020ProveedoresXX/XX/XXXX

      Para poder realizar la configuración de los Tributos y Responsabilidades DIAN en el Proveedor, es necesario tener configurado en el Diccionario de Datos el campo AIT_REG.

      Campo

      AIT_REG

      Orden

      07

      Tipo

      Caracter

      Tamaño

      1

      Decimal

      0

      Formato

      @!

      Título

      Cliente/Prov

      Descripción

      Cliente o Proveedor

      Utilizado

      Si

      Obligatorio

      No

      Browse

      No

      Val. Sistema

      Pertence("CP")

      Opciones

      C=Cliente;P=Proveedor

      Help

      Indica si el registros de Responsabilidades o Tributos corresponde a un C-Cliente o Proveedor.

      Modificar el X2_UNICO de la Tabla AIT-Responsabilidades-Tributos Cliente para que sea AIT_FILIAL+AIT_CODCLI+AIT_LOJA+AIT_CODRES+AIT_CODTRI+AIT_TIPO+AIT_REG.

    • Generarán un archivo XML mediante los scripts de configuración FATECOL.INI y FATSCOL.INI que posteriormente es enviado al proveedor tecnológico. Ver la sección 03. CONFIGURACIONES, inciso c. Archivos de Configuración.
    • Se transmiten vía servicio web al Proveedor Tecnológico (Por ejemplo The Factory HKA), quien se encargará de validar la información y en caso de estar correcta, la transmitirá a la DIAN, que a su vez realizará sus propias validaciones y la certificación correspondiente.
    • Si la información supera todas las validaciones, el servicio web proporcionará un contenedor (XML) con el resumen de la información enviada, incluyendo el CUNE de la Nota de Ajuste y del Documento Soporte referenciado y el motivo del ajuste. En caso contrario, se reciben mensajes sobre las causas de rechazo.
    • Se genera el documento electrónico en un archivo tipo XML para la Nota de Ajuste, el cual utiliza la siguiente nomenclatura:
      "face_" + Tipo Documento + 10 primeros caracteres del Nit de la Empresa + Identificador Hexadecimal + ".XML"
      Se utiliza el Tipo de Documento  = 'n' para las Notas de Ajuste.
      Ejemplo: face_n53485215000000000012.xml
    • Los archivos XML, así como la representación impresa en formato PDF, son almacenados en carpetas organizadas debajo de la ruta indicada en el parámetro MV_CFDDOCS . ver la sección 03. CONFIGURACIONES, inciso a. Parámetros


02. EJEMPLO DE UTILIZACIÓN


Documento Soporte


    • Ingrese al módulo de Compras (SIGACOM), ir al menú |Actualizaciones | Movimientos | Factura de Entrada (MATA101N)
    • En la pregunta ¿Tipo de Factura? Seleccione “Docto Soporte” y confirme.
    • Incluya Documentos Soporte para un Proveedor que este relacionado a un Cliente.
    • Transmita los documentos.


Nota Ajuste de Crédito

Por medio de las Notas de Ajuste de tipo Crédito (NCP) se puede realizar la “Anulación”, “Devolución” y “Descuento” del Documento Soporte.

Las Notas de Ajuste de tipo Crédito aplicadas a Documentos Soporte  funcionan de la misma forma que las Notas de Crédito de Proveedor (NCP) aplicadas a las Facturas de Entrada.


    • Ingrese al módulo de Compras (SIGACOM), ir al menú | Actualizaciones | Movimientos | Nota Crédit/Débito (MATA466N)
    • En la pregunta ¿Formulario Propio? seleccione “Si” .
    • En la pregunta ¿Tipo de Factura? seleccione “Nota Ajuste Créd”.
    • Confirme dando clic en el botón "OK".
    • En el encabezado de la pantalla principal confirme que sea mostrado el título “Nota de Crédito – Nota de Ajuste”.
    • De clic en el botón “Incluir”.
    • En el encabezado del formulario de captura confirme que sea mostrado el título “Nota de Crédito – Nota de Ajuste”.

    • Seleccione al Proveedor que está relacionado al Cliente.
    • Seleccione la Serie configurada para la Nota de Ajuste, automáticamente se cargará el Número Documento y la Serie 2.
    • Seleccione el Tipo de Ajuste (Concepto de Corrección para Notas de Ajuste).
    • Seleccione un Documento Soporte por medio del menú "Otras Acciones" opciones "Factura" o "Doc. Orig".

Las opciones "Factura" o "Doc. Orig" mostrarán únicamente documentos de tipo “Documentos Soporte” (F1_SOPORT = ’S’). Los Documentos Soporte que no han sido transmitidos no se podrán seleccionar, el sistema lo notificará con un mensaje.


    • Verifique que los campos "Doc. Original" y "Serie Org." cuenten con información relacionada al Documento Soporte referenciado.
    • En la pestaña “Títulos” indique la Condición de Pago.
    • Guarde la Nota de Ajuste.

Solo se podrán borrar las Notas de Ajuste que no han sido transmitidas, si el documento ya fue transmitido, éste no se podrá borrar y se notificará con un mensaje.

  1. 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.

MV_ALTNUM = 2 El sistema pregunta al usuario si desea que se actualice el número de documento.

MV_ALTNUM = 3 No se reasigna número, el usuario podrá editar el número de documento.

En caso de editar el Núm. de Doc. (F2_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.

Transmisión de Nota de Ajuste
 

    • Ingrese al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
    • Capture los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccione Nota de Ajuste”.
      ¿Serie? seleccione NAJ”.
      ¿Estatus? seleccione 0” para obtener todos los documentos.
      Agregue las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? Seleccione Crédito”.

      Si la pregunta ¿Tipo de Documento? es “Nota de Ajuste” es necesario indicar la pregunta ¿Tipo Nota Ajuste? con las opciones “Débito” o “Crédito”.

    • Confirme.
    • En el encabezado de la pantalla principal, confirme que se muestre el título “Nota de Ajuste Crédito”.

    • En la pantalla principal verifique que exista la Nota de Ajuste Crédito.
    • De clic en el botón “Transmitir”.
    • Asigne la serie “NAJ” y el Número de Documento Inicial y Final.
    • Confirme Transmisión.
    • Revise el Log de transmisión.


Nota Ajuste de Débito

Por medio de las Notas de Ajuste de tipo Débito (NDP) se puede realizar “Ajustes de Precio”, cobro de “Intereses” y “Comisiones” sobre el Documento Soporte. Los ajustes de precio aplican cuando se ha facturado un costo menor en el Documento Soporte y se debe ajustar para asignar un costo mayor.

Las Notas de Ajuste de tipo Débito aplicadas a Documentos Soporte  funcionan de la misma forma que las Notas de Débito de Proveedor (NDP) aplicadas a las Facturas de Entrada.

    • Ingrese al módulo de Compras (SIGACOM), ir al menú | Actualizaciones | Movimientos | Nota Crédit/Débito (MATA466N).
    • En la pregunta ¿Formulario Propio? seleccione “Si”.
    • En la pregunta ¿Tipo de Factura? seleccione Nota Ajuste Débi”.
    • Confirme dando clic en el botón "OK".
    • En el encabezado de la pantalla principal confirme que sea mostrado el título “Nota de Débito – Nota de Ajuste”.
    • De clic en el botón “Incluir”.
    • En el encabezado del formulario de captura confirme que sea mostrado el título “Nota de Débito – Nota de Ajuste”.

    • Seleccione al Proveedor que está relacionado al Cliente.
    • Seleccione la Serie configurada para la Nota de Ajuste, automáticamente se cargará el Número Documento y la Serie 2.
    • Seleccione el Tipo de Ajuste (Concepto de Corrección para Notas de Ajuste).
    • Relacione un Documento Soporte por medio del menú "Otras Acciones" opción "Factura".

La opción "Factura" mostrará únicamente documentos de tipo “Documentos Soporte” (F1_SOPORT = ’S’). Los Documentos Soporte que no han sido transmitidos no se podrán seleccionar, el sistema lo notificará con un mensaje.

    • Verifique que los campos "Doc. Original" y "Serie Org." cuenten con información relacionada al Documento Soporte referenciado.
    • En la pestaña “Títulos” indique la Condición de Pago.
    • Guarde la Nota de Ajuste.

      Solo se podrán borrar las Notas de Ajuste que no han sido transmitidas, si el documento ya fue transmitido, éste no se podrá borrar y se notificará con un mensaje.


  1. 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.

MV_ALTNUM = 2 El sistema pregunta al usuario si desea que se actualice el número de documento.

MV_ALTNUM = 3 No se reasigna número, el usuario podrá editar el número de documento.

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.

Transmisión de Nota de Ajuste
 

    • Ingrese al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
    • Capture los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccione “Nota de Ajuste”.
      ¿Serie? seleccione NAJ”.
      ¿Estatus? seleccione 0” para obtener todos los documentos.
      Agregue las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? seleccione Débito”.

      Si la pregunta ¿Tipo de Documento? es “Nota de Ajuste” es necesario indicar la pregunta ¿Tipo Nota Ajuste? con las opciones “Débito” o “Crédito”.


    • Confirme.
    • En el encabezado de la pantalla principal, confirme que sea mostrado el título “Nota de Ajuste Débito

    • En la pantalla principal verifique que exista la Nota de Ajuste Débito.
    • De clic en el botón “Transmitir”.
    • Asigne la serie “NAJ” y el Número de Documento Inicial y Final.
    • Confirme la Transmisión.
    • Revise el Log de transmisión.


Archivo XML de las Notas de Ajuste

Los archivos XML autorizados se crean en la carpeta configurada en el parámetro MV_CFDDOCS + "/autorizados/"
Los documentos XML de las Notas de Ajuste utilizan el identificador "n" en el nombre del archivo.
Ejemplo: face_n53485215000000000012.xml

Abra el archivo XML.

      • Revisar que el elemento "tipoDocumento" sea igual a "95" que indica que se transmitió una Nota de Ajuste. Ejemplo:
        <cbc:CreditNoteTypeCode>95</cbc: CreditNoteTypeCode>

      • Revisar que el elemento "numeroDocumento" sea similar a "MXAJ18" que indica el Prefijo+Consecutivo de la Nota de Ajuste. 
        Ejemplo:
        <cbc:ID>MXAJ18</cbc: ID>

      • Revisar que el elemento "cufeDocReferenciado" se informe correctamente con el UUID de la Nota de Ajuste.
        Ejemplo:
        <cbc:UUID schemeID="2" schemeName="CUDS-SHA384">f0fe261c357e71e5ccd2ed78e6f4cc0fdaec11a95d132d9aeb41122be5207edbd11f40ef77323f29e34cf84d3698011b</cbc:UUID>

      • Revisar que el elemento "numeroDocumento" del documento referenciado (DiscrepancyResponse) sea similar a "MXDS831" que indica el Prefijo+Consecutivo del Documento Soporte.
        Ejemplo:
        <cbc:ReferenceID>MXDS831</cbc: ReferenceID >

      • Revisar el elemento "descripción" del documento referenciado (DiscrepancyResponse) sea igual a "ANULACION DEL DOCUMENTO SOPORTE"
        Ejemplo:
        <cbc:Description>ANULACION DEL DOCUMENTO SOPORTE</cbc: Description >

      • Revisar que el elemento "numeroDocumento" del documento referenciado (BillingReference/ InvoiceDocumentReference) sea igual a "MXDS831" que indica el Prefijo+Consecutivo del Documento Soporte.
        Ejemplo:
        <cbc: ID>MXDS831</cbc:ID >

      • Revisar que el elemento "cufeDocReferenciado" del documento referenciado (BillingReference/ InvoiceDocumentReference) sea igual al UUID del Documento Soporte.
        Ejemplo:
        <cbc:UUID schemeName="CUDE-SHA384">97a0cb911509cfa267e871fec06647eff3b4b50c075bbe4155495aab28882ccb26714e25f966eecab6b7a160f9ab761f</cbc:UUID>

      • Revisar que el elemento "fecha" del documento referenciado (BillingReference/InvoiceDocumentReference) sea igual la fecha de emisión del Documento Soporte.
        Ejemplo:
        <cbc:IssueDate>2022-09-14</cbc:IssueDate> 



Monitor de Transmisión

    • Ingrese al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486).
    • Capture los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccione “Nota de Ajuste”.
      ¿Serie? seleccione NAJ”.
      ¿Estatus? seleccione 0” para obtener todos los documentos.
      Agregue las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? seleccione Débito” o "Crédito".

    • Confirme.
    • De clic en el botón “Monitor”.
    • Asigne la Serie NAJ” y el Número de Documento Inicial y Final.
    • Confirme.
    • Revise el estatus de la Nota de Ajuste.



Imprimir PDF

    • Ingrese al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
    • Capture los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccione “Nota de Ajuste”.
      ¿Serie? seleccione NAJ”.
      ¿Estatus? seleccione 0” para obtener todos los documentos.
      Agregue las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? seleccione Débito” o "Crédito".

    • Confirme.
    • De clic en el botón “Otras Acciones”.
    • Seleccione la opción "Imprimir PDF".
    • Asigne la Serie NAJ”, el Número de Documento Inicial y Final e indique el Formato PDF.
    • Confirme .
    • Revise la información impresa en el archivo PDF de la Nota de Ajuste.



Recuperar XML

    • Ingrese al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486)
    • Capture los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccione “Nota de Ajuste”.
      ¿Serie? seleccione NAJ”.
      ¿Estatus? seleccione 0” para obtener todos los documentos.
      Agregue las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? seleccione Débito” o "Crédito".

    • Confirme.
    • De clic en el botón “Otras Acciones”.
    • Seleccione la opción "Recuperar XML"
    • Asigne la Serie NAJ”,  y el Número de Documento Inicial y Final.
    • Agregue la Carpeta dónde será guardado el archivo.
    • Confirme.
    • Revise que el archivo XML de la Nota de Ajuste se haya almacenado en la carpeta indicada.


Ejemplo:


03. Configuraciones

a) Parámetros 

Configurar los siguientes parámetros (SX6):

Parámetro

Contenido

Descripción

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

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.


b) Catálogos

Los proveedores no obligados a facturar se registrarán como clientes con toda la información de identificación, dirección, responsabilidades, etc..

Cliente

Tributos DIAN


Proveedor


Relacionar Proveedor con Cliente 


Serie de la Nota de Ajuste

Acceder al configurador(SIGACFG)

Asignar la serie "NAJ" y la numeración inicial


Consulta de Conceptos de corrección para las Notas de Ajuste.

Acceder al configurador(SIGACFG)
En la tabla 00 crear la Clave 1D


Asignar los ítems



Serie de las Notas de Ajuste de Crédito y Débito

En la rutina de Control de Formularios(MATA992) Configurar series para Notas de Crédito y Débito de Ajuste.


Para las Notas de Crédito agregar la serie "NAJ" con especie "8 =NCP" y en la Serie 2 agregar el prefijo "MXAJ", también asignar el número inicial y final y los campos que son obligatorios.


Para las Notas de Débito agregar la serie "NAJ" con especie "9 =NDP" y en la Serie 2 agregar el prefijo "MXAJ", también asignar el número inicial y final y los campos que son obligatorios.


El prefijo (Serie 2) debe estar conformado por 4 caracteres y éste debe estar configurado en los “Secuenciales” del portal de Facturación Electrónica de The Factory HKA.



Importante

Las configuraciones mostradas, a manera de ejemplo, indican una sola serie para las Notas de Ajuste de Crédito y Débito, sin embargo, se recomienda encarecidamente crear dos series, una para cada tipo de documento. La configuración en el portal del Proveedor Tecnológico, igualmente debe considerar una serie para cada concepto.  


c) Archivos de Configuración

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

//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) 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="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>' +  Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:SourceCurrencyBaseRate>1.00</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:TargetCurrencyCode>' + "COP" + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:TargetCurrencyBaseRate>1.00</cbc:TargetCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:CalculationRate>' +  Alltrim(Str(SF1->F1_TXMOEDA,11,2)) + '</cbc:CalculationRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '        <cbc:Date>' + _aTotal[095] + '</cbc:Date>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , '    </cac:PaymentExchangeRate>'  + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
(PREREG) _aTotal[001]

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

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

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

(PREREG) _aTotal[108] := fGetTaxDet(SD1->D1_DOC,SD1->D1_SERIE,SD1->D1_FORNECE,SD1->D1_LOJA,SD1->D1_TES,If(_aTotal[116] .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(SD1->D1_TOTAL,14,2)) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += _aTotal[108][1],.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '        <cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '            <cbc:ChargeIndicator>false</cbc:ChargeIndicator>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '                <cbc:AllowanceChargeReason><![CDATA[Aplicación de descuento]]></cbc:AllowanceChargeReason>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '                <cbc:MultiplierFactorNumeric>' + Alltrim(Str(SD1->D1_DESC,5,2)) + '</cbc:MultiplierFactorNumeric>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '            <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(SD1->D1_VALDESC,14,2)) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, '        </cac:AllowanceCharge>' + chr(13)+chr(10), ""),.T.)
(PREREG) (_aTotal[001] += _aTotal[108][2],.T.)
(PREREG) (_aTotal[001] += IIF(_aTotal[116] .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[001] += '            <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(SD1->D1_VUNIT,14,2)) +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += '            <cbc:BaseQuantity unitCode="' + Alltrim(_aTotal[108][3]) + '">' + Alltrim(Str(SD1->D1_QUANT)) + '</cbc:BaseQuantity>'  + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += IIF(_aTotal[116] .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>'))



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

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



04. Diccionario de datos

Actualizaciones al diccionario.

Campos

(Archivo SX3 - Campos)

Crear campo F2_MARK

Campo

F2_MARK

Orden

ZZ

Tipo

Caracter

Tamaño

1

Decimal

0

Formato

@!

Título

Nota Ajuste

Descripción

Nota de Ajuste

Utilizado

Si

Obligatorio

No

Browse

No

Val. Sistema

Pertence("SN")

Inicializador

"S"

Opciones

S=Si;N=No

Help

Si la Nota que registra corresponde a un ajuste o anulación del Documento Soporte en adquisiciones con sujetos no obligados a facturar electrónicamente y será transmitida a la DIAN, indique Si, de lo contrario indique No.


Crear campo F2_TIPNOTA


Campo

F2_TIPNOTA

Orden

ZZ

Tipo

Caracter

Tamaño

1

Decimal

0

Formato

@!

Título

Tipo Ajuste

Descripción

Corrección Nota Ajuste  

Utilizado

Si

Obligatorio

No

Browse

No

Consulta

1D

Val. Sistema

Pertence("12345") .and. NaoVazio()

Inicializador


Help

Concepto de Corrección para Notas de Ajuste. Seleccione las opciones disponibles en la consulta.


Crear campo  F1_MARK


Campo

F1_MARK

Orden

ZZ

Tipo

Caracter

Tamaño

1

Decimal

0

Formato

@!

Título

Nota Ajuste

Descripción

Nota de Ajuste

Utilizado

Si

Obligatorio

No

Browse

No

Val. Sistema

Pertence("SN")

Inicializador

"S"

Opciones

S=Si;N=No

Help

Si la Nota que registra corresponde a un ajuste o anulación del Documento Soporte en adquisiciones con sujetos no obligados a facturar electrónicamente y será transmitida a la DIAN, indique Si, de lo contrario indique No.


Crear campo F1_TIPNOTA


Campo

F1_TIPNOTA

Orden

ZZ

Tipo

Caracter

Tamaño

1

Decimal

0

Formato

@!

Título

Tipo Ajuste

Descripción

Corrección Nota Ajuste  

Utilizado

Si

Obligatorio

No

Browse

No

Consulta

1D

Val. Sistema

Pertence("12345") .and. NaoVazio()

Inicializador


Help

Concepto de Corrección para Notas de Ajuste. Seleccione las opciones disponibles en la consulta.


Modificar campo FP_ESPECIE

Agregar la información presentada en color azul.


Campo

FP_ESPECIE

Orden

ZZ

Tipo

Caracter

Tamaño

1

Decimal

0

Formato

@!

Título

Especie    

Descripción

Especie de la Fact.     

Val. Sistema

Pertence("12345689")

Opciones

1=FCT;2=NCC;3=NDC;4=NDI;5=NCI;6=VOL;8=NCP;9=NDP


Preguntas

(Archivo SX1 – Archivo de Preguntas)

Agregar la información presentada en color azul.


Modificar grupo MT466N


Orden

02

Pregunta

¿Tipo De Factura ?           

Tipo

N

Tamaño

1

Decimal

0

Objeto

Combo

Ítem 1

Débito        

Ítem 2

Crédito       

Ítem 3

Nota Ajust Débi

Ítem 4

Nota Ajust Créd


Modificar grupo MATA486


Orden

01

Pregunta

¿Tipo de Documento ?         

Tipo

N

Tamaño

1

Decimal

0

Objeto

Combo

Ítem 1

Factura       

Ítem 2

Nota de Débito         

Ítem 3

Nota de Crédito

Ítem 4

Docto Suporte 

Ítem 5

Nota de Ajuste 


Agregar pregunta a grupo MATA486


Orden

06

Pregunta

¿Tipo Nota Ajuste ?         

Tipo

N

Tamaño

1

Decimal

0

Objeto

Combo

Ítem 1

Ninguno     

Ítem 2

Débito        

Ítem 3

Crédito


Crear grupo MATA486J


Orden

01

02

03

Pregunta

¿Serie de la Nota de Ajuste?         

¿ Nota de Ajuste Inicial?

¿ Nota de Ajuste Final?

Tipo

C

C

C

Tamaño

3

13

13

Decimal

0

0

0

Validación



NaoVazio() .and. MV_PAR02<=MV_PAR03

Objeto

Edit

Edit

Edit

Consulta Estándar

SERNF



Grupo094018018

Help

Serie de la Nota de Ajuste.

Número inicial de la Nota de Ajuste.

Número final de la Nota de Ajuste. 



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

Crear Tabla  00 - 1D

Tabla

Clave

Descripción

001DConcepto de Corrección para Notas de Ajuste


Crear nuevos registros en la tabla 00 - 1D 

Clave

Descripción

1DEVOL. PARCIAL DE BIENES Y/O NO ACEPT. PARCIAL DEL SERV
2ANULACIÓN DEL DOCUMENTO SOPORTE 
3REBAJA O DESCUENTO PARCIAL O TOTAL
4AJUSTE DE PRECIO
5OTROS



Crear nuevos registros en la 00 - 01 Series de Facturas 

Clave

Descripción

NAJ0000000000001


05. Bitácora de Cambios

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

5.1.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.

5.1.2 Configuraciones Previas

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

Rutina

Nombre técnico

Fecha

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

Carga de Catálogos.

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


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

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

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

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

2.16.3 Diccionario de Datos

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

Campo

AIT_CODRES

Tipo

C

Tamaño

7

Val. Sistema

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


¡IMPORTANTE!

Los cambios al diccionario de datos fueron incorporados en el pacote "011023".


06. TABLAS UTILIZADAS

  • SF1 - Encabezado de Facturas de Entrada
  • SD1 - Ítems de las Facturas de Entrada
  • SF2 - Encabezado de Facturas de Salida
  • SD2 - Ítems de las Facturas de Salida
  • SA1 - Clientes
  • AI0 - Complemento de Cliente
  • SA2 - Proveedores
  • SFP - Control de Formularios
  • SX5 - Tablas Genéricas