Árvore de páginas

Versões comparadas

Chave

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

...

Producto

Solucoes_espanhol
SolucaoTOTVS Backoffice

Línea de producto: 

Linhas_totvs_espanhol
LinhaLínea Protheus

Segmento:

Segmentos_totvs_espanhol
SegmentoBackoffice

Módulo:SIGAFAT - Facturación.
Función:
RutinaNombre TécnicoFecha
FISA814.PRWCarga de catálogos desde archivos .CSV23/11/2022
FATXFUMI.PRWFunciones genéricas para Facturación - Mercado Internacional18/11/2022
M486XFUNEQ.PRWFunciones Genéricas de Facturación Electrónica - Ecuador18/11/2022
FATCRECU20.INIEsquema de XML para Comprobantes de Retención 2.0 ATS1824/11/2022
GERXMLA1Funciones Genéricas XML para ATS23/11/2022
EQUATF.INIEsquema de XML para Anexo Transaccional Simplificado23/11/2022
País:Ecuador (EQU) Pacote: 011449
Ticket:15425265
Requisito/Story/Issue (informe el requisito vinculado):DMINA-17603

...

CampoValorAtributo
TIPOPROV'01' Si Tipo(A2_TIPO) es igual a 1-Singular, en caso contrario '02'tipoProv
DENOPROVA2_NOMEdenoProv
PGOLOCEXTPGOLOCEXTA2_CONTRBEpagoLocExt
TPOREGFISA2_RETENEDtipoRegi
PAISPGGENA2_CODICApaisEfecPagoGen
PAISPFISA2_RETICApaisEfecPagoParFis
PAISEFEPGA2_CODICA2paisEfecPago
DOBTRIB"SI" si el campo A2_ECDTEX es igual a S-Si, en caso contrario "NO"aplicConvDobTrib
RETNORLEG"SI" si el campo A2_CBUCOM es igual a S-Si, en caso contrario "NO"pagExtSujRetNorLeg

...

