Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Codigo Fuente en Delphi para Timbrar

Foro dedicado para discutir la parte tecnica de como es el timbrado
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
spaniaguag
Mensajes: 137
Registrado: Vie Oct 08, 2010 3:12 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por spaniaguag »

DADO escribió: 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 librería 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 así 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"
Si estoy usando tus librerías, y así lo hago. Pero esta haciendo un raro, voy rastreando como se se va formando el xml y todo funciona perfectamente, el valor del xml esta correcto exactamente antes de llamar la rutina

BuzonEEngine.Solicita(ModoEnvio,CFD,

Inmediatamente en la entrada de esta rutina se modifica el xml sin haber ninguna instrucción de por medio y lo mas curioso es que la serie aparece después del sello y no antes del folio como te muestro a continuación:

sello="IFeWkvinjpA5oFYYP1k2+qdG/ftyq0SrSCIcE44JPUSX3A6SHdRvZrbDMRU+U2QvM70DqXCG3bm4XJ6cb8da2iMTm4c68oKxmDr3jAsPJJPYuZvUnwJUCSDON7RiEm40SkfIM79Tc9Vt39RDn+kNxViVr1+5L55ML5k/0VLDgvY=" serie=""><cfdi:Emisor

Revisando la unit CfdCore, al crear la cadena original tienes la instrucción:

valor := CFDCopy.Attributes['serie'];
if valor = '' then CFDCopy.Attributes['serie'] := ' '; //Hack para cuando serie=""

habrá relación?
spaniaguag
Mensajes: 137
Registrado: Vie Oct 08, 2010 3:12 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por spaniaguag »

Hola

Ya resolví el problema, aunque no tiene nada de lógica. Tenia lo siguiente:

x := CFD.Datos.Xml; // Para verificar el valor del xml y esta correcto
Dato := CFD.Datos.Serie+' '+CFD.Datos.Folio+' '+CFD.Datos.Fecha+' '+cfd.Datos.TipoDeComprobante; //Armo este dato informativo para enviarlo a buzone
x := CFD.Datos.Xml; // Para verificar el valor del xml y ya presenta el error
BuzonEEngine.Solicita.................

y quedo finalmente así:

x := CFD.Datos.Xml; // Para verificar el valor del xml y esta correcto
Dato := MiSerie+MiFolio+MiFecha+MiTpoDeComprobante; //Armo este dato informativo para enviarlo a buzone
x := CFD.Datos.Xml; // Para verificar el valor del xml y YA FUNCIONA
BuzonEEngine.Solicita.................

Lo importante es que ya quedo.
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por Dado »

spaniaguag escribió:Hola

Ya resolví el problema, aunque no tiene nada de lógica. Tenia lo siguiente:

x := CFD.Datos.Xml; // Para verificar el valor del xml y esta correcto
Dato := CFD.Datos.Serie+' '+CFD.Datos.Folio+' '+CFD.Datos.Fecha+' '+cfd.Datos.TipoDeComprobante; //Armo este dato informativo para enviarlo a buzone
x := CFD.Datos.Xml; // Para verificar el valor del xml y ya presenta el error
BuzonEEngine.Solicita.................

y quedo finalmente así:

x := CFD.Datos.Xml; // Para verificar el valor del xml y esta correcto
Dato := MiSerie+MiFolio+MiFecha+MiTpoDeComprobante; //Armo este dato informativo para enviarlo a buzone
x := CFD.Datos.Xml; // Para verificar el valor del xml y YA FUNCIONA
BuzonEEngine.Solicita.................

Lo importante es que ya quedo.
Ups! me ganaste en contestar, precisamente te iba a decir que buscaras todos los lugares donde leas la serie ya que con solo leerla se crea "de la nada".
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
ganimidesmx
Mensajes: 62
Registrado: Sab Dic 18, 2010 2:49 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por ganimidesmx »

Dado: Compre las rutinas para timbrar con EDICOM, al timbrar manda este mensaje:

No es valido en el nivel superior del documento
Line: 1
Timbrado!

lo curioso es que al mandarlo timbrar con Timbrefiscal lo timbra bien.

Que estara pasando ? :roll:

Saludos.

DanielK
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por Dado »

ganimidesmx escribió:Dado: Compre las rutinas para timbrar con EDICOM, al timbrar manda este mensaje:

No es valido en el nivel superior del documento
Line: 1
Timbrado!

lo curioso es que al mandarlo timbrar con Timbrefiscal lo timbra bien.

Que estara pasando ? :roll:

Saludos.

DanielK
Enviame el XML que estas tratando de timbrar, tambien te recomiendo depurar y ver en que linea se atora.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
ganimidesmx
Mensajes: 62
Registrado: Sab Dic 18, 2010 2:49 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por ganimidesmx »

Dado: necesitare cambiar algo en esta rutina ?



function EdicomEngine(TipoDeSolicitud : TTipoDeSolicitudEdicom; CFD : TCFD; Usuario, Clave : string; var RespuestaDelPAC : string) : boolean;
var SendXMLFile, SendZipFile, RecvZipFile, RecvXMLFile : string;
FileData, Respuesta : TByteDynArray;
begin
{$IFDEF USAR_MI_USER_Y_CLAVE_PERSONAL}
{$i '../Factura Electronica Docs/PAC - Edicom/DatosPrivados.inc'}
{$ENDIF}

SendXMLFile := ExtractFilePath(Application.exeName) + 'EnvioEdicom.xml';
SendZipFile := ExtractFilePath(Application.exeName) + 'EnvioEdicom.zip';
RecvZipFile := ExtractFilePath(Application.exeName) + 'ResultadoEdicom.zip';
RecvXMLFile := ExtractFilePath(Application.exeName) + 'ResultadoEdicom.xml'
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por Dado »

ganimidesmx escribió:Dado: necesitare cambiar algo en esta rutina ?



function EdicomEngine(TipoDeSolicitud : TTipoDeSolicitudEdicom; CFD : TCFD; Usuario, Clave : string; var RespuestaDelPAC : string) : boolean;
var SendXMLFile, SendZipFile, RecvZipFile, RecvXMLFile : string;
FileData, Respuesta : TByteDynArray;
begin
{$IFDEF USAR_MI_USER_Y_CLAVE_PERSONAL}
{$i '../Factura Electronica Docs/PAC - Edicom/DatosPrivados.inc'}
{$ENDIF}

SendXMLFile := ExtractFilePath(Application.exeName) + 'EnvioEdicom.xml';
SendZipFile := ExtractFilePath(Application.exeName) + 'EnvioEdicom.zip';
RecvZipFile := ExtractFilePath(Application.exeName) + 'ResultadoEdicom.zip';
RecvXMLFile := ExtractFilePath(Application.exeName) + 'ResultadoEdicom.xml'
Revise el XML y si pude timbrarlo sin problema.

Ahora la pregunta es, te lo hace *siempre* y con todos los XML que generas? o solo fue con este XML en especial.

Por otro lado, para saber exactamente que pasa es necesario que ejecutes linea por linea del timbrado (no son muchas lineas) y analices *exactamente* en que linea esta marcando el error, insisto en comentarte que pude timbrar sin problema tu XML asi que debe ser alguna linea que hayas modificado o algo en tu XML que "no le guste" a la rutina de envio.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
ganimidesmx
Mensajes: 62
Registrado: Sab Dic 18, 2010 2:49 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por ganimidesmx »

Dado: Lo hace en todos los XML, no cambie ninguna linea solo las claves en el llamado, no se si deba cambiar algo en esta lineas:

{$IFDEF USAR_MI_USER_Y_CLAVE_PERSONAL}
{$i '../Factura Electronica Docs/PAC - Edicom/DatosPrivados.inc'}
{$ENDIF}
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por Dado »

ganimidesmx escribió:Dado: Lo hace en todos los XML, no cambie ninguna linea solo las claves en el llamado, no se si deba cambiar algo en esta lineas:

{$IFDEF USAR_MI_USER_Y_CLAVE_PERSONAL}
{$i '../Factura Electronica Docs/PAC - Edicom/DatosPrivados.inc'}
{$ENDIF}
A esas lineas no les hagas caso (tal como dice muy explicitamente son "DatosPrivados"), ejecuta linea por linea como te pedia
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
ganimidesmx
Mensajes: 62
Registrado: Sab Dic 18, 2010 2:49 pm

Re: Codigo Fuente en Delphi para Timbrar

Mensaje por ganimidesmx »

Dado: El error lo da en esta linea:

//Le enviamos el texto al Objeto Timbre
Timbre.SetTimbre(RespuestaDelPAC);
Cerrado