Á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 ATS24/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

...

A través de esta resolución, se dispone que los sujetos pasivos del Impuesto a la Renta obligados a facturar que, a la fecha de entrada en vigencia de la presente Resolución, todavía no se encuentren obligados a emitir comprobantes de venta, retención y documentos complementarios en la modalidad electrónica, deberán incorporar este tipo de esquema a su actividad hasta el 29 de noviembre de 2022.

03. SOLUCIÓN

En la rutina Funciones genéricas para Facturación - Mercado Internacional (FATXFUMI):

Se creó la función que Realiza búsqueda de datos en tabla F3I - Mantenimiento de Tablas (FATXVALF3I), para realizar búsquedas en la tabla Mantenimiento de Tablas (F3I) por nombre de campo, y evitar la búsqueda por posiciones.

En la rutina Carga de catálogos desde archivos .CSV (FISA814):

Se ajusta la función de Creación de tablas auxiliares estándar para el país Ecuador (f814CatEcu), para que al entrar a la rutina de Mantenimiento de Catálogos (FISA813), si existen los archivos 21TarifaRetIVASRI.csv o 22TipoPago.csv en la ruta local configurada en el parámetro MV_PATH814 sean creadas las estructuras y los datos de las tablas S021 - Catálogo de Tarida Ret. IVA y S022 - Catálogos de Tipos de Pago.

En la rutina Funciones Genéricas de Facturación Electrónica - Ecuador (M486XFUNEQ):

Se creó la función M486XIMTOS(), para la generación del nodo <impuestosDocSustento> con los atributos para informar los Impuestos que contiene la Factura de Entrada con la cual se generó el Certificado de Retención que se incluye en el Comprobante de Retención 2.0 versión ATS.

Se creó la función M486CODRET(), para obtener el código de Retención que aplica para el atributo <codigoRetencion>, donde para la Retención de IVA es obtenido de la tabla S021 - Catálogo de Tarifa Ret. IVA y para Retención de la Renta del campo Concepto (FE_CONCEPT).

Se generó el archivo FATCRECU20.INI con el esquema para la generación del XML para los Comprobantes de Retención 2.0 versión ATS.

Ajustes para el Anexo Transaccional Simplificado (ATS):

En la rutina Funciones Genéricas XML para ATS (GERXMLA1):

En la función LFeqXMLan1(), se realizaron ajustes para crear los siguientes campos en la tabla temporal TRA, para la generación del nodo <pagoExterior> de Compras..

CampoValorAtributo
TIPOPROV'01' Si Tipo(A2_TIPO) es igual a 1-Singular, en caso contrario '02'tipoProv
DENOPROVA2_NOMEdenoProv
PGOLOCEXTA2_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, Paso 03Generació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 rutina 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 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')
    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:
    Image Added
  7. Configurar el parámetro MV_PATH814, con la ruta local donde se colocarán los archivo archivos en formato .csv para la carga de Catálogos.
  8. Colocar los siguientes archivos en formato .csv en la ruta definida en el parámetro MV_PATH814, conteniendo las siguientes estructuras:
    • 16ImpuestosSRI.csv
      Image Added
    • 17TarifaIVASRI.csv
    • 20TipoImpARetenerSRI.csv
    • 21TarifaRetIVASRI.csv
    • 24FormasPagoSRI.csv
      Image Added
    • 22TipoPago
      Image Added
    • 27TiposRegimenFiscalExterior.csv
      Image Added}
    • 28Paises.csv
      Image Added
    • 29ParaisosFiscales.csv
      Image Added
  9. En el módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Mantenimiento de Catálogos (FISA813)
  10. Validar que se haya generado el catálogo S016 - Catálogo de impuestos, con la siguiente estructura:
    Image Added
  11. Validar que se haya generado el catálogo S017 - Catálogo de Tarifa del IVA, con la siguiente estructura:
    Image Added
  12. Validar que se haya generado el catálogo S020 - Catálogo Tipos Impuestos a Ret, con la siguiente estructura:
    Image Added
  13. Validar que se haya generado el catálogo S021 - Catálogo de Tarifa Ret. IVA, con la siguiente estructura:
    Image Modified
  14. Validar que se haya generado el catálogo S022 - Catálogo de Tipos de Pago, con la siguiente estructura:
    Image Added
  15. Validar que se haya generado el catálogo S024 - Catálogo Formas de Pago, con la siguiente estructura:
    Image Added
  16. Validar que se haya generado el catálogo S027 - Catálogo de Régimen Fiscal del Exterior, con la siguiente estructura:
    Image Added
  17. Validar que se haya generado el catálogo S028 - Catálogo de Países, con la siguiente estructura:
    Image Added
  18. Validar que se haya generado el catálogo S029 - Catálogo de Paraísos Fiscales, con la siguiente estructura:
    Image Added
  19. En el Módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Impuestos Variable (MATA996)
    • Para los impuestos
    cuyo
    • que tienen configurado el campo Clase Imp. (FB_CLASSE) esa igual a I-Impuesto,
    configurar
    • es necesario informar el campo Cod.Impuesto (FB_CODIMP)
    , que debe corresponder a la tabla 16 - Códigos de Impuestos SRI
    • .
  20. En el Módulo Libros Fiscales (SIGAFIS), ir al menú Actualizaciones | Archivos | Conceptos.
    • Para cada
    concepto
    • 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)
  21. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Proveedores
    • Configurar un Proveedor,

    informando el campo
    • 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).

  22. En el módulo Compras (SIGACOM), ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida (MATA080)
    • Configurar un Tipo de
    Entrasa
    • Entrada (TES) con el cálculo del Impuesto IVA, Retención de IVA y Retención de la Renta.
  23. 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.
  24. 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.
  25. 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
    visualise
    • visualice el Folio del Comprobante de Retención generado.
      Image Added
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

  • Consulta Específica ECU022 - Tipos de Pago.

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU022101RETipos de PagoF3I
ECU02220101
F812SXB("S022","Codigo")
ECU022501

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

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU027101RETip. Reg. Fis. Ext.F3I
ECU02720101
F812SXB("S027","Codigo")
ECU027501