Totvs custom tabs box
tabsPre-condiciones, Transmisión de CR 2.O ATS, Generación del ATS, Paso 04
idspaso1,paso2,paso3
Totvs custom tabs box items
defaultyes
referenciapaso1
  1. Realizar un respaldo del repositorio del ambiente (archivo .rpo)
  2. Aplicar el parche generado para la issue DMINA-17603.
  3. Validar que las rutinas se encuentren actualizada con fecha mayor o igual a la informada en la sección 01. DATOS GENERALES.
  4. Para la generación del Anexo Transaccional Simplificado (ATS), es necesario tener :
    • Tener las configuración a diccionario que se mencionan en la sección 04. INFORMACIÓN ADICIONAL.
    • Tener el archivo EQUATF.INI en la carpeta system del ambiente, así como realizar los ajustes mencionados en la sección 04. INFORMACIÓN ADICIONAL.
  5. En el parámetro MV_CFDFTCR configurar el nombre y la ruta del ambiente, para el archivo FATCRECU.INI (por ejemplo: GetSrvProfString('startpath','')+'\cfd\inicfd\fatcrecu20.ini') (por ejemplo: GetSrvProfString('startpath','')+'\cfd\inicfd\fatcrecu20.ini')
    Aviso
    titleImportante

    En caso de realizar merge en el anterior archivo FATCRECU.INI en lugar de utilizar el nuevo estándar FATCRECU20.INI, es muy importante validar que no se tenga la siguiente línea, ya que al generarse está tabla temporal con el nombre "SD1", causa conflicto con la nueva función M486XIMTOS() que genera los impuestos del documento para el Comprobante de Retención 2.0 versión ATS.

    (PREREG) FsQuery(_aTotal[004],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.

  6. En la ruta configurada en el parámetro MV_CFDTCR colocar el archivo FATCREQU.INI:
  7. Para la generación del Anexo Transaccional Simplificado (ATS), es necesario tener actualizado el archivo 
  8. Configurar el parámetro MV_PATH814, con la ruta local donde se colocarán los archivos en formato .csv para la carga de Catálogos.
  9. Colocar los siguientes archivos en formato .csv en la ruta definida en el parámetro MV_PATH814, conteniendo las siguientes estructuras:
    • 16ImpuestosSRI.csv
    • 17TarifaIVASRI.csv
    • 20TipoImpARetenerSRI.csv
    • 21TarifaRetIVASRI.csv
    • 24FormasPagoSRI.csv
    • 22TipoPago
    • 27TiposRegimenFiscalExterior.csv
      }
    • 28Paises.csv
    • 29ParaisosFiscales.csv
  10. En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Mantenimiento de Catálogos (FISA813)
  11. Validar que se haya generado el catálogo S016 - Catálogo de impuestos, con la siguiente estructura:
  12. Validar que se haya generado el catálogo S017 - Catálogo de Tarifa del IVA, con la siguiente estructura:
  13. Validar que se haya generado el catálogo S020 - Catálogo Tipos Impuestos a Ret, con la siguiente estructura:
  14. Validar que se haya generado el catálogo S021 - Catálogo de Tarifa Ret. IVA, con la siguiente estructura:
  15. Validar que se haya generado el catálogo S022 - Catálogo de Tipos de Pago, con la siguiente estructura:
  16. Validar que se haya generado el catálogo S024 - Catálogo Formas de Pago, con la siguiente estructura:
  17. Validar que se haya generado el catálogo S027 - Catálogo de Régimen Fiscal del Exterior, con la siguiente estructura:
  18. Validar que se haya generado el catálogo S028 - Catálogo de Países, con la siguiente estructura:
  19. Validar que se haya generado el catálogo S029 - Catálogo de Paraísos Fiscales, con la siguiente estructura:
  20. En el Módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Impuestos Variable (MATA996)
    • Para los impuestos que tienen configurado el campo Clase Imp. (FB_CLASSE) esa igual a I-Impuesto, es necesario informar el campo Cod.Impuesto (FB_CODIMP).
  21. En el Módulo Libros Fiscales (SIGAFIS), ir al menú Actualizaciones | Archivos | Conceptos.
    • Para cada Concepto configurar el campo Cód. Ret SRI (CCR_RETSRI), el cual debe corresponder a las tablas 3.10 Conceptos de retención en la fuente de Impuesto a la renta del SRI (tablas del Catálogo de Anexo Transaccional Simplificado)
  22. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Proveedores
    • Configurar un Proveedor, donde es importante configurar los campos Forma Pago (A2_MPAGO) y E-Mail (A1_EMAIL)

      Aviso
      titleImportante

      Adicional en el Proveedor deberán ser configurados los siguientes campo Pago Resid. (A2_CONTRBE), Tp. Reg. Fis (A2_RETENED), País/Estab. (A2_CODICA), País P. Fisc (A2_RETICA), País Efec Pg (A2_CODICA2), Doble Trib (A2_ECDTEX) y Pgo Ext Ret (A2_CBUCOM), los cuales son necesarios para la generación de los atributos del nodo <pagoExterior> del Anexo Transaccional Simplificado (ATS).

  23. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida (MATA080)
    • Configurar un Tipo de Entrada (TES) con el cálculo del Impuesto IVA, Retención de IVA y Retención de la Renta.
  24. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Modalidades (FINA010)
    • Configurar la Modalidad que aplica para la generación de la Factura de Entrada.
  25. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Productos (MATA010)
    • Configurar el o los Productos que aplica para la generación de la Factura de Entrada.
  26. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Movimientos | Facturas de Entrada (MATA101N)
    • Incluir una Factura de Entrada (NF), la cual debe realizar el cálculo de IVA, Retención de IVA y Retención de la Renta.
    • En el encabezado se deben informar los siguientes campos: No. Autoriz (F1_NUMAUT), Cod Estable (F1_ESTABL), Cód. Pto Emi (F1_PROEMIS), Tipo Comp (F1_TIPOPE) y Cód.Sustent (F1_CODCTR)
    • En los ítems se deben informar los siguientes campos: Producto (D1_COD), Cantidad (D1_QUANT), Valor Unit. (D1_VUNIR), Valor Total (D1_TOTAL), Tipo Entrada (D1_TES) 

      Informações
      titleImportante

      Para el calculo del Retención de la Renta (RIR), es es necesario informar en el ítem el campo Concepto (D1_CONCEPT).

      Para visualizar datos en la consulta del campo Concepto (D1_CONCEPT), se debe configurar registros desde el módulo Libros Fiscales (SIGAFIS), en el menú Actualizaciones | Archivos | Conceptos.

    • Presionar Guardar para confirmar el guardado de la Factura de Entrada.
    • Validar que se visualice el Folio del Comprobante de Retención generado.
Totvs custom tabs box items
defaultno
referenciapaso2
  1. En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Comprobantes Retención (MATA486B)
  2. Ejecutar la acción Enviar.
  3. Informar los parámetros:
    • ¿De Comprobante de Retención? = <Folio del Comprobante de Retención creado previamente>
    • ¿A Comprobante de Retención? = <Folio del Comprobante de Retención creado previamente>
  4. Validar que el proceso de envío haya sido exitoso.
  5. Confirmar la consulta del Monitor.
  6. Validar que el retorno de respuesta sea un estatus Autorizado (Verde)
  7. Validar que el Certificado de Retención haya llegado al email configurado en el Proveedor, en el campo E-Mail (A1_EMAIL).
