Error en XML, según el validador del SAT y XML NOTEPAD

243 views
Skip to first unread message

Oscar Garcia

unread,
Sep 22, 2015, 2:50:55 PM9/22/15
to vfp-factura-electronica-mexico
Saludos...

Tengo meses a que estoy generando facturas y todo iba bien, hasta hoy que me reportaron que apartir del día 15 de septiembre de las 12:30pm en adelante el validador del SAT y el XML NOTEPAD, están reportanto error en el XML.


El XML NOTE PAD dice "El valor del atributo "versión" no es igual que el valor fijo.
y el validador del SAT, me está reportando prácticamente lo mismo.

Les adjunto las imágenes de los errores para más detalle.

¿Acaso en el título del XML debe ir Versión 3.2?
¿A alguien del grupo le ha ocurrido esto?
¿Alguien sabe si a partir del 15 de septiembre se deben aplicar nuevos cambios o disposiciones del SAT?

De antemano muchas gracias.

VALIDADOR SAT F51165.png
XMLNOTEPAD F51165.png

Jose Celso Bautista

unread,
Sep 23, 2015, 9:27:11 AM9/23/15
to vfp-factura-ele...@googlegroups.com
Por que no pones el xml para revisarlo
Segun el mensaje el elemento version se refiere al del timbrefiscal
que ahi si lleva version=1.0

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/vfp-factura-electronica-mexico.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mapasac

unread,
Sep 23, 2015, 11:33:37 AM9/23/15
to vfp-factura-electronica-mexico
Oscar, la semana pasada le paso lo mismo a varios clientes que le facturan sobre todo a TERNIUM, METALSA ya que a estas empresas se adiciona la addenda al XML y tuvimos varios rechazos de facturas, el problema como menciona el compañero estaba en el complemento del timbre fiscal que en vez de tener version=1.0 tenia version=3.2, esto ha quedado solucionado ajustando nuestro codigo fuente de la siguiente forma :

antes :

.setattribute('version', STREXTRACT(cxmlcontim,[version="], ["]))


despues :

.setattribute('version', STREXTRACT(cxmlcontim,[version="], ["], 2))


por ultimo revisa los xml nos retorna finkok, tienen algunos cambios a diferencia de los anteriores, sobre todo el orden de los valores. 


salds....

Mapasac

General Escobedo, N.L.

Vinicio Garcia

unread,
Sep 23, 2015, 6:06:22 PM9/23/15
to factura electrónica
Saludos colisteros.

El nodo TFD cambio, reporta FINKOK.

Estoy utilizando la clase del grupo y en teoría,
deberíamos obtener el selloSAT tal y como se esta programado en estos momentos,
sin embargo, no logro obtenerlo. Éste es el problema que me apareció después del 14
de septiembre.

Alguien que allá resuelto esto ?, alguna pista ?.





Micro Mundo de Los Mochis
T.P. Marco Vinicio García Vargas
Sistemas
Tel. 818-8380  Cel. 668-193-5356



Date: Wed, 23 Sep 2015 08:33:36 -0700
From: facturacionele...@gmail.com
To: vfp-factura-ele...@googlegroups.com
Subject: [vfp-fem] Re: Error en XML, según el validador del SAT y XML NOTEPAD

Oscar Garcia

unread,
Sep 24, 2015, 10:46:15 AM9/24/15
to vfp-factura-electronica-mexico
Muchas gracias a todos, José y Mapasac tienen toda la razón, ya corregí el código como dice Mapasac y ya está funcionando.

Y es que en el XML hay 3 lugares donde viene el dato "version", una en el encabezado, otra la versión del CFDI y otra la versión del timbrado y esta última es la que se requiere.

Nuevamente muchas, muchas gracias.


Victor López (Montand)

unread,
Oct 9, 2015, 6:43:31 PM10/9/15
to vfp-factura-electronica-mexico
Hola compañeros

