Á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:

SIGAFIS - Libros Fiscales

SIGAFAT - Facturación

Función:

   

Rutina(s)Nombre TécnicoFecha
LOCXNFNotas Fiscales16/11/2021
LOCXEQUFunciones genéricas Notas Fiscales Ecuador16/11/2021
GERXMLA1Funciones genéricas XML para ATS1618/11/2021
FISA814Carga de catálogos en formato .csv16/11/2021
MATA468NGeneración de Notas16/11/2021

   

Archivo relacionadoNombre TécnicoFecha
EQUATF.INIEstructura de Archivo Transaccional Simplificado (ATS)
16
18/11/2021
País:Ecuador
Ticket:12438024
Requisito/Story/Issue (informe el requisito vinculado):DMINA-13780

...

Se solicita añadir a la generación del documento Anexo Transaccional Simplificado (ATS) la funcionalidad para documentos de tipo Exportación conforme se indica en la resolución No. NAC-DGER2007-1319, ver sitio del SRI sección Anexo Transaccional Simplificado (ATS) subseccion subsección Base legal:


En la sección Guia para el contribuyente, dentro del documento Ficha Técnica ATS podrá encontrar más información sobre el llenado de la sección Exportaciones en el punto 2.4 EXPORTACIONES O INGRESOS DEL EXTERIOR.

...

  • En la rutina Funciones genéricas XML para ATS (GERXMLA1):
    • En las funciones TRelAN1DeF() y PrTRepAN1() se añade una sección adicional para la impresión de la información de los documentos de Exportación desde TReport.
    • Se crea la función LFeXMLaVEx() para añadir a una tabla temporal, los documentos de Tipo Exportación (F2_TPACTIV = S).
    • Se crea la función GXMLCarEsp() para eliminar caracteres especiales en la impresion de los nodos razonSocial y denoExpCli.
  • En la rutina Funciones genéricas Notas Fiscales Ecuador (LOCXEQU) se añade la función LxEquNFExp() para validar que, si se esta capturando una factura de venta de tipo Exportación, se valide que sean capturados los campos requeridos para la generación del XML para ATS.
  • En la rutina Notas Fiscales (LOCXNF) se añade e uso de la función LxEquNFExp() localizado para país Ecuador y al realizar una factura de venta.
  • En la rutina Generación de Notas (MATA468N) se actualiza la función a468nGravF2() para grabar los campos de manera correcta al generar una factura a partir de un pedido de venta que cuente con los campos para exportación.
  • En la rutina Carga de catálogos en formato .csv (FISA814):
    • Se crea función F814CpsTab() para cargar campos de un catálogo a tabla F3H.
    • Se actualiza la función f814CatEcu() para añadir la carga de los siguientes catálogos:
      • 27TiposRegimenFiscalExterior.csv
      • 28Paises.csv
      • 29ParaisosFiscales.csv
      • 30TipoExportacionIngresoExterior.csv
      • 31TiposIngresoExterior.csv
      • 32TiposComprobantesAutorizados.csv
      • 33DistritoAduanero.csv
      • 34CodigoRegimen.csv
  • En el archivo Estructura de Archivo Transaccional Simplificado (ATS) (EQUATF.INI) se añade el tratamiento requerido para la impresión de los documentos de exportación obtenidos y añadidos a la tabla temporal generada en la función LFeXMLaVEx().


Informações
titleImportante

Al momento de la generación de la presente solución, las validaciones fueron realizadas con la versión DIMM 1.15 y Plugin ATS 1.3.0

Totvs custom tabs box
tabsPre-requisitos, Pasos
idspaso1,paso2
Totvs custom tabs box items
defaultyes
referenciapaso1
  • Realizar un respaldo del repositorio (RPO).
  • Contar con las rutinas actualizadas conforme a la sección 01. DATOS GENERALES.
  • Contar con las actualizaciones al Diccionario de Datos, indicadas en la sección 04. INFORMACIÓN ADICIONAL:
    • Creación de Campos.
    • Creación de Gatillos.
    • Creación de Consultas.
    • Actualización de catálogos.
    • Configuración de Archivo ".ini".
