M GF 01 D 19 Guía Técnica Visual Fox
M GF 01 D 19 Guía Técnica Visual Fox
M GF 01 D 19 Guía Técnica Visual Fox
https://www.ingface.net/ingface
2
Contenido
1. OBJETIVO.................................................................................................................................................................................. 3
2. DOCUMENTOS DE REFERENCIA.................................................................................................................................... 3
3. ESTRUCTURA DEL MANUAL ............................................................................................................................................ 3
4. DESARROLLO ......................................................................................................................................................................... 4
4.1. Requerimientos de Software.................................................................................................................................... 4
4.2. Validar Requerimientos de Software .................................................................................................................... 4
4.3. Librería DLL ..................................................................................................................................................................... 5
4.4. Validar Acceso a Web Service ................................................................................................................................ 5
4.5. Preparando el ambiente de Ejemplo .................................................................................................................... 6
5. CODIGO ...................................................................................................................................................................................... 7
5.1. Creación de Objetos................................................................................................................................................ 7
5.2. Asignación de Parámetros | Cabecera del Documento ........................................................................... 7
5.3. Asignación de Parámetros | Detalle del Documento ................................................................................ 9
5.4. Asignación de Parámetros | Usuario y Contraseña WS ........................................................................... 9
6. DESCRIPCIÓN CAMPOS ESTRUCTURA DTE (Cabecera) ................................................................................. 10
7. DESCRIPCIÓN CAMPOS ESTRUCTURA DETALLE (Detalle) ........................................................................... 14
8. NOTAS IMPORTANTES ......................................................................................................................................................17
8. REGLAS PARA ENVIAR LOS VALORES .................................................................................................................... 18
1. OBJETIVO
Proporcionar los lineamientos acerca de la estructura, descripción y formato de los campos obligatorios
y necesarios para la implementación de la factura electrónica utilizando web service como forma de
comunicación (a través de la librería DLL de INFILE).
2. DOCUMENTOS DE REFERENCIA
4. DESARROLLO
Figura 1
NOTAS:
Cada una de las maquinas desde donde se realice el consumo, tiene que tener libre acceso a la
URL de nuestro Servicio Web
C:\WINDOWS\Microsoft.NET\Framework
v.2.0.50727
Figura 2
Figura 3
NOTA:
Si no muestra lo anterior, es posible que exista un Firewall o Proxy Activado. Debes de consultar con tu
administrador de redes.
1. Abrir Visual Fox Pro Click en Archivo Click en Nuevo y Seleccionar un nuevo proyecto de
tipo Programa.
2. En el cuerpo del programa, pegue el código de ejemplo proporcionado con este manual:
5. CODIGO
Creación de los objetos que hacen referencia a la librería Dll de INFILE necesaria para la comunicación.
res1=.F.
res2=.F.
loRegistry = NEWOBJECT("Registry",HOME(1)+"ffc\registry.vcx")
obj = newobject("ingfaceDataCenter.comunicaInfile")
La forma de enviar los parámetros de la cabecera del documento a la librería dll, será mandando a
llamar sus métodos, precisamente setDte pasando como parámetros una cadena de caracteres
separados por comas con todos los datos del documento según lo requerido por SAT.
El ejemplo figura de forma vertical para que se pueda apreciar el orden y cada uno de los campos
obligatorios para certificar o firmar cualquier tipo de documento tributario (DTE), entiéndase Facturas,
notas de crédito, notas de débito, recibos electrónicos, entre otros. Tanto en la modalidad Factura
electrónica pura y Factura tipo Copia o Resguardo electrónico.
Los datos serán asignados a una variable de nombre: dataFac. * El número de la izquierda representa
el orden de los campos, no forma parte del código.
Ejemplo:
1. dataFac="001,"
2. dataFac = dataFac+ "ACTIVO,"
3. dataFac = dataFac+ "GTQ,"
4. dataFac = dataFac+ "FACE,"
5. dataFac = dataFac+ "C/F,"
6. dataFac = dataFac+ "12521337,"
7. dataFac = dataFac+ "2,"
8. dataFac = dataFac+ "RENE,"
9. dataFac = dataFac+ "224.00,"
10. dataFac = dataFac+ "04/01/2014,"
11. dataFac = dataFac+ "04/01/2014,"
12. dataFac = dataFac+ "0123ABC,"
13. dataFac = dataFac+ "2208-2208,"
Adicional a los campos obligatorios, en la estructura del web service existen 20 campos personalizados
a nivel de cabecera, los cuales pueden usar para enviar información que no es obligatoria y que tampoco
es requerida por SAT pero que puede ser indispensable o necesaria para el EFACE acuerdo al giro de
negocio de cada uno.
Estos campos son por ejemplo: Código del cliente, código del vendedor, numero de bodega, hora de
emisión del documento, para los exportadores pueden ser el FOB, Flete, CIF, entre otros.
En la estructura del Web Service cuando no se utilicen todos o algunos de los campos, deben de enviar
obligatoriamente N/A (No Aplica).
En el siguiente ejemplo datafact ya trae todos los datos asignados anteriormente y adicional, se le
concatenan los 20 campos personalizados.
Ejemplo:
res1= obj.setDte(dataFac, "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A",
"N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A","N/A")
Exactamente igual que la cabecera, los datos del detalle también se envían en una cadena de caracteres
separados por comas al método setDetalle.
Ejemplo:
res2= obj.setDetalle("2", "1212", "Producto 1 ", "200.00", "224.00", "0.00", "224.00", "224.00", "0.00",
"LBS", "24.00", "B", "0.00", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", 0)
El número cero resaltado en color anaranjado que figura como último parámetro corresponde al índice
del vector detalle, cuantos más detalles deseen agregar, el índice debe de aumentar en uno por cada
detalle.
Por lo tanto, si se desea emitir una factura con 3 productos, el código queda de la siguiente forma:
res2= obj.setDetalle("1", "1213", "Producto 1", "200.00", "224.00", "0.00", "224.00", "224.00", "0.00",
"LBS", "24.00", "B", "0.00", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", 0)
res2= obj.setDetalle("3", "1212", "Producto 2", "200.00", "224.00", "0.00", "224.00", "224.00", "0.00",
"LBS", "24.00", "B", "0.00", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", 1)
res2= obj.setDetalle("15", "1215", "Producto 3", "200.00", "224.00", "0.00", "224.00", "224.00", "0.00",
"LBS", "24.00", "B", "0.00", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", 2)
Por cada documento emitido, se deben de autenticar en nuestro sistema a través de sus credenciales
de acceso, que son el usuario y llave para web service que figuran en el documento llamado: Carta de
Accesos, enviado entre la documentación inicial.
Para ello se invoca el último método del web service llamado enviaData que recibe los parámetros de
usuario y llave. Para la demostración se utiliza un Message Box, con la finalidad de mostrar en pantalla
el resultado de la petición.
Messagebox (obj.enviaData('DEMO',
'B2FDC80789AFAF22C372965901B16DF533A4FCB19FD9F2FD5CBDA554032983B0'))
Posición 1 Código del dispositivo (Caja Registradora, impresora o computadora) desde donde
se genera o emite el documento. Para documentos en copia o resguardo
DISPOSITIVO electrónico, enviar un dispositivo código 0 y para documentos electrónicos, enviar
001 un dispositivo código distinto de cero de no más de 3 dígitos.
Posición 2
ESTADO DOCUMENTO Únicamente acepta dos estados: ACTIVO o ANULADO
ACTIVO
Posición 3 El código ISO para las monedas, las dos primeras letras representan al País
CODIGO MONEDA y la tercera corresponde a la divisa
GTQ QUETZALES = GTQ DOLARES = USD
Posición 4 Solo acepta las siglas siguientes: CFACE = Copia de factura Electrónica,
TIPO DE DOCUMENTO CNCE = Copia de Nota de Crédito Electrónica, CNDE = Copia de Nota de
Débito Electrónica, FACE = Factura Electrónica, NCE = Nota de Crédito Electrónica,
FACE
NDE = Copia de Nota de Debido Electrónica.
Posición 6
NIT VENDEDOR Numero de NIT del EFACE. Se envía sin guiones.
1252133752
Posición 9 Valor TOTAL del documento. Este valor incluye IVA e incluye Otros
MONTO TOTAL Impuestos cuando aplique.
448.00
Posición 10 Fecha del documento en el formato día mes año, usando la diagonal como
FECHA DEL DOCUMENTO separador. Ej. 01/01/2015.
23/04/2015
Posición 11 Fecha de anulación en el formato día mes año, usando la diagonal como
FECHA DE ANULACION separador. Ej. 01/01/2015 En este campo siempre enviar la misma fecha
que en el campo anterior fecha de documento. No se tomara en cuenta para
23/04/2015 las facturas con estatus ACTIVO.
Posición 13
TELEFONO COMPRADOR Si no se tiene el dato enviar N/A.
2208-2208
Posición 15 Valor total exento facturado. 0.00 en caso de no existir ningún valor exento
TOTAL EXENTO de IVA. Pueden usar hasta un máximo de 5 decimales.
0.00
Posición 16 Valor NETO del documento. Este valor únicamente incluye IVA. NO incluye
IMPORTE NETO GRAVADO otros impuestos. Pueden usar hasta un máximo de 5 decimales.
448.00
Posición 17 Valor total de IVA, Este se debe de calcular a partir del importe neto
TOTAL IVA gravado. Nunca se debe de calcular a partir del valor total del documento.
48.00 Pueden usar hasta un máximo de 5 decimales.
Posición 19
DIRECCION COMPRADOR Si no tiene el dato, enviar N/A
Ciudad de Guatemala
Posición 21 Valor total de otros impuestos adicionales al valor del IVA, excepto el ISR.
MONTO OTROS IMPUESTOS En caso de no estar afecto a ningún otro impuesto deben de enviar 0.00.
Un ejemplo de otro impuesto es: el timbre de prensa, IDP, INGUAT, entre
0.00 otros
Posición 22 Numero de resolución asignado por SAT para la serie autorizada que se
NUMERO RESOLUCION SAT envía en el campo Serie, según la hoja de autorización de SAT. * El número
se envía sin guiones Ej. 2012568120 * Consultar con su departamento de
444333222111 contabilidad para más detalles.
Posición 23
MUNICIPIO COMPRADOR Si no tiene el dato, enviar N/A
Guatemala
Posición 24 Nombre del cliente. Si en el campo NIT envían C/F, en este campo debe de
NOMBRE COMPRADOR enviar Consumidor Final.
Pepito Pérez
Posición 25
DEPARTAMENTO COMPRADOR Si no tiene el dato, enviar N/A
Guatemala
Posición 26
NOMBRE COMERCIAL VENDEDOR Nombre comercial del EFACE.
DEMO
Posición 27
RAZON SOCIAL VENDEDOR Nombre completo o Razón social del EFACE.
DEMO S.A.
Posición 28
MUNICIPIO VENDEDOR Siempre se debe de especificar este dato.
MIXCO
Posición 29
DEPARTAMENTO VENDEDOR Siempre se debe de especificar este dato.
GUATEMALA
Posición 30
DIRECCION VENDEDOR Domicilio o Dirección Fiscal del EFACE
Avenida Reforma 3-48 Zona 9
Posición 31 Fecha de autorización para la serie que se envía en el campo Serie. Se envía
FECHA DE RESOLUCION en el formato día mes año, usando la diagonal como separador Ej.
01/01/2015 *Consultar con su departamento de contabilidad para más
15/02/2013 detalles.
Posición 33
IMPORTE BRUTO Valor Base (Valor Neto - IVA). Máximo 5 decimales.
400.00
Posición 34
NIT GFACE El número de NIT de INFILE S.A. 12521337 ( Sin guiones )
12521337
Posición 36
CORREO COMPRADOR Si no tiene el dato, enviar N/A
[email protected]
Posición 38 Alguna observación adicional que se desee agregar al documento. Para las
OBSERVACIONES notas de crédito / debido, este campo se pueden utilizar para enviar el
N/A concepto por el cual se están emitiendo.
NOTA:
Como se mencionó al inicio, en la estructura de la cabecera (dte) existen 20 campos personalizados
en donde puede enviar cualquier dato adicional que necesite guardar y posterior reflejar en el
documento. Cualquier dato que no esté dentro de la estructura obligatoria. Por ejemplo: Código
de vendedor, hora de facturación, bodega, Forma de Pago, Subtotales, CIF, CIP, FOB, ISR, FLETE,
entre otros. Si no va a utilizarlos, no los puede dejar en blanco, deberá de enviar N/A (No Aplica.)
Posición 3
DESCRIPCION PRODUCTO Descripción del Bien o Servicio facturado.
Prontuarios Tributarios
Posición 4
IMPORTE BRUTO Valor Base del bien o servicio. (IMPORTE NETO - IVA).
400.00
Guía técnica Visual Fox M-GF-01-D-19
La información contenida en este documento es proporcionada con el único objetivo de brindar una guía práctica para el proceso de
implementación de Factura Electrónica de INFILE, S. A. Su uso es exclusivo del destinatario, quedando prohibida su divulgación, reproducción
o distribución
15
Posición 5
PRECIO UNITARIO Precio de cada producto o servicio. Este valor siempre incluye IVA.
224.00
Posición 6
IMPORTE EXENTO Valor exento facturado. 0.00 en caso de no facturar exento de IVA.
0.00
Posición 7
IMPORTE NETO Valor Neto del bien o servicio. Este valor únicamente incluye IVA.
448.00
Posición 8 Valor Total del bien o servicio. Este valor incluye IVA e incluye Otros
MONTO TOTAL Impuestos si fuera el caso.
448.00
Posición 11
VALOR DE IVA Valor total de IVA calculado a partir del valor importe neto gravado.
48.00
Posición 12
TIPO DE SERVICIO Solo acepta las letras B ó S B = Bien S = Servicio
B
Posición 13 Valor total de otros impuestos adicionales al IVA, excepto el ISR. 0.00 en
OTROS IMPUESTOS caso de no estar afecto a ningún otro impuesto.
0.00
Posición 14
PERSONALIZADO 1 Si no tiene el dato, enviar N/A
N/A
Posición 15
PERSONALIZADO 2 Si no tiene el dato, enviar N/A
N/A
Posición 16
PERSONALIZADO 3 Si no tiene el dato, enviar N/A
N/A
Posición 17
PERSONALIZADO 4 Si no tiene el dato, enviar N/A
N/A
Posición 18
PERSONALIZADO 5 Si no tiene el dato, enviar N/A
N/A
Posición 19
PERSONALIZADO 6 Si no tiene el dato, enviar N/A
N/A
NOTA:
En la estructura detalle (detalle) existen 6 campos personalizados en donde puede enviar cualquier
dato adicional que necesite guardar y posterior reflejar en el documento. Cualquier dato que no esté
dentro de la estructura obligatoria. Por ejemplo: valores sin haber quitado el descuento (subtotales),
código de pieza, tamaño, peso, entre otros. Si no va a utilizarlos, no los puede dejar en blanco, deberá
de enviar N/A (No Aplica.)
8. NOTAS IMPORTANTES
1. Si se trabaja con documentos electrónicos puros, el identificador único debe de ser como la
huella digital del documento, no se debe de repetir en ningún documento, ninguna serie, ni
establecimiento. Cada documento a certificar se debe de enviar con su respectivo identificador
el cual no deberá de cambiar por cada intento de firma.
4. Si son documentos ANULADOS, también deben de enviar al menos un detalle. En todos los
campos alfanuméricos deben de enviar N/A y en todos los de tipo numero enviar 0.00. A
excepción del campo Unidad de Medida en el que deben de respetar los valores aceptados. UND
para el campo unidad de medida y B o S para el campo TIPO.
5. Los datos se reflejan tal cual son enviados. No cabe la posibilidad que al momento del envío y
registró los datos cambien.
6. No se realiza ninguna comprobación en cuanto a que la suma de los detalles cuadre contra el
total de la factura. Es responsabilidad total del EFACE enviar los valores correctamente
calculados y validados.
8. Todos los campos son obligatorios, no se puede dejar ninguno en blanco. Si no cuenta con el
dato y el campo es de tipo alfanumérico entonces debe de enviar N/A, si es de tipo numérico
debe de enviar 0.00.
9. En la estructura de la cabecera (dte) existen 20 campos personalizados que puede utilizar para
enviar información que no esté dentro de la estructura obligatoria, por ejemplo: Código de
Vendedor, Cajero, Bodega, FOB, ISR, FLETE, SUBTOTAL, entre otros. Si son valores (importes o
montos) los datos que enviaran en estos campos, estos deben de incluir los decimales que
deseen visualizar.
10. A nivel de detalle también existen 6 campos personalizados que puede utilizar dependiendo de
sus necesidades.
11. Cuando a los documentos se les aplique algún descuento, todos los valores enviados en la
estructura de la cabecera y del detalle (Monto bruto, IVA, neto, exento, total) se envían restando
el valor del descuento, por ningún motivo se deben de enviar sin descuento (sin antes haber
hecho la resta), esto es porque la SAT únicamente requiere que se le envíen los montos y el
respectivo IVA, de lo que se recibió por parte del contribuyente.
12. El valor de descuento es obligatorio tanto a nivel de cabecera y detalle (Cuando aplique) y
únicamente es de referencia.
13. No existe ningún campo SUBTOTAL (Total antes de) en la estructura obligatoria requerida por
SAT. Si por razones administrativas usted desea visualizar las facturas con un Subtotal,
descuento y total, es entonces donde deberá usar los campos personalizados para enviar
únicamente el valor SUBTOTAL (Total antes de), el valor de descuento y el total los deberá de
enviar en los campos específicos de la estructura normal.
- Monto Total: = Total de la factura. (Incluye IVA y - Monto Total: = Total de la factura.
…..Otros Impuestos).
- Monto Exento: = Total de la factura.
- Monto Exento: = 0.00. - Tipo de Cambio = Max 5 Decimales.
- Tipo de Cambio: = Para Quetzales enviar 1.00. Para
….dólares, enviar el Respectivo tipo de
….cambio. - Monto Neto: = 0.00
- IVA: = 0.00
- Monto Neto: = Total de la factura (Solo Incluye IVA)
Cualquier error a la hora de realizar el consumo y/o certificación de documentos, tomar una captura de
pantalla y enviarla por correo a: [email protected]