Página 16 de 18
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 7:17 pm
por Dado
@acanas
Cuanto ha sido tu max(ts) y tu min(ts) ?
Has notado diferencias en alguna "hora pico" en especial?
Hay un ex0.Message especial relacionado con el parametro refID, ese lo cachas y lo manejas aparte o no usas el refID?
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 7:42 pm
por acanas
DADO escribió:@acanas
Cuanto ha sido tu max(ts) y tu min(ts) ?
Has notado diferencias en alguna "hora pico" en especial?
Hay un ex0.Message especial relacionado con el parametro refID, ese lo cachas y lo manejas aparte o no usas el refID?
Buena pregunta dado, voy a tratar de hacer esa comparación aunque las veces que lo hice pude ver diferencias desde 3 segundos hasta 9 segundos como máximo pero digamos que en promedio 5 segundos. Se me esta ocurriendo generar una estadística en la cual se almacene ese datos del tiempo del timbrado por PAC y comparar.
Con respecto al mensaje de error no he utilizado el RefID, utilizo el catch porque en caso de perdida de comunicación con el PAC en medio de un timbrado quiero caer en blandito

, pero la verdad que me sirve para cachar el mensaje del error también que genera TimbreFiscal (esquema inválido, emisor inválido, etc.) y me ha resultado transparente para el usuario.En el RefID viene el código de error ? hace mucho sacaron una tabla con códigos de error en su documentación pero no se si esté relacionado directamente con el RefID.
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 8:26 pm
por Dado
acanas escribió:DADO escribió:@acanas
Cuanto ha sido tu max(ts) y tu min(ts) ?
Has notado diferencias en alguna "hora pico" en especial?
Hay un ex0.Message especial relacionado con el parametro refID, ese lo cachas y lo manejas aparte o no usas el refID?
Buena pregunta dado, voy a tratar de hacer esa comparación aunque las veces que lo hice pude ver diferencias desde 3 segundos hasta 9 segundos como máximo pero digamos que en promedio 5 segundos. Se me esta ocurriendo generar una estadística en la cual se almacene ese datos del tiempo del timbrado por PAC y comparar.
Con respecto al mensaje de error no he utilizado el RefID, utilizo el catch porque en caso de perdida de comunicación con el PAC en medio de un timbrado quiero caer en blandito

, pero la verdad que me sirve para cachar el mensaje del error también que genera TimbreFiscal (esquema inválido, emisor inválido, etc.) y me ha resultado transparente para el usuario.En el RefID viene el código de error ? hace mucho sacaron una tabla con códigos de error en su documentación pero no se si esté relacionado directamente con el RefID.
El RefID esta chido, es un numero que tu generas para identificar a tu CFD de forma unica.
La secuencia es mas o menos :
1. generas el sapo request