Totvs custom tabs box items
defaultno
referenciapaso2
  1. Ingresar al módulo Facturación (SIGAFAT).
  2. Ir al menú "Actualizaciones | Archivos | Clientes" (MATA030).
  3. Incluir/Actualizar un Cliente informando los siguientes campos:
    • Folder de Registro
      • Tipo - 2 - Persona Jurídica
      • Provincia - Extranjero (EX)
      • Cd. Ciudad - Extranjero (EX)
      • Tipo Doc. - 06 (Pasaporte)
    • Folder Fiscales
      • Tp. Reg. Fis - 01 (Régimen General)
      • País/Estab. - 105 (Colombia)
      • País P. Fisc - Vacío
      • Ps. Exp. Ing. - 105 (Colombia)
    • Folder Otros
      • Código NIF - Informar un código de NIF
  4. Ir al menú "Actualizaciones | Facturación | Facturaciones" (MATA467N).
  5. Incluir un nuevo título indicando lo siguiente:
    • Utilizar el Cliente del punto 3.
    • Informar los siguientes campos del encabezado, correspondientes a los datos de Exportación:
      • Exportación? - S - Si
      • Tp. Expor.? - 01 (Exportación de bienes con refrendo)
      • Ref.Dis.Adu - 073 (Tulcán)
      • Ref.Régimen? - 40 (Exportación definitiva)
      • Ref. Correl.? - Informar correlativo
      • No.Doc Trans - Informar Num. de documento de transporte
      • Tip. Comp.? - 01 (Factura)
      • Fch Reg Cont - Informar la fecha requerida
  6. Concluir la captura del documento y confirmar el guardado.
  7. Ingresar al módulo Libros Fiscales (SIGAFIS).
  8. 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.
  9. En el XML indicado, se deberá contar con la sección de exportaciones con la información capturada en el cliente y en el encabezado de la factura.


...

Campo XMLContenidoObservaciones
tpIdClienteExA1_TPDOCTIPDOC

Tipo de Identificación del Cliente, si se informa 04 el nodo contendrá el valor 20, si es informado 06 o 08 el nodo contendrá el valor 21.

idClienteExA1_CGC/A1_NIF

No. de Identificación del Cliente, si el tipo de identificación de cliente es informado como 04 contendrá A1_CGC, si es informado como 06 o 08 contendrá A1_TFN.

parteRelExpA1_ACNParte Relacionada informada como SI o NO.
tipoCliA1_TIPOTipo de Cliente si el nodo tpIdClienteEx es informado con valor 21, contendrá 01 o si A1_TIPO = 1 se informara  01, si A1_TIPO = 2 se informara  02.
denoExpCliA1_NOMERazón o denominación social del exportador, si el nodo tpIdClienteEx es informado con valor 21, contendrá A1_NOME.
tipoRegiA1_TFN

Tipos de régimen fiscal del exterior

paisEfecPagoGenA1_TP
paisEfecPagoParFisA1_GLN
denopagoRegFis
Si A1_TFN = '01' se obtiene descripcion de tabla S028 a partir de codigo informado en A1_TP, si A1_TFN = '02' se obtiene descripcion de tabla S029 a partir de codigo informado en A1_GLN.
paisEfecExpA1_RETIR

País de residencia o establecimiento permanente a  quien se efectúa la exportación o ingreso del exterior.

exportacionDeF2_REGIME

Tipo de Exportación / Ingreso del exterior

tipIngExtF2_TPRENTA

Tipos de Ingresos del exterior

ingExtGravOtroPaisF2_EXPCONF

¿El ingreso del exterior fue gravado con impuesto a la renta o uno similar, en el país en el que se obtuvo?

impuestoOtroPaisF2_VALIMPD

Valor del impuesto a la renta o impuesto similar pagado en el exterior por el ingreso obtenido.

tipoComprobanteF2_TCOMPTipo de Comprobante
distAduaneroF2_MUNDESC

No. de refrendo - Distrito Aduanero

anioF2_FECHSENo. de refrendo - Año
regimenF2_CMUNDE

No. del refrendo - Régimen

correlativoF2_DOCMAN

No. del refrendo - Correlativo

docTranspF2_LTRAN

No. de documento de transporte

fechaEmbarqueF2_FECHSE

Fecha de registro contable

valorFOBF2_VALBRUT

Valor FOB / Valor del ingreso del exterior

valorFOBComprobanteF2_VALBRUT

Valor del Comprobante local / exterior

puntoEmisionF2_PTOEMIS

No. de serie del comprobante de venta - punto de emisión.

secuencialF2_DOC

No. secuencial del comprobante de venta.

autorizacionF2_NUMAUT

No. de autorización del comprobante de venta.

fechaEmisionF2_EMISSAO

Fecha de emisión del comprobante de venta.

