Á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)1618/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.


...

  • 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!

...