Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 05-12-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 1.768
Poder: 5
ermendalenda Va por buen camino
Respondido
Cita:

El error "2004 = El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos " se excepciona de la necesidad de ser subsanado y así lo puede verificar en el documento de validaciones en su apartado "4.3.1 Tratamiento de los errores en remisión voluntaria «VERI*FACTU ". Por lo cual no deberán realizar ninguna actuación posterior en caso de que obtengan dicho error.
Responder Con Cita
  #22  
Antiguo 05-12-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 599
Poder: 1
bmfranky Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Respondido
Pues si ,lo pone alli....
Cita:
4.3 Tratamiento de los errores
4.3.1 Tratamiento de los errores en remisión voluntaria «VERI*FACTU»
Los registros de facturación con errores admisibles serán “aceptados” y registrados por los
sistemas de la AEAT, pero deberán ser subsanados para poder llevar a cabo el tratamiento
y validación de los mismos.
Los errores admisibles que se han detectado en la versión actual, que deben ser
subsanados, son los siguientes:
- Los NIF informados en la agrupación Destinatario que sean correctos, pero no
figuren censados en la AEAT, indicando el tipo de identificación “07” (“No
censado”) en el campo “IDType” dentro del bloque “IDOtro”.
- Si se ha informado en el campo FechaHoraHusoGenRegistro una fecha y hora
mayor que la fecha del sistema de la AEAT, admitiéndose un margen de error. Se
excepciona este error de la necesidad de ser subsanado.

- Se ha informado una huella o hash del registro de facturación que no coincide
con el calculado por la AEAT.
- Si el campo ImporteTotal no cumple la validación especificada en cuanto a ajuste
de las cantidades (Ʃ (BaseImponibleOimporteNoSujeto + CuotaRepercutida +
CuotaRecargoEquivalencia) de todas las líneas de detalle de desglose dentro del
margen establecido.
- Si el campo CuotaTotal no cumple la validación especificada en cuanto a ajuste
de las cantidades Ʃ (CuotaRepercutida + CuotaRecargoEquivalencia) de todas
las líneas de detalle de desglose dentro del margen establecido.


Solo podrá llevarse a cabo una subsanación cuando no se trate de una causa que exija la
emisión de una factura rectificativa (u otro mecanismo contemplado en el Reglamento de
Facturación).
Este mecanismo se empleará para subsanar datos en cualquiera de los siguientes casos:

- Errores admisibles (registro de facturación aceptado –con errores admisibles– por
la AEAT), salvo las excepciones previstas en el apartado que explica el
tratamiento de los errores admisibles.
- Errores no admisibles (registro de facturación rechazado por la AEAT).
- Dato incorrecto detectado posteriormente por el obligado a expedir factura
(registro de facturación remitido y aceptado sin errores por la AEAT).
Para llevar a cabo la subsanación, será necesaria la remisión de un nuevo registro de
facturación (con el mismo identificador de factura del registro de facturación que se quiere
subsanar) por cada uno de los registros con datos a subsanar, con la combinación de
valores de campos que proceda según el caso (ver en el anexo los cuadros de operativas de
alta y anulación admisibles).

Ahora continuar con los otros 2000....


Cita:
********* Listado de códigos de error que producen la aceptación del registro de facturación en el sistema (posteriormente deben ser subsanados) *********
2000 = El cálculo de la huella suministrada es incorrecta.
2001 = El NIF del bloque Destinatarios no está identificado en el censo de la AEAT.
2002 = La longitud de huella del registro anterior no cumple con las especificaciones.
2003 = El contenido de la huella del registro anterior no cumple con las especificaciones.

2005 = El campo ImporteTotal tiene un valor incorrecto para el valor de los campos BaseImponibleOimporteNoSujeto, CuotaRepercutida y CuotaRecargoEquivalencia suministrados.
2006 = El campo CuotaTotal tiene un valor incorrecto para el valor de los campos CuotaRepercutida y CuotaRecargoEquivalencia suministrados.
__________________
Uno se alegra de ser útil. (Isaac Asimov)
Responder Con Cita
  #23  
Antiguo 27-01-2025
ISCOPYME ISCOPYME is offline
Miembro
 
Registrado: jun 2004
Posts: 18
Poder: 0
ISCOPYME Va por buen camino
Servicio en Windows para envíos

Buenas tardes, para el envío de registros de facturación tenía pensado crear un servicio windows que cada x segundos (20 por ejemplo) se activara y si se cumplieran las condiciones para enviar registros a AEAT ( ya hubiera 1000 registros o más o que hubiera transcurrido el tiempo definido desde el último envío ) los enviara. Después de enviarlos, actualizaría el tiempo para el siguiente envío que me devuelve la AEAT.

La duda se me plantea en un sistema multiempresa, en el que hay que enviar los registros de facturación por cada empresa (objeto tributario). ¿ Se deberían enviar los registros de facturación de todas las empresas y luego actualizar el tiempo de espera o debería enviar la primera empresa, esperar el tiempo que marque aeat en su contestación, enviar la segunda empresa .... y así sucesivamente ?

Muchas gracias por vuestras respuestas.
Responder Con Cita
  #24  
Antiguo 27-01-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Cita:
Empezado por ISCOPYME Ver Mensaje
Buenas tardes, para el envío de registros de facturación tenía pensado crear un servicio windows que cada x segundos (20 por ejemplo) se activara y si se cumplieran las condiciones para enviar registros a AEAT ( ya hubiera 1000 registros o más o que hubiera transcurrido el tiempo definido desde el último envío ) los enviara. Después de enviarlos, actualizaría el tiempo para el siguiente envío que me devuelve la AEAT.

La duda se me plantea en un sistema multiempresa, en el que hay que enviar los registros de facturación por cada empresa (objeto tributario). ¿ Se deberían enviar los registros de facturación de todas las empresas y luego actualizar el tiempo de espera o debería enviar la primera empresa, esperar el tiempo que marque aeat en su contestación, enviar la segunda empresa .... y así sucesivamente ?

Muchas gracias por vuestras respuestas.

Yo entiendo que cada empresa tiene que llevar su camino, es decir, cada empresa debe de enviar sus registros de forma independiente cumpliendo los parámetros de tiempo, número de registros, etc. Mi opinión es que deberías de crear un servicio por cada empresa para no liar mucho la cosa.



Saludos.
__________________
Be water my friend.
Responder Con Cita
  #25  
Antiguo 27-01-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 1.768
Poder: 5
ermendalenda Va por buen camino
Cita:
Empezado por ISCOPYME Ver Mensaje
Buenas tardes, para el envío de registros de facturación tenía pensado crear un servicio windows que cada x segundos (20 por ejemplo) se activara y si se cumplieran las condiciones para enviar registros a AEAT ( ya hubiera 1000 registros o más o que hubiera transcurrido el tiempo definido desde el último envío ) los enviara. Después de enviarlos, actualizaría el tiempo para el siguiente envío que me devuelve la AEAT.

La duda se me plantea en un sistema multiempresa, en el que hay que enviar los registros de facturación por cada empresa (objeto tributario). ¿ Se deberían enviar los registros de facturación de todas las empresas y luego actualizar el tiempo de espera o debería enviar la primera empresa, esperar el tiempo que marque aeat en su contestación, enviar la segunda empresa .... y así sucesivamente ?

Muchas gracias por vuestras respuestas.
No hay que esperar tiempos entre envios de distintas empresas hay que cumplir los tiempos o n registros(1000) de la misma empresa, ya decides como programarlo, yo lo tengo diferenciado con arrays dentro del mismo modulo fe envio (servicio en segundo plano) . Pero como dice el compañero te puedd resultar más fácil separarlo en distintos servicios.
Otra cosa, no sé si es correcto decir de la misma empresa, ya que un servicio de envío puede estar funcionando para distintos SIF de la misma empresa por que centraliza los envios, no así el encadenamiento por alguna dificultad en ello, por ejemplo por que estés usando un servicio de envío por terceros (uses un cif para enviar todo), en ese caso tienes que tener en cuenta que cada SIF que gestiones en el envío tiene que ser independiente
Responder Con Cita
  #26  
Antiguo 28-01-2025
ISCOPYME ISCOPYME is offline
Miembro
 
Registrado: jun 2004
Posts: 18
Poder: 0
ISCOPYME Va por buen camino
Muchas gracias por vuestra respuesta.

Acabo de recibir contestación de verifactu y va por ese camino "El tiempo de espera es por cada SIF y dentro de cada SIF, por cada uno de los obligados tributarios.

La duda que me surge es que si opto por un único servicio para todas las empresas, se entiende que el algoritmo sería localizar las empresas con registros a enviar (que cumplan los requisitos de envío ) e iterar entre cada una de ellas haciendo el envío de estos registros.... Primero una empresa, luego la otra y así sucesivamente.

¿ Qué pasaría si hay un retraso significativo en la contestación de aeat para las siguiente empresas que estaban en cola de envío (podría no cumplirse el tiempo máximo de 120 segundos) ?

Con la opción de un servicio por empresa supongo que no pasaría esta situación....
Responder Con Cita
  #27  
Antiguo 28-01-2025
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 416
Poder: 5
rci Va por buen camino
Cita:
Empezado por ISCOPYME Ver Mensaje
Muchas gracias por vuestra respuesta.

Acabo de recibir contestación de verifactu y va por ese camino "El tiempo de espera es por cada SIF y dentro de cada SIF, por cada uno de los obligados tributarios.

La duda que me surge es que si opto por un único servicio para todas las empresas, se entiende que el algoritmo sería localizar las empresas con registros a enviar (que cumplan los requisitos de envío ) e iterar entre cada una de ellas haciendo el envío de estos registros.... Primero una empresa, luego la otra y así sucesivamente.

¿ Qué pasaría si hay un retraso significativo en la contestación de aeat para las siguiente empresas que estaban en cola de envío (podría no cumplirse el tiempo máximo de 120 segundos) ?

Con la opción de un servicio por empresa supongo que no pasaría esta situación....
Supongo que en ese caso lo mejor seria hacer hilos de ejecución (threads) independientes para cada cif emisor. Cada uno con su control de flujo.
Responder Con Cita
  #28  
Antiguo 26-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Buenas tardes, me estoy volviendo un poco loca con este error:


Error no.: 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.



Realizo la consulta de la hora en teoria "oficial" pero me sigue saliendo el mismo error. Algo no debo entender bien .


Código:
<FechaHoraHusoGenRegistro>2025-02-26T17:13:57.000Z</FechaHoraHusoGenRegistro>
No será por los milisegundos...


Alguien tiene este problema?
Responder Con Cita
  #29  
Antiguo 26-02-2025
Faneka Faneka is offline
Miembro
 
Registrado: nov 2024
Posts: 137
Poder: 1
Faneka Va por buen camino
Cuando creas el RF le pones la Fecha y Hora si cuando llegue al servidor de AEAT han pasado más de 120 segundos te devolvera ese aviso.
Responder Con Cita
  #30  
Antiguo 26-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Cita:
Empezado por Faneka Ver Mensaje
Cuando creas el RF le pones la Fecha y Hora si cuando llegue al servidor de AEAT han pasado más de 120 segundos te devolvera ese aviso.



Lo envío inmediatamente, por eso no lo entiendo.
Responder Con Cita
  #31  
Antiguo 26-02-2025
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 599
Poder: 1
bmfranky Va por buen camino
Cita:
Empezado por jodaws Ver Mensaje
Buenas tardes, me estoy volviendo un poco loca con este error:


Error no.: 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.



Realizo la consulta de la hora en teoria "oficial" pero me sigue saliendo el mismo error. Algo no debo entender bien .


Código:
<FechaHoraHusoGenRegistro>2025-02-26T17:13:57.000Z</FechaHoraHusoGenRegistro>
No será por los milisegundos...


Alguien tiene este problema?
Hola, si es por los milisegundos, yo tenia ese problema al pasarle el timestamp, al final lo formatee yo en un string.


Para c# @rci me paso esta solucion.
Cita:
Empezado por rci Ver Mensaje
Hola bmfranky, Puedes adaptarlo a lo que necesites:
Código:
DateTime currentDateTime = GetDateTime(); // Coge la fecha y hora de internet o del ordenador

// Convert to Veri*Factu FORMAT EXPECTED: YYYY-MM-DDThh:mm:ssTZD (ej: 2024-01-01T19:20:30+01:00) (ISO 8601)
var creationDateTime = new DateTime(currentDateTime.Year,  currentDateTime.Month, currentDateTime.Day, currentDateTime.Hour,  currentDateTime.Minute, currentDateTime.Second, DateTimeKind.Local);

registroFacturacionAlta.FechaHoraHusoGenRegistro = creationDateTime;
Prueba a ver si te sirve, creo que no depende de la versión del VisualStudio que tengas

Saludos
__________________
Uno se alegra de ser útil. (Isaac Asimov)
Responder Con Cita
  #32  
Antiguo 26-02-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Hola.


Prueba con esta forma de generar ese dato:


Código Delphi [-]
  DateTime:=now;
  XSDatetime := TXSDatetime.Create;
  XSDateTime.AsDateTime := dateTime;
  Factura.RegistroAlta.FechaHoraHusoGenRegistro := XSDateTime;


La variable XSDatetime es del tipo TXSDatetime y tienes que poner en el uses Soap.XSBuiltIns


Saludos.
__________________
Be water my friend.
Responder Con Cita
  #33  
Antiguo 26-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Hola.


Prueba con esta forma de generar ese dato:


Código Delphi [-] DateTime:=now; XSDatetime := TXSDatetime.Create; XSDateTime.AsDateTime := dateTime; Factura.RegistroAlta.FechaHoraHusoGenRegistro := XSDateTime;



La variable XSDatetime es del tipo TXSDatetime y tienes que poner en el uses Soap.XSBuiltIns


Saludos.



Y lo hacía así pero me daba error:


Código:
<FechaHoraHusoGenRegistro>2025-02-26T18:04:19.643+01:00</FechaHoraHusoGenRegistro>
Error no.: 1244 El campo FechaHoraHusoGenRegistro tiene un formato incorrecto.


Lo cambie por:

Código Delphi [-]XSDatetime := TXSDatetime.Create; XSDatetime.AsUTCDateTime :=getAhora;//Now; //XSDatetime.HourOffset:=1; //XSDatetime.UseZeroMilliseconds:=false; Factura.RegistroAlta.FechaHoraHusoGenRegistro :=XSDatetime;



Código:
<FechaHoraHusoGenRegistro>2025-02-26T18:06:21.000Z</FechaHoraHusoGenRegistro>
Me lo acepta pero con errores:


Error no.: 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos. RefExterna=2219518
TimestampPresentacion: 26/02/2025 18:06:21
Responder Con Cita
  #34  
Antiguo 26-02-2025
Jarogo08 Jarogo08 is offline
Miembro
 
Registrado: ene 2025
Posts: 78
Poder: 1
Jarogo08 Va por buen camino
Buenas jodaws


Creo que no tienes bien el formato. Tiene que ser algo así (sin milisegundos y con el +01:00 de la franja horaria):


2025-02-26T12:18:25+01:00


Yo lo obtengo así y me va sin problemas (es en VB. NET)


Dim retorno As String = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ssK")


espero que te sirva!
Responder Con Cita
  #35  
Antiguo 26-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Cita:
Empezado por Jarogo08 Ver Mensaje
Buenas jodaws


Creo que no tienes bien el formato. Tiene que ser algo así (sin milisegundos y con el +01:00 de la franja horaria):


2025-02-26T12:18:25+01:00


Yo lo obtengo así y me va sin problemas (es en VB. NET)


Dim retorno As String = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ssK")


espero que te sirva!



Es que no lo puedo formatear yo o no sé como hacerlo, ya que tengo un tipo TXSDateTime. No le puedo asignar un string directamente... A ver si hay alguien en Delphi que lo haya solucionado y me da luz
Responder Con Cita
  #36  
Antiguo 26-02-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Cita:
Empezado por jodaws Ver Mensaje
Y lo hacía así pero me daba error:


Código:
<FechaHoraHusoGenRegistro>2025-02-26T18:04:19.643+01:00</FechaHoraHusoGenRegistro>
Error no.: 1244 El campo FechaHoraHusoGenRegistro tiene un formato incorrecto.


Lo cambie por:

Código Delphi [-]XSDatetime := TXSDatetime.Create; XSDatetime.AsUTCDateTime :=getAhora;//Now; //XSDatetime.HourOffset:=1; //XSDatetime.UseZeroMilliseconds:=false; Factura.RegistroAlta.FechaHoraHusoGenRegistro :=XSDatetime;



Código:
<FechaHoraHusoGenRegistro>2025-02-26T18:06:21.000Z</FechaHoraHusoGenRegistro>
Me lo acepta pero con errores:


Error no.: 2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos. RefExterna=2219518
TimestampPresentacion: 26/02/2025 18:06:21

Ok, ya sé lo que te pasa. Es por los milisegundos. Prueba a hacerlo así:


Código Delphi [-]
  XSDateTime.AsDateTime := dateTime;
  Factura.RegistroAlta.FechaHoraHusoGenRegistro := XSDateTime;
  Factura.RegistroAlta.FechaHoraHusoGenRegistro.FractionalSeconds:=0;


Saludos.
__________________
Be water my friend.
Responder Con Cita
  #37  
Antiguo 27-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Ok, ya sé lo que te pasa. Es por los milisegundos. Prueba a hacerlo así:


Código Delphi [-] XSDateTime.AsDateTime := dateTime; Factura.RegistroAlta.FechaHoraHusoGenRegistro := XSDateTime; Factura.RegistroAlta.FechaHoraHusoGenRegistro.FractionalSeconds:=0;



Saludos.

Muchas gracias a todos!Pues así lo ha hecho bien pero ahora me salta error en el cálculo de la huella


Código:
<FechaHoraHusoGenRegistro>2025-02-27T09:08:59+01:00</FechaHoraHusoGenRegistro>
Código:
<tikR:DescripcionErrorRegistro>El cálculo de la huella suministrada es incorrecta. 
      Datos de entrada cálculo huella: 
        IDEmisorFactura=XXXXXXXXX&
        NumSerieFactura=1/125000013&
        FechaExpedicionFactura=26-02-2025&
        TipoFactura=F1&
        CuotaTotal=1.72&
        ImporteTotal=9.90&
        Huella=857d7da1a202c1659e2249feb65273a6333afc3166e97d9f2018978a42cb9233&
        FechaHoraHusoGenRegistro=2025-02-27T09:08:59+01:00 
        Huella calculada: FE087FDBAAC73C408D8F5100CC06175476A9741BF4EFBFC4C088C86F027F4E73</tikR:DescripcionErrorRegistro>
Edito: la huella debe estar en mayúsculas!

Última edición por jodaws fecha: 27-02-2025 a las 09:24:18.
Responder Con Cita
  #38  
Antiguo 27-02-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Cita:
Empezado por jodaws Ver Mensaje
Muchas gracias a todos!Pues así lo ha hecho bien pero ahora me salta error en el cálculo de la huella


Código:
<FechaHoraHusoGenRegistro>2025-02-27T09:08:59+01:00</FechaHoraHusoGenRegistro>
Código:
<tikR:DescripcionErrorRegistro>El cálculo de la huella suministrada es incorrecta. 
      Datos de entrada cálculo huella: 
        IDEmisorFactura=XXXXXXXXX&
        NumSerieFactura=1/125000013&
        FechaExpedicionFactura=26-02-2025&
        TipoFactura=F1&
        CuotaTotal=1.72&
        ImporteTotal=9.90&
        Huella=857d7da1a202c1659e2249feb65273a6333afc3166e97d9f2018978a42cb9233&
        FechaHoraHusoGenRegistro=2025-02-27T09:08:59+01:00 
        Huella calculada: FE087FDBAAC73C408D8F5100CC06175476A9741BF4EFBFC4C088C86F027F4E73</tikR:DescripcionErrorRegistro>
Edito: la huella debe estar en mayúsculas!

No das muchas pistas sobre lo que te pasa con la huella, por si te sirve de algo yo lo hago así:


Código Delphi [-]
  // Calculo huella
  sAux:='IDEmisorFactura='+Edit2.Text+'&NumSerieFactura='+Factura.RegistroAlta.IDFactura.NumSerieFactu  ra+'&FechaExpedicionFactura='+Factura.RegistroAlta.IDFactura.FechaExpedicionFactura;
 sAux:=sAux+'&TipoFactura='+ListaCampos[2]+'&CuotaTotal='+Factura.RegistroAlta.CuotaTotal+'&ImporteTotal='+Factura.RegistroAlta.ImporteTotal+'  &Huella='+Edit18.Text+'&FechaHoraHusoGenRegistro='+XSDateTime.NativeToXS;
  Huella:=UpperCase(HashSHA256(sAux));
  Factura.RegistroAlta.TipoHuella := TipoHuellaType._01;
  Factura.RegistroAlta.Huella     := Huella;


No creo que tengas mucho problema en adivinar unas cuantas variables que hay en esas líneas.


y la función HashSHA256:


Código Delphi [-]
function HashSha256(const APassword: string): string;
var
  SHA256: THashSHA2;
begin
  SHA256 := THashSHA2.Create;
  try
    Result := SHA256.GetHashString(APassword);
  finally
    FreeAndNil(SHA256);
  end;
end;


Saludos.
__________________
Be water my friend.
Responder Con Cita
  #39  
Antiguo 27-02-2025
jodaws jodaws is offline
Miembro
 
Registrado: may 2007
Posts: 34
Poder: 0
jodaws Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
No das muchas pistas sobre lo que te pasa con la huella, por si te sirve de algo yo lo hago así:


Código Delphi [-] // Calculo huella sAux:='IDEmisorFactura='+Edit2.Text+'&NumSerieFactura='+Factura.RegistroAlta.IDFactura.NumSerieFactu ra+'&FechaExpedicionFactura='+Factura.RegistroAlta.IDFactura.FechaExpedicionFactura; sAux:=sAux+'&TipoFactura='+ListaCampos[2]+'&CuotaTotal='+Factura.RegistroAlta.CuotaTotal+'&ImporteTotal='+Factura.RegistroAlta.ImporteTotal+' &Huella='+Edit18.Text+'&FechaHoraHusoGenRegistro='+XSDateTime.NativeToXS; Huella:=UpperCase(HashSHA256(sAux)); Factura.RegistroAlta.TipoHuella := TipoHuellaType._01; Factura.RegistroAlta.Huella := Huella;



No creo que tengas mucho problema en adivinar unas cuantas variables que hay en esas líneas.


y la función HashSHA256:


Código Delphi [-]function HashSha256(const APassword: string): string; var SHA256: THashSHA2; begin SHA256 := THashSHA2.Create; try Result := SHA256.GetHashString(APassword); finally FreeAndNil(SHA256); end; end;



Saludos.



Muchas gracias y disculpad, quería decir que la huella debe estar en mayúsculas y ya me ha funcionado correctamente.
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
Maxima longitud de un Varchar(x) ingabraham Varios 4 13-08-2010 00:21:14
Convertir segundos a formato hora, minutos y segundos jafera Varios 2 07-02-2009 22:13:45
BMP/JPG a máxima velocidad MaMu Gráficos 14 11-03-2008 14:34:37
Cantidad maxima de hilos ?? marceloalegre Varios 2 18-04-2007 17:27:46
Longitud maxima integer cinecito Varios 10 12-05-2004 03:06:22


La franja horaria es GMT +2. Ahora son las 06:54:44.


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