Totvs custom tabs box items
defaultno
referenciapaso3
  1. En el módulo Libros Fiscales (SIGAFAT) ir al menú Miscelánea | Cálculos | Archivos Magnéticos" (MATA950)
  2. En el Wizard para la captura de información del encabezado, informar los parámetros requeridos hasta finalizar y realizar la generación del archivo indicado.
  3. Validar la correcta generación del Anexo Transaccional Simplificado (ATS), y realizar la validación desde el DIMM.

...

04. INFORMACIÓN ADICIONAL

Archivos .CSV de Catálogos de la SRI:

Informações
titleArchivos de ejemplo

View file
nameCatálogosSRI.zip
height250


Ajustes a Diccionario de Datos:

Creación de Consultas Estándar

...

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU027ECU022101RETipos de PagoF3I
ECU027ECU02220101
F812SXB("S022","Codigo")
ECU027ECU022501

VAR_IXB
  • Consulta Específica ECU027 - Tip. Reg. Fis. Ext.

...

Ajustes al Archivo EQUATF.INI:

Painel
bgColorlightblue
borderWidth2
titleBGColorlightblue
borderStylesolid
titleEQUATF.INI

?{"Nombre del Archivo INI","EQUATF.INI"}
?{"Descripcion Completa del Archivo Magnetico","Declaracion de Retencion del Impuesto de Renta - IR."}
?{"Comentarios",""}

@XML

[XXX Inicializacao variaveis]
(PRE) _aTotal[001] := MV_PAR01                     
(PRE) _aTotal[002] := MV_PAR02
(PRE) _aTotal[003] := {}
(PRE) _aTotal[004] := {}
(PRE) _aTotal[005] := .F.
(PRE) _aTotal[006] := {}
(PRE) _atotal[020] := 0
(PRE) _aTotal[021] := IIf(SF2->(ColumnPos("F2_TPDOC"))==0 .OR. SF2->(ColumnPos("F2_TPVENT"))==0 .OR. SF2->(ColumnPos("F2_TIPOPE"))==0,.F.,.T.)
(PRE) _aTotal[022] := {}
(PRE) _aTotal[023] := {}
(PRE) _aTotal[024] := 0
(PRE) _aTotal[025] := ""

[XXX Montagem do CFP Utilizado pela rotina - PRINCIPAL]
(PRE) aAdd (_aTotal[003], "Formulario 103 - Declaracion de Retencion del Impuesto de Renta - IR")
(PRE) aAdd (_aTotal[003], "")
(PRE) aAdd (_aTotal[003], "Rellene correctamente la informacion solicitada.")
(PRE) aAdd (_aTotal[003], "Informacion necesarias para el rellenado automatico del Formulario 103: Declaracion de Retencion del Impuesto de Renta - IR.")

