Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DATOS GENERALES


Producto

Solucoes_espanhol
SolucaoTOTVS Backoffice

Línea de producto: 

Linhas_totvs_espanhol
Linha
-
Línea Protheus

Segmento:

Segmentos_totvs_espanhol
SegmentoBackoffice

Módulo:SIGAFAT-FACTURACIONFacturación
Función:
RutinaNombre
M486XFUNPAR.PRWFunciones genéricas para Facturación Electrónica.
MATA468N.PRXGeneración de Notas.
País:Paraguay
Ticket:20421378 
Requisito/Story/Issue (informe el requisito vinculado):DMICNS-20636

...

Se solicita agregar el tratamiento que permita imprimir el KUDE (representación de la factura) antes de obtener la autorización por parte de SIFEN. Se propuso la creación de un parámetro para que el Cliente decida, bajo su propia responsabilidad, la opción de imprimir facturas transmitidas que todavía no sean autorizadas.

03. SOLUCIÓN

Se crea el parámetro MV_IMPKUDE y se agrego el tratamiento para que de acuerdo a su contenido, permitira o no la impresión del KUDE antes de obtener la autorización por parte de SIFEN. Este parámetro se configuro de la siguiente manera:

Posibles Valores:

1 - Imprime solo facturas validadas.

2 - Imprime facturas validadas y facturas transmitidas.

Valor por Default: 

1 - Imprime solo facturas validadas.

M486PDFPARPDF para factura electrónica de Paraguay.
FISA812.PRWDefinición de Catálogos
FISA814.PRWCarga de Catálogos
FISA818.PRWClase ZFWReadTXT
LOCXPAR.PRWFunciones complementarias de documentos fiscales Paraguay.
M100IVA.PRXCálculo de impuesto IVA incluido.
M100IVAI.PRWCálculo de impuesto IVA incluido.
M460IVA.PRXCalculo de IVA de salida.
M460IVAI.PRWCalculo de IVA para documentos de salida.
M486PAGOS.PRWRegistro de pagos para las facturas.
MATA468N.PRXGeneración de Notas.
MATA486.PRWTransmisión Electrónica
MATA992.PRWControl de formularios
País:Paraguay
Ticket:20421378 
Requisito/Story/Issue (informe el requisito vinculado):DMICNS-20636


02. SITUACIÓN/REQUISITO

Se solicita agregar el tratamiento que permita imprimir el KUDE (representación de la factura) antes de obtener la autorización por parte de SIFEN. Se propuso la creación de un parámetro para que el Cliente decida, bajo su propia responsabilidad, la opción de imprimir facturas transmitidas que todavía no sean autorizadas.

03. SOLUCIÓN

Se crea el parámetro MV_IMPKUDE y se implementó el tratamiento para que, de acuerdo a su contenido, permitirá o no la impresión del KUDE antes de obtener la autorización por parte de SIFEN. La configuración de este parámetro se puede consultar en el apartado  04. INFORMACIÓN ADICIONAL.

Informações
titleIMPORTANTE
  1. Para la impresión es necesario enviar el documento para la autorización del SIFEN, es decir, se debe haber realizado el proceso de "Transmisión" del documento que se va a imprimir.

  2. Para los documentos que son enviados, pero aún no son aprobados, la rutina toma el archivo_firmado.xml (ejemplo: a0010010007064nf_firmado.xml) para generar la impresión del documento e incluir el código QR.
  3. Los documentos autorizados son impresos tomando el archivo.xml (ejemplo: a0010010007062nf.xml) de la carpeta "autorizados".
  4. Si al imprimir el documento no se genera el código QR, es porque el archivo no fue enviado al SIFEN y no existe el archivo archivo_firmado.xml (ejemplo: a0010010007064nf_firmado.xml).

