Página 2 de 6
Caracteres Especiales
Publicado: Jue Oct 07, 2010 12:00 pm
por eveleza
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?
Re: Caracteres Especiales
Publicado: Jue Oct 07, 2010 2:26 pm
por Dado
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?
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.
Nuevo error detectado cuando no se usa serie
Publicado: Mié Oct 27, 2010 9:04 pm
por Dado
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 :
Código: Seleccionar todo
procedure TXMLComprobante.Set_Serie(Value: WideString);
begin
if Value <> '' then SetAttribute('serie', Value);
end;
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 :
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;
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.
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.....

Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Jue Oct 28, 2010 10:21 am
por aromo
Muchas gracias por la respuesta, funcionó perfectamente.
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Mar Nov 02, 2010 2:38 pm
por Dado
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....

Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Mar Nov 02, 2010 3:11 pm
por condor0086
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...
Otra opción:
IniVigencia := IncHour(EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0) , -6);
(de DateUtils)
Saludos
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Vie Nov 05, 2010 10:55 am
por marcoev
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
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Vie Nov 12, 2010 6:34 pm
por lcarrasco
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!
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Sab Nov 13, 2010 3:26 pm
por marcoev
Muchas gracias luis voy a hecharle un ojo al link que me dices.
Saludos que estes bien.
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Publicado: Vie Dic 03, 2010 3:41 pm
por Alexander
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
---------------------------