Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 21
jourdan Va por buen camino
Factura Electronica México

Hola a Todos, en México será indispensable facturar electronicamente a partir de enero del 2011, tengo un sistema de facturación creado en delphi el cual será obsoleto si no le agrego las capacidades de facturar electronicamente.
Alguien puede compartir sus experiencias con exto, lo han logrado implementar?
Desde ya muchas gracias
Alejandro Jourdan
__________________
Alejandro Jourdan
Responder Con Cita
  #2  
Antiguo 13-03-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Es muy sencillo y realmente no tiene problema la programación de ello, basta seguir los lineamientos de hacienda En este link viene explicado lo más importante. El punto más problemático es que el requisito indispensable es que se lleve la contabilidad via un software y que toda factura emitida se registre en contabilidad prácticamente al momento, lo cual es complicado si no tienes forma de interactuar con el sistema de contabilidad.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 13-03-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal,
El tema de Factura electronica es basicamente simple, el principal problema o recovejo que se tiene es la elaboracion de las Addendas para los diferentes clientes que lo usen. En cuanto a la iteraccion con el sistema de contabilidad, si cuentas con algun software de linea (como compac o Aspel) , entonces será de los mas sencillo, ya que lo unico que tienes que saber es el formato de layout que cada uno de estos soporta.
Saludos.
__________________
Ya tengo Firma!
Responder Con Cita
  #4  
Antiguo 19-03-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 21
jourdan Va por buen camino
Ya he resuelto varios temas con respecto a la factura electronica, estoy atorado con el tema de la encriptacion RSA

He buscado en internet pero de delphi no hay mucho, hay un componente que venden en 200 dolares llamado Chilkat RSA ActiveX

Alguno de ustedes ha logrado resolverlo.

Muchas gracias

Alejandro
__________________
Alejandro Jourdan
Responder Con Cita
  #5  
Antiguo 19-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En torry.net he encontrado esto, no sé si es lo que estás buscando.
Lo malo es que te venden el código fuente por 99$
Responder Con Cita
  #6  
Antiguo 19-03-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Changos!! Yo tengo por ahi abandonado un componente para encriptacion que precisamente usa RSA y un buen de otros métodos de encriptación...no lo encuentro pero me comprometo a subírtelo apenas aparezca ah y además es libre.

Por cierto regresando al tema de la contabilidad en Linea, Aspel no tiene esa característica apenas en sus últimas versiones al fin se dignó en usar bases de datos abiertas. Yo recomiendo Contpaq porque además de que te proporciona todo el diccionario de datos de sus bases de datos, tiene un SDK muy completo y compatible con Delphi, por lo que puedes comunicarte sin probemas con él para hacer cualquier movimiento, otra cosa muy buena es que puede accederse a su servidor vía internet por lo que es relativamente sencillo adaptar tu software ya en uso para usarlo con él.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 19-03-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 21
jourdan Va por buen camino
Muchas gracias, lo voy a revisar!
__________________
Alejandro Jourdan
Responder Con Cita
  #8  
Antiguo 13-03-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 151
Poder: 21
jourdan Va por buen camino
Muchas gracias por sus respuetas, he estado leyendo el link del SAT y lo que entendí es que hay que generar un sello digital y solicitar los folios antes de usarlos, por lo que creo que el sistema que tengo actualmente debe funcionar, el trabajo estará en generar un archivo xml de la información de la factura, y un sistema para poder mandar reportes mensualmente al SAT, estoy en lo correcto?
__________________
Alejandro Jourdan
Responder Con Cita
  #9  
Antiguo 23-09-2010
Rom@n Rom@n is offline
Miembro
 
Registrado: oct 2007
Posts: 25
Poder: 0
Rom@n Va por buen camino
Cambiar .cer a .pem y obtener fecha de caducidad del certificado

