Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ley antifraude 2021 (VERIFACTU) - Programas informáticos (https://www.clubdelphi.com/foros/showthread.php?t=95235)

ramherfer 02-01-2024 22:53:25

Hola buenas noches.
Alguno a probado a construir el xml desde el xsd con el XML Data Binding de Delphi
Yo no consigo pasar de rellenar la cabecera, el resto de datos como si no existieran.
Código:

IFact:IXMLSistemaFacturacionAltaFact;
begin
  IFact := NewSistemaFacturacion;
  IFact.Cabecera.IDVersion := '1.0';
  IFact.Cabecera.ObligadoEmision.NombreRazon := 'Nombre o razón social';
  IFact.Cabecera.ObligadoEmision.NIF := '12345678N';
  IFact.Cabecera.TipoRegistroAEAT := 'T0';
//  iFact.RegistroAltaFacturas.PeriodoEjercicio := '4T';
  {...}
//  memo1.Lines.Text:=alta.XML;
  IFact.OwnerDocument.SaveToFile('fact1.xml');

No se si estoy haciendo algo mal o es una cagada integra e integral en el xsd de la AEAT.
Si alguien me puede decir algo al respecto, se lo agradecería.

ermendalenda 03-01-2024 09:20:40

pRIMER INTENTO ALTA FACTURA
 
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<sum:AltaFactuSistemaFacturacion xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas><sum:RegistroFacturacion><sum1:IDFactura><sum1:IDEmisorFactura><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFactura><sum1:NumSerieFacturaEmisor>84.1.1.3</sum1:NumSerieFacturaEmisor><sum1:FechaExpedicionFacturaEmisor>27-12-2023</sum1:FechaExpedicionFacturaEmisor></sum1:IDFactura><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:FechaOperacion>27-12-2023</sum1:FechaOperacion><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose><sum1:DetalleDesglose><sum1:ClaveRegimen>01</sum1:ClaveRegimen><sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion><sum1:TipoImpositivo>10.00</sum1:TipoImpositivo><sum1:BaseImponibleOimporteNoSujeto>0.91</sum1:BaseImponibleOimporteNoSujeto><sum1:CuotaRepercutida>0.09</sum1:CuotaRepercutida></sum1:DetalleDesglose></sum1:Desglose><sum1:ImporteTotal>1.00</sum1:ImporteTotal><sum1:EncadenamientoRegistroAnterior><sum1:IDEmisorFacturaRegistroAnterior><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFacturaRegistroAnterior><sum1:NumSerieFacturaRegistroAnterior>84.1.1.2</sum1:NumSerieFacturaRegistroAnterior><sum1:FechaExpedicionFacturaRegistroAnterior>27-12-2023</sum1:FechaExpedicionFacturaRegistroAnterior><sum1:HuellaRegistroAnterior>1d0613dddebed13da7a9ec956015556381cfa8663534e4876942ecb305b23fc8</sum1:HuellaRegistroAnterior></sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico><sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon><sum1:NIF>B00000000</sum1:NIF><sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico><sum1:Version>1.0.03</sum1:Version><sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion><sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu><sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros><sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico><sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion><sum:DatosControl>
<sum1:Huella>87babbc7e13de14375fe826fb794b0cee52fb2c816734e55943d9d3d3f04897b</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</sum:AltaFactuSistemaFacturacion>


nincillo 03-01-2024 10:30:49

Cita:

Empezado por ermendalenda (Mensaje 553795)
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<sum:AltaFactuSistemaFacturacion xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas><sum:RegistroFacturacion><sum1:IDFactura><sum1:IDEmisorFactura><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFactura><sum1:NumSerieFacturaEmisor>84.1.1.3</sum1:NumSerieFacturaEmisor><sum1:FechaExpedicionFacturaEmisor>27-12-2023</sum1:FechaExpedicionFacturaEmisor></sum1:IDFactura><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:FechaOperacion>27-12-2023</sum1:FechaOperacion><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose><sum1:DetalleDesglose><sum1:ClaveRegimen>01</sum1:ClaveRegimen><sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion><sum1:TipoImpositivo>10.00</sum1:TipoImpositivo><sum1:BaseImponibleOimporteNoSujeto>0.91</sum1:BaseImponibleOimporteNoSujeto><sum1:CuotaRepercutida>0.09</sum1:CuotaRepercutida></sum1:DetalleDesglose></sum1:Desglose><sum1:ImporteTotal>1.00</sum1:ImporteTotal><sum1:EncadenamientoRegistroAnterior><sum1:IDEmisorFacturaRegistroAnterior><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFacturaRegistroAnterior><sum1:NumSerieFacturaRegistroAnterior>84.1.1.2</sum1:NumSerieFacturaRegistroAnterior><sum1:FechaExpedicionFacturaRegistroAnterior>27-12-2023</sum1:FechaExpedicionFacturaRegistroAnterior><sum1:HuellaRegistroAnterior>1d0613dddebed13da7a9ec956015556381cfa8663534e4876942ecb305b23fc8</sum1:HuellaRegistroAnterior></sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico><sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon><sum1:NIF>B00000000</sum1:NIF><sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico><sum1:Version>1.0.03</sum1:Version><sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion><sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu><sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros><sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico><sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion><sum:DatosControl>
<sum1:Huella>87babbc7e13de14375fe826fb794b0cee52fb2c816734e55943d9d3d3f04897b</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</sum:AltaFactuSistemaFacturacion>


¿Qué fallos tenemos que encontrar?.
Yo a simple vista, lo he copiado/pegado en un visor de xlm para ver un poco más "pretty" y aparentemente está ok, con su cabecera y todo que es lo que al menos a mi me trae loco.

nincillo 03-01-2024 10:34:47

Cita:

Empezado por ramherfer (Mensaje 553789)
Hola buenas noches.
Alguno a probado a construir el xml desde el xsd con el XML Data Binding de Delphi
Yo no consigo pasar de rellenar la cabecera, el resto de datos como si no existieran.
Código:

IFact:IXMLSistemaFacturacionAltaFact;
begin
  IFact := NewSistemaFacturacion;
  IFact.Cabecera.IDVersion := '1.0';
  IFact.Cabecera.ObligadoEmision.NombreRazon := 'Nombre o razón social';
  IFact.Cabecera.ObligadoEmision.NIF := '12345678N';
  IFact.Cabecera.TipoRegistroAEAT := 'T0';
//  iFact.RegistroAltaFacturas.PeriodoEjercicio := '4T';
  {...}
//  memo1.Lines.Text:=alta.XML;
  IFact.OwnerDocument.SaveToFile('fact1.xml');

No se si estoy haciendo algo mal o es una cagada integra e integral en el xsd de la AEAT.
Si alguien me puede decir algo al respecto, se lo agradecería.

A mi pasó en su momento. Si lo intento hacer utilizado el xsd me pasa lo que a tí, y si lo intento hacer utilizando el xsdl, entonces tengo acceso a los registros de facturación, pero no a la cabecera.

Puedes retroceder un poco para atrás y verás lo que fui posteando.

Yo creo que si que han debido de meter la pata en algo, pero como soy muy novato en estos temas, tampoco me atrevo ni se donde poder hacer consultas más técnicas.

ermendalenda 03-01-2024 10:42:42

Cita:

Empezado por nincillo (Mensaje 553796)
¿Qué fallos tenemos que encontrar?.
Yo a simple vista, lo he copiado/pegado en un visor de xlm para ver un poco más "pretty" y aparentemente está ok, con su cabecera y todo que es lo que al menos a mi me trae loco.

A mi me despista esto del xsd:
Código PHP:

 -->     - <element name="AltaFactuSistemaFacturacion">   - <complexType>   - <complexContent>   - <extension base="sf:SistemaFacturacionAltaFact">   - <sequence>     <element name="RegistroAltaFacturas"  type="sfLR:FacturasEmitidasType" maxOccurs="1000" />     </sequence>   </extension>   </complexContent>   </complexType>   </element>
 <
element  name="BajaFactuSistemaFacturacion">   - <complexType>   - <complexContent>   - <extension base="sf:SistemaFacturacionBajaFact">   - <sequence>     <element name="RegistroAnulacionFacturas" type="sfLR:BajaExpedidasType" maxOccurs="1000" />     </sequence>   </extension>   </complexContent>   </complexType>   </element


Edito.
ok ok nada. eso son nodos a insertar cuando esten empaquetados en el soap

ramherfer 03-01-2024 10:45:51

Cita:

Empezado por ermendalenda (Mensaje 553795)
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<sum:AltaFactuSistemaFacturacion xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas><sum:RegistroFacturacion><sum1:IDFactura><sum1:IDEmisorFactura><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFactura><sum1:NumSerieFacturaEmisor>84.1.1.3</sum1:NumSerieFacturaEmisor><sum1:FechaExpedicionFacturaEmisor>27-12-2023</sum1:FechaExpedicionFacturaEmisor></sum1:IDFactura><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:FechaOperacion>27-12-2023</sum1:FechaOperacion><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose><sum1:DetalleDesglose><sum1:ClaveRegimen>01</sum1:ClaveRegimen><sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion><sum1:TipoImpositivo>10.00</sum1:TipoImpositivo><sum1:BaseImponibleOimporteNoSujeto>0.91</sum1:BaseImponibleOimporteNoSujeto><sum1:CuotaRepercutida>0.09</sum1:CuotaRepercutida></sum1:DetalleDesglose></sum1:Desglose><sum1:ImporteTotal>1.00</sum1:ImporteTotal><sum1:EncadenamientoRegistroAnterior><sum1:IDEmisorFacturaRegistroAnterior><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFacturaRegistroAnterior><sum1:NumSerieFacturaRegistroAnterior>84.1.1.2</sum1:NumSerieFacturaRegistroAnterior><sum1:FechaExpedicionFacturaRegistroAnterior>27-12-2023</sum1:FechaExpedicionFacturaRegistroAnterior><sum1:HuellaRegistroAnterior>1d0613dddebed13da7a9ec956015556381cfa8663534e4876942ecb305b23fc8</sum1:HuellaRegistroAnterior></sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico><sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon><sum1:NIF>B00000000</sum1:NIF><sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico><sum1:Version>1.0.03</sum1:Version><sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion><sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu><sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros><sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico><sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion><sum:DatosControl>
<sum1:Huella>87babbc7e13de14375fe826fb794b0cee52fb2c816734e55943d9d3d3f04897b</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</sum:AltaFactuSistemaFacturacion>


Pues a mi por ejemplo la Huella no me cuadra con la obtenida con varias herramientas online.
Tampoco entiendo (no estoy muy puesto en el tema) motivo por el cual añades las etiquetas sum1 y esto que comentas de meter el soap :confused:
Si que rogaría y teniendo en cuenta que puede haber gente muy puesta y otra menos puesta como puede ser mi caso hacer los textos mas entendibles a los que no estamos tan puestos y tenemos el problemón encima. Espero que nadie se ofenda por lo que digo, lo hago con la mejor intención del mundo.

ermendalenda 03-01-2024 10:56:21

Cita:

Empezado por ramherfer (Mensaje 553799)
Pues a mi por ejemplo la Huella no me cuadra con la obtenida con varias herramientas online.
Tampoco entiendo (no estoy muy puesto en el tema) motivo por el cual añades las etiquetas sum1 y esto que comentas de meter el soap :confused:
Si que rogaría y teniendo en cuenta que puede haber gente muy puesta y otra menos puesta como puede ser mi caso hacer los textos mas entendibles a los que no estamos tan puestos y tenemos el problemón encima. Espero que nadie se ofenda por lo que digo, lo hago con la mejor intención del mundo.


Si, si, la huella no es esa, es que he cambiado el contenido pero no la huella, por no dejar datos reales.

las etiquetas sum y sum1 son prefijos que se refieren a un enlace, esos prefijos puedes decidir tú como se llaman pero tienen que estar igual en los sitios a los que hacen la mis ma referencia.

El soap:
cada fichero verifcatu se refiere a un alta o anulacion, pero para el envio, tienes que meter (*n) archivos en un solo fichero con los nodos del soap.

*n=numero de archivos verifactu, este numero está condicionado por las respuestas que te de la aeat en cada envio, te pueden decir cuantos (n) tienes que mandar o cuanto tiempo tienes que esperar para el siguiente envio (Maximo 1000 registros o archivos verifactu).
Espero que te aclare un poco, sé que es un poco lioso.

newtron 03-01-2024 11:03:12

Yo me voy algo antes. ¿Alguien me puede aclarar de qué va el rollo de la huella y cómo se genera?


Gracias y un saludo.

ermendalenda 03-01-2024 11:45:39

Cita:

Empezado por newtron (Mensaje 553801)
Yo me voy algo antes. ¿Alguien me puede aclarar de qué va el rollo de la huella y cómo se genera?


Gracias y un saludo.

es el calculo del hash sobre un texto, este hash puede ser sha256, sha512...., pero en este caso solo tienen la opción sha256, la mayoria de programas de desarrollo tienen herramientas para crear esa secuencia de cálculo sha256, (texto a sha256), y si no podeis usar las apis de windows (para los que usan windows). Hay que tener especial cuidado que este cálculo es muy, perro que muy sensible a cualquier caracter del texto, un retorno de carro, un caracter especial, nulo, tabulador... te cambia el calculo totalmente, por eso en las pruebas que hagais debeis verificar que estais haciendolo bien, y el mismo formato que le deis al texto enviado debe ser el mismo que con el que habeis calculado el hash.
Por otro lado, ese calculo del hash puede estar devuelto en sistemas distintos, pero el más frecuente es el hexadecimal, que tambien teneis que tenerlo en cuenta. Cualquier texto va a devolver una sha256 del mismo tamaño (mismo número de caracteres), por muy pequeño o grande que sea el texto.
Para calcular la huella del verifactu teneis que calcularla sobre el nodo [RegistroFacturacion] incluyendo las eiquetas de apertura y cierre, aquí es donde podeis tener la duda si después de la etiqueta de cierre hay retorno de carro hay que incluirla para el calculo o no, y aunque la normativa dice que el nodo incluyen los retornos de carro posteriores, no sabemos si van a aplicar la normativa, os aconsejo que despues de la etiqueta de cierre no hagaios saltos de lineas ni retornos de carro.
Saludos

newtron 03-01-2024 11:51:35

Gracias compañero.


Entiendo entonces que hay que generar un fichero XML por cada factura que se va a enviar y calcular unitariamente ese hash para meterlo posteriormente en la llamada que se hace para cada factura.


A ver si algún colega que use Delphi puede mostrarnos alguna función/ejemplo.


Saludos.

ermendalenda 03-01-2024 11:53:36

Cita:

Empezado por newtron (Mensaje 553804)
Gracias compañero.


Entiendo entonces que hay que generar un fichero XML por cada factura que se va a enviar y calcular unitariamente ese hash para meterlo posteriormente en la llamada que se hace para cada factura.


A ver si algún colega que use Delphi puede mostrarnos alguna función/ejemplo.


Saludos.

correcto, cada alta o anulacion con su hash, y en el paquete de envio todos los ficheros xml con su huella.

newtron 03-01-2024 12:39:00

Perfecto, gracias.


Haciendo una búsqueda "tontuna" he encontrado este link con una función simple para generar el hash SHA-256. Imagino que servirá.


Saludos.

Casimiro Notevi 03-01-2024 13:03:12

Un hash se puede calcular con muchas herramientas, editores, etc. pero lo único "vital" es asegurarse de que se hace sobre el texto correcto, siempre igual.
Por ejemplo, si el texto está en ascii o utf-8 serán distintos, ¡¡¡aunque lo veamos igual!!! y también, como han dicho antes, cuidado con los fin de línea, retornos de carro, etc. que es distinto si se ha generado en windows o si está calculado en un servidor linux.



ermendalenda 03-01-2024 13:05:49

Cita:

Empezado por newtron (Mensaje 553806)
Perfecto, gracias.


Haciendo una búsqueda "tontuna" he encontrado este link con una función simple para generar el hash SHA-256. Imagino que servirá.


Saludos.

hay webs para comprobar tambien, como metoido adicional mientras programas, pero cuidado con los cortar y pegar que cambian caracteres en los cuadros de introduccion del texto de la web.

antoine0 03-01-2024 16:48:52

Cita:

Empezado por ermendalenda (Mensaje 553795)
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código:

...Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>

<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF>
<sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose> ...


Toda la parte que está en rojo (NombreRazon hasta NIF) está repetida del principio y no está bien formado.
Luego la parte en azul, etiquetas NombreRazonEmisor y TipoRegistroSIF deben venir antes de TipoFactura, y las etiquetas TipoFactura y DescripcionOperacion repetidas después deben quitarse.

Cita:

Código:

... </sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico>
<sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon>
<sum1:NIF>B00000000</sum1:NIF>
<sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico>
<sum1:Version>1.0.03</sum1:Version>
<sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion>
<sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
<sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros>
<sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico> ...


(He añadido CR para leerlo mejor en pantalla)
IdSistemaInformatico está limitado a dos caracteres, tu ejemplo tiene 19...
Además, falta justo antes un elemento NombreSistemaInformatico que no es opcional.
Si se reemplaza por
Código:

    <sum1:NombreSistemaInformatico>VERIFACTU0000PRUEBA</sum1:NombreSistemaInformatico>
    <sum1:IdSistemaInformatico></sum1:IdSistemaInformatico>

me da OK

Cita:

Código:

... <sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion> ...

La fecha debe ir con guiones, las barras no validan el XSD

ermendalenda 03-01-2024 17:04:11

Cita:

Empezado por antoine0 (Mensaje 553813)
Toda la parte que está en rojo (NombreRazon hasta NIF) está repetida del principio y no está bien formado.
Luego la parte en azul, etiquetas NombreRazonEmisor y TipoRegistroSIF deben venir antes de TipoFactura, y las etiquetas TipoFactura y DescripcionOperacion repetidas después deben quitarse.


(He añadido CR para leerlo mejor en pantalla)
IdSistemaInformatico está limitado a dos caracteres, tu ejemplo tiene 19...
Además, falta justo antes un elemento NombreSistemaInformatico que no es opcional.
Si se reemplaza por
Código:

    <sum1:NombreSistemaInformatico>VERIFACTU0000PRUEBA</sum1:NombreSistemaInformatico>
    <sum1:IdSistemaInformatico></sum1:IdSistemaInformatico>

me da OK


La fecha debe ir con guiones, las barras no validan el XSD

Gracias
Repaso todo
Al cambiarlo de la 0.1 a la 1.0 l he liado

antoine0 03-01-2024 17:23:59

Cita:

Empezado por Casimiro Notevi (Mensaje 553807)
si el texto está en ascii o utf-8 serán distintos

Si por "ascii" te refieres a US-ASCII en sentido restringido a los caracteres imprimibles más eventualmente CR y LF pues no, no serán distintos :o
Pero cualquier tilde o eñe sí creará problemas.

nincillo 03-01-2024 18:47:35

Mensaje de error al importar wsdl en Delphi X2
 
1 Archivos Adjunto(s)
Cuando lo intenté con el la versión 10.3 no me dio error, sin embargo, con esta versión más antigua me da esos errores durante la importación.

Quizás por eso no está haciendo la importación correcta y le faltan "partes". ¿Podrá ser?

nuevo1234 03-01-2024 18:53:14

Cita:

Empezado por Casimiro Notevi (Mensaje 553807)
Un hash se puede calcular con muchas herramientas, editores, etc. pero lo único "vital" es asegurarse de que se hace sobre el texto correcto, siempre igual.
Por ejemplo, si el texto está en ascii o utf-8 serán distintos, ¡¡¡aunque lo veamos igual!!! y también, como han dicho antes, cuidado con los fin de línea, retornos de carro, etc. que es distinto si se ha generado en windows o si está calculado en un servidor linux.



Pero en hacienda pueden comprobar si el hash es correcto?
Basta con cojan el nodo y hagan el hash o tendrán que saber la codoficacion usada?

ermendalenda 03-01-2024 18:58:19

Cita:

Empezado por nuevo1234 (Mensaje 553818)
Pero en hacienda pueden comprobar si el hash es correcto?
Basta con cojan el nodo y hagan el hash o tendrán que saber la codoficacion usada?

No tienen que saber codificación, el hash siempre es el mismo para una cadena, da igual quien, donde y desde que programa se calcule.
Pueden calcularlo y es su forma de verificar que no hay trampa.
Ver significado funcionmiento del blockchain, por ejemplo para las criptomoneda, aunque estas tienen además otros algoritmos tienen aplicado los cálculos de hash.


La franja horaria es GMT +2. Ahora son las 00:43:17.

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