[XXX Montagem do CFP Utilizado pela rotina - COMPLEMENTAR]
(PRE) aAdd (_aTotal[004], {})
(PRE) aAdd (_aTotal[004][1], "Formulario 103 - Declaracion de Retencion del impuesto de Renta - IR")
(PRE) aAdd (_aTotal[004][1], "Rellene correctamente la informacion solicitada.")
(PRE) aAdd (_aTotal[004][1], {})
(PRE) aAdd (_aTotal[004][1][3], {1, "",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {0, "",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {0, "",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {0, "",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Tipo Declaracion",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Si fuera sustitutiva:",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {3,,,,,{"O=Original", "S=Sustitutiva"},,})
(PRE) aAdd (_aTotal[004][1][3], {0, "",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Version Formulario",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Nº Formulario",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {2,,"@E 9.9",2,1,,,3})
(PRE) aAdd (_aTotal[004][1][3], {2,,"9999999999999",2,0,,,13})
(PRE) aAdd (_aTotal[004][1][3], {1, "Cod. Version Form.",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Impuesto Pagado",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {2,,"9999999999",2,0,,,10})
(PRE) aAdd (_aTotal[004][1][3], {2,,"@E 999,999,999.99",2,2,,,14})
(PRE) aAdd (_aTotal[004][1][3], {1, "ID Representante legal",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Mora / Interesses",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {2,,"@E 9999999999999",2,0,,,13})
(PRE) aAdd (_aTotal[004][1][3], {2,,"@E 999,999,999.99",2,2,,,14})
(PRE) aAdd (_aTotal[004][1][3], {1, "RUC Contador",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {1, "Multa / Intereses",,,,,,})
(PRE) aAdd (_aTotal[004][1][3], {2,,"@E 9999999999999",2,0,,,13})

[XXX Chamada do Wizard]
(PRE) _atotal[005] := xMagWizard (_aTotal[003], _atotal[04], "EQUATF")
(PRE) Iif (_atotal[005], xMagLeWiz ("EQUATF", @_atotal[06], .T.), Nil)
(PRE) lAbtMT950    := !_atotal[005]

[XXX - monta o Nome do arquivo] 
(PRE) mv_par04 := Alltrim(mv_par04) + "."
(PRE) mv_par04 := stuff(mv_par04,rat(".",mv_par04),rat(".",mv_par04),".XML")
(PRE) _aTotal[07] := mv_par04
(PRE) _aTotal[15] := .F.
//(PRE) _aTotal[16] := .F.


[XXX Header]
//(IMP) {.T.,1,1,"IVA"}
//(CMP) {{"NUMRUC","Contribuyente"},{"RAZSOC","Razon Social"},{"MES","Mes"},{"ANIO","Ano"}}
(PRE) _aTotal[010] := "version="+'"1.0"'+" encoding="+'"ISO-8859-1"'+" standalone="+'"yes"'+" ?"
(PRE) _atotal[30] := LFeqXMLanV(DTOS(MV_PAR01),DTOS(MV_PAR02)) 
Linha1     C 000 0 MontaXML("?xml"                ,                        ,,,,,  ,.T.,.F.,.T.,_aTotal[010])
IVA        C 003 0 MontaXML("iva"                ,                        ,,,,,1 ,.T.,.F.,.T.)
TIdInf     C 015 0 MontaXML("TipoIDInformante"    ,"R"                    ,,,,,4 ,.T.,.T.,.T.)
NUMRUC     C 015 0 MontaXML("IdInformante"      ,SM0->M0_CGC            ,,,,,4 ,.T.,.T.,.T.)
RAZSOC     C 100 0 MontaXML("razonSocial"        ,GXMLCarEsp(SM0->M0_NOMECOM),,,,,4 ,.T.,.T.,.T.)
ANIO       C 004 0 MontaXML("Anio"               ,substr(dTOs(MV_PAR01),1,4)    ,,,,,4 ,.T.,.T.,.T.)
MES        C 002 0 MontaXML("Mes"                ,substr(dTOs(MV_PAR01),5,2)    ,,,,,4 ,.T.,.T.,.T.)
NUMESTRUC  C 015 0 MontaXML("numEstabRuc"          ,_atotal[30][2]            ,,,,,4 ,.T.,.T.,.T.)
TVentas    C 015 0 MontaXML("totalVentas"          ,STRTRAN(TRANSFORM(0 ,"@E 9999999999.99"),',','.')  ,,,,,4 ,.T.,.T.,.T.)
CodOpera   C 015 0 MontaXML("codigoOperativo"   ,"IVA"                    ,,,,,4 ,.T.,.T.,.T.)
Compras    C 000 0 MontaXML("compras"            ,                        ,,,,,4 ,.T.,.F.,.T.)
(POS)

[XXX Extraindo Livro fiscal Compras]
(PRE) _atotal[31] := LFeqXMLan1(DTOS(MV_PAR01),DTOS(MV_PAR02)) 

[TRA Geração do XML]
//(IMP) {.T.,1,1,"Compras"}
//(CMP) {{"CODSUST","Sustento"},{"IDPROV","Ident."},{"TPCOMPROV","Tipo Compr."},{"ESTABL","Estab."},{"PONTOVEND","Punto Venta"},{"SEQUEN","Secu."}}
//,{"Autoriz","Autoriz"},{"BasNoGRiva","Base IVA 0%"},{"BasImponib","Base IVA Dif 0%"},{"BasImpGrav","Base obj IVA"},{"ValIVA","Monto IVA"}}
(PRE) TRA->(dbGoTop())
(PREREG) _aTotal[024] := IIF(_aTotal[021], IIF(Alltrim(TRA->TPDOC) =='01' .AND. Alltrim(TRA->TPVENT) =='1' .AND. Alltrim(TRA->TIPOPE) =='41', 1,0),0)
(PREREG) _aTotal[012] := RetIR(TRA->FILIAL, TRA->CLIEFOR, TRA->LOJA, TRA->NFISCAL, TRA->SERIE)
(PREREG) _aTotal[022] := IIF(_aTotal[024] > 0 , obtTotReem(TRA->NFISCAL,TRA->SERIE, TRA->CLIEFOR, TRA->LOJA),{})
(PREREG) _aTotal[023] := IIF(_aTotal[024] > 0 , ObtReem (TRA->FILIAL, TRA->NFISCAL, TRA->SERIE, TRA->CLIEFOR, TRA->LOJA),{})
(PREREG) _aTotal[025] := IIf(_aTotal[024] > 0 .AND. LEN(_aTotal[023])>0,_aTotal[023][1], "" )

DetCompr   C 000 0 MontaXML("detalleCompras"     ,                        ,,,,,8 ,.T.,.F.,.T.)
CODSUST    C 002 0 MontaXML("codSustento"        ,TRA->CDSUSTEN            ,,,,,12,.T.,.T.,.T.)
TpIdProv   C 000 0 MontaXML("tpIdProv"           ,TRA->TPLDPROV            ,,,,,12,.T.,.T.,.T.)
IDPROV     C 013 0 MontaXML("idProv"             ,TRA->IDPROV              ,,,,,12,.T.,.T.,.T.)
TPCOMPROV  C 002 0 MontaXML("tipoComprobante"    ,TRA->TPCOMPRO            ,,,,,12,.T.,.T.,.T.)
TIPOPROV   C 002 0 IIf(TRA->TPLDPROV == "03", MontaXML("tipoProv"        ,TRA->TIPOPROV,,,,,12,.T.,.T.,.T.), "")
DENOPROV   C 002 0 IIf(TRA->TPLDPROV == "03", MontaXML("denoProv"        ,TRA->DENOPROV,,,,,12,.T.,.T.,.T.), "")
PARRELC    C 002 0 MontaXML("parteRel"            ,"NO"                    ,,,,,12,.T.,.T.,.T.)
dTReg      C 000 0 MontaXML("fechaRegistro"      ,DToC(TRA->DTFECH)         ,,,,,12,.T.,.T.,.T.)

ESTABL     C 003 0 MontaXML("establecimiento"    ,TRA->ESTABEL            ,,,,,12,.T.,.T.,.T.)
PONTOVEND  C 003 0 MontaXML("puntoEmision"        ,TRA->PTEMIS            ,,,,,12,.T.,.T.,.T.)
SEQUEN     C 009 0 MontaXML("secuencial"        ,TRA->SEQUENC            ,,,,,12,.T.,.T.,.T.)
DtEmis     C 000 0 MontaXML("fechaEmision"        ,TRA->DTEMISS             ,,,,,12,.T.,.T.,.T.)
Autoriz    C 000 0 MontaXML("autorizacion"        ,TRA->AUTORIZ            ,,,,,12,.T.,.T.,.T.)
BasNoGRiva C 000 0 MontaXML("baseNoGraIva"        ,STRTRAN(TRANSFORM(TRA->BASNOGRV ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
BasImponib C 000 0 MontaXML("baseImponible"        ,STRTRAN(TRANSFORM(TRA->BASIMPON ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
BasImpGrav C 000 0 MontaXML("baseImpGrav"        ,STRTRAN(TRANSFORM(TRA->BASIMPGR ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
BasImpEx   C 000 0 MontaXML("baseImpExe"        ,STRTRAN(TRANSFORM(_aTotal[012][5] ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValICE     C 000 0 MontaXML("montoIce"            ,STRTRAN(TRANSFORM(TRA->TOTALICE ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValIVA     C 000 0 MontaXML("montoIva"            ,STRTRAN(TRANSFORM(TRA->TOTALIVA ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValRetB10  C 000 0 MontaXML("valRetBien10"        ,STRTRAN(TRANSFORM(_aTotal[012][2] ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValRetS20  C 000 0 MontaXML("valRetServ20"        ,STRTRAN(TRANSFORM(_aTotal[012][3] ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValIvaBens C 000 0 MontaXML("valorRetBienes"    ,STRTRAN(TRANSFORM(_aTotal[012][6] ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValRetS20  C 000 0 MontaXML("valRetServ50"        ,STRTRAN(TRANSFORM(_aTotal[012][4],"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValIvaServ C 000 0 MontaXML("valorRetServicios"    ,STRTRAN(TRANSFORM(_aTotal[012][7] ,"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValRet100  C 000 0 MontaXML("valRetServ100"        ,STRTRAN(TRANSFORM(_aTotal[012][8],"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
ValReemb   C 000 0 MontaXML("totbasesImpReemb"    ,STRTRAN(TRANSFORM(IIF(LEN(_aTotal[022])>0,_aTotal[022][1][2],0 ),"@E 9999999999.99"),',','.') ,,,,,12,.T.,.T.,.T.)
PagExt     C 003 0 MontaXML("pagoExterior"        ,                        ,,,,,12 ,.T.,.F.,.T.)
PagoLocE   C 002 0 MontaXML("pagoLocExt"        ,TRA->PGOLOCEXT,        ,,,,16,.T.,.T.,.T.)
TipoRegi   C 002 0 IIf(TRA->PGOLOCEXT == "02", MontaXML("tipoRegi"        ,TRA->TPOREGFIS,,,,,16,.T.,.T.,.T.), "")
paising    C 002 0 IIf(TRA->PGOLOCEXT == "02" .And. TRA->TPOREGFIS == "01", MontaXML("paisEfecPagoGen"        ,TRA->PAISPGGEN,,,,,16,.T.,.T.,.T.), "")
paisparfis C 002 0 IIf(TRA->PGOLOCEXT == "02" .And. TRA->TPOREGFIS == "02", MontaXML("paisEfecPagoParFis"    ,TRA->PAISPFIS,,,,,16,.T.,.T.,.T.), "")
EPagoGen   C 002 0 IIf(TRA->PGOLOCEXT == "02", MontaXML("paisEfecPago"            ,TRA->PAISEFEPG    ,,,,,16,.T.,.T.,.T.), "")
Convenio   C 002 0 MontaXML("aplicConvDobTrib"    ,IIf(TRA->PGOLOCEXT == "01","NA",TRA->DOBTRIB),,,,,16,.T.,.T.,.T.)
EPagoPar   C 002 0 MontaXML("pagExtSujRetNorLeg",IIf(TRA->PGOLOCEXT == "01","NA",TRA->RETNORLEG),,,,,16,.T.,.T.,.T.)
PagExtF    C 000 0 MontaXML("pagoExterior"        ,                        ,,,,,12 ,.F.,.T.,.T.)
ForPag     C 000 0 MontaXML("formasDePago"        ,                        ,,,,,12 ,.T.,.F.,.T.)
PagoLocE   C 000 0 MontaXML("formaPago"            ,TRA->FORPAGO            ,,,,,16,.T.,.T.,.T.)
ForPagF    C 000 0 MontaXML("formasDePago"        ,                        ,,,,,12 ,.F.,.T.,.T.)
Air        C 000 0 _aTotal[012][1]
Reembol    C 000 0 _aTotal[025]
DetComprF  C 000 0 MontaXML("detalleCompras"        ,                    ,,,,,8 ,.F.,.T.,.T.)

[XXX - livro Fiscal Vendas]
ComprasF   C 000 0 MontaXML("compras"                ,                    ,,,,,4 ,.F.,.T.,.T.)
Vendas     C 000 0 MontaXML("ventas"                ,                    ,,,,,4 ,.T.,.F.,.T.)


[TRB Geração do XML]
(PRE) TRB->(dbGoTop())

DtVendas   C 000 0 MontaXML("detalleVentas"    ,                            ,,,,,8 ,.T.,.F.,.T.)
TpIdClie   C 000 0 MontaXML("tpIdCliente"    ,TRB->TIPDOC                ,,,,,12,.T.,.T.,.T.)
IdClien    C 000 0 MontaXML("idCliente"        ,TRB->CDCGC                    ,,,,,12,.T.,.T.,.T.)
PARRELV    C 000 0 IIF(TRB->TIPDOC $ "04|05|06", MontaXML("parteRelVtas","NO"                                ,,,,,12,.T.,.T.,.T.), "")
tipoCli    C 000 0 IIF(TRB->TIPDOC $ "06"    , MontaXML("tipoCliente"    ,TRB->TIPCLIE                        ,,,,,12,.T.,.T.,.T.), "")
denoCli    C 000 0 IIF(TRB->TIPDOC $ "06"    , MontaXML("denoCli"        ,GXMLCarEsp(TRB->DENOCLI)            ,,,,,12,.T.,.T.,.T.), "")
Tpcomprova C 000 0 MontaXML("tipoComprobante"    ,TRB->ESPECIE            ,,,,,12,.T.,.T.,.T.)
TEmision   C 000 0 MontaXML("tipoEmision"    ,"E"                        ,,,,,12,.T.,.T.,.T.)
NumComprov C 000 0 MontaXML("numeroComprobantes",cvaltochar(TRB->QTDNF)        ,,,,,12,.T.,.T.,.T.)
BS2NoGrIva C 000 0 MontaXML("baseNoGraIva"    ,STRTRAN(TRANSFORM(TRB->EXENTAS ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
BS2Imponib C 000 0 MontaXML("baseImponible"    ,STRTRAN(TRANSFORM(TRB->ALQZERO ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
BS2ImpGrav C 000 0 MontaXML("baseImpGrav"    ,STRTRAN(TRANSFORM(TRB->ALQNOZER,"@E 9999999999.99"),',','.')     ,,,,,12,.T.,.T.,.T.)
Vl2IVA     C 000 0 MontaXML("montoIva"        ,STRTRAN(TRANSFORM(TRB->VALIMP  ,"@E 9999999999.99"),',','.')     ,,,,,12,.T.,.T.,.T.)
MontoICE   C 000 0 MontaXML("montoIce"        ,STRTRAN(TRANSFORM(TRB->VALICE  ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
Vl2RetIVA  C 000 0 MontaXML("valorRetIva"    ,STRTRAN(TRANSFORM(TRB->IVARET  ,"@E 9999999999.99"),',','.')     ,,,,,12,.T.,.T.,.T.)
Vl2RetRent C 000 0 MontaXML("valorRetRenta"    ,STRTRAN(TRANSFORM(TRB->VALIRR  ,"@E 9999999999.99"),',','.')     ,,,,,12,.T.,.T.,.T.)
ForPago    C 000 0 MontaXML("formasDePago"    ,                            ,,,,,12 ,.T.,.F.,.T.)
TEmision   C 000 0 MontaXML("formaPago"        ,TRB->FORPAGO                ,,,,,16,.T.,.T.,.T.)
ForPagoF   C 000 0 MontaXML("formasDePago"    ,                            ,,,,,12 ,.F.,.T.,.T.)
DtVendasF  C 000 0 MontaXML("detalleVentas"    ,                            ,,,,,8 ,.F.,.T.,.T.)

[XXX - livro Fiscal Ventas Establecimiento]
ComprasF   C 000 0 MontaXML("ventas"        ,                            ,,,,,4 ,.F.,.T.,.T.)
Vendas     C 000 0 MontaXML("ventasEstablecimiento"        ,                ,,,,,4 ,.T.,.F.,.T.)

[TRV Geração do XML]
(PRE) TRV->(dbGoTop())
VenEstab   C 000 0 MontaXML("ventaEst"        ,                            ,,,,,8 ,.T.,.F.,.T.)
CodEstab   C 000 0 MontaXML("codEstab"        ,TRV->CODEST                ,,,,,12,.T.,.T.,.T.)
VenEstab   C 000 0 MontaXML("ventasEstab"    ,STRTRAN(TRANSFORM(0 ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
IvaComp    C 000 0 MontaXML("ivaComp"        ,STRTRAN(TRANSFORM(0 ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
VenEstabF  C 000 0 MontaXML("ventaEst"        ,                            ,,,,,8 ,.F.,.T.,.T.)

[XXX Identificação do Exportaciones]
VendasF    C 000 0 MontaXML("ventasEstablecimiento"        ,                ,,,,,4 ,.F.,.T.,.T.)
Exporta    C 000 0 MontaXML("exportaciones"                ,                ,,,,,4 ,.T.,.F.,.T.)

[XXX Criacao do arquivo notas exportacion]
(PRE) _atotal[32] := LFeXMLaVEx(DTOS(MV_PAR01),DTOS(MV_PAR02)) 

[TEX Geração do XML]
(PRE) TEX->(dbGoTop())
(PREREG) _aTotal[33]    := IIf(TEX->TIPCLIE == '01', TEX->FCHREGCONT, TEX->COMPFCHEMI)

dtexporta  C 000 0 MontaXML("detalleExportaciones"    ,                ,,,,,8 ,.T.,.F.,.T.)
tpidcliext C 000 0 MontaXML("tpIdClienteEx"            ,TEX->TPIDCLIEXT,,,,,12,.T.,.T.,.T.)
idclienext C 000 0 MontaXML("idClienteEx"            ,TEX->IDCLIEXT    ,,,,,12,.T.,.T.,.T.)
ptrelac    C 000 0 MontaXML("parteRelExp"            ,TEX->PARTREL    ,,,,,12,.T.,.T.,.T.)
tipoclient C 000 0 IIf(TEX->TPIDCLIEXT == "21", MontaXML("tipoCli"            ,TEX->TIPCLIE    ,,,,,12,.T.,.T.,.T.), "")
denomexpor C 000 0 IIf(TEX->TPIDCLIEXT == "21", MontaXML("denoExpCli"        ,GXMLCarEsp(TEX->DENEXPCLI)    ,,,,,12,.T.,.T.,.T.), "")
tpregfsext C 000 0 MontaXML("tipoRegi"                ,TEX->TIPREGI    ,,,,,12,.T.,.T.,.T.)
paising    C 000 0 IIf(TEX->TIPREGI == "01", MontaXML("paisEfecPagoGen"        ,TEX->PEFEPAGGEN,,,,,12,.T.,.T.,.T.), "")
paisparfis C 000 0 IIf(TEX->TIPREGI == "02", MontaXML("paisEfecPagoParFis"    ,TEX->PPAGPARFIS,,,,,12,.T.,.T.,.T.), "")
denoregfis C 000 0 MontaXML("denopagoRegFis"        ,TEX->DENREGFIS    ,,,,,12,.T.,.T.,.T.)
paisexp    C 000 0 MontaXML("paisEfecExp"            ,TEX->PAISEFEEXP,,,,,12,.T.,.T.,.T.)
tipoexp    C 000 0 MontaXML("exportacionDe"            ,TEX->TPEXPING    ,,,,,12,.T.,.T.,.T.)
tipoingres C 000 0 IIf(TEX->TPEXPING == "03", MontaXML("tipIngExt"            ,TEX->TPINGEXT    ,,,,,12,.T.,.T.,.T.), "")
ingextgrav C 000 0 IIf(TEX->TPEXPING == "03", MontaXML("ingExtGravOtroPais"    ,TEX->INGEXTGAV    ,,,,,12,.T.,.T.,.T.), "")
valimpext  C 000 0 IIf(TEX->INGEXTGAV == 'SI', MontaXML("impuestoOtroPais"    ,STRTRAN(TRANSFORM(TEX->IMPOTROPA    ,"@E 999999999.99"),',','.'),,,,,12,.T.,.T.,.T.), "")
tipcompr   C 000 0 MontaXML("tipoComprobante"        ,TEX->TPCOMP    ,,,,,12,.T.,.T.,.T.)
distaduan  C 000 0 IIf(TEX->TPEXPING == '01', MontaXML("distAduanero"        ,TEX->REFDISADUA,,,,,12,.T.,.T.,.T.), "")
refanio    C 000 0 IIf(TEX->TPEXPING == '01', MontaXML("anio"                ,STR(YEAR(_aTotal[33])),,,,,12,.T.,.T.,.T.), "")
refregim   C 000 0 IIf(TEX->TPEXPING == '01', MontaXML("regimen"            ,TEX->REFREGIME    ,,,,,12,.T.,.T.,.T.), "")
refcorrel  C 000 0 IIf(TEX->TPEXPING == '01', MontaXML("correlativo"        ,TEX->REFCORREL1,,,,,12,.T.,.T.,.T.), "")
nodoctrans C 000 0 IIf(TEX->TPEXPING == '01', MontaXML("docTransp"            ,TEX->DOCTRANSP    ,,,,,12,.T.,.T.,.T.), "")
fchregcont C 000 0 MontaXML("fechaEmbarque"            ,DToC(_aTotal[33]),,,,,12,.T.,.T.,.T.)
valfob     C 000 0 MontaXML("valorFOB"                ,STRTRAN(TRANSFORM(TEX->VALORFOB    ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
valcompr   C 000 0 MontaXML("valorFOBComprobante"    ,STRTRAN(TRANSFORM(TEX->VLFOBCOMP    ,"@E 9999999999.99"),',','.')    ,,,,,12,.T.,.T.,.T.)
nsercomest C 000 0 MontaXML("establecimiento"        ,TEX->NOSERCOMPR,,,,,12,.T.,.T.,.T.)
nsercomemi C 000 0 MontaXML("puntoEmision"            ,TEX->PTOEMISION,,,,,12,.T.,.T.,.T.)
nseccompve C 000 0 MontaXML("secuencial"            ,TEX->COMPRSECU    ,,,,,12,.T.,.T.,.T.)
nautoriza  C 000 0 MontaXML("autorizacion"            ,TEX->COMPRAUTOR,,,,,12,.T.,.T.,.T.)
fchemision C 000 0 MontaXML("fechaEmision"            ,DToC(TEX->COMPFCHEMI)    ,,,,,12,.T.,.T.,.T.)
dtexportaF C 000 0 MontaXML("detalleExportaciones"    ,                ,,,,,8 ,.F.,.T.,.T.)

[XXX Identificação do Contribuinte]
ExportaF   C 000 0 MontaXML("exportaciones"            ,                ,,,,,4 ,.F.,.T.,.T.)
Anulados   C 000 0 MontaXML("anulados"                ,                ,,,,,4 ,.T.,.F.,.T.)

[XXX Criacao do arquivo notas canceladas]
(PRE) _atotal[34] := LFeqXMLcan(DTOS(MV_PAR01),DTOS(MV_PAR02)) 

[TRC Geração do XML]
(PRE) TRC->(dbGoTop())
Dtanulado  C 000 0 MontaXML("detalleAnulados"    ,                ,,,,,8 ,.T.,.F.,.T.)
tpcompro   C 000 0 MontaXML("tipoComprobante"    ,TRC->TIPDOC    ,,,,,12,.T.,.T.,.T.)
estabelec  C 000 0 MontaXML("establecimiento"    ,TRC->ESTAB        ,,,,,12,.T.,.T.,.T.)
ptemissao  C 000 0 MontaXML("puntoEmision"        ,TRC->PTEMIS    ,,,,,12,.T.,.T.,.T.)
sequenIni  C 000 0 MontaXML("secuencialInicio"  ,TRC->SEQINI    ,,,,,12,.T.,.T.,.T.)
sequenfin  C 000 0 MontaXML("secuencialFin"        ,TRC->SEQFIM    ,,,,,12,.T.,.T.,.T.)
autoriz    C 000 0 MontaXML("autorizacion"        ,TRC->AUTORIZ    ,,,,,12,.T.,.T.,.T.)
Dtanuladof C 000 0 MontaXML("detalleAnulados"    ,                ,,,,,8 ,.F.,.T.,.T.)

[XXX Finalização]
AnuladosF  C 000 0 MontaXML("anulados"            ,                ,,,,,4 ,.F.,.T.,.T.)
IVAF       C 000 0 MontaXML("iva"                ,                ,,,,,4 ,.F.,.T.,.T.)

[XXX - Nome do Arquivo]
(ARQ) &('_aTotal[7]')

...