1=Persona Física ,2=Persona Jurídica
  • En el módulo de Facturación, ingresar a la rutina Mantenimiento de Catálogos "Actualizaciones | Archivos | Mantenimiento de Catálogos". Ingresar al catálogo S030 - DIRECCIÓN DEL EMISOR, informar los datos correspondientes a la dirección del emisor.
    • Ejemplo:
      • RUC correspondiente al emisor.
      • Número  - Correspondiente al informado antes el SIFEN.
      • Tipo Régimen - Régimen del emisor de acuerdo al catálogo S001.
      • Departamento - Correspondiente al RUC informado y de acuerdo al catálogo S003.
      • Distrito - Correspondiente al RUC informado y de acuerdo al catálogo S031.
      • Ciudad - Correspondiente al RUC informado y de acuerdo al catálogo S012.
  • Dentro del módulo configurador en la configuración de la empresa verificar la siguiente configuración se encuentre registrada:

    • Datos generales
      • Nombre comercial.
      • Teléfono
      • RUC (CNPJ o CPF).
    • Dirección Fiscal/Entrega
      • Dirección Fiscal/Entrega
      • Barrio
      • Ciudad Fiscal Entrega
      • CP Fiscal/Entrega
    • Adicionales
      • Actividad económica - Correspondiente al RUC informado y de acuerdo al catálogo S006.

    Para los siguientes registros será necesario informar los siguientes campos para el correcto llenado de los archivos xml.

    • Clientes - (SIGAFIS | Actualizaciones | Archivos| Clientes)
      • A1_TIPDOC - Tipo de documento.
      • A1_NUM - Número de casa.
      • A1_DEPTO - Código departamento de acuerdo a la SET.
      • A1_DISTR - Código de distrito de acuerdo a la SET.
      • A1_CIUDAD - Código de ciudad de acuerdo a la SET.
      • A1_PESSOA - Persona Física/Jurídica
      • A1_CGC - RUC.
      • A1_NIF - Número de identificación Fiscal
      • A1_NOME - Nombre del cliente.
      • A1_NREDUZ - Nombre de fantasía.
      • A1_END - Dirección del cliente.
      • A1_TEL - Teléfono del cliente.
      • A1_EMAIL - Correo del cliente.
      • A1_COD - Código interno del cliente.
    • Países - (SIGACOM | Actualizaciones | Archivo Importaciones| Países)
      • YA_CODERP - Cod. ERP. Clave de país de acuerdo al catálogo de países.
    • Monedas - (SIGACTB | Actualizaciones | Archivos| Monedas Contables)
      • CTO_MOESAT - Moneda SAT. Clave de moneda de acuerdo al catálogo monedas.
    • Unidades de medida - (SIGAFIS | Actualizaciones | Archivos| Unidades de Medida).
      • AH_COD_CO - Ori Cert Cód. Clave de unidad de medida de acuerdo al catálogo de unidades de medida.
    • Impuestos variables - (SIGAFIS | Actualizaciones | Archivos| Impuestos Variab.).
      • FB_CODIMP - Cod. Impuest. Código de impuesto de acuerdo al catálogo de impuesto afectado.
      • FB_CLASSE - Clase Imp. Indicar la clase de impuesto.
    • Control de Formularios - (SIGAFIS | Actualizaciones | Archivos| Control de formularios).
      • FP_SERIE2 - Serie 2. De acuerdo a la numeración definida por el SIFEN empezando con una serie en blanco hasta acabar la numeración 0000001 - 9999999.
      • FP_CAI - No. Aprob. Informar el número de timbrado para la serie usada de acuerdo al tipo de documento.
      • FP_FINITIM - Fch. In. Tim. Informar la fecha de inicio del timbrado.
    • Productos - (SIGAFIS | Actualizaciones | Archivos | Productos).
      • B1_COD - Código del producto.
      • B1_DESC - Descripción del producto.
      • B1_UM - Unidad de Medida.
    • Condiciones de pago - (SIGAFAT | Actualizaciones | Archivos | Condiciones de pago).
      • Pago de contado  
        • E4_BXTITAV = 1-Si. Baja título automática.
      • Pago en cuota o plazo.
        • E4_BXTITAV = 2-No. Baja título automática.
        • E4_COND - Informar el plazo o cuotas.
          • Ejemplo plazo
            • "30" - Genera un plazo de 30 días.
          • Ejemplo cuota
            • "30,60,90" - Genera 3 cuotas, una cada 30 días.
    • Transportadoras (SIGACOM | Actualizaciones | Archivo importaciones | Transportadoras)
      • A4_NOME - Nombre
      • A4_CGC - RUC
      • A4_TIPCON - Tipo Contrib
      • A4_TIPID - Tipo de Iden (De acuerdo al catálogo S018).
    • Vehículos (SIGAOMS | Actualizaciones | Logística | Vehículos)

      • DA3_DESC - Modelo
      • DA3_PLACA - Matrícula
      • DA3_CHASSI - Chasís
      • DA3_TIPTR2 - Tipo Transporte
      • DA3_TIPID - Tipo Vehículo (Tipo de identificación).

    Pago de Contado

    1. En el módulo de Facturación, ingresar a la rutina Facturación "Actualizaciones | Facturación | Facturación".
    2. Registrar una factura, informar los campos necesarios en la factura para generar correctamente el archivo xml.
      1. Tipo NF (F2_TIPONF).
      2. Tipo Transacción (F2_TPTRANS).
      3. Seleccionar una condición de pago que realice baja automática. (E4_BXTITAV = 1)
    3. Confirmar el documento.
    4. Una vez finalizado se mostrará una ventana para informar las formas de pago del documento, estas son obligatorias para la correcta generación del documento xml. (Deberán contemplar el valor completo del documento para que sea válido)
      1. Para la correcta generación deberán ser informados los campos de acuerdo al tipo de pago.
        1. Tipo de pago 
          1. Pago con Tarjetas.
            1. Tipo Tarjeta
            2. Código de autorización de operación.
            3. Número de Tarjeta (Últimos 4 dígitos).
          2. Pago con cheque. 
            1. Banco emisor.
            2. Número de cheque.
        2. Monto de pago
        3. Forma de procesamiento de pago
      2. En caso no haber registrado la formas de pago al confirmar el documento será posible registrarlas seleccionando el documento y en "Otras acciones" seleccionar la opción "Registro pagos."
    5. Una vez registradas las formas de pago confirmar.

    Pago a plazo

    1. En el módulo de Facturación, ingresar a la rutina Facturación "Actualizaciones | Facturación | Facturación".
    2. Registrar una factura, informar los campos necesarios en la factura para generar correctamente el archivo xml.
      1. Tipo NF (F2_TIPONF).
      2. Tipo Transacción (F2_TPTRANS).
      3. Seleccionar una condición de pago que NO realice baja automática y genere pago con plazo. (Ejemplo: E4_BXTITAV = 2 y E4_COND = 30)
    3. Confirmar el documento.

    Pago en cuota

    1. En el módulo de Facturación, ingresar a la rutina Facturación "Actualizaciones | Facturación | Facturación".
    2. Registrar una factura, informar los campos necesarios en la factura para generar correctamente el archivo xml.
      1. Tipo NF (F2_TIPONF).
      2. Tipo Transacción (F2_TPTRANS).
      3. Seleccionar una condición de pago que NO realice baja automática y genere cuotas. (Ejemplo: E4_BXTITAV = 2 y E4_COND = 30,60,90)
    3. Confirmar el documento.
    Totvs custom tabs box
    tabsCondiciones Previas,Flujo de prueba
    idspaso1,paso2
    Totvs custom tabs box
    tabsParámetros, Archivos Necesarios ,Configuraciones Necesarias, Facturas, Notas Crédito, Notas Débito, Remitos, Documentos Electrónicos, Punto de Entrada Xml Salida, Punto de Entrada Xml Entrada,Personalizar PDF
    idspaso01,paso02,paso03,paso04,paso05,paso06,paso07,paso08,paso09,paso10,paso11
    Totvs custom tabs box items
    defaultyes
    referenciapaso01
    Nombre de la VariableValor Ejemplo
    MV_PATH814C:\Catalogos_csv\
    MV_F3HNUM
    MV_CFDI_AMT
    MV_CFDSMAR

    GetClientDir()

    Cuando se usa en versión web se debe crear un carpeta en alguna ubicación con permisos de lectura y escritura;  y se debe informar la ruta ejemplo "C:\temp\". Adicional en dicha ruta debe esta el certificado y la carpeta SIFENWS.

    MV_CFDI_PASIFENWS
    MV_CFDDOCSGetSrvProfString('startpath','')+'\cfd\facturas\'
    MV_CFDI_PXcertificado.pfx
    MV_CFDICVE12345678a
    MV_IDCONEN1
    MV_IDCSC0001
    MV_CSCABCD0000000000000000000000000000
    MV_CFDUSO1
    MV_RELACNT[email protected]
    MV_TIPTRANS
    MV_ASYNLOT50
    MV_TIPCON
    Catálogos.
  • En el módulo de Facturación, ingresar a la rutina Definición de Catálogos  "Actualizaciones | Archivos| Definición de Catálogos". La primera vez detonará la carga de los archivos csv al Protheus. Es importante realice este paso después de configurar todos los parámetros , pues las configuraciones siguientes dependen de la correcta carga de la información de catálogos al sistema Protheus.

  • Catálogos.

    Totvs custom tabs box items
    defaultnoyes
    referenciapaso02paso1
    1. Contar con
    Archivos de Catálogos.Una vez configurado
    1. el parámetro MV_
    PATH814 con una ruta local, deberá colocar los archivos .csv anexos a esta solución en el archivo CatalogosFact.zip. En este archivo se encuentran los catálogos en formato csv los cuales serán tomados por la rutina Carga de Catálogos para generar sus registros en Protheus.
  • Certificado digital.
    • El certificado digital informado en el parámetro MV_CFDI_PX, deberá ser colocado dentro de la ruta informada en el parámetro MV_CFDSMAR.
  • Archivo .exe (SIFENWS.EXE) para realizar consumo de los servicios web del SIFEN
    • El archivo SIFENWS.EXE se puede descargar del siguiente enlace https://suporte.totvs.com/portal/p/10098/download?e=1083727 una vez descargado el archivo:
      • Localizar el archivo descargado, y descomprimir.
      • Ubique la carpeta "Paraguay" dentro se encuentra el comprimido SIFENWS descomprima no mover ninguno de los elementos.
    • El nombre del archivo(ejecutable) deberá ser colocado en el parámetro MV_CFDI_PA (SIFENWS), el archivo deberá ser colocado en la ruta informada en el parámetro MV_CFDSMAR.
  • Dentro de la ruta '\Protheus_data\system\', deberá crear los siguientes directorios:
    • "\facturas\" 
    • Dentro de la ruta '\Protheus_data\system\facturas\', deberá crear los siguientes directorios:
      • "\autorizados\" - Almacena las facturas autorizadas por el SIFEN.
      • "\canceladas\" - Almacena los documentos cancelados. Los documentos cancelados son documentos que fueron enviados y autorizados por el SIFEN, pero que después fueron cancelados.
      • "\inutilizadas\" - Almacena los documentos inutilizados. Los documentos inutilizados son documentos que no fueron transmitidos al SIFEN, pero que fueron reportados como "cancelados" sin ser aprobados previamente.
  • Para el uso en versión web se debe tener actualizado WEBAGENT y configurar correctamente de acuerdo  a la documentación.
  • Totvs custom tabs box items
    defaultno
    referenciapaso03
    View file
    nameCatalogos.zip
    height250

    CódigoDescripción
    S001Tipo de Régimen
    S002Unidad de Medida
    S003Departamento
    S004Monedas
    S005Países
    S006Catálogo de actividad económica
    S007Catálogo de afectación
    S008Catálogo de categoría ISC
    S009Catálogo de tasas ISC
    S010Condiciones
    S011Catálogo de Regímenes Aduaneros
    S012Referencia Geográfica
    S013Tipos de Pago
    S014Denominación Tarjeta
    S015Documento Electrónico
    S016Tipo de transacción
    S017Catálogo de Impuesto Afectado
    S018Tipo Documento de Identidad
    S019Indicador de Presencia
    S020Doc Identidad VEN/TRA
    S021Motivo de Emisión NC
    S022Motivo de Emisión RE
    S023Catálogo de Respon. Emisión
    S024Catálogo de Vehículos
    S025Catálogo de Tipo de Combustible
    S026Catálogo de Mod. de Transporte
    S027Catálogo Respon. del Flete
    S028Catálogo de Doc. Impreso
    S029Tipos de Operación
    S030Dirección del Emisor
    S031Distrito
    S032Procesamiento Pago
    Totvs custom tabs box items
    defaultno
    referenciapaso04
    Totvs custom tabs box items
    defaultno
    referenciapaso05
    1. En el módulo de Facturación, ingresar a la rutina Generac. de Notas  de Crédito y Débito "Actualizaciones | Facturación | Generac. de Notas  de Crédito y Débito".
    2. Registrar una nota de crédito, informar los campos necesarios en la factura para generar correctamente el archivo xml.
      1. Tipo Nota C (F1_TIPREF) - Motivo de la emisión de la nota de crédito.
    3. Dentro de "Otras acciones | Doc Orig" seleccionar el documento al que corresponde la nota de crédito.
    4. Confirmar el documento.

    Nota 

    Las notas de crédito deben tener un documento asociado. Campos D1_NFORI, D1_SERIORI informados.

    Totvs custom tabs box items
    defaultno
    referenciapaso06
    1. En el módulo de Facturación, ingresar a la rutina Generac. de Notas  de Crédito y Débito "Actualizaciones | Facturación | Generac. de Notas  de Crédito y Débito".
    2. Registrar una nota de débito, informar los campos necesarios en la factura para generar correctamente el archivo xml.
      1. Tipo Nota D (F2_TIPREF).
    3. Al registrar la nota de débito deberán ser informados los campos del documento al cual se encuentra asociada.
    4. Confirmar el documento.

    Nota

    Las notas de crédito deben tener un documento asociado. Campos D2_NFORI, D2_SERIORI informados.

    Totvs custom tabs box items
    defaultno
    referenciapaso07
    1. En el módulo de Facturación, ingresar a la rutina Pedidos de venta "Actualizaciones | Pedidos | Pedidos de venta". 

      1. Registrar un pedido que genere un remito e informar los datos necesarios en el pedido para generar correctamente el archivo xml.
        1. Transp. (C5_TRANSP)
        2. Doc Gener. (C5_DOCGER) = 2 - Remisión
        3. Vehic. Trans. (C5_VEICULO)
        4. Motivo (C5_MODTRAD)
        5. Tipo NF (C5_TIPONF)
        6. Tipo Transac. (C5_TPTRANS)
        7. Incoterms (C5_INCOTER)
        8. Fec. Ini. Tras. (C5_FECDSE)
        9. Fch. Fin Tras. (C5_FECHDE)
        10. Resp. Flete (C5_TPRESFL)
    2. Confirmar el documento.
    3. En el módulo de Facturación, ingresar a la rutina Generac de remito "Actualizaciones | Form. De Remisión | Generac de remito".

    4. Realizar la generación del remito usando el pedido antes generado.

    Totvs custom tabs box items
    defaultno
    referenciapaso08
    1. En el módulo de Facturación, ingresar a la rutina Documentos Electrónicos "Actualizaciones | Facturación | Documentos Electrónicos".
    2. Seleccionar los parámetros de acuerdo a los documentos que serán visualizados/procesados.
      1. ¿Tipo documento? - Seleccionar el tipo de documento.
        1. Factura
        2. Nota Débito
        3. Nota Crédito
        4. Remisión
      2. ¿Serie? - Seleccionar la serie de los documentos.
      3. ¿Estatus? - Estatus de los documentos.
        1. 1 - No transmitida.
        2. 2 - Recibido.
        3. 3 - Esperando procesamiento.
        4. 4 - Documento Rechazado.
        5. 5 - Documento Autorizado.
      4. ¿Fecha Inicial? - Fecha inicial del rango para los documentos.
      5. ¿Fecha Final? - Fecha final del rango para los documentos.

    Transmisión

    Seleccionar los parámetros para visualizar los documentos no transmitidos o rechazados.

    Ejemplo:

    1. ¿Tipo documento? - "Factura"
    2. ¿Serie? - "A"
    3. ¿Estatus? - "1" o "4"
    4. ¿Fecha Inicial? - 01/03/2021
    5. ¿Fecha Final? - 31/03/2021

    Se visualizarán los documentos que no han sido transmitidos o procesados, dependiendo del parámetro "Estatus".

    1. Seleccionar "Transmitir".
    2. Se mostrará una venta de parámetros, informar los datos de acuerdo a los documentos que serán transmitidos. Informar la serie del documento y el rango de los documentos a transmitir.
      1. ¿Serie de la Factura? - "A01"
      2. ¿Factura Inicial? - "0010010000001"
      3. ¿Factura Final? - "0010010000001"
    3. Una vez finalizado el proceso se mostrará un mensaje.
      1. En caso de haber tenido errores durante la transmisión se mostrará un mensaje indicándolo.
        1. Indicar "Si" en la pregunta "¿Desea visualizar el log del proceso?".
        2. Se mostrará un informe con los errores que ocurrieron durante el proceso.
      2. En caso de haber realizado de manera correcta la transmisión se mostrará un mensaje indicándolo.
        1. Indicar "Si" en la pregunta "¿Desea visualizar log de Transmisión?".
        2. Se mostrará un informe con los documentos autorizados.
    4. El documento será actualizado y ahora será visible al seleccionar el estatus "5 - Documento Autorizado"

    Cancelación

    Seleccionar los parámetros para visualizar los documentos Autorizados.

    Ejemplo:

    1. ¿Tipo documento? - "Factura"
    2. ¿Serie? - "A"
    3. ¿Estatus? - "5"
    4. ¿Fecha Inicial? - 01/03/2021
    5. ¿Fecha Final? - 31/03/2021
    1. Seleccionar "Otras acciones | Anulación Fac. Electrónica".
    2. Se mostrará una barra de progreso.
    3. Una vez finalizado el proceso se mostrará un mensaje.
      1. En caso de haber tenido errores durante la transmisión se mostrará un mensaje indicándolo.
        1. Indicar "Si" en la pregunta "¿Desea visualizar el log del proceso?".
        2. Se mostrará un informe con los errores que ocurrieron durante el proceso.
      2. En caso de haber realizado de manera correcta la transmisión se mostrará un mensaje indicándolo.
        1. Indicar "Si" en la pregunta "¿Desea visualizar log de Transmisión?".
        2. Se mostrará un informe con los documentos autorizados.

    Imprimir PDF

    1. Seleccionar "Imprimir PDF".
    2. Se mostrará una venta de parámetros, informar los datos de acuerdo a los documentos que serán generados los PDF. Informar la serie del documento y el rango de los documentos a transmitir.
      1. ¿Serie de documento? - "A01"
      2. ¿Documento Inicial? - "0010010000001"
      3. ¿Documento Final? - "0010010000001"
      4. ¿Formato? - PDF
    3. Se mostrará una barra de progreso.
    4. Una vez finalizado el proceso se podrán consultar los documento en la ruta informada en el parámetro MV_CFDDOCS en la carpeta llamada "Autorizados".
    Totvs custom tabs box items
    defaultno
    referenciapaso09

    En caso de ser necesario modificar el xml para documentos de salida (NF, NDC, RFN) existe el punto de entrada M486PESXML habilitado para realizar esta operación.

    Ejemplos de uso:

    Bloco de código
    languagexml
    themeRDark
    linenumberstrue
    collapsetrue
    User Function M486PESXML()
    Local cFilial   := PARAMIXB[1]
    Local cSerie    := PARAMIXB[2]
    Local cCliente  := PARAMIXB[3]
    Local cLoja     := PARAMIXB[4]
    Local cDoc      := PARAMIXB[5]
    Local cEspecie  := PARAMIXB[6]
    Local cXml      := ""
    Local cSalto	:= chr(13) + chr(10)
    Local cPicture	:= "999999999999999.9999"
    Local cID		:= ""
    Local cSecCod	:= ""
    Local cdDVId	:= ""
    Local cFeEmiDE	:= ""
    Local cNumCasa	:= ""
    Local cDepEmi	:= ""
    Local cDisEmi	:= ""
    Local cCiuEmi	:= ""
    Local cIniTras	:= ""
    Local cFinTras	:= ""
    Local aTotales	:= {0,0,0,0,0,0,0,0,0,0,0,0,0}
    Local aDesc		:= {0,0}
    Local lProd		:= SuperGetMV("MV_CFDI_AM",,"") == "P"
    Local cEmail	:= SuperGetMV("MV_RELACNT",,"")
    Local cAliasTmp	:= ""
    Local aArea		:= GetArea()
    Local aSF		:= {}
    
    	DbSelectArea("SF2")
    	aSF := GetArea()
    	DbSetOrder(1)//F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJA+F2_FORMUL+F2_TIPO
    	lOK := DbSeek(xFilial("SF2")+cDoc+cSerie+cCliente+cLoja) 
    
    	
    	cSecCod  := M486SecCod(Time(),SF2->F2_EMISSAO)
    	cID 	 := IIF(AllTrim(SF2->F2_ESPECIE)=="NF",M486GENCDC("01",SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1),Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1),SUBSTR(SF2->F2_DOC,1,3),SUBSTR(SF2->F2_DOC,4,3),RIGHT(SF2->F2_DOC,7),"1",SF2->F2_EMISSAO,"1",cSecCod,SF2->F2_ESPECIE),"")
    	cID 	 := IIF(AllTrim(SF2->F2_ESPECIE)=="NDC",M486GENCDC("06",SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1),Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1),SUBSTR(SF2->F2_DOC,1,3),SUBSTR(SF2->F2_DOC,4,3),RIGHT(SF2->F2_DOC,7),"1",SF2->F2_EMISSAO,"1",cSecCod,SF2->F2_ESPECIE),cID)
    	cID 	 := IIF(AllTrim(SF2->F2_ESPECIE)=="RFN",M486GENCDC("07",SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1),Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1),SUBSTR(SF2->F2_DOC,1,3),SUBSTR(SF2->F2_DOC,4,3),RIGHT(SF2->F2_DOC,7),"1",SF2->F2_EMISSAO,"1",cSecCod,SF2->F2_ESPECIE),cID)
    	cdDVId	 := AllTrim(STR(CalcMod11(SUBSTR(cID,1,43))))
    	cFeEmiDE := SUBSTR(DTOS(SF2->F2_EMISSAO),0,4) + "-" + SUBSTR(DTOS(SF2->F2_EMISSAO),5,2) + "-" + SUBSTR(DTOS(SF2->F2_EMISSAO),7,2) + "T" + SF2->F2_HORA
    	cNumCasa := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 11,6)
    	cNumCasa := Iif(Empty(cNumCasa), "0", cNumCasa )
    	cDepEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 18,2) 
    	cDisEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 20,3)
    	cCiuEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 23,4)
    
    	cXml := '<rDE' + cSalto
    	cXml += ' xmlns="http://ekuatia.set.gov.py/sifen/xsd" ' + cSalto
    	cXml += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + cSalto
    	cXml += ' xsi:schemaLocation="http://ekuatia.set.gov.py/sifen/xsd/ siRecepDE_v150.xsd">' + cSalto
    	cXml += ' <dVerFor>150</dVerFor>' + cSalto
    	cXml += '	<DE Id="' + cID + '">' + cSalto
    	cXml += '		<dDVId>' + cdDVId + '</dDVId>' + cSalto
    	cXml += '		<dFecFirma></dFecFirma> ' + cSalto
    	cXml += '		<dSisFact>1</dSisFact>' + cSalto
    	cXml += '		<gOpeDE>' + cSalto
    	cXml += '        	<iTipEmi>1</iTipEmi>' + cSalto
    	cXml += '        	<dDesTipEmi>Normal</dDesTipEmi>' +cSalto
    	cXml += '			<dCodSeg>' + SUBSTR(cID,35,9) + '</dCodSeg>' + cSalto
    	cXml += '		</gOpeDE>' + cSalto
    	cXml += '		<gTimb>' + cSalto
    	If AllTrim(SF2->F2_ESPECIE) == "NF"
    		cXml += '        	<iTiDE>1</iTiDE>' + cSalto
    		cXml += '        	<dDesTiDE>Factura electrónica</dDesTiDE>' + cSalto
    	ElseIf AllTrim(SF2->F2_ESPECIE) == "NDC"
    		cXml += '        	<iTiDE>6</iTiDE>' + cSalto
    		cXml += '        	<dDesTiDE>Nota de débito electrónica</dDesTiDE>' + cSalto
    	Else
    		cXml += '        	<iTiDE>7</iTiDE>' + cSalto
    		cXml += '        	<dDesTiDE>Nota de remisión electrónica</dDesTiDE>'	+ cSalto
    	EndIf
    	cXml += '        	<dNumTim>'+ AllTrim(SF2->F2_NUMTIM) +'</dNumTim>' + cSalto
    	cXml += '        	<dEst>' + SUBSTR(SF2->F2_DOC,1,3) + '</dEst>' + cSalto
    	cXml += '        	<dPunExp>' + SUBSTR(SF2->F2_DOC,4,3) + '</dPunExp>' + cSalto
    	cXml += '        	<dNumDoc>' + RIGHT(SF2->F2_DOC,7) + '</dNumDoc>' + cSalto
    	cXml += '        	<dSerieNum>' + AllTrim(SF2->F2_SERIE2) + '</dSerieNum>' + cSalto
    	cXml += '			<dFeIniT>' +FecIniTimb(SF2->F2_SERIE, SF2->F2_ESPECIE) + '</dFeIniT>' + cSalto
    	cXml += '		</gTimb>' + cSalto
    	cXml += '		<gDatGralOpe>' + cSalto
    	cXml += '			<dFeEmiDE>' + cFeEmiDE + '</dFeEmiDE>' + cSalto
    	
    	// Campos inherentes a la operación comercial (D010-D099)
    	If AllTrim(SF2->F2_ESPECIE) <> "RFN"
    		CTO->(DbSetOrder(1)) //CTO_FILIAL+CTO_MOEDA
    		CTO->(MsSeek(xFilial("CTO")+Strzero(SF2->F2_MOEDA,2)))
    		cXml += M486IMPPAR(AllTrim(SF2->F2_ESPECIE),SF2->F2_DOC,SF2->F2_SERIE, SF2->F2_CLIENTE,SF2->F2_LOJA, CTO->CTO_MOESAT, AllTrim(SF2->F2_TPTRANS),SF2->F2_TXMOEDA) + cSalto
    	EndIf
    	//EMISOR
    	cXml += '			<gEmis>' + cSalto
    	cXml += '				<dRucEm>' + SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1)+'</dRucEm>' + cSalto
    	cXml += '				<dDVEmi>' + Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1) + '</dDVEmi>' + cSalto
    	cXml += '				<iTipCont>1</iTipCont>' + cSalto
    	cXml += '				<cTipReg>'+ ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 17,1) +'</cTipReg>' + cSalto
    	If lProd
    		cXml += '				<dNomEmi>'+ AllTrim(SM0->M0_NOME) + '</dNomEmi>' + cSalto
    	Else
    		cXml += '				<dNomEmi>'+  "DE generado en ambiente de prueba - sin valor comercial ni fiscal" + '</dNomEmi>' + cSalto
    	EndIf
    	cXml += '				<dNomFanEmi>'+ AllTrim(SM0->M0_NOMECOM) + '</dNomFanEmi>' + cSalto
    	cXml += '				<dDirEmi>'+ AllTrim(SM0->M0_ENDENT) + '</dDirEmi>' + cSalto
    	cXml += '				<dNumCas>' + cNumCasa + '</dNumCas>' + cSalto
    	cXml += '				<cDepEmi>' + cDepEmi+ '</cDepEmi>' + cSalto
    	cXml += '				<dDesDepEmi>' + AllTrim(ObtColSAT("S003",cDepEmi, 1, 2, 3,28)) + '</dDesDepEmi>' + cSalto
    	cXml += '				<cDisEmi>' + AllTrim(cDisEmi) + '</cDisEmi>' + cSalto
    	cXml += '				<dDesDisEmi>' + AllTrim(ObtColSAT("S031",cDisEmi, 1, 3, 4,30))+ '</dDesDisEmi>' + cSalto
    	cXml += '				<cCiuEmi>' +  AllTrim(cCiuEmi)  + '</cCiuEmi>' + cSalto
    	cXml += '				<dDesCiuEmi>' +  AllTrim(ObtColSAT("S012",cCiuEmi, 48, 4, 52,30))+ '</dDesCiuEmi>' + cSalto
    	If !Empty(SM0->M0_TEL)
    		cXml += '				<dTelEmi>' + AllTrim(SM0->M0_TEL) + '</dTelEmi>' + cSalto
    	EndIf
    	cXml += '				<dEmailE>' +  cEmail  + '</dEmailE>' + cSalto //Quitar
    	cXml += '				<gActEco>' + cSalto
    	cXml += '					<cActEco>' + AllTrim(SM0->M0_DSCCNA) + '</cActEco>' + cSalto
    	cXml += '					<dDesActEco>'+ ObtColSAT("S006",SUBSTR(SM0->M0_DSCCNA,1,6) , 2, 5, 7,166)+'</dDesActEco>' + cSalto
    	cXml += '				</gActEco>' +  cSalto
    	cXml += '			</gEmis>' + cSalto
    	//RECEPTOR
    	SA1->(DbSetOrder(1))
    	SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA))
    	SYA->(DbSetOrder(1))
    	SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS))
    
    	cXml += '			<gDatRec>' + cSalto
    	cXml += '				<iNatRec>1</iNatRec>' + cSalto
    	cXml += '				<iTiOpe>1</iTiOpe>' + cSalto
    	cXml += '				<cPaisRec>' + SYA->YA_CODERP + '</cPaisRec>' + cSalto
    	cXml += '				<dDesPaisRe>'+ ObtColSAT("S005",SYA->YA_CODERP, 1, 3, 4,52)+'</dDesPaisRe>' +cSalto
    	If !Empty(SA1->A1_CGC)
    		cXml += '				<iTiContRec>' + IIF(SA1->A1_PESSOA $ "F","1","2") + '</iTiContRec>' + cSalto
    		cXml += '				<dRucRec>' +  SUBSTR(SA1->A1_CGC,1,RAT("-",SA1->A1_CGC)-1) + '</dRucRec>' + cSalto
    		cXml += '				<dDVRec>' + Substr(SA1->A1_CGC,RAT("-",SA1->A1_CGC)+ 1,1) + '</dDVRec>' + cSalto
    	Else
    		cXml += '				<iTipIDRec>' + AllTrim(SA1->A1_TIPDOC) + '</iTipIDRec>' + cSalto
    		cXml += '				<dDTipIDRec>' +  ObtColSAT("S018", SA1->A1_TIPDOC, 1, 1, 2,41) + '</dDTipIDRec>' + cSalto
    		cXml += '				<dNumIDRec>' +  IIF(AllTrim(SA1->A1_TIPDOC)=="5","0",ALLTRIM(SA1->A1_NIF)) + '</dNumIDRec>' +cSalto
    	EndIf
    	cXml += '				<dNomRec>' + AllTrim(SA1->A1_NOME)+ '</dNomRec>' + cSalto
    	cXml += '				<dNomFanRec>' + AllTrim(SA1->A1_NREDUZ)+ '</dNomFanRec>' + cSalto
    	cXml += '				<dDirRec>' + AllTrim(SA1->A1_END) + '</dDirRec>' + cSalto
    	cXml += '				<dNumCasRec>' + AllTrim(SA1->A1_NUM) + '</dNumCasRec>' + cSalto
    	cXml += '				<cDepRec>' + SA1->A1_DEPTO + '</cDepRec>' + cSalto
    	cXml += '				<dDesDepRec>' + AllTrim(ObtColSAT("S003",SA1->A1_DEPTO, 1, 2, 3,28)) +'</dDesDepRec>' + cSalto
    	cXml += '				<cDisRec>' + SA1->A1_DISTR+ '</cDisRec>' + cSalto
    	cXml += '				<dDesDisRec>'+ AllTrim(ObtColSAT("S031",SA1->A1_DISTR, 1, 3, 4,30)) + '</dDesDisRec>' + cSalto
    	cXml += '				<cCiuRec>' + AllTrim(SA1->A1_CIUDAD) + '</cCiuRec>' + cSalto
    	cXml += '				<dDesCiuRec>' + AllTrim(ObtColSAT("S012",SA1->A1_CIUDAD, 48, 4, 52,30)) + '</dDesCiuRec>' + cSalto
    	If !Empty(SA1->A1_TEL)
    		cXml += '				<dTelRec>' + AllTrim(SA1->A1_TEL) + '</dTelRec>' + cSalto
    	EndIf
    	If !Empty(SA1->A1_EMAIL)
    		cXml += '				<dEmailRec>' + SA1->A1_EMAIL + '</dEmailRec>' + cSalto
    	EndIf
    	cXml += '				<dCodCliente>' + AllTrim(SA1->A1_COD) + '</dCodCliente>' + cSalto
    	cXml += '			</gDatRec>' + cSalto
    	cXml += '		</gDatGralOpe>' + cSalto
    
    	//TIPO DE PRESENCIA
    	cXml += '		<gDtipDE>' + cSalto
    	If AllTrim(SF2->F2_ESPECIE)=="NF"
    		cXml += '        	<gCamFE>' + cSalto
    		cXml += '    			<iIndPres>' + AllTrim(SF2->F2_TIPONF) + '</iIndPres>' + cSalto
    		cXml += '        		<dDesIndPres>'+ ObtColSAT("S019",SF2->F2_TIPONF, 1, 1, 2,30)+'</dDesIndPres>' + cSalto
    		cXml += '        	</gCamFE>' + cSalto
    		// CONDICIONES DE PAGO
    		cXml += M486CONDPAG(SF2->F2_FILIAL, SF2->F2_DOC,SF2->F2_SERIE, SF2->F2_CLIENTE,SF2->F2_LOJA,SF2->F2_ESPECIE,SF2->F2_COND,SF2->F2_MOEDA,SF2->F2_TXMOEDA) + cSalto
    	ElseIf AllTrim(SF2->F2_ESPECIE)=="NDC"
    		cXml += '        	<gCamNCDE>' + cSalto
    		cXml += '    			<iMotEmi>' + AllTrim(SF2->F2_TIPREF) + '</iMotEmi>' + cSalto
    		cXml += '        		<dDesMotEmi>'+ ObtColSAT("S021",SF2->F2_TIPREF, 1, 1, 2,30)+'</dDesMotEmi>' + cSalto
    		cXml += '        	</gCamNCDE>' + cSalto
    	ElseIf AllTrim(SF2->F2_ESPECIE)=="RFN"
    		cXml += '        	<gCamNRE>' + cSalto
    		cXml += '    			<iMotEmiNR>' + AllTrim(SF2->F2_MOTEMIR) + '</iMotEmiNR>' + cSalto
    		cXml += '        		<dDesMotEmiNR>'+ ObtColSAT("S022",SF2->F2_MOTEMIR, 1, 2, 3,60)+'</dDesMotEmiNR>' + cSalto
    		cXml += '    			<iRespEmiNR>1</iRespEmiNR>'+ cSalto
    		cXml += '    			<dDesRespEmiNR>Emisor de la factura</dDesRespEmiNR>' + cSalto
    		If AllTrim(SF2->F2_MOTEMIR) == "1"
    			cXml += '    			<dFecEm>' + SUBSTR(DTOS(SF2->F2_FECHSE),0,4) + "-" + SUBSTR(DTOS(SF2->F2_FECHSE),5,2) + "-" + SUBSTR(DTOS(SF2->F2_FECHSE),7,2) + '</dFecEm>' + cSalto
    		EndIf
    		cXml += '        	</gCamNRE>' + cSalto
    	EndIf
    
    	cAliasTmp := QueryItems("SD2", "D2_COD, D2_QUANT, D2_TES, D2_ITEM, SD2.R_E_C_N_O_", "D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'",  "D2_ITEM") 
    	
    	While (cAliasTmp)->(!EOF())
    		cXml += '        	<gCamItem>' + cSalto
    		cXml += '    			<dCodInt>' + Alltrim((cAliasTmp)->B1_COD) + '</dCodInt>' + cSalto
    		cXml += '    			<dDesProSer>' + AllTrim((cAliasTmp)->B1_DESC) + '</dDesProSer>' + cSalto
    		cXml += '    			<cUniMed>' + AllTrim((cAliasTmp)->AH_COD_CO) + '</cUniMed>' + cSalto
    		cXml += '    			<dDesUniMed>' + ObtColSAT("S002",(cAliasTmp)->AH_COD_CO, 1, 3, 29,6) + '</dDesUniMed>' + cSalto
    		cXml += '    			<dCantProSer>' + AllTrim(TRANSFORM((cAliasTmp)->D2_QUANT,"9999999999.9999") )+ '</dCantProSer>' + cSalto
    		If AllTrim(SF2->F2_ESPECIE) <> "RFN"
    			If (cAliasTmp)->R_E_C_N_O_ > 0
    				SD2->(dbgoto((cAliasTmp)->R_E_C_N_O_))
    			EndIf
    			cXml += M486IMPDPAR(AllTrim(SF2->F2_ESPECIE),SF2->F2_DOC,SF2->F2_SERIE, SF2->F2_CLIENTE,SF2->F2_LOJA, (cAliasTmp)->D2_TES,(cAliasTmp)->D2_ITEM,(cAliasTmp)->D2_COD,@aDesc,@aTotales) + cSalto
    		EndIf
    		cXml += '        	</gCamItem>' + cSalto
    		(cAliasTmp)->(dbSkip())
    	End
    	(cAliasTmp)->(dbcloseArea())
    	
    	//Nodos de Guia de Remisión
    	If AllTrim(SF2->F2_ESPECIE) == "RFN"
    		DbSelectArea("DA3")
    		DA3->(DbSetOrder(1)) //DA3_FILIAL+DA3_COD
    		If DA3->(DbSeek(xFilial("DA3") + SF2->F2_VEICULO))
    			cXml += '        	<gTransp>' + cSalto
    			cXml += '    			<iTipTrans>' + AllTrim(DA3->DA3_TIPTR2) + '</iTipTrans>' + cSalto
    			If AllTrim(AllTrim(DA3->DA3_FROVEI)) == "1"
    				cXml += '    			<dDesTipTrans>Propio</dDesTipTrans>' + cSalto
    			Else
    				cXml += '    			<dDesTipTrans>Tercero</dDesTipTrans>' + cSalto
    			EndIf
    			cXml += '    			<iModTrans>' + AllTrim(DA3->DA3_TIPTR2) + '</iModTrans>' + cSalto
    			cXml += '    			<dDesModTrans>' + AllTrim(ObtColSAT("S026", AllTrim(DA3->DA3_TIPTR2), 1, 1, 2,10)) + '</dDesModTrans>' + cSalto
    			cXml += '    			<iRespFlete>' + AllTrim(SF2->F2_TPRESFL) + '</iRespFlete>' + cSalto
    			cXml += '    			<cCondNeg>' + AllTrim(SF2->F2_INCOTER) + '</cCondNeg>' +  cSalto
    			cIniTras := SUBSTR(DTOS(SF2->F2_FECDSE),0,4) + "-" + SUBSTR(DTOS(SF2->F2_FECDSE),5,2) + "-" + SUBSTR(DTOS(SF2->F2_FECDSE),7,2)
    			cXml += '    			<dIniTras>' + cIniTras + '</dIniTras>' + cSalto
    			cFinTras := SUBSTR(DTOS(SF2->F2_FECHSE),0,4) + "-" + SUBSTR(DTOS(SF2->F2_FECHSE),5,2) + "-" + SUBSTR(DTOS(SF2->F2_FECHSE),7,2)
    			cXml += '    			<dFinTras>' + cFinTras  + '</dFinTras>' + cSalto
    			cXml += '    			<gCamSal>' + cSalto
    			cXml += '    				<dDirLocSal>' + AllTrim(SM0->M0_ENDENT) + '</dDirLocSal>' + cSalto
    			cXml += '    				<dNumCasSal>' + cNumCasa + '</dNumCasSal>' + cSalto 
    			If !Empty(SM0->M0_COMPENT)
    				cXml += '    				<dComp1Sal>' + AllTrim(SM0->M0_COMPENT) + '</dComp1Sal>' + cSalto
    			EndIf
    			cXml += '    				<cDepSal>' + cDepEmi + '</cDepSal>' + cSalto
    			cXml += '    				<dDesDepSal>' + AllTrim(ObtColSAT("S003",cDepEmi, 1, 2, 3,28)) + '</dDesDepSal>' + cSalto
    			cXml += '    				<cDisSal>' + AllTrim(cDisEmi) + '</cDisSal>' + cSalto
    			cXml += '    				<dDesDisSal>' + AllTrim(ObtColSAT("S031",cDisEmi, 1, 3, 4,30)) + '</dDesDisSal>' +cSalto
    			cXml += '    				<cCiuSal>' + AllTrim(cCiuEmi) + '</cCiuSal>' + cSalto
    			cXml += '    				<dDesCiuSal>' + AllTrim(ObtColSAT("S012",cCiuEmi, 48, 4, 52,30)) + '</dDesCiuSal>' + cSalto
    			cXml += '    			</gCamSal>' + cSalto
    			cXml += '    			<gCamEnt>' + cSalto
    			cXml += '    				<dDirLocEnt>' + AllTrim(SA1->A1_END) + '</dDirLocEnt>' + cSalto
    			cXml += '    				<dNumCasEnt>' + AllTrim(SA1->A1_NUM) + '</dNumCasEnt>' + cSalto
    			cXml += '    				<cDepEnt>' + AllTrim(SA1->A1_DEPTO) + '</cDepEnt>' + cSalto
    			cXml += '    				<dDesDepEnt>' + Alltrim(ObtColSAT("S003",SA1->A1_DEPTO, 1, 2, 3,28)) + '</dDesDepEnt>' + cSalto
    			cXml += '    				<cDisEnt>' + AllTrim(SA1->A1_DISTR) + '</cDisEnt>' +cSalto
    			cXml += '    				<dDesDisEnt>' + AllTrim(ObtColSAT("S031",SA1->A1_DISTR, 1, 3, 4,30)) + '</dDesDisEnt>' + cSalto
    			cXml += '    				<cCiuEnt>' + AllTrim(SA1->A1_CIUDAD) + '</cCiuEnt>' + cSalto
    			cXml += '    				<dDesCiuEnt>' +  AllTrim(ObtColSAT("S012",SA1->A1_CIUDAD, 48, 4, 52,30)) + '</dDesCiuEnt>' + cSalto
    			If !Empty(SA1->A1_TEL)
    				cXml += '    				<dTelEnt>' + AllTrim(SA1->A1_TEL) + '</dTelEnt>' + cSalto
    			EndIf
    			cXml += '    			</gCamEnt>' + cSalto
    			cXml += '    			<gVehTras>' + cSalto
    			cXml += '    				<dTiVehTras>' + Alltrim(ObtColSAT("S026", AllTrim(DA3->DA3_TIPTR2), 1, 1, 2,10)) + '</dTiVehTras>' + cSalto
    			cXml += '    				<dMarVeh>' + AllTrim(DA3->DA3_DESC) + '</dMarVeh>' +cSalto
    			cXml += '    				<dTipIdenVeh>' + AllTrim(DA3->DA3_TIPID) + '</dTipIdenVeh>' + cSalto
    			If AllTrim(DA3->DA3_TIPID) == "1"
    				cXml += '    				<dNroIDVeh>' + AllTrim(DA3->DA3_CHASSI) + '</dNroIDVeh>' + cSalto
    			Else
    				cXml += '    				<dNroMatVeh>' + AllTrim(DA3->DA3_PLACA) + '</dNroMatVeh>' + cSalto
    			EndIf
    			If AllTrim(DA3->DA3_TIPTR2) == "3"
    				cXml += '    				<dNroVuelo>' + AllTrim(SF2->F2_RASTR) + '</dNroVuelo>' + cSalto
    			EndIf
    			cXml += '    			</gVehTras>' + cSalto
    			DbSelectArea("SA4")
    			SA4->(DbSetOrder(1)) //A4_FILIAL+A4_COD
    			If SA4->(MsSeek(xFilial("SA4") + SF2->F2_TRANSP))
    				cXml += '    			<gCamTrans>' + cSalto
    				cXml += '    				<iNatTrans>' + AllTrim(SA4->A4_TIPCON) + '</iNatTrans>' + cSalto
    				cXml += '    				<dNomTrans>' + AllTrim(SA4->A4_NOME) + '</dNomTrans>' + cSalto
    				If AllTrim(SA4->A4_TIPCON) == "1"
    					cXml += '    				<dRucTrans>' + SUBSTR(SA4->A4_CGC,1,RAT("-",SA4->A4_CGC)-1) + '</dRucTrans>' + cSalto
    					cXml += '    				<dDVTrans>' + SUBSTR(SA4->A4_CGC,RAT("-",SA4->A4_CGC)+ 1,1) + '</dDVTrans>' + cSalto
    				Else
    					cXml += '    				<iTipIDTrans>' + Alltrim(SA4->A4_TIPID) + '</iTipIDTrans>' + cSalto
    					cXml += '    				<dDTipIDTrans>' +  Alltrim(ObtColSAT("S018", ALLTRIM(SA4->A4_TIPID), 1, 1, 2,41))  + '</dDTipIDTrans>' + cSalto
    					cXml += '    				<dNumIDTrans>' + AllTrim(SA4->A4_CGC) + '</dNumIDTrans>' + cSalto
    				EndIf
    				cXml += '    				<dNumIDChof>' + AllTrim(SA4->A4_CGC) + '</dNumIDChof>' + cSalto
    				cXml += '    				<dNomChof>' + AllTrim(SA4->A4_NOME) + '</dNomChof>' + cSalto
    				cXml += '    			</gCamTrans>' + cSalto
    			EndIf
    			cXml += '        	</gTransp>' + cSalto
    		EndIf
    	EndIf
    
    	cXml += '		</gDtipDE>' + cSalto
    	If AllTrim(SF2->F2_ESPECIE) <> "RFN"
    		aTotales := M486SUBTOT(AllTrim(SF2->F2_ESPECIE),SF2->F2_DOC,SF2->F2_SERIE, SF2->F2_CLIENTE,SF2->F2_LOJA)
    		cXml += '		<gTotSub>' + cSalto
    		cXml += '        	<dSubExe>'+ AllTrim(TRANSFORM(aTotales[1],cPicture))+'</dSubExe>' + cSalto
    		cXml += '        	<dSubExo>'+ AllTrim(TRANSFORM(aTotales[2],cPicture))+'</dSubExo>' + cSalto
    		cXml += '        	<dSub5>'+ AllTrim(TRANSFORM(aTotales[3],cPicture))+'</dSub5>' + cSalto
    		cXml += '        	<dSub10>'+ AllTrim(TRANSFORM(aTotales[4],cPicture))+'</dSub10>' + cSalto
    		cXml += '        	<dTotOpe>'+ AllTrim(TRANSFORM(aTotales[5],cPicture))+'</dTotOpe>' + cSalto
    		cXml += '        	<dTotDesc>'+ AllTrim(TRANSFORM(aDesc[1],cPicture))+'</dTotDesc>' + cSalto
    		cXml += '        	<dTotDescGlotem>'+ AllTrim(TRANSFORM(aTotales[6],cPicture))+'</dTotDescGlotem>' + cSalto
    		cXml += '        	<dTotAntItem>0</dTotAntItem>' + cSalto
    		cXml += '        	<dTotAnt>0</dTotAnt>' + cSalto
    		cXml += '        	<dPorcDescTotal>0</dPorcDescTotal>' + cSalto
    		cXml += '        	<dDescTotal>'+ AllTrim(TRANSFORM(aDesc[1],cPicture))+'</dDescTotal>' + cSalto
    		cXml += '        	<dAnticipo>0</dAnticipo>' + cSalto
    		cXml += '        	<dRedon>0.0</dRedon>' + cSalto
    		cXml += '        	<dTotGralOpe>'+ AllTrim(TRANSFORM(SF2->F2_VALBRUT,cPicture))+'</dTotGralOpe>' + cSalto
    		cXml += '        	<dIVA5>'+ AllTrim(TRANSFORM(aTotales[7],cPicture))+'</dIVA5>' + cSalto
    		cXml += '        	<dIVA10>'+ AllTrim(TRANSFORM(aTotales[8],cPicture))+'</dIVA10>' + cSalto
    		cXml += '        	<dTotIVA>'+ AllTrim(TRANSFORM(aTotales[9],cPicture))+'</dTotIVA>' + cSalto
    		cXml += '        	<dBaseGrav5>'+ AllTrim(TRANSFORM(aTotales[10],cPicture))+'</dBaseGrav5>' + cSalto
    		cXml += '			<dBaseGrav10>'+ AllTrim(TRANSFORM(aTotales[11],cPicture))+'</dBaseGrav10>' + cSalto
    		cXml += '			<dTBasGraIVA>'+ AllTrim(TRANSFORM(aTotales[12],cPicture))+'</dTBasGraIVA>' + cSalto
    		If AllTrim(STR(SF2->F2_MOEDA)) <> "1"
    			cXml += '			<dTotalGs>'+ AllTrim(TRANSFORM(SF2->F2_VALBRUT*SF2->F2_TXMOEDA,cPicture))+'</dTotalGs>' + cSalto
    		EndIf
    		cXml += '		</gTotSub>' +cSalto
    	EndIf
    	
    	//DOCUMENTO ASOCIADO
    	If AllTrim(SF2->F2_ESPECIE)=="NDC"
    		cXml += '		<gCamDEAsoc>' + cSalto
    		cXml += M486ASOC(SF2->F2_ESPECIE,SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,"1") 
    		cXml += '		</gCamDEAsoc>' + cSalto
    	EndIf
    	cXml += '	</DE>' + cSalto
    	cXml += '</rDE>' + cSalto
    
    	RestArea(aSF)
    	RestArea(aArea)
    
    Return cXml

    La información retornada en la variable cXml deberá contener el xml que será guardado para ser transmitido.

    Totvs custom tabs box items
    defaultno
    referenciapaso10

    En caso de ser necesario modificar el xml para documentos de entrada (NCC) existe el punto de entrada M486PEEXML habilitado para realizar esta operación.

    Ejemplos de uso:

    Bloco de código
    User Function M486PEEXML()
    Local cFilial   := PARAMIXB[1]
    Local cSerie    := PARAMIXB[2]
    Local cCliente  := PARAMIXB[3]
    Local cLoja     := PARAMIXB[4]
    Local cDoc      := PARAMIXB[5]
    Local cEspecie  := PARAMIXB[6]
    Local cXml      := ""
    Local cSalto	:= chr(13) + chr(10)
    Local cPicture	:= "999999999999999.9999"
    Local cID		:= ""
    Local cSecCod	:= ""
    Local cdDVId	:= ""
    Local cFeEmiDE	:= ""
    Local cNumCasa	:= ""
    Local cDepEmi	:= ""
    Local cDisEmi	:= ""
    Local cCiuEmi	:= ""
    Local aTotales	:= {0,0,0,0,0,0,0,0,0,0,0,0,0}
    Local aDesc		:= {0,0}
    Local lProd		:= SuperGetMV("MV_CFDI_AM",,"") == "P"
    Local cEmail	:= SuperGetMV("MV_RELACNT",,"")
    Local cAliasTmp	:= ""
    Local aArea		:= GetArea()
    Local aSF		:= {}
    
    	DbSelectArea("SF1")
    	aSF := GetArea()
    	DbSetOrder(1)//F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO 
    	DbSeek(xFilial("SF1")+cDoc+cSerie+cCliente+cLoja)
    
    	
    	cSecCod  := M486SecCod(Time(),SF1->F1_EMISSAO)
    	cID		 := M486GENCDC("05",SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1),Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1),SUBSTR(SF1->F1_DOC,1,3),SUBSTR(SF1->F1_DOC,4,3),SUBSTR(SF1->F1_DOC,7),"1",SF1->F1_EMISSAO,"1",cSecCod,SF1->F1_ESPECIE)
    	cdDVId	 := AllTrim(STR(CalcMod11(SUBSTR(cID,1,43))))
    	cFeEmiDE := SUBSTR(DTOS(SF1->F1_EMISSAO),0,4) + "-" + SUBSTR(DTOS(SF1->F1_EMISSAO),5,2) + "-" + SUBSTR(DTOS(SF1->F1_EMISSAO),7,2) + "T" + SF1->F1_HORA
    	cNumCasa := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 11,6)
    	cNumCasa := Iif(Empty(cNumCasa), "0", cNumCasa )
    	cDepEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 18,2) 
    	cDisEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 20,3)
    	cCiuEmi  := ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 23,4)
    
    	cXml := '<rDE' + cSalto
    	cXml += ' xmlns="http://ekuatia.set.gov.py/sifen/xsd" ' + cSalto
    	cXml += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + cSalto
    	cXml += ' xsi:schemaLocation="http://ekuatia.set.gov.py/sifen/xsd/ siRecepDE_v150.xsd">' + cSalto
    	cXml += ' <dVerFor>150</dVerFor>' + cSalto
    	cXml += '	<DE Id="' + cID + '">' + cSalto
    	cXml += '		<dDVId>' + cdDVId + '</dDVId>' + cSalto
    	cXml += '		<dFecFirma></dFecFirma> ' + cSalto
    	cXml += '		<dSisFact>1</dSisFact>' + cSalto
    	cXml += '		<gOpeDE>' + cSalto
    	cXml += '        	<iTipEmi>1</iTipEmi>' + cSalto
    	cXml += '        	<dDesTipEmi>Normal</dDesTipEmi>' +cSalto
    	cXml += '			<dCodSeg>' + SUBSTR(cID,35,9) + '</dCodSeg>' + cSalto
    	cXml += '		</gOpeDE>' + cSalto
    	cXml += '		<gTimb>' + cSalto
    	cXml += '        	<iTiDE>5</iTiDE>' + cSalto
    	cXml += '        	<dDesTiDE>Nota de crédito electrónica</dDesTiDE>' + cSalto
    	cXml += '        	<dNumTim>'+ AllTrim(SF1->F1_NUMTIM) +'</dNumTim>' + cSalto
    	cXml += '        	<dEst>' + SUBSTR(SF1->F1_DOC,1,3) + '</dEst>' + cSalto
    	cXml += '        	<dPunExp>' + SUBSTR(SF1->F1_DOC,4,3) + '</dPunExp>' + cSalto
    	cXml += '        	<dNumDoc>' + RIGHT(SF1->F1_DOC,7) + '</dNumDoc>' + cSalto
    	cXml += '        	<dSerieNum>' + AllTrim(SF1->F1_SERIE2) + '</dSerieNum>' + cSalto
    	cXml += '			<dFeIniT>' + FecIniTimb(SF1->F1_SERIE, SF1->F1_ESPECIE) + '</dFeIniT>' + cSalto
    	cXml += '		</gTimb>' + cSalto
    	cXml += '		<gDatGralOpe>' + cSalto
    	cXml += '			<dFeEmiDE>' + cFeEmiDE + '</dFeEmiDE>' + cSalto
    
    	// Campos inherentes a la operación comercial (D010-D099)
    	CTO->(DbSetOrder(1)) //CTO_FILIAL+CTO_MOEDA
    	CTO->(MsSeek(xFilial("CTO")+Strzero(SF1->F1_MOEDA,2)))
    	cXml += M486IMPPAR(ALLTRIM(SF1->F1_ESPECIE),SF1->F1_DOC,SF1->F1_SERIE, SF1->F1_FORNECE,SF1->F1_LOJA, CTO->CTO_MOESAT,"","") + cSalto
    
    	//EMISOR
    	cXml += '			<gEmis>' + cSalto
    	cXml += '				<dRucEm>' + SUBSTR(SM0->M0_CGC,1,RAT("-",SM0->M0_CGC)-1)+'</dRucEm>' + cSalto
    	cXml += '				<dDVEmi>' + Substr(SM0->M0_CGC,RAT("-",SM0->M0_CGC)+ 1,1) + '</dDVEmi>' + cSalto
    	cXml += '				<iTipCont>1</iTipCont>' + cSalto
    	cXml += '				<cTipReg>'+ ObtColSAT("S030",SUBSTR(SM0->M0_CGC,1,10) , 1, 10, 17,1) +'</cTipReg>' + cSalto
    	If lProd
    		cXml += '				<dNomEmi>'+ AllTrim(SM0->M0_NOME) + '</dNomEmi>' + cSalto
    	Else
    		cXml += '				<dNomEmi>'+  "DE generado en ambiente de prueba - sin valor comercial ni fiscal" + '</dNomEmi>' + cSalto
    	EndIf
    	cXml += '				<dNomFanEmi>'+ AllTrim(SM0->M0_NOMECOM) + '</dNomFanEmi>' + cSalto
    	cXml += '				<dDirEmi>'+ AllTrim(SM0->M0_ENDENT) + '</dDirEmi>' + cSalto
    	cXml += '				<dNumCas>' + cNumCasa + '</dNumCas>' + cSalto
    	cXml += '				<cDepEmi>' + cDepEmi+ '</cDepEmi>' + cSalto
    	cXml += '				<dDesDepEmi>' + AllTrim(ObtColSAT("S003",cDepEmi, 1, 2, 3,28)) + '</dDesDepEmi>' + cSalto
    	cXml += '				<cDisEmi>' + AllTrim(cDisEmi) + '</cDisEmi>' + cSalto
    	cXml += '				<dDesDisEmi>' + AllTrim(ObtColSAT("S031",cDisEmi, 1, 3, 4,30))+ '</dDesDisEmi>' + cSalto
    	cXml += '				<cCiuEmi>' +  AllTrim(cCiuEmi)  + '</cCiuEmi>' + cSalto
    	cXml += '				<dDesCiuEmi>' +  AllTrim(ObtColSAT("S012",cCiuEmi, 48, 4, 52,30))+ '</dDesCiuEmi>' + cSalto
    	If !Empty(SM0->M0_TEL)
    		cXml += '				<dTelEmi>' + AllTrim(SM0->M0_TEL) + '</dTelEmi>' + cSalto
    	EndIf
    	cXml += '				<dEmailE>' +  cEmail  + '</dEmailE>' + cSalto //Quitar
    	cXml += '				<gActEco>' + cSalto
    	cXml += '					<cActEco>' + AllTrim(SM0->M0_DSCCNA) + '</cActEco>' + cSalto
    	cXml += '					<dDesActEco>'+ ObtColSAT("S006",SUBSTR(SM0->M0_DSCCNA,1,6) , 2, 5, 7,166)+'</dDesActEco>' + cSalto
    	cXml += '				</gActEco>' +  cSalto
    	cXml += '			</gEmis>' + cSalto
    	//RECEPTOR
    	SA1->(DbSetOrder(1))
    	SA1->(MSSeek(xFilial("SA1")+SF1->F1_FORNECE+SF1->F1_LOJA))
    	SYA->(DbSetOrder(1))
    	SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS))
    
    	cXml += '			<gDatRec>' + cSalto
    	cXml += '				<iNatRec>1</iNatRec>' + cSalto
    	cXml += '				<iTiOpe>1</iTiOpe>' + cSalto
    	cXml += '				<cPaisRec>' + SYA->YA_CODERP + '</cPaisRec>' + cSalto
    	cXml += '				<dDesPaisRe>'+ ObtColSAT("S005",SYA->YA_CODERP, 1, 3, 4,52)+'</dDesPaisRe>' +cSalto
    	If !Empty(SA1->A1_CGC)
    		cXml += '				<iTiContRec>' + IIF(SA1->A1_PESSOA $ "F","1","2") + '</iTiContRec>' + cSalto
    		cXml += '				<dRucRec>' +  SUBSTR(SA1->A1_CGC,1,RAT("-",SA1->A1_CGC)-1) + '</dRucRec>' + cSalto
    		cXml += '				<dDVRec>' + Substr(SA1->A1_CGC,RAT("-",SA1->A1_CGC)+ 1,1) + '</dDVRec>' + cSalto
    	Else
    		cXml += '				<iTipIDRec>' + AllTrim(SA1->A1_TIPDOC) + '</iTipIDRec>' + cSalto
    		cXml += '				<dDTipIDRec>' +  ObtColSAT("S018", SA1->A1_TIPDOC, 1, 1, 2,41) + '</dDTipIDRec>' + cSalto
    		cXml += '				<dNumIDRec>' +  IIF(AllTrim(SA1->A1_TIPDOC)=="5","0",ALLTRIM(SA1->A1_NIF)) + '</dNumIDRec>' +cSalto
    	EndIf
    	cXml += '				<dNomRec>' + AllTrim(SA1->A1_NOME)+ '</dNomRec>' + cSalto
    	cXml += '				<dNomFanRec>' + AllTrim(SA1->A1_NREDUZ)+ '</dNomFanRec>' + cSalto
    	cXml += '				<dDirRec>' + AllTrim(SA1->A1_END) + '</dDirRec>' + cSalto
    	cXml += '				<dNumCasRec>' + AllTrim(SA1->A1_NUM) + '</dNumCasRec>' + cSalto
    	cXml += '				<cDepRec>' + SA1->A1_DEPTO + '</cDepRec>' + cSalto
    	cXml += '				<dDesDepRec>' + AllTrim(ObtColSAT("S003",SA1->A1_DEPTO, 1, 2, 3,28)) +'</dDesDepRec>' + cSalto
    	cXml += '				<cDisRec>' + SA1->A1_DISTR+ '</cDisRec>' + cSalto
    	cXml += '				<dDesDisRec>'+ AllTrim(ObtColSAT("S031",SA1->A1_DISTR, 1, 3, 4,30)) + '</dDesDisRec>' + cSalto
    	cXml += '				<cCiuRec>' + AllTrim(SA1->A1_CIUDAD) + '</cCiuRec>' + cSalto
    	cXml += '				<dDesCiuRec>' + AllTrim(ObtColSAT("S012",SA1->A1_CIUDAD, 48, 4, 52,30)) + '</dDesCiuRec>' + cSalto
    	If !Empty(SA1->A1_TEL)
    		cXml += '				<dTelRec>' + AllTrim(SA1->A1_TEL) + '</dTelRec>' + cSalto
    	EndIf
    	If !Empty(SA1->A1_EMAIL)
    		cXml += '				<dEmailRec>' + SA1->A1_EMAIL + '</dEmailRec>' + cSalto
    	EndIf
    	cXml += '				<dCodCliente>' + AllTrim(SA1->A1_COD) + '</dCodCliente>' + cSalto
    	cXml += '			</gDatRec>' + cSalto
    	cXml += '		</gDatGralOpe>' + cSalto
    
    	//TIPO DE PRESENCIA
    	cXml += '		<gDtipDE>' + cSalto
    	cXml += '        	<gCamNCDE>' + cSalto
    	cXml += '    			<iMotEmi>' + AllTrim(SF1->F1_TIPREF) + '</iMotEmi>' + cSalto
    	cXml += '        		<dDesMotEmi>'+ ObtColSAT("S021",SF1->F1_TIPREF, 1, 1, 2,30)+'</dDesMotEmi>' + cSalto
    	cXml += '        	</gCamNCDE>' + cSalto
    
    	cAliasTmp := QueryItems("SD1", "D1_COD, D1_QUANT, D1_TES, D1_ITEM, SD1.R_E_C_N_O_", "D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'",  "D1_ITEM") 
    	
    	While (cAliasTmp)->(!EOF())
    		cXml += '        	<gCamItem>' + cSalto
    		cXml += '    			<dCodInt>' + Alltrim((cAliasTmp)->B1_COD) + '</dCodInt>' + cSalto
    		cXml += '    			<dDesProSer>' + AllTrim((cAliasTmp)->B1_DESC) + '</dDesProSer>' + cSalto
    		cXml += '    			<cUniMed>' + AllTrim((cAliasTmp)->AH_COD_CO) + '</cUniMed>' + cSalto
    		cXml += '    			<dDesUniMed>' + ObtColSAT("S002",(cAliasTmp)->AH_COD_CO, 1, 3, 29,6) + '</dDesUniMed>' + cSalto
    		cXml += '    			<dCantProSer>' + AllTrim(TRANSFORM((cAliasTmp)->D1_QUANT,"9999999999.9999") )+ '</dCantProSer>' + cSalto
    		If (cAliasTmp)->R_E_C_N_O_ > 0
    			SD2->(dbgoto((cAliasTmp)->R_E_C_N_O_))
    		EndIf
    		cXml += M486IMPDPAR(ALLTRIM(SF1->F1_ESPECIE),SF1->F1_DOC,SF1->F1_SERIE, SF1->F1_FORNECE,SF1->F1_LOJA, (cAliasTmp)->D1_TES,(cAliasTmp)->D1_ITEM,(cAliasTmp)->D1_COD,@aDesc) + cSalto
    		cXml += '        	</gCamItem>' + cSalto
    		(cAliasTmp)->(dbSkip())
    	End
    	(cAliasTmp)->(dbcloseArea())
    	cXml += '		</gDtipDE>' + cSalto
    
    	aTotales := M486SUBTOT(ALLTRIM(SF1->F1_ESPECIE),SF1->F1_DOC,SF1->F1_SERIE, SF1->F1_FORNECE,SF1->F1_LOJA)
    	cXml += '		<gTotSub>' + cSalto
    	cXml += '        	<dSubExe>'+ AllTrim(TRANSFORM(aTotales[1],cPicture))+'</dSubExe>' + cSalto
    	cXml += '        	<dSubExo>'+ AllTrim(TRANSFORM(aTotales[2],cPicture))+'</dSubExo>' + cSalto
    	cXml += '        	<dSub5>'+ AllTrim(TRANSFORM(aTotales[3],cPicture))+'</dSub5>' + cSalto
    	cXml += '        	<dSub10>'+ AllTrim(TRANSFORM(aTotales[4],cPicture))+'</dSub10>' + cSalto
    	cXml += '        	<dTotOpe>'+ AllTrim(TRANSFORM(aTotales[5],cPicture))+'</dTotOpe>' + cSalto
    	cXml += '        	<dTotDesc>'+ AllTrim(TRANSFORM(aDesc[1],cPicture))+'</dTotDesc>' + cSalto
    	cXml += '        	<dTotDescGlotem>'+ AllTrim(TRANSFORM(aTotales[6],cPicture))+'</dTotDescGlotem>' + cSalto
    	cXml += '        	<dTotAntItem>0</dTotAntItem>' + cSalto
    	cXml += '        	<dTotAnt>0</dTotAnt>' + cSalto
    	cXml += '        	<dPorcDescTotal>0</dPorcDescTotal>' + cSalto
    	cXml += '        	<dDescTotal>'+ AllTrim(TRANSFORM(aDesc[1],cPicture))+'</dDescTotal>' + cSalto
    	cXml += '        	<dAnticipo>0</dAnticipo>' + cSalto
    	cXml += '        	<dRedon>0.0</dRedon>' + cSalto
    	cXml += '        	<dTotGralOpe>'+ AllTrim(TRANSFORM(SF1->F1_VALBRUT,cPicture))+'</dTotGralOpe>' + cSalto
    	cXml += '        	<dIVA5>'+ AllTrim(TRANSFORM(aTotales[7],cPicture))+'</dIVA5>' + cSalto
    	cXml += '        	<dIVA10>'+ AllTrim(TRANSFORM(aTotales[8],cPicture))+'</dIVA10>' + cSalto
    	cXml += '        	<dTotIVA>'+ AllTrim(TRANSFORM(aTotales[9],cPicture))+'</dTotIVA>' + cSalto
    	cXml += '        	<dBaseGrav5>'+ AllTrim(TRANSFORM(aTotales[10],cPicture))+'</dBaseGrav5>' + cSalto
    	cXml += '			<dBaseGrav10>'+ AllTrim(TRANSFORM(aTotales[11],cPicture))+'</dBaseGrav10>' + cSalto
    	cXml += '			<dTBasGraIVA>'+ AllTrim(TRANSFORM(aTotales[12],cPicture))+'</dTBasGraIVA>' + cSalto
    	If AllTrim(STR(SF1->F1_MOEDA)) <> "1"
    		cXml += '			<dTotalGs>'+ AllTrim(TRANSFORM(SF1->F1_VALBRUT*SF1->F1_TXMOEDA,cPicture))+'</dTotalGs>' + cSalto
    	EndIf
    	cXml += '		</gTotSub>' +cSalto
    	
    	//DOCUMENTO ASOCIADO
    	cXml += '		<gCamDEAsoc>' + cSalto
    	cXml += M486ASOC(SF1->F1_ESPECIE,SF1->F1_DOC,SF1->F1_SERIE,SF1->F1_FORNECE,SF1->F1_LOJA,"1") + cSalto
    	cXml += '		</gCamDEAsoc>' + cSalto
    	cXml += '	</DE>' + cSalto
    	cXml += '</rDE>' + cSalto
    
    	RestArea(aSF)
    	RestArea(aArea)
    
    Return cXml

    La información retornada en la variable cXml deberá contener el xml que será guardado para ser transmitido.

    Totvs custom tabs box items
    defaultno
    referenciapaso11

    PE - M486PDFGEN

    Descripción:

    M486PDFGEN.- Generación personalizada de Impresión Gráfica de Documentos

    Ubicación:

    Actualizaciones / Facturación / Transmisión Electrónica.

    Eventos:

    Imprimir PDF.

    Programa Fuente:

    MATA486.PRW

    Función:

    MenuDef

    Parámetros: 

    Posición

    Tipo

    Descripción

    N/AN/AN/A
    Retorno:N/A

    04. INFORMACIÓN ADICIONAL

    Card documentos
    InformacaoUtilice este box para resaltar información relevante y/o de destaque.
    Titulo¡IMPORTANTE!

    05. ASUNTOS RELACIONADOS

    1. IMPKUDE. 04. INFORMACIÓN ADICIONAL
      1. Configurar el parámetro. (Para este ejemplo se ocupó el valor 2).
    2. Realizar las configuraciones necesarias para la facturación electrónica de Paraguay, consultar el apartado 05. ASUNTOS RELACIONADOS.
    3. A través de la rutina “Facturaciones” (MATA467N), ubicada en el módulo SIGAFAT (Actualizaciones | Facturación), incluir una factura de salida.
      1. Informar campos necesarios para Facturación Electrónica.
        1. Tipo NF. (Para este ejemplo se ocupó el valor 1).
        2. Tipo Transac. (Para este ejemplo se ocupó el valor 1).
    Totvs custom tabs box items
    defaultno
    referenciapaso2
    1. A través de la rutina “Documentos Electrónicos”(MATA486), ubicada en el módulo SIGAFAT (Actualizaciones | Facturación). 
      1. Informar los parámetros: 
        1. Tipo de Documento - Se informa el tipo de documento. (Para este ejemplo se ocupo el valor Factura).
        2. Serie - Se informa la serie creada. (Para este ejemplo se ocupó el valor A00).
        3. Estatus - Se informa el estatus del documento (Para este ejemplo se ocupó el valor 0).
        4. Fecha Inicial - Se declara la fecha a partir de la cual se consideraran los documentos. (Para este ejemplo se ocupó la fecha 01/07/2024).
        5. Fecha Final - Se declara la fecha a partir de la cual se consideraran los documentos. (Para este ejemplo se ocupó la fecha 31/07/2024).
      2. Dar clic en botón Transmitir. 
        1. Aparecerá ventana de parámetros, informar:
          1. Serie Factura - Se informa la serie de la factura a transmitir. (Para este ejemplo se ocupó el valor A00).
          2. Factura Inicial - Se declara la fecha a partir de la cual se consideraran los documentos. (Para este ejemplo se ocupó la fecha 01/07/2024).
          3. Factura Final - Se declara la fecha a partir de la cual se consideraran los documentos. (Para este ejemplo se ocupó la fecha 31/07/2024).
        2. Se mostrará help indicando que la transmisión fue correcta.
        3. El xml de las facturas transmitidas se podrá encontrar en "Protheus_data\system\cfd\facturas\autorizadas".
      3. Dar clic en botón Imprimir PDF.
        1. Aparecerá ventana de parámetros, informar:
          1. Serie de documentos - Se informa la serie de los documentos a imprimir. (Para este ejemplo se ocupó el valor A00).
          2. Documento inicial - Se informa el número de documento inicial a imprimir. (Para este ejemplo se ocupó el valor 0011230000005).
          3. Documento final - Se informa el número de documento final a imprimir. (Para este ejemplo se ocupó el valor 0011230000005).
          4. Formato - PDF.
          5. Ruta copia PDF - Se informa una ruta local en la cual se guardara el pdf generado. (Para este ejemplo se ocupó la ruta C:\prueba).
        2. El PDF se podrá visualizar en la ruta informada en los parámetros como "Ruta copia PDF".

    04. INFORMACIÓN ADICIONAL

    Informações
    titleIMPORTANTE

    En caso de que el parámetro no exista, se debe crear de acuerdo a la siguiente información.

    Parámetro

    Descripción

    Tipo

    Valores

    Default

    MV_IMPKUDE Configuración de la impresión del KUDE antes de obtener la autorización.Numérico

    1 = Imprime solo documentos validados.

    2 = Imprime documentos validados y transmitidas que se encuentren en espera de la validación del SIFEN.

    1 =  Imprime solo documentos validados.

    Informações
    titlePaquete exclusivo de uso interno

    Código del paquete: 014288 

    Descripción: MI - DMICNS-20636 - PARÁMETRO MV_IMPKUDE

    05. ASUNTOS RELACIONADOS