Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2022
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Creo que Sistel tiene razón... la decisión de cuantos documentos tienes que enviar o el tiempo máximo de espera entre envíos te lo dirán en cada transmisión... y nuestros sistemas tendrán que acatar la orden. Imagino, que en una tienda de decoración, donde se hace diez o doce facturas a la hora, te dirán 1-0 (1 documento en cuanto esté hecho)... en un supermercado con 10 cajas generando 600 tickets por hora, te dirán 1000-120. De hecho, la indicación es que la primera transmisión sea 1-0, es decir, transmisión en cuanto se haga la primera factura. Imagino que cada inicio de jornada o caída del sistema, habrá que empezar con un 1-0... y luego esperar la respuesta de cómo seguir.

Lo que habrá que preguntar es qué pasa si no haces caso a su indicación y mandamos lo que nosotros decidamos... ¿provocará algún tipo de rechazo o error de incorporación?
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #2  
Antiguo 11-08-2022
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 903
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por afxe Ver Mensaje
Creo que Sistel tiene razón... la decisión de cuantos documentos tienes que enviar o el tiempo máximo de espera entre envíos te lo dirán en cada transmisión... y nuestros sistemas tendrán que acatar la orden. Imagino, que en una tienda de decoración, donde se hace diez o doce facturas a la hora, te dirán 1-0 (1 documento en cuanto esté hecho)... en un supermercado con 10 cajas generando 600 tickets por hora, te dirán 1000-120. De hecho, la indicación es que la primera transmisión sea 1-0, es decir, transmisión en cuanto se haga la primera factura. Imagino que cada inicio de jornada o caída del sistema, habrá que empezar con un 1-0... y luego esperar la respuesta de cómo seguir.

Lo que habrá que preguntar es qué pasa si no haces caso a su indicación y mandamos lo que nosotros decidamos... ¿provocará algún tipo de rechazo o error de incorporación?
Mmm.. no sé voy a esperar la doctrina pero creo que lo que yo voy a hacer tiene mucho sentido y no va a dar problemas. La orden no dice que tienes que enviar 1-0 obligatorimente, sino que ess el mínimo de registros y de tiempo de espera. Sólo hay que darle un par de vueltas para verle la lógica.

Lo el error lo lógico es que si se envia antes de tiempo, en la respuesta te vuelvan a indicar cuando/cuanto enviar.

Última edición por ermendalenda fecha: 11-08-2022 a las 09:48:39.
Responder Con Cita
  #3  
Antiguo 11-08-2022
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 903
Poder: 3
ermendalenda Va por buen camino
Huella

Hola,a ver que entendeis de ésto:

Huella de la factura (Realizada sobre el nodo RegistroFacturacion)

¿Calculariais con el nombre del nodo o sin él?

O sea sha256 sobre
Código:
<RegistroFacturacion></RegistroFacturacion>
¿Incluido o sin incluir ?
Responder Con Cita
  #4  
Antiguo 11-08-2022
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 146
Poder: 3
antoine0 Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Huella de la factura (Realizada sobre el nodo RegistroFacturacion)
¿Calculariais con el nombre del nodo o sin él?
Con; es decir, desde el primero < hasta el último >. El nodo incluye su identificador y sus delimitadores.

Creo que en la norma XML, el nodo se extiende un poco más, es decir, también recoge todo el texto que viene detrás del último > (¡cuidado, esto incluye los CR y LF!) y también eventuales comentarios que pueden venir después del último >.
Sin embargo, poner comentarios detrás del </RegistroFacturacion> me parece una extraordinaria mala idea
Y para evitar malas sorpresas de parte de paquetes XML que siguen la norma de forma más o menos estricta, creo que sería una buena idea pegar la etiqueta <DatosControl> justo detrás del </RegistroFacturacion>, sin nada entre las dos etiquetas.
Responder Con Cita
  #5  
Antiguo 11-08-2022
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 903
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
Con; es decir, desde el primero < hasta el último >. El nodo incluye su identificador y sus delimitadores.

Creo que en la norma XML, el nodo se extiende un poco más, es decir, también recoge todo el texto que viene detrás del último > (¡cuidado, esto incluye los CR y LF!) y también eventuales comentarios que pueden venir después del último >.
Sin embargo, poner comentarios detrás del </RegistroFacturacion> me parece una extraordinaria mala idea
Y para evitar malas sorpresas de parte de paquetes XML que siguen la norma de forma más o menos estricta, creo que sería una buena idea pegar la etiqueta <DatosControl> justo detrás del </RegistroFacturacion>, sin nada entre las dos etiquetas.
Buena idea gracias.
Responder Con Cita
  #6  
Antiguo 15-09-2022
CarlosMz CarlosMz is offline
Miembro
 
Registrado: jul 2020
Posts: 23
Poder: 0
CarlosMz Va por buen camino
Hola,

Esto es nuevo o es lo mismo:

www infoautonomos.com/blog/factura-electronica-obligatoria-autonomos/
Responder Con Cita
  #7  
Antiguo 15-09-2022
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.037
Poder: 22
keys Va por buen camino
Eso es otra cosa.

Una cosa es la ley antifraude (VERIFACTU) y otra es la forma de como les envias las facturas a tus clientes que es a lo que se refiere el articulo (Facturae, pdf, etc...).
Responder Con Cita
  #8  
Antiguo 15-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.077
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por CarlosMz Ver Mensaje
Hola,
Esto es nuevo o es lo mismo:
www infoautonomos.com/blog/factura-electronica-obligatoria-autonomos/
Es otra cosa:
Cita:
¿Cuándo entrará en vigor? La factura electrónica entrará en vigor en enero de 2023 para todos aquellos autónomos o empresas que tengan una facturación superior a 8 millones de euros anuales.
El resto de autónomos y empresas (facturaciones inferiores a 8 millones de euros) tendrán de margen hasta 2025 para emitir todas sus facturas en formato electrónico.
Ah, ya te ha contestado keys.
Responder Con Cita
  #9  