...

  • En la configuración regional del Sistema Operativo de la computadora, establecer el carácter pipe ('|') como separador de campos.
  • Entrar al al minimini-sitio del SRI, descargar los catálogos (sección Anexo Transaccional Simplificado, Guía para el contribuyente, Catálogo ATS para Reporte Mensual Semestral, folder TABLAS REFERENCIALES), los cuales son distribuidos en planilla de cálculo.
  • En el catálogo requerido, observar que la cantidad y distribución de las columnas coincida con el catálogo previo.
  • Copiar las celdas de datos, sin encabezados, del catálogo requerido a una nueva planilla.
  • Grabar la planilla obtenida, es importante que el nombre sea el mismo que las mostradas a continuación, y que sea con el Tipo de archivo CSV (MS_DOS) .csv:
    • 27TiposRegimenFiscalExterior.csv



    • 28Paises.csv



    • 29ParaisosFiscales.csv



    • 30TipoExportacionIngresoExterior.csv



    • 31TiposIngresoExterior.csv



    • 32TiposComprobantesAutorizados.csv



    • 33DistritoAduanero.csv



    • 34CodigoRegimen.csv



  • Posteriormente, si es necesario, reestablecer el separador de campos en la configuración regional del Sistema Operativo de la computadora.
  • Comprobar que el archivo .csv obtenido tenga codificación UTF-8 sin BOM, en caso contrario, se deberá cambiar a través de un editor de texto con la capacidad de manejo de codificación, por ejemplo con Notepad++:
    • Cargar el archivo .csv en el editor.
    • Las vocales con acento, eñes y otros caracteres especiales se deben visualizar correctamente. Además, en el menú "Codificación" debe indicar la opción "UTF-8 sin BOM".
    • En caso de que no se cumplan esas condiciones, en el menú "Codificación" seleccionar "Juego de caracteres > Europeo Occidental > OEM 850".
    • A continuación, nuevamente abrir el menú "Codificación", seleccionar Convertir a "UTF-8 sin BOM".
    • En este punto, las vocales con acento, eñes y otros caracteres especiales deben visualizarse correctamente.
    • Grabar el archivo de texto.

...

Informações
titleArchivo de Configuración (.ini)

Para la generación del nodo de Exportaciones en la generacion del Anexo Transaccional Simplificado (ATS), la funcionalidad debe ser añadida al archivo EQUATF.INI el cual debe ser estar ubicado en la carpeta System ('Protheus_data\System').


**Importante**

En caso de tener personalizaciónes en el archivo EQUATF.INI, se recomienda realizar un respaldo del mismo y posteriormente incluir las siguientes actualizaciones para generar nodo de Exportaciones se deberá incluir lo siguiente::

  • En la seccion [XXX Header] se añade tratamiento para eliminar caracteres especiales en el nodo razonSocial.
  • Se añade la seccion [XXX Identificação do Exportaciones] en donde se finaliza el seccion ventasEstablecimiento y se inicia la seccion de exportaciones
  • Se añade la seccion [XXX Criacao do arquivo notas exportacion] donde se almacena en pocicion del arreglo _aTotal  el llamado a la función LFeXMLaVEx() para la creación de la tabla con los documentos de tipo exportación.
  • Se añade la seccion [TEX Geração do XML] en la cual se procesan todos los documentos obtenidos en la seccion anterior.
  • Se actualiza la seccion [XXX Identificação do Contribuinte] para finalizar la seccion de exportaciones e iniciar la seccion anulados.
  • Se actualiza la seccion [XXX Criacao do arquivo notas canceladas] indicando una posicion posterior a las utilizadas en el arreglo _aTotal al llamar la funcion LFeqXMLcan()


EQUATF.INI

Image Added


Image Added

Image RemovedImage Added


Bloco de código
themeEclipse
firstline1
titleEQUATF.INI (Estandar)
linenumberstrue
collapsetrue
?{"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.)
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"		,"01"					,,,,,16,.T.,.T.,.T.)
EPagoGen   C 002 0 MontaXML("paisEfecPago"		,"NA"					,,,,,16,.T.,.T.,.T.)
Convenio   C 002 0 MontaXML("aplicConvDobTrib"	,"NA"					,,,,,16,.T.,.T.,.T.)
EPagoPar   C 002 0 MontaXML("pagExtSujRetNorLeg"		,"NA"			,,,,,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 MontaXML("parteRelVtas"	,"NO"						,,,,,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 == 'SSI', 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
InformacaoEsta solución aplica para versión 12.1.17, 12.1.25 y superior; siempre y cuando se cuente con las rutinas correspondientes actualizadas como se indica en la sección 01. DATOS GENERALES
Titulo¡IMPORTANTE!

...