, le agregas por ejemplo RefID=ABC0025
2. lo envias a timbrefiscalmx
3. timbrefiscalmx le genera el timbre (nota, todavia no lo regresa)
4. Chin! pierdes la comunicacion
5. timbrefiscalmx envia de regreso el timbre, pero tu "ya no estas ahi", pierdes el timbre.
6. detectas el error, intentas nuevamente enviar tu cfd PERO CON EL MISMO REFID
7. timbrefiscalmx reconoce tu REFID y en lugar de crear OTRO TIMBRE te regresa EL MISMO QUE SE HABIA PERDIDO
8. recibes el timbre, es una copia del que se habia perdido
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 8:36 pm
por acanas
Woorale no pues si esta chido porque tecnicamente si pierdes la comunicación con el PAC pero generaste el timbre no hay necesidad de dupliar el timbre, no se si otros PACS tengan implementado un mecanismo similar de darle seguimiento a un timbre previamente generado y que te lo mande de regreso. Buen dato!
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 8:44 pm
por Dado
acanas escribió:Woorale no pues si esta chido porque tecnicamente si pierdes la comunicación con el PAC pero generaste el timbre no hay necesidad de dupliar el timbre, no se si otros PACS tengan implementado un mecanismo similar de darle seguimiento a un timbre previamente generado y que te lo mande de regreso. Buen dato!
BuzonE tambien tiene algo similar, lo malo es que es una de esas "funciones no documentadas" y la descubri mas por error que por buscarlo.
Resulta que si envias *el mismo* CFD dos veces en la segunda te envia el error "Este CFD ya tiene asignado un UUID:xxxx-xxxx-xxxx" lo malo que no'mas te dice eso pero no te devuelve el timbre, supongo que puedes recuperarlo de su portal, pero imaginate que lio : "estimado usuario (que no sabe nada de cfdi ya es es un doctor, ingeniero, etc) el mensaje SOAP que me envia el PAC dice que tiene un UUIDD repetido, debe entrar al portal (con una clave que usted no conoce) y recuperar el CFDI" je je je mas de uno llamaria preguntando por la sra madre del desarrollador.......
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Mié Mar 30, 2011 11:42 pm
por spaniaguag
Hola Dado:
Estoy haciendo pruebas con tus rutinas de buzone y encontré un error, si el folio de la factura no lleva serie buzone te responde con el error:
El CFD no paso la validacion vs el XSD - local:///timbradoCFD/createCFDTimbrado.xsl: cvc-type 3.1.1: element {
http://www.sat.gob.mx/cfd/3}Comprobante attribute serie had invalid value '' of type '<null>''
y esto ocurre porque cuando armas el xml si generas un numero de serie nulo:
'<cfdi:Comprobante xmlns:cfdi="
http://www.sat.gob.mx/cfd/3" xmlns="
http://www.sat.gob.mx/cfd/3" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv3.xsd" version="3.0" folio="000163" fecha="2011-03-31T00:37:42" formaDePago="Una sola exhibición" subTotal="12600.00" descuento="1260.00" motivoDescuento="Descuento" TipoCambio="1.0000" Moneda="MXN" total="13154.40" tipoDeComprobante="ingreso" noCertificado="30001000000100000800"
certificado="...qEQ=" ** aqui va todo el certificado ***
serie="">
podrías ayudarme?
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Jue Mar 31, 2011 8:10 am
por acanas
que no se supone que el no. de serie es opcional en cfdv3? creo que esto es un bug de buzone.
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Jue Mar 31, 2011 8:24 am
por spaniaguag
Si es opcional, y por ello no debe aparecer en el xml, en este caso el xml contiene serie = ""
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Jue Mar 31, 2011 8:27 am
por acanas
ahhh si es cierto.. ya que me acuerdo yo le paso un null y se elimina al momento de serializar mi clase de comprobante a xml. Buen punto.
Re: Codigo Fuente en Delphi para Timbrar
Publicado: Jue Mar 31, 2011 8:50 am
por Dado
spaniaguag escribió:Hola Dado:
Estoy haciendo pruebas con tus rutinas de buzone y encontré un error, si el folio de la factura no lleva serie buzone te responde con el error:
El CFD no paso la validacion vs el XSD - local:///timbradoCFD/createCFDTimbrado.xsl: cvc-type 3.1.1: element {
http://www.sat.gob.mx/cfd/3}Comprobante attribute serie had invalid value '' of type '<null>''
y esto ocurre porque cuando armas el xml si generas un numero de serie nulo:
'<cfdi:Comprobante xmlns:cfdi="
http://www.sat.gob.mx/cfd/3" xmlns="
http://www.sat.gob.mx/cfd/3" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv3.xsd" version="3.0" folio="000163" fecha="2011-03-31T00:37:42" formaDePago="Una sola exhibición" subTotal="12600.00" descuento="1260.00" motivoDescuento="Descuento" TipoCambio="1.0000" Moneda="MXN" total="13154.40" tipoDeComprobante="ingreso" noCertificado="30001000000100000800"
certificado="...qEQ=" ** aqui va todo el certificado ***
serie="">
podrías ayudarme?
Pues si no tiene serie, que es totalmente valido en los dos esqueas (v2 y v3) quita el atributo por completo
Quiero suponer que *no* estas usando mis rutinas o libreria ya que estas tienen un "candado" para evitar que se generen atributos vacios.
Mi recomendacion es que en tu codigo programes, igual que yo, algo asi como :
if value<>'' then setattribute(...)
Es decir, "si el valor que se va a asignar al atributo es distinto de vacio entonces lo asigna, de otra forma no"