Tengo el mismo problema con un cliente a partir del 15 de septiembre y timbramos con Finkok

Yo acabo de realizar facturas con el web service de pruebas de Finkok y me arroja el timbrado correctamente, es decir el XML en el TDF si me da la versión 1.0., sin embargo en producción, me arroja el 3.2

La pregunta sería, con el cambio en la linea de código que comenta Mapasac, se corrije el problema ? o Tengo que hablar con Finkok ?

Si alguien ya tiene la solución, ojala la pueda compartir


Gracias de antemano

El martes, 22 de septiembre de 2015, 13:50:55 (UTC-5), Oscar Garcia escribió:

Victor Lopez

unread,
Oct 13, 2015, 6:35:30 PM10/13/15
to vfp-factura-ele...@googlegroups.com
Bueno, para quien le interese, el error lo corregí con una modificación muy sencilla

Cambié la linea que mencionó Mapasac pero de otra forma

.setattribute('version', STREXTRACT(cxmlcontim,[version="], [" F]))

Lo anterior porque en el XML timbrado que regresa Finkok trae en la cadena version="1.0" FechaTimbrado= ... 
Así siempre obtendré la versión de dicha fecha

Saludos a todos

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/vfp-factura-electronica-mexico.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--

______________________
Victor Gerardo López
Director de desarrollo
POSMEX, Guadalajara
33 3359 9565

Arturo Ramos

unread,
Oct 16, 2015, 10:59:17 PM10/16/15
to vfp-factura-electronica-mexico
No entiendo @Victor, 

¿de la respuesta de Finkok "sacas" los valores del timbre y los metes en tu XML para dejarlo listo?

¿por qué no sacas todo el XML ya timbrado de la misma respuesta y sólo guardas el archivo?

Creo que de esta forma si algo cambia pues ya Finkok se encarga de regresarte lo correcto.

Comenta...

Arturo Ramos
Cancún, México
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electronica-mexico+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-electronica-mex...@googlegroups.com.

Oscar Garcia

unread,
Oct 16, 2015, 11:24:22 PM10/16/15
to vfp-factura-electronica-mexico
Saludos...

Creo que tienes razón, en mi caso intenté sacar el xml completo de lo que envía finkok y nunca me quedo bien, por eso decidí sacar el timbre y agregarlo al xml que mandé timbrar. Supongo que es el mismo caso de Victor.

Si alguien desea compartir su rutina de como saca el XML de lo que regresa finkok, se lo agradecería mucho.


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.



--

______________________
Victor Gerardo López
Director de desarrollo
POSMEX, Guadalajara
33 3359 9565

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.

Arturo Ramos

unread,
Oct 17, 2015, 11:19:53 AM10/17/15
to vfp-factura-electronica-mexico
De esta forma, usando el DOM:


* -- Parsear Response - Si llega aquí tenemos respuesta del WS
lcXMLDoc
= lcXMLResponse   && Para no manipular la respuesta directamente


* -- Lee desde el XML de la respuesta
LOCAL olNodes AS
IXMLDOMNodeList
oXML
= CREATEOBJECT('MSXML2.DOMdocument')
oXML
.loadXML(lcXMLDoc) && Si se lee desde una cadena, debe estar en UTF-8
IF
(oXML.parseError.errorCode <> 0) THEN
   myErr
= oXML.parseError
   MESSAGEBOX
("Estructura XML de la respuesta mal armada: " + myErr.reason, 16, "Sistema")
   RETURN
.F.
ENDIF


* -- Selecciona el nodo tns:stampResult
* -- si no está este nodo algo salió mal, el WS siempre debe regresar este nodo en el XML de respuesta
olNode
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult")
IF ISNULL
(olNode) THEN
 MESSAGEBOX
("XML de respusta inválido."+CHR(13)+"Nodo <tns:stampResult> no presente.", 16, "Sistema")
 RETURN
.F.
ENDIF


