Página 17 de 18

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Jue Mar 31, 2011 2:13 pm
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?

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Jue Mar 31, 2011 3:33 pm
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.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Jue Mar 31, 2011 3:35 pm
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".

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 8:48 am
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

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 9:06 am
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.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 9:50 am
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'

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 9:57 am
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.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 10:06 am
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}

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 10:12 am
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

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Lun Abr 04, 2011 10:38 am
por ganimidesmx
Dado: El error lo da en esta linea:

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