Hola quetal programadores quiero aportar un poco al tema de facturacion electronica voy a explicar brevemente este codigo esperando que le sirva a mas de uno:
1:Primero Busco con dialogExecute el archivo .cer
2:ejecuto el openssl con shellexecute y paso los parametros para convertir a formato pem y creo un archivo de texto.
3:con una funcion de escaneo busco la palabra not after y copio solo la fecha con copy y la proceso para lograr un formato de echa valido
4:la funcion LongDateStrToShortDateStr me rotorna el numero de mes ya que en el archivo caduca aparece el mes abreviado ejem:ene,feb,mar....dic

Código Delphi [-]
procedure Tfrm_datos_empresa.BitBtn5Click(Sender: TObject);
var
Rutacerti,nombrecerti:string;
position: integer;
dia,mes,yy,h,m,s:string;
begin
if Opencerti.Execute then
  begin
    Rutacerti := Opencerti.FileName ;
    if Rutacerti <> '' then
    begin
      nombrecerti:=ExtractFileName(opencerti.FileName);
      CopyFile(PChar(rutacerti), PChar('C:\SAT\'+nombrecerti), false);
      certi.Text:=nombrecerti;
      ShellExecute(Handle, nil, pchar('C:\openssl\openssl.exe'), pchar('x509 -inform DER -outform PEM -in '+PChar('C:\SAT\'+nombrecerti)+' -out C:\SAT\'+nombrecerti+'.pem'),nil,SW_SHOW);
      Sleep(1000);
      ShellExecute(Handle, nil, pchar('C:\openssl\openssl.exe'), pchar('x509 -in C:\SAT\'+nombrecerti+'.pem -text -out C:\SAT\caduca.txt'),nil,SW_SHOW);
      Sleep(1000);
      //proceso para sacar la fecha de caducidad
      position := ScanFile('C:\SAT\caduca.txt', 'Not After', true);
      if position <> -1 then
      begin
        //showmessage(archivo_caduca);
        dia:=Copy(archivo_caduca,17,2);
        mes:=LongDateStrToShortDateStr(Copy(archivo_caduca,13,3));//(Copy(archivo_caduca,13,3)));
        yy:=Copy(archivo_caduca,29,4);
        h:=Copy(archivo_caduca,20,8);
        if date>=strtodatetime(dia+'/'+mes+'/'+yy+' '+h) then
         showmessage('Este certificado ya esta caducado:'+ dia+'/'+mes+'/'+yy+' '+h)
        else
        showmessage('Certificado Vigente hasta:'+ dia+'/'+mes+'/'+yy+' '+h);
        caduca.DateTime:= strtodatetime(dia+'/'+mes+'/'+yy+' '+h);
      end
      else
      begin
        ShowMessage('No se econtro Fecha de caducidad (Not After)');
      end;
    end;
end//fin del dialog1 execute
else
begin
    showmessage('no se ejecuto');
end;

Última edición por Rom@n fecha: 23-09-2010 a las 22:15:20. Razón: no resalte sintaxis
Responder Con Cita
  #10  
Antiguo 23-09-2010
Rom@n Rom@n is offline
Miembro
 
Registrado: oct 2007
Posts: 25
Poder: 0
Rom@n Va por buen camino
Cambiar .key a .pem con openssl y shellexecute

Hola programadores de delphi, quiero aportar un poco al tema de facturacion electronica les explico brevemente el siguiente codigo:
1:busco con el opendialog execute el archivo .key
2:abro con shell execute opennssl y paso los parametros para crear el archivo .pem
3:el sleep esta dando 10 segundos para teclear el password que corresponde el sello, despues de poner la clave correcta te crea el archivo .pem
Código Delphi [-]
procedure Tfrm_datos_empresa.BitBtn4Click(Sender: TObject);
var
Rutasello,nombresello:string;
begin
if Opensello.Execute then
  begin
    Rutasello := Opensello.FileName ;
    if Rutasello <> '' then
    begin
      nombresello:=ExtractFileName(opensello.FileName);
      CopyFile(PChar(rutasello), PChar('C:\SAT\'+nombresello), false);
      sello.Text:=nombresello;
      ShellExecute(Handle, nil, pchar('C:\openssl\openssl.exe'), pchar('pkcs8 -inform DER -in '+PChar('C:\SAT\'+nombresello)+' -out C:\SAT\'+nombresello+'.pem'), nil, SW_SHOW);
      Sleep(10000);
    end;
  end//fin del dialog1 execute
  else
  begin
    showmessage('no se ejecuto');
  end;
end;
Responder Con Cita
  #11  
Antiguo 24-09-2010
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Ps con la novedad de que el sat ya liberó su nuevo Anexo 20.

Búsquenlo para que vean las diferencias. Que jijos!


http://www.sat.gob.mx/sitio_internet...on/default.asp
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #12  
Antiguo 29-09-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
mmkela, y yo que acabo de terminar de acomodar el formato anterior... ¿ahora tengo que hacer uno para las digitales?

shaaalee....


Pues parece que el más sencillo es el criptosys junto con firmasat... al menos de 10 que conozco, 8 lo están... estamos usando...
__________________

Responder Con Cita
  #13  
Antiguo 29-09-2010
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Cita:
Empezado por nuk3zito Ver Mensaje
Ps con la novedad de que el sat ya liberó su nuevo Anexo 20.

Búsquenlo para que vean las diferencias. Que jijos!


http://www.sat.gob.mx/sitio_internet...on/default.asp
Pues no hubo diferencias... o al menos no para los que ya emitimos CFD's. Los requerimientos "nuevos" son para los que emiten CFDI.
Saludos.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #14  
Antiguo 01-10-2010
edgaronfo edgaronfo is offline
Miembro
 
Registrado: jul 2007
Posts: 33
Poder: 0
edgaronfo Va por buen camino
Question Qué onda con el SAT?

Hola programadores y foreros, les envío un cordial saludo.
Este es mi primer post y antes que nada permítanme felicitarlos por el excelente trabajo que están haciendo en estos foros del clubdelphi.com ya que me han salvado incontables veces; pero en especial en este foro de las facturas electrónicas SAT, este foro me ha salvado la vida (bueno tal vez no tanto como la vida pero me ha dado una gran ayudadota): MUUUUCHAS GRACIAAAAAAS!!!!

Gracias al código que han puesto aquí estoy haciendo mi modulito de facturas electrónicas, si no, quién sabe si lo hubiera podido hacer. De nuevo muchas gracias.

Y me gustaría añadir mi granito de arena al tema, ya que yo tuve problemas para añadir los encabezados y el tipo de documento al documento xml y en estos foros leí un hilo que decía que tienes que respetar los namespaces del documento, y no fijarlo como atributo:

véase: Attributos fantasmas en nodos XML (www_clubdelphi_com/foros/showthread.php?t=40379)

y leyendo sus indicaciones llegué a esto:

Código:
procedure prepareSatXML(thisXMLDoc : TXMLDocument);
var CFD : IXMLComprobante;
begin
    thisXMLDoc.XML.Text := '';
    thisXMLDoc.Active := True;
    thisXMLDoc.Version := '1.0';
    thisXMLDoc.Encoding:='UTF-8';

    CFD := GetComprobante(thisXMLDoc);
    CFD.DeclareNamespace('xsi', 'http_//www_w3_org/2001/XMLSchema-instance');
    CFD.Schema:='http_//www_sat_gob_mx/cfd/2 http_//www_sat_gob_mx/sitio_internet/cfd/2/cfdv2.xsd';
    CFD.Version:='2.0';
end;
aunque para usar CFD.Schema tuve que hacer un poco más de argucias en el unit que me generó el delphi xml bind

Por cierto, primero use el xml binder para que delphi me generara una unidad de interface para manejar automáticamente el documento xml en el formato que pide hacienda como está ejemplificado arriba (IXMLComprobante).

Y luego use el TSXLPageProducer para que automáticamente me generara la cadena original (Ejemplo de TSXLPageProducer):
Código:
procedure TForm1.bttnCadenaOriginal1Click(Sender: TObject);
var xslt_source : string;
begin
  xslt_source := 'cadenaoriginal_2_0.xslt';
try
   XMLDoc.Active := False; // just in case
   XSLPageProducer1.FileName := xslt_source;
   XSLPageProducer1.XMLData := XMLDoc;
   XMLDoc.Active := True;
   Memo1.Text := XSLPageProducer1.Content; // Transform!!
 except
   on E: Exception do
     Memo1.Text := E.Message
 end;
end;
Y así dejas que delphi se haga bolas por tí, jejeje.
espero que sea de ayuda para alguien como lo fue para mí.

Entonces mis preguntas son:
De dónde obtienes NoAprobación y AnoAprobación ??

Y finalmente usando Sello.pas que bajas de este mismo hilo (muchísimas gracias felipep) puedes producir el sello, el certificado y el NoCertificado.

Y precisamente aquí es donde está mi última pregunta:
la función GetNoCertificado(const AFileName: string): string; de la unidad Sello.pas me regresa un string muy raro, así debe ser?
ejemplo de resultado:
〱〰㈱〰〰〰〰㈰㔲㜱圌¨
que cuando le hago: UTF8Decode(NoCertificado) me da:
??????????? (puros signos de interrogación)

Muchas gracias por su atención.


Saludos!
Responder Con Cita
  #15  
Antiguo 08-10-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

Cita:
Empezado por Rom@n Ver Mensaje
Hola quetal programadores quiero aportar un poco al tema de facturacion electronica voy a explicar brevemente este codigo esperando que le sirva a mas de uno:
1:Primero Busco con dialogExecute el archivo .cer
2:ejecuto el openssl con shellexecute y paso los parametros para convertir a formato pem y creo un archivo de texto.
3:con una funcion de escaneo busco la palabra not after y copio solo la fecha con copy y la proceso para lograr un formato de echa valido
4:la funcion LongDateStrToShortDateStr me rotorna el numero de mes ya que en el archivo caduca aparece el mes abreviado ejem:ene,feb,mar....dic


Código Delphi [-]
procedure Tfrm_datos_empresa.BitBtn5Click(Sender: TObject);
var
Rutacerti,nombrecerti:string;
position: integer;
dia,mes,yy,h,m,s:string;
begin
if Opencerti.Execute then
begin
Rutacerti := Opencerti.FileName ;
if Rutacerti <> '' then
begin
nombrecerti:=ExtractFileName(opencerti.FileName);
CopyFile(PChar(rutacerti), PChar('C:\SAT\'+nombrecerti), false);
certi.Text:=nombrecerti;
ShellExecute(Handle, nil, pchar('C:\openssl\openssl.exe'), pchar('x509 -inform DER -outform PEM -in '+PChar('C:\SAT\'+nombrecerti)+' -out C:\SAT\'+nombrecerti+'.pem'),nil,SW_SHOW);
Sleep(1000);
ShellExecute(Handle, nil, pchar('C:\openssl\openssl.exe'), pchar('x509 -in C:\SAT\'+nombrecerti+'.pem -text -out C:\SAT\caduca.txt'),nil,SW_SHOW);
Sleep(1000);
//proceso para sacar la fecha de caducidad
position := ScanFile('C:\SAT\caduca.txt', 'Not After', true);
if position <> -1 then
begin
//showmessage(archivo_caduca);
dia:=Copy(archivo_caduca,17,2);
mes:=LongDateStrToShortDateStr(Copy(archivo_caduca,13,3));//(Copy(archivo_caduca,13,3)));
yy:=Copy(archivo_caduca,29,4);
h:=Copy(archivo_caduca,20,8);
if date>=strtodatetime(dia+'/'+mes+'/'+yy+' '+h) then
showmessage('Este certificado ya esta caducado:'+ dia+'/'+mes+'/'+yy+' '+h)
else
showmessage('Certificado Vigente hasta:'+ dia+'/'+mes+'/'+yy+' '+h);
caduca.DateTime:= strtodatetime(dia+'/'+mes+'/'+yy+' '+h);
end
else
begin
ShowMessage('No se econtro Fecha de caducidad (Not After)');
end;
end;
end//fin del dialog1 execute
else
begin
showmessage('no se ejecuto');
end;

cual es tu funcion

scanfile
Responder Con Cita
  #16  
Antiguo 08-10-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Cita:
Empezado por JXJ Ver Mensaje
cual es tu funcion

scanfile
y tu funcion

LongDateStrToShortDateStr
Responder Con Cita
  #17  
Antiguo 08-10-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

Cita:
Empezado por JXJ Ver Mensaje
y tu funcion

LongDateStrToShortDateStr
unas dudas con este tema.

la fecha de validez del certificado.

¿como se traducen a un formato de fecha entendible''?
no se que es GMT

notBefore=May 3 19:07:59 2010 GMT

notAfter=May 2 19:07:59 2012 GMT


esta informacion la necesito ingrear a firebird
con el formato

dd/MM/yyy :
Responder Con Cita
  #18  
Antiguo 09-10-2010
edgaronfo edgaronfo is offline
Miembro
 
Registrado: jul 2007
Posts: 33
Poder: 0
edgaronfo Va por buen camino
Red face Lo estoy pasando a Delphi 2006

Morris, oye, ya te mandé mi correo por mensaje privado. Fíjate que nomás no he podido hacerlo funcionar en Delphi 2010 y ya lo estoy pasando a Delphi 2006, es que tengo que entregar avances y no he podido resolver ese problemita, que no es tan grande después de todo, pero que me limitaba un poquito.

Ahorita lo que me tiene preocupado es encapsularlo en una clase y subirlo a una DLL, pero mi cliente usa Visual Basic así que ya sabrás los líos en los que me tuve que meter para que se pudiera instanciar una clase en VB para un objeto en un DLL hecho en Delphi...

Pero : "El cliente siempre tiene la razón..."

Saludos!

p.d. ojalá me puedas mandar ese proyectito en Delphi 2010 para saber de una buena vez qué me está fallando, gracias!
Responder Con Cita
  #19  
Antiguo 12-10-2010
Eina Eina is offline
Registrado
 
Registrado: sep 2010
Posts: 1
Poder: 0
Eina Va por buen camino
como la funcion Scanfile

Cita:
Empezado por JXJ Ver Mensaje
cual es tu funcion

scanfile
me prodrias ayudar, soy nueva en delphi, eh checado tu codigo, me parece bien, pero no entiendo la funcion de Scanfile, me podrias asignar tu codigo de Scanfile, estoy haciendo el sistema de facturacion electronica para mis residencia.


gracias
Responder Con Cita
  #20  
Antiguo 13-10-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
La funcion que publicaron para obtener el numero de serie del certificado y sus otros datos esta muy bien, solo que padece de un pequeño problema, hay que alimentar el certificado en formato PEM pero el SAT nos lo proporciona en formato DER.

Bueno, la pregunta es, alguien ha podido convertir de DER a PEM dentro de Delphi, sin usar el incomodo *.bat?

O reformulando la pregunta, alguien ha podido programar esto en delphi :

openssl x509 -inform DER -outform PEM -in aaa010101.cer
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico - Como crear sellos en FACTURA ELECTRONICA.. pcicom API de Windows 12 10-11-2012 18:46:55
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15


La franja horaria es GMT +2. Ahora son las 17:27:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi