01. DATOS GENERALES


Producto

Línea de producto: 

Segmento:

Módulo:SIGAFAT - Facturación
Función:
RutinaNombreFecha
MATA486Documentos Electrónicos.
MATA462ANGeneración de Remitos.
M486XFUNEQFunciones Genéricas de Facturación Electrónica de Ecuador.
LOCXFUNAFunciones generales de documentos fiscales.
MATV410AFunciones Genéricas para Pedidos de Venta.
FATGRECUScript de generación de los archivos XML para Guías de Remisión de Venta.
País:Ecuador
Ticket:NA
Requisito/Story/Issue (informe el requisito vinculado):DMINA-14730


02. SITUACIÓN/REQUISITO

Conforme a lo establecido en 


03. SOLUCIÓN

Se realizaron ajustes a las siguientes rutinas:

Documentos Electrónicos (MATA486):

En la función principal(MATA486), se habilita para el país Ecuador el tipo de documento Guía de Remisión.

En la función encargada de Obtiene información de los documentos de TSS(M486GETTSS), se habilita el tipo de documento Guía de Remisión al momento de consultar el estado de un documento mediante la opción "Monitor".

Funciones Genéricas de Facturación Electrónica de Ecuador(M486XFUNEQ):

En la función encargada de la Generación de nombre para archivo .XML a enviar a Stupendo(M486NOMARC), se agrega el documento Guía de Remisión(especie "RFN") para generar el nombre del archivo XML.

Se crea una nueva función que Recupera la Información del Documento Sustento para Guía de Remisión(fgetDocEqu), la cual es utilizada en el Script de generación de los archivos XML para Guías de Remisión de Venta(FATGRECU.INI)

Se agrega una nueva función que Valida los campos del pedido requeridos en la generación del XML para guías de remisión(fVldEqu).

Funciones generales de documentos fiscales (LOCXFUNA):

En la función  que Detona la generación del archivo XML para documento electrónicos(CFDGerXml), se habilita el uso del Script de generación de los archivos XML para Guías de Remisión de Venta(FATGRECU.INI) por medio del parámetro MV_CFDFTGR para el país Ecuador. 

Generación de Remitos (MATA462AN) :

En la función que detona la Generación de remito(A462ANGera), se el ajuste para guardar los nuevos campos utilizados para la generación del XML de la Guía de remisión de la tabla SC5 - Pedidos a la tabla de SF2 - Documentos de salida para el país Ecuador.

Se agrega una nueva función que Obtiene datos de tabla Control de Formularios(M462GETSFP), la cual es utilizada para guardar la información en los campos Punto Emisión(F2_PTOEMIS) y Establecimiento(F2_ESTABL).

Funciones Genéricas para Pedidos de Venta(MATV410A) :

En la función que detona las validaciones de los campos para el pedido de venta(A410TudOk), se agrega el llamada de la nueva función fVldEqu para el país Ecuador.


FATGRECU.INI

A continuación se muestra el Script de generación de los archivos XML para Guías de Remisión de Venta(FATGRECU.INI):

[XXX POSICIONAMENTOS]
(PRE) If(AllTrim(SF2->F2_ESPECIE)<>"NDI",SA1->(MSSeek(xFilial("SA1")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)
(PRE) (AI0->(MSSeek(xFilial("AI0")+SF2->F2_CLIENTE+SF2->F2_LOJA)) , .T.)

[XXX INICIALIZACION]
(PRE) SD2->(DbSetOrder(1))
(PRE) SB1->(DbSetOrder(1))
(PRE) SYA->(DbSetOrder(1))
(PRE) SC6->(DbSetOrder(1))
(PRE) SE4->(DbSetOrder(1)) 
(PRE) CTO->(DbSetOrder(1)) 
(PRE) SAH->(DbSetOrder(1))
(PRE) SA1->(DbSetOrder(1))
(PRE) DA3->(DbSetOrder(1))
(PRE) SA4->(DbSetOrder(1))

(PRE) _aTotal[002] := chr(13) + chr(10)
(PRE) _aTotal[003] := "99999999999999.99"
(PRE) _aTotal[004] := {"SD2",""}
(PRE) _aTotal[006] := M486NOMARC(SF2->F2_FILIAL, SF2->F2_DOC, SF2->F2_SERIE, SF2->F2_CLIENTE, SF2->F2_LOJA)
(PRE) _aTotal[007] := SuperGetMV("MV_CFDIAMB",.F.,"1")
(PRE) _aTotal[009] := TamSX3("F2_DOC")[1]
(PRE) _aTotal[012] := Iif(!Empty(SF2->F2_DOCMAN) .Or. !Empty(SF2->F2_SERMAN),fgetDocEqu(SF2->F2_FILIAL, SF2->F2_DOCMAN, SF2->F2_SERMAN,"NF"),"")
(PRE) lDocSust     := !Empty(_aTotal[012])
(PREREG) FsQuery(_aTotal[004],1,"D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'","SD2->D2_DOC=SF2->F2_DOC .AND. SD2->D2_SERIE=SF2->F2_SERIE .AND. SD2->D2_CLIENTE=SF2->F2_CLIENTE .AND. SD2->D2_LOJA=SF2->F2_LOJA","D2_ITEM") .And. .T.

[XXX EMISOR]
(PREREG) (_aTotal[001] := '<?xml version="1.0" encoding="UTF-8" ?>' + _aTotal[002],.T.) 
(PREREG) (_aTotal[001] += '<guiaRemision id="comprobante" version="1.0.0">' + _aTotal[002],.T.) 
(PREREG) (_aTotal[001] += '    <infoTributaria>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <ambiente>' + _aTotal[007] + '</ambiente>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <tipoEmision>' + "1" + '</tipoEmision>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <razonSocial>' + Alltrim(SM0->M0_NOMECOM) + '</razonSocial>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += IIF(_aTotal[018],'        <nombreComercial>' + Alltrim(SM0->M0_NOME) + '</nombreComercial>'+ _aTotal[002],"") ,.T.)
(PREREG) (_aTotal[001] += '        <ruc>' + Alltrim(SM0->M0_CGC) + '</ruc>' + _aTotal[002],.T.) 
(PREREG) (_aTotal[001] += '        <codDoc>06</codDoc>' + _aTotal[002],.T.) 
(PREREG) (_aTotal[001] += '        <estab>' + Alltrim(SF2->F2_ESTABL) + '</estab>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <ptoEmi>' + Alltrim(SF2->F2_PTOEMIS) + '</ptoEmi>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <secuencial>' + Alltrim(Substr(SF2->F2_DOC,(_aTotal[009]-8),9)) + '</secuencial>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <dirMatriz>' + Alltrim(SM0->M0_ENDENT) + " " + Alltrim(SM0->M0_COMPENT) + '</dirMatriz>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    </infoTributaria>',.T.)
(PREREG) ENCODEUTF8(_aTotal[001])

[XXX RECEPTOR]
(PREREG) (SA4->(MSSeek(xFilial("SA4")+SF2->F2_TRANSP)) , .T.)
(PREREG) (DA3->(MSSeek(xFilial("DA3")+SF2->F2_VEICULO)) , .T.)
(PREREG) (_aTotal[001] := '    <infoGuiaRemision>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <dirEstablecimiento>' + Alltrim(SA1->A1_END) + '</dirEstablecimiento>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <dirPartida>' + Alltrim(SA1->A1_END) + '</dirPartida>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <razonSocialTransportista>' + Alltrim(SA4->A4_NOME) + '</razonSocialTransportista>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <tipoIdentificacionTransportista>' + Alltrim(SA4->A4_TIPOTRA) + '</tipoIdentificacionTransportista>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <rucTransportista>' + Alltrim(SA4->A4_CGC) + '</rucTransportista>' + _aTotal[002],.T.)
(PREREG) (IIf(!Empty(_aTotal[008]), _aTotal[001] += '        <contribuyenteEspecial>' + Alltrim(_aTotal[008]) + '</contribuyenteEspecial>' + _aTotal[002], ""),.T.)
(PREREG) (_aTotal[001] += '        <obligadoContabilidad>SI</obligadoContabilidad >' + _aTotal[002],.T.) 
(PREREG) (_aTotal[001] += '        <fechaIniTransporte>' + cValtoChar(SF2->F2_FECDSE) + '</fechaIniTransporte >' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <fechaFinTransporte>' + cValtoChar(SF2->F2_FECANTF) + '</fechaFinTransporte>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <placa>' + Alltrim(DA3->DA3_PLACA) + '</placa>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    </infoGuiaRemision>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    <destinatarios>',.T.)
(PREREG) ENCODEUTF8(_aTotal[001])

[XXX DESTINATARIO]
(PRE) lDocSust         := !Empty(_aTotal[012])
(PREREG) (_aTotal[001] := '         <destinatario>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                <identificacionDestinatario>' + Alltrim(SA1->A1_CGC) + '</identificacionDestinatario>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                <razonSocialDestinatario>' + Alltrim(SA1->A1_NOME) + '</razonSocialDestinatario>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                <dirDestinatario>' + Alltrim(SA1->A1_ENDENT) + '</dirDestinatario>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                <motivoTraslado>' + Alltrim(SF2->F2_OBS) + '</motivoTraslado>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += Iif(!Empty(SA1->A1_CODLOC),'                <codEstabDestino>'+SA1->A1_CODLOC + '</codEstabDestino>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += Iif(!Empty(Alltrim(SF2->F2_RUTDOC)),'                <ruta>' + Alltrim(SF2->F2_RUTDOC) + '</ruta>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += Iif(lDocSust,'                <codDocSustento>01</codDocSustento>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += Iif(lDocSust,'                <numDocSustento>' + Alltrim(_aTotal[012][3])+"-"+ Alltrim(_aTotal[012][2])+"-" + IIf(Len(Alltrim(_aTotal[012][1])) > 9, Alltrim(Substr(_aTotal[012][1],(_aTotal[009]-8),9)), Alltrim(_aTotal[012][1])) + '</numDocSustento>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += Iif(lDocSust .And. !Empty(_aTotal[012][4]) ,'                <numAutDocSustento>' + _aTotal[012][4] + '</numAutDocSustento>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += Iif(lDocSust,'                <fechaEmisionDocSustento>' + _aTotal[012][5] + '</fechaEmisionDocSustento>' + _aTotal[002],""),.T.)
(PREREG) (_aTotal[001] += '               <detalles>'+ _aTotal[002],.T.)
(PREREG) ENCODEUTF8(_aTotal[001])

[SD2 DETALLE]
(PREREG) (SB1->(MSSeek(xFilial("SB1") + SD2->D2_COD)),.T.)
(PREREG) (_aTotal[001] := '                   <detalle>'+ _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                        <codigoInterno>' + Alltrim(SD2->D2_COD) + '</codigoInterno>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                        <codigoAdicional>' + Alltrim(SD2->D2_COD) + '</codigoAdicional>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                        <descripcion>' + Alltrim(SB1->B1_DESC) + '</descripcion>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                        <cantidad>' + Alltrim(TRANSFORM(SD2->D2_QUANT,_aTotal[003])) + '</cantidad>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '                </detalle>'+ _aTotal[002],.T.)
(PREREG) ENCODEUTF8(_aTotal[001])

[XXX INFOADICIONAL]
(PREREG) (_aTotal[001] := '            </detalles>'+ _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '         </destinatario>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    </destinatarios>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    <infoAdicional>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <campoAdicional nombre="Email">' + Alltrim(SA1->A1_EMAIL) + '</campoAdicional>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '        <campoAdicional nombre="TELEFONO">' + Alltrim(SA1->A1_TEL) + '</campoAdicional>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += '    </infoAdicional>' + _aTotal[002],.T.)
(PREREG) (_aTotal[001] += ' </guiaRemision>' + _aTotal[002],.T.)
(PREREG) ENCODEUTF8(_aTotal[001])
(POS) FsQuery(_aTotal[004],2)

[XXX FACTURA]
(PRE) _aTotal[094] := _aTotal[006] + ".XML"

(ARQ) _aTotal[094]


1. Utilice cuando sea necesario describir un paso a paso. 

2. Utilice cuando sea necesario describir un paso a paso.


04. INFORMACIÓN ADICIONAL

Otras acciones/acciones relacionadas 



05. ASUNTOS RELACIONADOS