VAR_IXB
  • Consulta Específica ECU028 - Países

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU028101REPaísesF3I
ECU02820101
F812SXB("S028","Codigo")
ECU028501

VAR_IXB


  • Consulta Específica ECU029 - Paraísos Fiscales

Alias

Tipo

Secuencia

Columna

Descripción

Contiene

ECU029101REParaísos FiscalesF3I
ECU02920101
F812SXB("S029","Codigo")
ECU029501

VAR_IXB


Creación de campos en SX3

Tabla SA2 - Proveedores

  • Campo A2_CONTRBE
CampoContenido
CampoA2_CONTRBE
Tipo1 - Carácter
Tamaño2
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolPago Resid.
Des. EspañolPago Residente/No Resid. 
Modo Edición
Cons.ECU022
Val. SistemaVazio() .Or. ValidF3I("S022",M->A2_CONTRBE,1,2)
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe reportar si el pago realizado por la transacción ingresado se realizó a un residente o no residente. Corresponde a uno de los
códigos de la Tabla 15 de la Guía para Contribuyentes del Anexo Transaccional Simplificado (ATS).


  • Campo A2_RETENED
CampoContenido
CampoA2_RETENED
Tipo1 - Carácter
Tamaño2
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolTp. Reg. Fis
Des. EspañolTp. De Reg. Fis. Exterior
Modo Edición
Cons.ECU027
Val. SistemaVazio() .Or. ValidF3I("S027",M->A2_RETENED,1,2)
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe reportar si el pago realizado fue a un no residente (A2_CONTRBE igual a 02). Corresponde a uno de los códigos de la tabla 19 de la Guía para Contribuyentes del Anexo Transaccional Simplificado (ATS).


  • Campo A2_CODICA
CampoContenido
CampoA2_CODICA
Tipo1 - Carácter
Tamaño3
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolPaís/Estab. 
Des. EspañolPaís Pago Régimen General
Modo Edición
Cons.ECU028
Val. SistemaVazio() .Or. ValidF3I("S028",M->A2_CODICA,1,3)
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe reportar si el pago realizado al no residente es a un Régimen General (Campo A2_RETENED igual a 01). Corresponde a uno de los códigos de la Tabla 16 de la Guía para Contribuyentes del Anexo Transaccional Simplificado (ATS).


  • Campo A2_RETICA
CampoContenido
CampoA2_RETICA
Tipo1 - Carácter
Tamaño2
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolPaís P. Fisc
Des. EspañolPaís Paraíso Fiscal 
Modo Edición
Cons.ECU029
Val. SistemaVazio() .Or. ValidF3I("S029",M->A2_RETICA,1,2)
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe reportar si el pago realizado al no residente ubicado en el paraíso fiscal. Corresponde a uno de los códigos de la Tabla 17 de la Guía para Contribuyentes del Anexo Transaccional Simplificado (ATS).


  • Campo A2_CODICA2
CampoContenido
CampoA2_CODICA2
Tipo1 - Carácter
Tamaño3
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolPaís Efec Pg
Des. EspañolPaís a quién efectúa Pago
Modo Edición
Cons.ECU028
Val. SistemaVazio() .Or. ValidF3I("S028",M->A2_CODICA2,1,3)
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe ingresar el país al que se efectúa al pago por el bien o servicio. Corresponde a uno de los códigos
de la Tabla 16 de la Guía para Contribuyentes del Anexo Transaccional Simplificado (ATS). 


  • Campo A2_ECDTEX
CampoContenido
CampoA2_ECDTEX
Tipo1 - Carácter
Tamaño2
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolDoble Trib
Des. EspañolAplica Conv. Doble Tribut
Modo Edición
Lista EspañolS=Si;N=No
Inic. Estándar'N'
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe indicar si el pago efectuado está sujeto a algún convenio de doble tributación. Debe siempre seleccionarse una opción (S-Sí / N-No)


  • Campo A2_CBUCOM 
CampoContenido
CampoA2_CBUCOM
Tipo1 - Carácter
Tamaño2
Decimal0
Formato@!
Propiedad1 - Modificar
Tit. EspañolPgo Ext Ret 
Des. EspañolPago Exterior Sujeto Ret 
Modo Edición
Lista EspañolS=Si;N=No
Inic. Estándar'N'
ObligatorioNo
UsadoSi
BrowseNo
Help

Se debe indicar si el pago realizado al exterior aplica retención en aplicación a la norma legal. Debe siempre seleccionarse una opción (S-Sí / No)


Ajustes al Archivo EQUATF.INI:

Painel
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]')


Card documentos
InformacaoUtilice este box para resaltar información relevante y/o de destaqueLa presente funcional aplica para versión 12.1.33 o superior, y es necesario tener activa la funcionalidad de transmisión electrónica para el país Ecuador con el Proveedor Tecnológico denominado Stupendo.
Titulo¡IMPORTANTE!


05. ASUNTOS RELACIONADOS