Antiguo 09-05-2023
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Poder: 12
ramherfer Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Hola,a ver que entendeis de ésto:

Huella de la factura (Realizada sobre el nodo RegistroFacturacion)

¿Calculariais con el nombre del nodo o sin él?

O sea sha256 sobre
Código:
<RegistroFacturacion></RegistroFacturacion>
¿Incluido o sin incluir ?
(Pongo esta pregunta en el hilo pero tengo dudas de como pasar la información desde el nodo del xml para calcular su huella)

Hola buenas tardes. A ver si me podeis echar un cable ¿Cómo puedo pasar el contenido del nodo <RegistroFacturacion>contenido</RegistroFacturación> a un string para calcular su huella? si es que se ha de hacer así. Por más que he buscado he intentado no lo consigo de ninguna manera. Ayuda por favor.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
  #10  
Antiguo 09-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.077
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Algo así:


Código Delphi [-]
uses
  IdHash, IdHashSHA, IdGlobal, SysUtils;

function CalculateFileHash(const FileName: string): string;
var
  FileStream: TFileStream;
  SHA256Hash: TIdHashSHA256;
  HashBytes: TBytes;
begin
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    SHA256Hash := TIdHashSHA256.Create;
    try
      HashBytes := SHA256Hash.HashValue(FileStream);
      Result := LowerCase(BytesToHex(HashBytes));
    finally
      SHA256Hash.Free;
    end;
  finally
    FileStream.Free;
  end;
end;

// Ejemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
  HashValue: string;
begin
  FileName := 'ruta_del_archivo.xml';
  HashValue := CalculateFileHash(FileName);
  ShowMessage('Hash SHA256 del archivo XML: ' + HashValue);
end;
Responder Con Cita
  #11  
Antiguo 09-05-2023
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Poder: 12
ramherfer Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Algo así:


Código Delphi [-]
uses
  IdHash, IdHashSHA, IdGlobal, SysUtils;

function CalculateFileHash(const FileName: string): string;
var
  FileStream: TFileStream;
  SHA256Hash: TIdHashSHA256;
  HashBytes: TBytes;
begin
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    SHA256Hash := TIdHashSHA256.Create;
    try
      HashBytes := SHA256Hash.HashValue(FileStream);
      Result := LowerCase(BytesToHex(HashBytes));
    finally
      SHA256Hash.Free;
    end;
  finally
    FileStream.Free;
  end;
end;

// Ejemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
  HashValue: string;
begin
  FileName := 'ruta_del_archivo.xml';
  HashValue := CalculateFileHash(FileName);
  ShowMessage('Hash SHA256 del archivo XML: ' + HashValue);
end;
Gracias Casimiro, pero eso sería para crear el hash del fichero xml, pero lo que tiene que llevar es en el campo huella el hash sólo del contenido del nodo <RegistroFacturacion>contenido</RegistroFacturacion>. Entonces el problema es que no tengo ni pajolera idea de como pasar el nodo completo a widestring (por ejemplo) para calcular el hash del string y pasarlo al campo huella. Agradezco tu respuesta mil+1
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
  #12  
Antiguo 10-05-2023
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Poder: 12
ramherfer Va por buen camino
Bueno pues ya lo tengo, he recibido ayuda de valor incalculable, Si no, no lo consigo ni de coña. Ojo que como ya se había hablado, es bien distinto calcular el hash con el fichero xml formateado indentado que sin formato evidentemente los CR LF varian el valor del Hash. ¿Cómo se tendrá que hacer? pues sorpresa, pero por lo menos lo está haciendo. Luego es más fácil corregir y adaptar que empezar desde cero. Las cosas deprisa y corriendo por muy claras que las tengas, no suelen salir igual.
Observaciones estoy creando el hash mientras estoy creando el xml.

Aquí va el código, cualquier sugerencia u objeción sería bien recibida.

Código:
   

var
   archivoXML: TXMLDocument;
   NDatosControl, NCabecera : IXMLNode;
   NodoSistema, NodoRegistroAltaFacturas, NodoRegistroFacturacion: IXMLNode;
   ContenidoNodoRegistroFacturacion: WideString;
   Huella: String;

    · · ·

    NDatosControl := NCabecera.AddChild( 'DatosControl' );
    Nodo := NDatosControl.AddChild( 'Huella' );
    //***** Calculo Hash RegistroFacturacion
    NodoSistema := archivoXML.DocumentElement;
    NodoregistroAltaFacturas := NodoSistema.ChildNodes.FindNode('RegistroAltaFacturas');
    if Assigned(NodoregistroAltaFacturas) then
    begin
      NodoRegistroFacturacion := NodoRegistroAltaFacturas.ChildNodes.FindNode('RegistroFacturacion');
      if Assigned(NodoRegistroFacturacion) then
        ContenidoNodoRegistroFacturacion := NodoRegistroFacturacion.XML;
    end;
    Huella := CalculaStrHashSHA256(ContenidoNodoRegistroFacturacion, checkBox1.Checked);
    //****** Fin calculo huella SHA256
    Nodo.Text := Huella;
    Nodo := NDatosControl.AddChild( 'TipoHash' );
    Nodo.Text := '01';

    · · ·
La función CalculaStrHashSHA256 esta contenida en una librería DLL. Si alguien necesita el código de la librería lo pongo, aunque es bien sencillo.
He comprobado los Hash resultantes con la herramienta online https://emn178.github.io/online-tools/sha256.html y en principio están perfectos.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
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
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 02:48:51.


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