* -- Verifica si está el nodo s0:CodEstatus, si este nodo no está debe estar al menos un nodo de incidencia en
* -- s0:Incidencia con el mensaje de error al intentar timbrar
olNode
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:CodEstatus")
IF ISNULL
(olNode) THEN
 
* -- Verifica si la respuesta contiene un error
 olNode
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:Incidencias/s0:Incidencia/s0:MensajeIncidencia")
 IF NOT ISNULL
(olNode) THEN
 
* -- Obtiene todos los mensajes de error
 olNode
= oXML.selectNodes("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:Incidencias")
 
Thisform.Finkok_incidencias(olNode)
 RETURN
.F.
 ELSE
 MESSAGEBOX
("XML de respusta inválido."+CHR(13)+"Nodo <s0:CodEstatus> no presente y no hay incidencias.", 16, "Sistema")
 RETURN
.F.
 ENDIF
ENDIF


* -- Si llega aquí no hay errores
sAtributeValue
= ALLTRIM(olNode.Text)  && En el atributo Text de s0:CodEstatus está el estado de la llamada
*WAIT sAtributeValue WINDOW


IF  UPPER
(sAtributeValue) == "COMPROBANTE TIMBRADO SATISFACTORIAMENTE" OR ;
 UPPER
(sAtributeValue) == "COMPROBANTE RECIBIDO SATISFACTORIAMENTE"
 lEsValido
= .T.
 
 
* -- Obtiene valores del timbre
 olNode              
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:Fecha")
 cFechaTimbradoVal    
= ALLTRIM(olNode.Text)
 olNode              
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:NoCertificadoSAT")
 cNoCertificadoSATVal
= ALLTRIM(olNode.Text)
 olNode              
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:SatSeal")
 cSelloSATVal        
= ALLTRIM(olNode.Text)
 olNode              
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:UUID")
 cUUIDVal            
= ALLTRIM(olNode.Text)
 olNode              
= oXML.selectSingleNode("//senv:Envelope/senv:Body/tns:stampResponse/tns:stampResult/s0:xml")
 cXMLTimbrado        
= ALLTRIM(olNode.Text)  && XML completo, timbrado y listo
 
 
* "selloCFD: " + cSelloCFDVal + CHR(13) + ;"Versión: " + cVersionVal + CHR(13) + ;s
 cTimbreWS
= "FechaTimbrado: " + cFechaTimbradoVal + CHR(13) +  ;
 
"noCertificadoSAT: " + cNoCertificadoSATVal + CHR(13) + ;
 
"selloSAT: " + cSelloSATVal + CHR(13) + ;
 
"UUID: " + cUUIDVal
 
 
* -- Guarda el CFDI timbrado
 cOldSet
= SET("Safety")
 SET SAFETY OFF
 cBuff
= cXMLTimbrado   && En la respuesta, en el nodo s0:xml, está el XML completo listo para entregar
 STRTOFILE
(cBuff, cFileXML, 4)  && UTF-8 con BOM
 SET SAFETY
&cOldSet
 
 MESSAGEBOX
("El comprobante se timbró correctamente.", 64, "Sistema")
ENDIF



Espero te sirva.

Saludo.

Oscar Garcia

unread,
Oct 21, 2015, 11:56:00 AM10/21/15
to vfp-factura-electronica-mexico
Saludos...

Por supuesto que si, muchas gracias, lo analizaré y lo aplicaré.
 

Victor Lopez

unread,
Oct 21, 2015, 11:56:00 AM10/21/15
to vfp-factura-ele...@googlegroups.com
Así es Arturo, lo hago como dice Oscar y nunca intenté tomar todo el XML

Pero es cierto, sería mejor tomar el XML completo que regresa FINKOK
Gracias por tu recomendación, voy a implementarla


Saludos

El 17 de octubre de 2015, 10:19, Arturo Ramos <irc...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/vfp-factura-electronica-mexico.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages