
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
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Como todo buen programa las rutinas que les ofreci en Mercado Libre estan llenas de errores.
Hey! no todo es perfecto, pero lo importante es reconocer los errores.
Bueno, poco a poco voy a ir publicando cambios que deberan hacer en las rutinas.
Ahora me preguntaran ¿Y porque no simplemente publica todo el proyecto ya corregido?, la respuesta es muy simple, porque se supone que tomaron "pedazos" de mi codigo y lo pegaron en el suyo propio, si les mando todo el proyecto corregido van a tener que "buscar las 7 diferencias" para implementarlo en su solucion.
Acuerdenme de publicar la correccion de:
- Quitar los #13 #10 de la cadena antes de exportarlo
- Poner un If value<> '' then .... en cfdv2.pas
- Corregir un error en ProcesaCertificado que no procesa bien cuando el dia<10 (es decir tiene solo un char)
- Ampliar el "rango" de la Cadena Original para que incluya Predial y Aduana (es raro que se use pero bueno....)
Ademas, si usted mi estimado lector ha encontrado otro error (porque seguro los hay) favor de publicarlo aqui, sera de mucha ayuda.
ACTUALIZACION 29-DIC-2010 : Algunas personas por email me preguntan por los cambios realizados en las rutinas que vendo en Mercado Libre, los envio a esta liga pero resulta que no tienen tiempo, o no entienden los cambios o simplemente les da hue..
Aqui estan TODOS los cambios que he realizado desde junio, de forma gratuita, pero si prefieren pueden depositarme $100 y les re-envio las rutinas actualizadas, y para desquitar un poco el costo les incluiria de una vez las rutinas para factura version 3 (CFDI).
Como "prueba" de que ya me compraron las rutinas les voy a pedir que junto con la ficha de deposito me envien la unidad FacturaE.pas para demostrar que efectivamente ya tienen la version original y solo necesitan la actualizacion
Hey! no todo es perfecto, pero lo importante es reconocer los errores.
Bueno, poco a poco voy a ir publicando cambios que deberan hacer en las rutinas.
Ahora me preguntaran ¿Y porque no simplemente publica todo el proyecto ya corregido?, la respuesta es muy simple, porque se supone que tomaron "pedazos" de mi codigo y lo pegaron en el suyo propio, si les mando todo el proyecto corregido van a tener que "buscar las 7 diferencias" para implementarlo en su solucion.
Acuerdenme de publicar la correccion de:
- Quitar los #13 #10 de la cadena antes de exportarlo
- Poner un If value<> '' then .... en cfdv2.pas
- Corregir un error en ProcesaCertificado que no procesa bien cuando el dia<10 (es decir tiene solo un char)
- Ampliar el "rango" de la Cadena Original para que incluya Predial y Aduana (es raro que se use pero bueno....)
Ademas, si usted mi estimado lector ha encontrado otro error (porque seguro los hay) favor de publicarlo aqui, sera de mucha ayuda.
ACTUALIZACION 29-DIC-2010 : Algunas personas por email me preguntan por los cambios realizados en las rutinas que vendo en Mercado Libre, los envio a esta liga pero resulta que no tienen tiempo, o no entienden los cambios o simplemente les da hue..
Aqui estan TODOS los cambios que he realizado desde junio, de forma gratuita, pero si prefieren pueden depositarme $100 y les re-envio las rutinas actualizadas, y para desquitar un poco el costo les incluiria de una vez las rutinas para factura version 3 (CFDI).
Como "prueba" de que ya me compraron las rutinas les voy a pedir que junto con la ficha de deposito me envien la unidad FacturaE.pas para demostrar que efectivamente ya tienen la version original y solo necesitan la actualizacion
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 30
- Registrado: Jue Jul 08, 2010 9:20 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Buenos dias, un favor como comentas que te recuerden, podrias poner la linea de codigo para localizar mas facilmente el error al que te refieres en particular, ya que en la funcion ProcesaCertificado no encuentro donde genera el error para un caracter en el dia,
solo he usado certificados de prueba del SAT y no me ha fallado aun porque son del dia 21.
solo he usado certificados de prueba del SAT y no me ha fallado aun porque son del dia 21.
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
En la unidad FacturaE.pas deben agregar las siguientes lineas:
Código: Seleccionar todo
if FileExists(Path + 'IniciaVigencia.txt') then
begin
temp.LoadFromFile(Path + 'IniciaVigencia.txt');
temp.Text := UpperCase(temp.Text);
temp.Text := RemplazaCad(' ',' ',temp.Text); <<<<<<<<AGREGAR ESTA LINEA<<<<<<<<<<<<
temp.Text := RemplazaCad(#13#10,' ',temp.Text);
temp.Text := RemplazaCad(#13#10,':',temp.Text);
try
IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0);
except error('Inicio de Vigencia (Decode)'); exit; end;
end
else
begin error('Inicio de Vigencia (Arch. no encontrado)'); exit; end;
if FileExists(Path + 'FinVigencia.txt') then
begin
temp.LoadFromFile(Path + 'FinVigencia.txt');
temp.Text := UpperCase(temp.Text);
temp.Text := RemplazaCad(' ',' ',temp.Text); <<<<< AGREGAR ESTA LINEA<<<<<<<<<<<<<
temp.Text := RemplazaCad(#13#10,' ',temp.Text);
temp.Text := RemplazaCad(#13#10,':',temp.Text);
try
FinVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2),TP(3),TP(4),0);
except error('Fin de Vigencia (Decode)'); exit; end;
end
else
begin error('Fin de Vigencia (Arch. no encontrado)'); exit; end;
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
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Ya encarrerados, tambien les mando esta otra correccion, resulta que al exportar el XML se le "pega" el certificado, pero este lleva varios CR+LF (#13#10) que aunque no son graves seria bueno eliminarlos.
Entonces la rutina completa de exportacion quedaria (es de la unidad FacturaE.pas)
Utilizo un "caduax" porque el TStringList es medio "pegajoso" normalmente no le gusta que le quiten sus #13 ya que es el delimitador de cadenas
Entonces la rutina completa de exportacion quedaria (es de la unidad FacturaE.pas)
Código: Seleccionar todo
procedure TFacturaEForm.ExportaXML(FName : string);
var temp : TStringList;
cadaux : string;
begin
if FileExists(OpcC('FacturaE','CertPath') + CFD.NoCertificado + '.txt') then
begin
temp := TStringList.Create;
temp.LoadFromFile(OpcC('FacturaE','CertPath') + CFD.NoCertificado + '.txt');
cadaux := temp.Text;
temp.Free;
cadaux := RemplazaCad('','-----BEGIN CERTIFICATE-----',cadaux);
cadaux := RemplazaCad('','-----END CERTIFICATE-----',cadaux);
cadaux := RemplazaCad('',#13,cadaux);
cadaux := RemplazaCad('',#10,cadaux);
CFD.Certificado := cadaux;
end;
XMLDoc.SaveToFile(FName);
end;
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
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Anexo envio TODO el codigo de cfdv2.pas, copienla encima de la que tienen,
la correccion es que ahora verifica que el valor sea distinto de vacio antes
de asignarlo, de esa forma no tenemos nodos vacios.
ejemplo :
procedure TXMLT_UbicacionFiscal.Set_NoExterior(Value: WideString);
begin
if Value <> '' then SetAttribute('noExterior', Value);
end;
la correccion es que ahora verifica que el valor sea distinto de vacio antes
de asignarlo, de esa forma no tenemos nodos vacios.
ejemplo :
procedure TXMLT_UbicacionFiscal.Set_NoExterior(Value: WideString);
begin
if Value <> '' then SetAttribute('noExterior', Value);
end;
- Adjuntos
-
- cfdv2.zip
- (5.4 KiB) Descargado 1125 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 73
- Registrado: Jue Jul 08, 2010 7:18 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Me parece muy bien que anexes todo el .pas en lugar de solamente la correccion, asi no habra dudas. Creo que tambien seria muy conveniente que mantuvieras por ahi guardado todo el proyecto con las ultimas modificaciones, de manera que pudieramos estar seguros de que contamos con todas las adecuaciones (salvo las formas PasoX, que como lo mencionas es particular del ejemplo).
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Tambien te recomiendo seguir este hilo, habla de "Compilacion de las rutinas en Delphi distinto a version 7"
Aqui en este hilo se habla mas bien de los errores (bugs) que se van descubriendo en las rutinas.
Aqui en este hilo se habla mas bien de los errores (bugs) que se van descubriendo en las rutinas.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 30
- Registrado: Jue Jul 08, 2010 9:20 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
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
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
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Correcciones al Codigo Fuente que ofrezco en Mdo Libre
Si, estas en lo correcto, bueno, excepto por un detalle.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
Resulta que en este momento si deberias hacer TP(2)-6, PERO cuando acabe el horario de verano debera ser TP(2)-5, como ves si quieres estar 100% en normas deberias programar algo como (pseudocodigo) :
if HoyEstamosEnHorarioDeVerano then
IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2)-6,TP(3),TP(4),0);
else
IniVigencia := EncodeDateTime(TP(5),TP(0),TP(1),TP(2)-5,TP(3),TP(4),0);
La verdad es mucho mejor si unos 5 o 10 DIAS antes renuevas tu certificado y asi no andas contando las horas y minutos que te quedan de validez.
Te recomiendo programar mejor un aviso a tu usuario del tipo "Te quedan xxx DIAS para que caduque tu certificado, renuevalo".
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
CAMBIO A SHA-1 A PARTIR DEL 1-ENE-2011
CAMBIO A SHA-1 A PARTIR DEL 1-ENE-2011
CAMBIO IMPORTANTE:
Segun el ultimo Anexo 20 debemos cambiar la forma de calcular el sello, a partir del 2011 se debe usar SHA-1
El cambio en el codigo que les ofreci en Mercado Libre es muy simple cambiarlo.
En la unidad SELLO.PAS hay una linea que dice
EVP_SignInit(@mdctx,EVP_md5());
Les recomiendo cambiar esa linea a :
if Now<EncodeDate(2011,1,1) then
EVP_SignInit(@mdctx,EVP_md5())
else
EVP_SignInit(@mdctx,EVP_sha1());
Y ESO ES TODO!!!
Hagan sus pruebas, mas adelante publicare el nuevo ValidaCFd con esta nueva disposicion para asegurarnos que cumplimos con las nuevas reglas.
CAMBIO IMPORTANTE:
Segun el ultimo Anexo 20 debemos cambiar la forma de calcular el sello, a partir del 2011 se debe usar SHA-1
El cambio en el codigo que les ofreci en Mercado Libre es muy simple cambiarlo.
En la unidad SELLO.PAS hay una linea que dice
EVP_SignInit(@mdctx,EVP_md5());
Les recomiendo cambiar esa linea a :
if Now<EncodeDate(2011,1,1) then
EVP_SignInit(@mdctx,EVP_md5())
else
EVP_SignInit(@mdctx,EVP_sha1());
Y ESO ES TODO!!!
Hagan sus pruebas, mas adelante publicare el nuevo ValidaCFd con esta nueva disposicion para asegurarnos que cumplimos con las nuevas reglas.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!