
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
.
Correcciones al Codigo Fuente que ofrezco en Mdo Libre
-
- Mensajes: 3
- Registrado: Sab Sep 18, 2010 12:35 pm
Caracteres Especiales
Una pregunta dado, revisando un xml generado en donde el receptor en su RFC incluye un caracter especial: "&" (HELMER & PAYNE), veo que en el xml se transcribe, se pasa tal cual; aquí no faltará sustituir por los caracteres de escape según dice el apartado C del Anexo 20?
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Caracteres Especiales
Si, pero casi todos los programas te hacen la conversion ya sea para leer o para escribir, si REALMENTE quieres ver como esta grabado tienes que usar un editor hexadecimal.eveleza escribió:Una pregunta dado, revisando un xml generado en donde el receptor en su RFC incluye un caracter especial: "&" (HELMER & PAYNE), veo que en el xml se transcribe, se pasa tal cual; aquí no faltará sustituir por los caracteres de escape según dice el apartado C del Anexo 20?
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Nuevo error detectado cuando no se usa serie
Si se deja en blanco el campo "Serie" del Paso No. 1 despues en el Paso 3 el XML aparece bien formando SIN EL ATRIBUTO serie, tal como debe ser.
PERO, al exportarlo se graba ese XML en el escritorio y como sacado de la nada aparece EL ATRIBUTO sello asignado a vacio, es decir serie="" y eso no deberia ser asi.
Las rutinas ya estaban protegidas para que si el valor es = "" NO SE ASIGNARA dicho atributo, esa proteccion esta en la unidad cfdv2.pas y es imposible asignar un valor nulo :
Entonces de donde aparece el valor nulo? Bueno, la interface XML es algo compleja, si tratas de leer un atributo que NO EXISTE la interface lo genera automaticamente, cosa que no siempre es saludable.
En Paso3.pas hay esta funcion :
CONCLUSION : NO USEN EL ATRIBUTO SERIE PARA FORMAR EL NOMBRE DEL ARCHIVO A EXPORTAR, BORREN "CFD.Serie" DEL PROCEDIMIENTO, ESTO NO AFECTA AL ATRIBUTO CFD.Emisor.Rfc NI AL ATRIBUTO CF.Folio YA QUE ESOS SON ATRIBUTOS OBLIGATORIO Y SIEMPRE DEBEN IR EN UN XML BIEN FORMADO.
gracias a aromo por resaltar esta situacion.....
PERO, al exportarlo se graba ese XML en el escritorio y como sacado de la nada aparece EL ATRIBUTO sello asignado a vacio, es decir serie="" y eso no deberia ser asi.
Las rutinas ya estaban protegidas para que si el valor es = "" NO SE ASIGNARA dicho atributo, esa proteccion esta en la unidad cfdv2.pas y es imposible asignar un valor nulo :
Código: Seleccionar todo
procedure TXMLComprobante.Set_Serie(Value: WideString);
begin
if Value <> '' then SetAttribute('serie', Value);
end;
En Paso3.pas hay esta funcion :
Esta funcion graba el XML en el escritorio y de nombre le pone RFC-Serie-FolioFactura.xml y es ahi donde esta el error, si no tiene serie al tratar de leerlo para formar el nombre del archivo aparece de la nada el atributo serie.procedure TPaso3Form.Button3Click(Sender: TObject);
begin
with FacturaEForm do
begin
//Nota como puedes accesar directamente a cualquier "pedazo" de la factura electronica, por
//ejemplo si quieres el folio solo accesa a CFD.Folio
ExportaXML(GetSystemPath(Desktop)+CFD.Emisor.Rfc+' '+CFD.Serie+'-'+CFD.Folio+'.xml');
MessageDlg('Se grabo la factura digital en formato XML en el ESCRITORIO',mtInformation,[mbOK],0);
end;
end;
CONCLUSION : NO USEN EL ATRIBUTO SERIE PARA FORMAR EL NOMBRE DEL ARCHIVO A EXPORTAR, BORREN "CFD.Serie" DEL PROCEDIMIENTO, ESTO NO AFECTA AL ATRIBUTO CFD.Emisor.Rfc NI AL ATRIBUTO CF.Folio YA QUE ESOS SON ATRIBUTOS OBLIGATORIO Y SIEMPRE DEBEN IR EN UN XML BIEN FORMADO.
gracias a aromo por resaltar esta situacion.....

ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 2
- Registrado: Mié Oct 27, 2010 5:25 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Muchas gracias por la respuesta, funcionó perfectamente.
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
mariocl escribió:Hola soy la persona que solicito las partes de las modificaciones si me funciono muy bien
pero hasta hoy me llego el certificado tengo una duda hay una diferencia de horario
al cargar el certificado, me tome la libertad de cambiar las lineas
IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2)-6,TP(3),TP(4),0);
FinVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2)-6,TP(3),TP(4),0);
Resulta que la hora en el archivo de texto dice que es la hora GMT, y en mi zona
es la GMT-07 si le restaba 7 me diferia por una hora, asi que le reste la GMT-6 del
DF que es donde se generó el certificado.
Alguien ya habia resuelto esto de la carga del certificado en diferentes zonas horarias
o es correcto restarle el -6 de la diferencia.
Saludos
@mariocl
Aviso importante para mariocl (y otros que hayan seguido este mal consejo):
NO USES ...... IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2)-6,TP(3),TP(4),0);.....hay potencialmente un error fatal en eso, si por ejemplo la hora es 03:23:50 (tres de la mañana con 23 minutos 50 segundos) y le restas 6 horas pues ya te imaginaras......
DEBES USAR IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0) - EncodeTime(6,0,0,0); y asi hace el "rollback" correctamente incluso si hay cambio de fecha
Lo malo que en el ValidaCFD V0.1c lo programe mal....van a empezar a caer mensajes al respecto....

ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 425
- Registrado: Jue Ago 05, 2010 3:11 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Otra opción:dado escribió:...
DEBES USAR IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0) - EncodeTime(6,0,0,0); y asi hace el "rollback" correctamente incluso si hay cambio de fecha...
IniVigencia := IncHour(EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0) , -6);
(de DateUtils)
Saludos
-
- Mensajes: 22
- Registrado: Lun Sep 13, 2010 10:47 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Buenos dias, tengo un problema con la generacion del archivo XML, esto es en el encabezado donde debe de ir la encoding="utf-8". el resultado que obtengo es el siguiente:
<?xml version="1.0"?>
debiendo obtener
<?xml version="1.0" encoding="utf-8" ?>
el codigo que tengo para Generar el XML es tal cual esta en el programa que me envio de prueba
XMLDoc.XML.Text :=
'<?xml version="1.0" encoding="UTF-8"?>'+
'<Comprobante xmlns="http://www.sat.gob.mx/cfd/2"></Comprobante>';
pero no entiendo porque al asignar en esta linea
CFD := GetComprobante(XMLDoc);
se pierde el encoding="utf-8"
Actualmente utilizo Delphi 2010 y trabajo sobre Windows 7.
Gracias por su apoyo
Atte. Marco
<?xml version="1.0"?>
debiendo obtener
<?xml version="1.0" encoding="utf-8" ?>
el codigo que tengo para Generar el XML es tal cual esta en el programa que me envio de prueba
XMLDoc.XML.Text :=
'<?xml version="1.0" encoding="UTF-8"?>'+
'<Comprobante xmlns="http://www.sat.gob.mx/cfd/2"></Comprobante>';
pero no entiendo porque al asignar en esta linea
CFD := GetComprobante(XMLDoc);
se pierde el encoding="utf-8"
Actualmente utilizo Delphi 2010 y trabajo sobre Windows 7.
Gracias por su apoyo
Atte. Marco
-
- Mensajes: 15
- Registrado: Mié Nov 10, 2010 2:11 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Hola marcoev, cheate la siguiente liga:
https://github.com/bambucode/tfacturael ... l.pas#L157
Es de la libreria de codigo abierto que hace todo el proceso de facturacion electronica. En ese metodo podrás ver como "llenar" el XML con las propiedades correspondientes.
P.D. Funciona tanto en Delphi 2007 como 2010. Mas informacion en: http://www.bambucode.com/codigoabierto/ ... delphi.php
Saludos!
https://github.com/bambucode/tfacturael ... l.pas#L157
Es de la libreria de codigo abierto que hace todo el proceso de facturacion electronica. En ese metodo podrás ver como "llenar" el XML con las propiedades correspondientes.
P.D. Funciona tanto en Delphi 2007 como 2010. Mas informacion en: http://www.bambucode.com/codigoabierto/ ... delphi.php
Saludos!
-
- Mensajes: 22
- Registrado: Lun Sep 13, 2010 10:47 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Muchas gracias luis voy a hecharle un ojo al link que me dices.
Saludos que estes bien.
Saludos que estes bien.
-
- Mensajes: 4
- Registrado: Vie Dic 03, 2010 3:03 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Hola Dado,
hace poco compré su codigo en ML y todo parece funcionar bien, pero al momento de hacer las pruebas con certificados los que vienen de ejemplo en el programita MicroE, se empezaron a generarse los errores GPF al momento de cargar certificados, trate de cargar los mismos certificados en el programa de ejemplo que viene con el código fuente y tambien se generaron los mismos errores en el módulo libeay32.dll al momento de crear archivo pkey.key.pem
---------------------------
Debugger Exception Notification
---------------------------
Project Dentaclinic2009.exe raised exception class EAccessViolation with message 'Access violation at address 1004E445 in module 'libeay32.dll'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
hace poco compré su codigo en ML y todo parece funcionar bien, pero al momento de hacer las pruebas con certificados los que vienen de ejemplo en el programita MicroE, se empezaron a generarse los errores GPF al momento de cargar certificados, trate de cargar los mismos certificados en el programa de ejemplo que viene con el código fuente y tambien se generaron los mismos errores en el módulo libeay32.dll al momento de crear archivo pkey.key.pem
---------------------------
Debugger Exception Notification
---------------------------
Project Dentaclinic2009.exe raised exception class EAccessViolation with message 'Access violation at address 1004E445 in module 'libeay32.dll'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------