Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco (https://www.clubdelphi.com/foros/showthread.php?t=94264)

YellowStone 08-07-2021 10:32:52

Cita:

Empezado por Band (Mensaje 541252)
Hola keys, gracias por la respuesta.
Mi problema es que no puedo usar el Txmldocument de momento :(
No sé si es problema del Msxml2.DOMDocument.6.0, porque así Código Delphi [-]Documento.DocumentElement.ChildNodes[4].ChildNodes[1].Text;

tampoco consigo referenciarlo.

Seguiré investigando.

Aparte del código proporcionado por Keys, yo lo he conseguido de la siguiente manera (código Delphi 2007):

Código Delphi [-]
function BuscaSignatureValue(documento: IXMLDocument): string;
var ANode1: IXMLNode;
    i: integer;
begin
  result := '';
  for i := 0 to documento.DocumentElement.ChildNodes.Count - 1 do
    begin
      if documento.DocumentElement.ChildNodes.Nodes[i].NodeName = 'ds:Signature' then
        begin
          ANode1 := documento.DocumentElement.ChildNodes.Nodes[i];
          if ANode1.ChildNodes.FindNode('ds:SignatureValue') <> nil then
            begin
              result := ANode1.ChildNodes['ds:SignatureValue'].Text;
              result := AnsiReplaceStr(result, #10, '');               // Quitamos los saltos de línea del nodo
              result := Copy(Trim(result), 1, 100);                    // Cogemos los 100 primeros caracteres
              break;
            end;
        end;
    end;
end;

La solución de Keys es estupenda, pero con el inconveniente de que si en algún momento se cambia o se añade algún nodo en el fichero, va a dejar de ser funcional.

b4aronDeLaBirr4 08-07-2021 11:04:53

Realización de la firma
 
Buenas!

Os quería preguntar sobre la realización de la firma. Por ejemplo, en mi caso compongo mi archivo XML en C# rellenando aquellos campos normales (importe, nif....) pero ¿cómo procedo con la firma del documento cuando lo tengo ya rellenado? (Porque qué hacer con el campo Signature del XML?)
He estado leyendo sobre la política de firma y demás, pero tampoco es que me haya quedado claro del todo. Gracias de antemano.

Un saludo

sEngine 08-07-2021 11:14:42

He estado mirando el de bizkaia (con LROE y demas) y me ha venido una duda.
Hay que enviar tanto las facturas y tickets de venta como las facturas de compra?

Casimiro Noteví 08-07-2021 11:15:14

Cita:

Empezado por YellowStone (Mensaje 541663)
...


tejano 08-07-2021 11:18:20

Cita:

Empezado por b4aronDeLaBirr4 (Mensaje 541665)
Buenas!

Os quería preguntar sobre la realización de la firma. Por ejemplo, en mi caso compongo mi archivo XML en C# rellenando aquellos campos normales (importe, nif....) pero ¿cómo procedo con la firma del documento cuando lo tengo ya rellenado? (Porque qué hacer con el campo Signature del XML?)
He estado leyendo sobre la política de firma y demás, pero tampoco es que me haya quedado claro del todo. Gracias de antemano.

Un saludo

Yo utilizo el comando autofirmacommandline del programa Autofirma, pero tarda unos sg en firmar.

En mi caso no tengo mucho problema porque hacemos unas 200 facturas x mes, pero no sé para vosotros.

Si buscas en el foro, verás el comando que se utilza.

Saludos

YellowStone 08-07-2021 11:21:14

A ver ahora:



Código Delphi [-]
function BuscaSignatureValue(documento: string): string;
var xml: IXMLDocument;
    ANode1: IXMLNode;
    i: integer;
begin
  result := '';
  try
    xml := LoadXmlDocument(documento);
    for i := 0 to xml.DocumentElement.ChildNodes.Count - 1 do
      begin
        if xml.DocumentElement.ChildNodes.Nodes[i].NodeName = 'ds:Signature' then
          begin
            ANode1 := xml.DocumentElement.ChildNodes.Nodes[i];
            if ANode1.ChildNodes.FindNode('ds:SignatureValue') <> nil then
              begin
                result := ANode1.ChildNodes['ds:SignatureValue'].Text;
                result := AnsiReplaceStr(result, #10, '');               // Quitamos los saltos de línea del nodo
                result := Copy(Trim(result), 1, 100);                    // Cogemos los 100 primeros caracteres
                break;
              end;
          end;
      end;
  finally
    FreeAndNil(xml);
  end;
end;


No sé por qué FindNode no encuentra "ds:Signature", de ahí el bucle buscando por el NoneName, que ahí si lo encuentra. :confused:

Neftali [Germán.Estévez] 08-07-2021 11:51:59

Cita:

Empezado por Galaxian (Mensaje 541662)
Seguro que no se han dado cuenta de que el software que usan comprime automáticamente los datos si descubre el encabezado Content-Encoding: gzip, y lo digo porque las librerías que uso (Chilkat) hacen exactamente eso: comprimen y descomprimen automáticamente los datos si encuentra dicho encabezado. De hecho, al objeto html le envío datos xml y él los comprime y envía un gz, pero al recibir la respuesta, en vez de un XML recibo un GZ.

Como no podía ser de otra manera, lo primero que hice fue acceder a los datos realmente recibidos, descomprimí el gz y el resultado fue otro gz.

He optado por no decírselo a los de batuz porque hay ciertos "dioses de la programación" (entre los que se encuentran ellos según he comprobado en otras preguntas) que no reconocen un error ni ante el mismísimo Tomás de Torquemada.


Correcto.
A esa misma conclusión llegamos nosotros y se lo explicamos con detalle.

No es que ellos compriman 2 veces (que imaginábamos que no) sino que es su servidor o alguna pieza que tienen funcionando vuelve a comprimir lo que envían, de forma que se recibe un doble comprimido.

Les explicamos que no era tema de las librerías que usamos (porque otros usuarios usan otras), ni siquiera de Delphi (porque otros usuarios de otros lenguajes también se encuentran con esto). Todo ello, con los links correspondientes para consultar.
¿Crees que se lo han mirado?
La respuesta fue algo equivalente a "nosotros lo hacemos bien, el resto lo hacéis mal, revisad vuestro código".

Incluso les dijimos que con PostMan se puede comprobar esto. Pues nada, debe ser que la gente de Postman también hacen algo mal... :(:(:(


Otro con algo de seriedad al menos se lo miraría o pediría más datos. Ellos ni eso.

Neftali [Germán.Estévez] 08-07-2021 12:00:13

Cita:

Empezado por sEngine (Mensaje 541667)
He estado mirando el de bizkaia (con LROE y demas) y me ha venido una duda.
Hay que enviar tanto las facturas y tickets de venta como las facturas de compra?

Si, son libros diferentes con esquemas diferentes.

JoseLeeTo 08-07-2021 12:22:24

URLs de envío para Alava
 
Hola a todos.

¿Conocéis las URL de envío y anulación para Álava?

Muchas gracias.
Un saludo.

JoseLeeTo 08-07-2021 12:23:59

Buenos días
 
Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 541673)
Si, son libros diferentes con esquemas diferentes.

Efectivamente,
Hay que diferenciar entre Ingresos con y sin Factura, así como Gastos con y sin factura. Son capítulos diferentes, con esquemas diferentes.
Solamente para Bizkaia, ya que en Guipuzcoa y en Alava, creo que solo requieren ingresos con factura.

Saludos.

Neftali [Germán.Estévez] 08-07-2021 13:35:19

Cita:

Empezado por JoseLeeTo (Mensaje 541674)
¿Conocéis las URL de envío y anulación para Álava?

Que yo sepa no existe ni el servidor, por lo tanto la URL es difícil que esté... :rolleyes:
La única que hay es la de consulta:

https://ticketbai.araba.eus/TBAI/QRTBAI
(que tampoco funciona)

Esto es lo que nos contestaron a nosotros.
Cita:

Durante 2021 está previsto tener a disposición de los usuarios y empresas de software un entorno de pruebas que, de momento se encuentra en fase de desarrollo.
Esperamos tenerlo operativo a partir de septiembre.


edari 08-07-2021 14:06:26

Sigo bloqueado con la subida de facturas a Gipuzkoa


Tengo bajados y revisados ejemplos de xml descargados de este hilo (Ejemplo_TicketBAI_......xml) pero están todas firmadas y para ver donde tengo el problema me serviría de bastante ayuda que alguno de vosotros pudiera subir aquí un xml de una factura normal y corriente SIN FIRMAR para ver si tengo algo mal


O también puedo subir yo mi ejemplo si lo preferís


Gracias de nuevo

Neftali [Germán.Estévez] 08-07-2021 14:52:12

Cita:

Empezado por edari (Mensaje 541680)
...para ver donde tengo el problema me serviría de bastante ayuda que alguno de vosotros pudiera subir aquí un xml de una factura normal y corriente


¿Te refieres a esto?


Código PHP:

<Cabecera>
        <
IDVersionTBAI>1.2</IDVersionTBAI>
    </
Cabecera>
    <
Sujetos>
        <
Emisor>
            <
NIF>J69552834</NIF>
            <
ApellidosNombreRazonSocial>Empresa de Test</ApellidosNombreRazonSocial>
        </
Emisor>
        <
Destinatarios>
            <
IDDestinatario>
                <
NIF>A86868189</NIF>
                <
ApellidosNombreRazonSocial>C1</ApellidosNombreRazonSocial>
                <
CodigoPostal>22050</CodigoPostal>
                <
Direccion>CLMenor77203040 Mod</Direccion>
            </
IDDestinatario>
        </
Destinatarios>
        <
VariosDestinatarios>N</VariosDestinatarios>
        <
EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
    </
Sujetos>
    <
Factura>
        <
CabeceraFactura>
            <
SerieFactura/>
            <
NumFactura>5</NumFactura>
            <
FechaExpedicionFactura>20-04-2021</FechaExpedicionFactura>
            <
HoraExpedicionFactura>00:00:00</HoraExpedicionFactura>
            <
FacturaSimplificada>N</FacturaSimplificada>
            <
FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
        </
CabeceraFactura>
        <
DatosFactura>
            <
DescripcionFactura>Factura de ejemplos 1</DescripcionFactura>
            <
DetallesFactura>
                <
IDDetalleFactura>
                    <
DescripcionDetalle/>
                    <
Cantidad>1.00</Cantidad>
                    <
ImporteUnitario>55.00000000</ImporteUnitario>
                    <
Descuento>0.00</Descuento>
                    <
ImporteTotal>66.55</ImporteTotal>
                </
IDDetalleFactura>
            </
DetallesFactura>
            <
ImporteTotalFactura>66.55</ImporteTotalFactura>
            <
Claves>
                <
IDClave>
                    <
ClaveRegimenIvaOpTrascendencia>51</ClaveRegimenIvaOpTrascendencia>
                </
IDClave>
            </
Claves>
        </
DatosFactura>
        <
TipoDesglose>
            <
DesgloseFactura>
                <
Sujeta>
                    <
NoExenta>
                        <
DetalleNoExenta>
                            <
TipoNoExenta>S1</TipoNoExenta>
                            <
DesgloseIVA>
                                <
DetalleIVA>
                                    <
BaseImponible>55.00</BaseImponible>
                                    <
TipoImpositivo>21.00</TipoImpositivo>
                                    <
CuotaImpuesto>11.55</CuotaImpuesto>
                                    <
TipoRecargoEquivalencia>0.00</TipoRecargoEquivalencia>
                                    <
CuotaRecargoEquivalencia>0.00</CuotaRecargoEquivalencia>
                                    <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>S</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                                </
DetalleIVA>
                            </
DesgloseIVA>
                        </
DetalleNoExenta>
                    </
NoExenta>
                </
Sujeta>
            </
DesgloseFactura>
        </
TipoDesglose>
    </
Factura


tejano 08-07-2021 17:40:17

Facturas Recibidas-Serie
 
Hola, habéis enviado facturas recibidas de proveedores en la DFB?
Estoy enviando facturas recibidas y veo 2 problemas, el número de factura de Amazon es de más de 20 caracteres y el LROE de las recibidas solo permite 20 caracteres... como estáis solucionando esto?
Por otra parte, cuando hay una rectificativa de una factura recibida, hay que poner el número de serie de la factura rectificativa, pero solo sabemos el número completo, no se sabe a que parte corresponde a la serie de factura y que parte al número de factura.

No sé si es que todavía no lo tienen totalmente desarrollado, o que puede ser....

Saludos

CMB 08-07-2021 18:31:24

¿Como se identifica una factura en el servidor de TicketBai?
 
1 Archivos Adjunto(s)
He hecho una pequeña prueba usando uno de los ficheros de ejemplo de Batuz, y enviándolo al servidor de prueba de Gipuzkoa. El fichero Ejemplo_TicketBAI_79732487C_A2022_0399.xml está ligeramente modificado para cumplir con la spec actual de Gipuzkoa (se ha modificado las fechas para que no estén en el futuro, y se ha añadido la sección <DetallesFactura>).


Esta es la línea de comandos que uso para enviarlo:


Código:

curl.exe --data-binary @Ejemplo_TicketBAI_79732487C_A2022_0399.xml --cert-type P12 --cert sello_entidad_act.p12:IZProd2021 -H "Content-Type: application/xml;charset=UTF8" -X POST https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta
Y esta es la respuesta del servidor:



Código PHP:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <FechaRecepcion>08-07-2021 18:24:48</FechaRecepcion>
        <Estado>01</Estado>
        <Descripcion>Rechazado</Descripcion>
        <Azalpena>Baztertua</Azalpena>
        <ResultadosValidacion>
            <Codigo>005</Codigo>
            <Descripcion>Error: Fichero de alta TicketBAI ya registrado en el sistema.</Descripcion>
            <Azalpena>Errorea: TicketBAI fitxategia sisteman erregistratuta dago jada.</Azalpena>
        </ResultadosValidacion>
    </Salida>
</ns2:TicketBaiResponse>

Mi duda es la siguiente: No me sorprende que este fichero ya esté registrado (está claro que no soy el primero al que se le ocurre hacer esto), no obstante lo que me gustaría saber es qué criterio usan para determinar que una factura está duplicada. ¿Alguien tiene una idea?


He probado cambiar la serie y número de factura, sin éxito. También eliminar el encadenamiento (campo <EncadenamientoFacturaAnterior>) pero obtengo el mismo resultado.


Curiosamente no parece que al servidor le importe que tras todos estos cambios la firma en <ds:Signature> siga siendo la misma (aparentemente, esta comprobación es posterior).

HerensugeBeltz 09-07-2021 08:40:55

Cita:

Empezado por CMB (Mensaje 541685)
Mi duda es la siguiente: No me sorprende que este fichero ya esté registrado (está claro que no soy el primero al que se le ocurre hacer esto), no obstante lo que me gustaría saber es qué criterio usan para determinar que una factura está duplicada. ¿Alguien tiene una idea?

Te adjunto la respuesta de la Hacienda Foral a tu pregunta:

Egun on, buenos días

La validación que comprueba que una factura no esté ya enviada a TicketBAI y no suponga una duplicación comprueba que no exista otra factura con la misma clave funcional. Es decir que no contenga los mismos valores en los siguientes campos:

• NIF- Emisor + Serie + Numero + FechaExpedición

Si cambia la serie cambia la clave funcional, por lo que se considera otra factura. Es decir, MISERIE21-001 y MISERIE22-001 son dos facturas distintas.

Si no indica la serie, puede repetirse el número de factura pero la fecha de expedición ha de ser diferente.

Izan ongi,

tejano 09-07-2021 09:06:04

Cita:

Empezado por HerensugeBeltz (Mensaje 541696)
Te adjunto la respuesta de la Hacienda Foral a tu pregunta:

Egun on, buenos días

La validación que comprueba que una factura no esté ya enviada a TicketBAI y no suponga una duplicación comprueba que no exista otra factura con la misma clave funcional. Es decir que no contenga los mismos valores en los siguientes campos:

• NIF- Emisor + Serie + Numero + FechaExpedición

Si cambia la serie cambia la clave funcional, por lo que se considera otra factura. Es decir, MISERIE21-001 y MISERIE22-001 son dos facturas distintas.

Si no indica la serie, puede repetirse el número de factura pero la fecha de expedición ha de ser diferente.

Izan ongi,

Es decir, que si soy un "cabrón" y emito 50.000 facturas en el LROE de recibidas de Iberdrola, aunque no sean para mí, pero pongo como que sí, con su número y fecha porque quiero fastidiar el sistema. El resto de personas ya no van a poder enviarlas como recibidas??

JoseLeeTo 09-07-2021 09:10:21

Cita:

Empezado por tejano (Mensaje 541684)
Hola, habéis enviado facturas recibidas de proveedores en la DFB?
Estoy enviando facturas recibidas y veo 2 problemas, el número de factura de Amazon es de más de 20 caracteres y el LROE de las recibidas solo permite 20 caracteres... como estáis solucionando esto?
Por otra parte, cuando hay una rectificativa de una factura recibida, hay que poner el número de serie de la factura rectificativa, pero solo sabemos el número completo, no se sabe a que parte corresponde a la serie de factura y que parte al número de factura.

No sé si es que todavía no lo tienen totalmente desarrollado, o que puede ser....

Saludos


Hola. Sí que está desarrollado, tanto en Gastos con Factura como con los Gastos Sin Factura.
En el caso de los 20 caracteres, yo lo que hago es cortar la cadena a 20. No puedes hacer otra cosa.
Con el tema de la rectificativa, lo desconozco al igual que tú.
Lo que hago es subirla como si no fuese rectificativa, es decir, como si fuese una factura normal (que lo es).

JoseLeeTo 09-07-2021 09:11:46

Cita:

Empezado por tejano (Mensaje 541697)
Es decir, que si soy un "cabrón" y emito 50.000 facturas en el LROE de recibidas de Iberdrola, aunque no sean para mí, pero pongo como que sí, con su número y fecha porque quiero fastidiar el sistema. El resto de personas ya no van a poder enviarlas como recibidas??

Hombre, si todos tuviésemos el mismo NIF..... pero no es el caso.

tejano 09-07-2021 09:21:18

Cita:

Empezado por JoseLeeTo (Mensaje 541699)
Hombre, si todos tuviésemos el mismo NIF..... pero no es el caso.

Pensaba que estabais hablando de las facturas recibidas.

No sé si pondrán problemas si 2 CIF diferentes emiten en el LROE el mismo número de factura recibida, CIF EMISOR+SERIE+NUMERO+FECHA EXPEDICION, pero con diferentes CIF RECEPCTORES.

edari 09-07-2021 09:47:09

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 541681)
¿Te refieres a esto?


Código PHP:

<Cabecera>
        <
IDVersionTBAI>1.2</IDVersionTBAI>
    </
Cabecera>
    <
Sujetos>
        <
Emisor>
            <
NIF>J69552834</NIF>
            <
ApellidosNombreRazonSocial>Empresa de Test</ApellidosNombreRazonSocial>
        </
Emisor>
        <
Destinatarios>
            <
IDDestinatario>
                <
NIF>A86868189</NIF>
                <
ApellidosNombreRazonSocial>C1</ApellidosNombreRazonSocial>
                <
CodigoPostal>22050</CodigoPostal>
                <
Direccion>CLMenor77203040 Mod</Direccion>
            </
IDDestinatario>
        </
Destinatarios>
        <
VariosDestinatarios>N</VariosDestinatarios>
        <
EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
    </
Sujetos>
    <
Factura>
        <
CabeceraFactura>
            <
SerieFactura/>
            <
NumFactura>5</NumFactura>
            <
FechaExpedicionFactura>20-04-2021</FechaExpedicionFactura>
            <
HoraExpedicionFactura>00:00:00</HoraExpedicionFactura>
            <
FacturaSimplificada>N</FacturaSimplificada>
            <
FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
        </
CabeceraFactura>
        <
DatosFactura>
            <
DescripcionFactura>Factura de ejemplos 1</DescripcionFactura>
            <
DetallesFactura>
                <
IDDetalleFactura>
                    <
DescripcionDetalle/>
                    <
Cantidad>1.00</Cantidad>
                    <
ImporteUnitario>55.00000000</ImporteUnitario>
                    <
Descuento>0.00</Descuento>
                    <
ImporteTotal>66.55</ImporteTotal>
                </
IDDetalleFactura>
            </
DetallesFactura>
            <
ImporteTotalFactura>66.55</ImporteTotalFactura>
            <
Claves>
                <
IDClave>
                    <
ClaveRegimenIvaOpTrascendencia>51</ClaveRegimenIvaOpTrascendencia>
                </
IDClave>
            </
Claves>
        </
DatosFactura>
        <
TipoDesglose>
            <
DesgloseFactura>
                <
Sujeta>
                    <
NoExenta>
                        <
DetalleNoExenta>
                            <
TipoNoExenta>S1</TipoNoExenta>
                            <
DesgloseIVA>
                                <
DetalleIVA>
                                    <
BaseImponible>55.00</BaseImponible>
                                    <
TipoImpositivo>21.00</TipoImpositivo>
                                    <
CuotaImpuesto>11.55</CuotaImpuesto>
                                    <
TipoRecargoEquivalencia>0.00</TipoRecargoEquivalencia>
                                    <
CuotaRecargoEquivalencia>0.00</CuotaRecargoEquivalencia>
                                    <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>S</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                                </
DetalleIVA>
                            </
DesgloseIVA>
                        </
DetalleNoExenta>
                    </
NoExenta>
                </
Sujeta>
            </
DesgloseFactura>
        </
TipoDesglose>
    </
Factura



Sí gracias, Neftali. Eso quería.

Pues lo tengo prácticamnente igual. Tengo una duda con la primera línea. Te pongo mi fichero

Código PHP:

<?xml version="1.0" encoding="UTF-8"?><T:TicketBai xmlns:T="urn:ticketbai:emision">
<Cabecera>
<IDVersionTBAI>1.2</IDVersionTBAI>
</Cabecera>
<Sujetos>
<Emisor>
<NIF>nif empresa facturadoara6</NIF>
<ApellidosNombreRazonSocial>EDARI</ApellidosNombreRazonSocial>
</Emisor>
<Destinatarios>
<IDDestinatario>
<NIF>nif cliente</NIF>
<ApellidosNombreRazonSocial>nombre cliente</ApellidosNombreRazonSocial>
</IDDestinatario>
</Destinatarios>
<VariosDestinatarios>N</VariosDestinatarios>
<EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
</Sujetos>
<Factura>
<CabeceraFactura>
<SerieFactura>02</SerieFactura>
<NumFactura>1000035</NumFactura>
<FechaExpedicionFactura>01-07-2021</FechaExpedicionFactura>
<HoraExpedicionFactura>00:06:28</HoraExpedicionFactura>
<FacturaSimplificada>N</FacturaSimplificada>
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
</CabeceraFactura>
<DatosFactura>
<DescripcionFactura>factura a cliente</DescripcionFactura>
<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>BARRIL DAMM</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>40.00</ImporteUnitario>
<Descuento>0.00</Descuento>
<ImporteTotal>40.00</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>
<ImporteTotalFactura>50.48</ImporteTotalFactura>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
</DatosFactura>
<TipoDesglose>
<DesgloseFactura>
<Sujeta>
<NoExenta>
<DetalleNoExenta>
<TipoNoExenta>S1</TipoNoExenta>
<DesgloseIVA>
<DetalleIVA>
<BaseImponible>40.00</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaImpuesto>8.40</CuotaImpuesto>
<TipoRecargoEquivalencia>05.20</TipoRecargoEquivalencia>
<CuotaRecargoEquivalencia>2.08</CuotaRecargoEquivalencia>
</DetalleIVA>
</DesgloseIVA>
</DetalleNoExenta>
</NoExenta>
</Sujeta>
</DesgloseFactura>
</TipoDesglose>
</Factura>
<HuellaTBAI>
<Software>
<LicenciaTBAI>mi licencia como empresa</LicenciaTBAI>
<EntidadDesarrolladora>
<NIF>nuestro nif</NIF>
</EntidadDesarrolladora>
<Nombre>EDARI</Nombre>
<Version>1.0</Version>
</Software>
<NumSerieDispositivo>el numero de serie de mi dispositivo</NumSerieDispositivo>
</HuellaTBAI>
</T:TicketBai>

Lo firmo desde símbolo de comando con

\autofirma\autofirma\autofirmacommandline.exe sign -i FACTURA.XML -o FACTURA_FIRMADA.XML -store pkcs12:\CERTIFICADO\MI_CERTIFICADO_DE_DISPOSITIVO.p12 -password MI_PASSWD -filter \CERTIFICADO\MI_CERTIFICADO_DE_DISPOSITIVO.p12 -format xades -xml -config "format=XAdES Enveloped \npolicyIdentifier=identificativo \npolicyIdentifierHash=codigo_HASH \npolicyIdentifierHashAlgorithm=h t t p ://w w w .w3.org/2001/04/xmlenc#sha256 \npolicyQualifier=identificativo

El certificado de dispositivo lo bajamos de Izenpe para la máquina donde hago las pruebas

Al lanzarlo me da este mensaje, que aunque da algunos errores al final dice que lo ha generado bien

...
GRAVE: No se ha podido establecer la propiedad de seguridad en la factoria XML
java.lang.IllegalArgumentException: La propiedad "h t t p ://javax.xml.XMLConstants/property/accessExternalStylesheet" no se ha reconocido.
at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl.setAttribute(Unknown Source)
at es.gob.afirma.signers.xades.XAdESUtil.<clinit>(XAdESUtil.java:97)
at es.gob.afirma.signers.xades.XAdESSigner.sign(XAdESSigner.java:429)
at es.gob.afirma.signers.xades.AOXAdESSigner.sign(AOXAdESSigner.java:405)
at es.gob.afirma.standalone.CommandLineLauncher.sign(CommandLineLauncher.java:797)
at es.gob.afirma.standalone.CommandLineLauncher.signByCommandLine(CommandLineLauncher.java:624)
at es.gob.afirma.standalone.CommandLineLauncher.processCommandLine(CommandLineLauncher.java:152)
at es.gob.afirma.standalone.CommandLineLauncher.main(CommandLineLauncher.java:1006)
at es.gob.afirma.standalone.SimpleAfirma.main(SimpleAfirma.java:573)

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See h t t p://w w w.slf4j.org/codes.html#StaticLoggerBinder for further details.
<afirma><result>true</result><response><msg>La operacion ha terminado correctamente </msg></response></afirma>

y lanzo el curl con

curl.exe --data-binary @FACTURA_FIRMADA.XML --cert-type P12 --cert certificadodispositivo.p12:230175 -H "Content-Type: application/xml;charset=UTF8" -X POST h t t p s://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta -o RESPUESTA.XML

Y siempre me da este error

<Codigo>002</Codigo>

<Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. Detalle del error: cvc-datatype-valid.1.2.1: 'codigo_HASH' is not a valid value for 'base64Binary'.</Descripcion>


Gracias de nuevo

sEngine 09-07-2021 10:00:01

Estas poniendo los valores correspondientes en codigo_hash y demas al firmarlo? Porque por el error parece que estes poniendo la variable sin mas

Por ejemplo el codigo hash de guipuzkoa es 6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0=

JoseLeeTo 09-07-2021 10:03:45

Cita:

Empezado por tejano (Mensaje 541700)
Pensaba que estabais hablando de las facturas recibidas.

No sé si pondrán problemas si 2 CIF diferentes emiten en el LROE el mismo número de factura recibida, CIF EMISOR+SERIE+NUMERO+FECHA EXPEDICION, pero con diferentes CIF RECEPCTORES.

La factura recibida (o de gasto), la recibe el obligado tributario. Es decir, la factura de Gasto que le llega (luz, agua, gas....), tendrá un número de factura del proveedor, pero lo que aparece en la cabecera del XML, es el obligado tributario. La empresa que en este caso va a pagar dicha factura de gasto o factura recibida.
No puede existir varios CIF o NIF receptores de una misma factura. Será el NIF del obligado tributario, al que se supone que se están asignando dichas facturas (por el tema de declaración de IVA o IRPF), y que es quien va a mandar a Batuz dichas facturas de gasto que ha recibido.

Las facturas que emita el obligado tributario, tendrá que enviarlas de igual forma, pero siempre con un solo NIF, el suyo.

Neftali [Germán.Estévez] 09-07-2021 10:11:31

Cita:

Empezado por tejano (Mensaje 541697)
Es decir, que si soy un "cabrón" y emito 50.000 facturas en el LROE de recibidas de Iberdrola, aunque no sean para mí, pero pongo como que sí, con su número y fecha porque quiero fastidiar el sistema. El resto de personas ya no van a poder enviarlas como recibidas??


Bueno, supongo que de eso se trata.
En algun momento alguien validará las facturas que "envía" Iberdrola como emitidas y las que "envían" el resto de empresas como recibidas. Y eso debe "cuadrar".

Si tú envías esas facturas y otra empresa las envía se detectará la duplicidad (que de eso se trata).
Y a tí te caerá un puro por enviar como "recibidas" cosas que no has recibido... :D:D:D:D

Neftali [Germán.Estévez] 09-07-2021 10:12:45

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 541705)
Y a tí te caerá un puro por enviar como "recibidas" cosas que no has recibido... :D:D:D:D


Al final siempre acabamos en los mismo...

Cuando hay un error, le "cae un puro" a alguien y $$$$$$$$$$ :cool:
(multa al canto y a recaudar)

JoseLeeTo 09-07-2021 10:29:17

Alava
 
Hola a tod@s;

He preguntado a Álava acerca de las especificaciones técnicas, y me han respondido que esperan que para Septiembre :D:D:D:D esperan tenerlo todo listo y publicarlas en la Web.

Me dijeron lo mismo hace meses y que esperaban que para Junio estuviese.... Ahora es para Septiembre.

....
Se admiten apuestas.

Sistel 09-07-2021 11:39:00

Cita:

Empezado por JoseLeeTo (Mensaje 541707)
Hola a tod@s;

He preguntado a Álava acerca de las especificaciones técnicas, y me han respondido que esperan que para Septiembre :D:D:D:D esperan tenerlo todo listo y publicarlas en la Web.

Me dijeron lo mismo hace meses y que esperaban que para Junio estuviese.... Ahora es para Septiembre.

....
Se admiten apuestas.

Hola,

Eso de las apuestas, déjaselo al colega Key que tiene unos "pálpitos" muy atinados :D:D:D

https://www.clubdelphi.com/foros/sho...&postcount=862

Saludos

edari 09-07-2021 11:59:57

Cita:

Empezado por sEngine (Mensaje 541703)
Estas poniendo los valores correspondientes en codigo_hash y demas al firmarlo? Porque por el error parece que estes poniendo la variable sin mas

Por ejemplo el codigo hash de guipuzkoa es 6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0=


Error de novato.



Vi la string entera y no cai en el que el hash era un código


Gracias

Eric Mtz 09-07-2021 12:55:24

¡Muy buenas a todos!, ¿Cómo lo lleváis?, llevo un par de días callado observando desde las sombras. (Insertar risa diabólica)

Bueno, volviendo a nuestro odio común, sigo con lo de usar el DNI a modo de certificado en el envío del 140 a quien no debe de ser nombrado.

Os pongo en situación de manera teatral:

Ubicación: Foro TBAI
Pregunta: #934
Usuario: HerensugeBeltz
Hora: Indefinida (Solo pone "Hace 2 Días")
Música: Alguna de ascensor... nose... de esas que se ponen en bucle y que ralentizan el ascenso de lo repetitivas que son.

Cita:

En mis pruebas yo utilizo el certificado de mi DNI electrónico, que exporté a un .pfx e instalé en el almacén de certificados de Windows.
Vuelvo a retomar mi soliloquio, ¿Cómo has exportado el certificado del DNI a .pfx?, he estado googleando pero no encuentro nah, tengo conectado mi DNI al PC con un cacharro de esos que te lo leen y hasta solicité el certificado de persona física pero no he obtenido buenos resultados con ninguno de mis intentos.

Si alguien puede aportar algo que acuda a la caja de comentarios por favor. (Eso ha sonado muy supermercado).

Bueno, pues esto ha sido todo señores, cómo veis, ahora puedo insertar sonidos en mis mensajes gracias al poder de la imaginación, en fin, gracias por leer una vez mas mis dudas, pasad un buen fin de semana.

tejano 09-07-2021 14:34:53

Cita:

Empezado por tejano (Mensaje 541684)
Hola, habéis enviado facturas recibidas de proveedores en la DFB?
Estoy enviando facturas recibidas y veo 2 problemas, el número de factura de Amazon es de más de 20 caracteres y el LROE de las recibidas solo permite 20 caracteres... como estáis solucionando esto?
Por otra parte, cuando hay una rectificativa de una factura recibida, hay que poner el número de serie de la factura rectificativa, pero solo sabemos el número completo, no se sabe a que parte corresponde a la serie de factura y que parte al número de factura.

No sé si es que todavía no lo tienen totalmente desarrollado, o que puede ser....

Saludos

Solucionado!!!! La serie que piden en el caso de factura rectificativa es la del número de factura. De momento, y espero que lo solucionen, he puesto "_" en la serie y parece que funciona.

No es como me gustaría hacerlo, pero......

tejano 09-07-2021 14:52:26

Cita:

Empezado por Eric Mtz (Mensaje 541710)
¡Muy buenas a todos!, ¿Cómo lo lleváis?, llevo un par de días callado observando desde las sombras. (Insertar risa diabólica)

Bueno, volviendo a nuestro odio común, sigo con lo de usar el DNI a modo de certificado en el envío del 140 a quien no debe de ser nombrado.

Os pongo en situación de manera teatral:

Ubicación: Foro TBAI
Pregunta: #934
Usuario: HerensugeBeltz
Hora: Indefinida (Solo pone "Hace 2 Días")
Música: Alguna de ascensor... nose... de esas que se ponen en bucle y que ralentizan el ascenso de lo repetitivas que son.



Vuelvo a retomar mi soliloquio, ¿Cómo has exportado el certificado del DNI a .pfx?, he estado googleando pero no encuentro nah, tengo conectado mi DNI al PC con un cacharro de esos que te lo leen y hasta solicité el certificado de persona física pero no he obtenido buenos resultados con ninguno de mis intentos.

Si alguien puede aportar algo que acuda a la caja de comentarios por favor. (Eso ha sonado muy supermercado).

Bueno, pues esto ha sido todo señores, cómo veis, ahora puedo insertar sonidos en mis mensajes gracias al poder de la imaginación, en fin, gracias por leer una vez mas mis dudas, pasad un buen fin de semana.

De momento hasta que no tengas el certificado, utiliza el certificado de producción de Izenpe.

Si miras unas páginas arriba, tienes dónde localizarlo.

https://www.izenpe.eus/web_corporati...ificados.shtml

Saludos

b4aronDeLaBirr4 12-07-2021 10:03:57

Buenas!

¿Pero os están funcionando los certificados de Izenpe? Porque a mí me está devolviendo:

"Certificado remitente incorrecto (revocado o no homologado)" tanto por Postman como por cUrl.

Eric Mtz 12-07-2021 10:17:11

Cita:

Empezado por b4aronDeLaBirr4 (Mensaje 541719)
Buenas!

¿Pero os están funcionando los certificados de Izenpe? Porque a mí me está devolviendo:

"Certificado remitente incorrecto (revocado o no homologado)" tanto por Postman como por cUrl.


Me sumo al señor barón de la birra, esos certificados los probé hace dos lunas y no logré nada. (No descarto que esté haciendo algo mal, pero es que solo me la pego con el 140... malditas personas físicas, están destrozando TBAI).

Un saludo a todos, ¿Que tal os va el lunes?

sEngine 12-07-2021 10:30:58

Yo he conseguido que me funcionen con uno de los de desarrollo (es con el que estoy probando). El sello_entidad_act.p12

b4aronDeLaBirr4 12-07-2021 11:15:05

Anda pues voy a probar con el sello_entidad_act.p12 de desarrollo, a ver si hay suerte...

Y respondiendo a Eric:
Cita:

Un saludo a todos, ¿Que tal os va el lunes?
Pues bueno, dando palos de ciego con este gran avance de la civilización que es TicketBAI ya sabes... Que os sea leve el lunes!

b4aronDeLaBirr4 12-07-2021 13:07:55

Pues me ha dado recibido por fin, mi Hello World! de TicketBAI. (Usando el sello_entidad_act.p12 de desarrollo de Izenpe) con la siguiente respuesta:

Código PHP:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
    <Salida>
        <IdentificadorTBAI>TBAI-79732487C-070721-KdxKFNXeNJuBZ-063</IdentificadorTBAI>
        <FechaRecepcion>12-07-2021 12:54:51</FechaRecepcion>
        <Estado>00</Estado>
        <Descripcion>Recibido</Descripcion>
        <Azalpena>Jasota</Azalpena>
        <ResultadosValidacion>
            <Codigo>008</Codigo>
            <Descripcion>El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Descripcion>
            <Azalpena>El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Azalpena>
        </ResultadosValidacion>
        <ResultadosValidacion>
            <Codigo>010</Codigo>
            <Descripcion>Aviso: Posible error de encadenamiento.</Descripcion>
            <Azalpena>Abisua: Litekeena da kateamendu errorea gertatzea.</Azalpena>
        </ResultadosValidacion>
        <ResultadosValidacion>
            <Codigo>012</Codigo>
            <Descripcion>Aviso: Error en verificación alta-inscripción software TicketBAI: los datos de registro no coinciden.</Descripcion>
            <Azalpena>Abisua: Errorea TicketBAI softwarearen alta-inskripzioa egiaztatzean: erregistroko datuak ez datoz bat</Azalpena>
        </ResultadosValidacion>
        <CSV>TBAI9121b41c-8c0c-4b82-b54c-a734446cb210</CSV>
    </Salida>
</ns2:TicketBaiResponse>


b4aronDeLaBirr4 12-07-2021 17:09:48

Una pregunta sobre la firma del documento xml e independientemente de la tecnología o lenguaje para firmar dicho documento... ¿Qué formato o tipo de firma se tiene que aplicar? Más que nada por ver qué buscar por ahí dedicado a .NET. He leído en el pdf de política de firma algo del formato XaDes... ¿Alguien que me pueda echar una mano con el concepto de qué necesito para firmar el XML con el certificado?

batuzail 12-07-2021 18:14:31

Firmar xml con Chilkat
 
Hola,
Estoy usando los componentes de chilkat, he generado el xml pero a la hora firmarlo estoy usando el ejemplo que hay para factura electronica, pero creo que no es lo mismo, alguien que lo tenga funcionando puede indicarme como hacerlo o algún ejemplo?


Saludos

Sistel 12-07-2021 18:20:24

Cita:

Empezado por b4aronDeLaBirr4 (Mensaje 541729)
Una pregunta sobre la firma del documento xml e independientemente de la tecnología o lenguaje para firmar dicho documento... ¿Qué formato o tipo de firma se tiene que aplicar? Más que nada por ver qué buscar por ahí dedicado a .NET. He leído en el pdf de política de firma algo del formato XaDes... ¿Alguien que me pueda echar una mano con el concepto de qué necesito para firmar el XML con el certificado?

Hola b4aronDeLaBirr4,

Efectivamente, debe ser formato XAdES Enveloped.
Tienes todo sobre la firma requerida en https://www.batuz.eus/fitxategiak/ba...onica_v1_0.pdf

Saludos

Galaxian 12-07-2021 19:26:23

Cita:

Empezado por batuzail (Mensaje 541731)
Hola,
Estoy usando los componentes de chilkat, he generado el xml pero a la hora firmarlo estoy usando el ejemplo que hay para factura electronica, pero creo que no es lo mismo, alguien que lo tenga funcionando puede indicarme como hacerlo o algún ejemplo?


Saludos

Échale un vistazo a esto: https://tools.chilkat.io/xmlDsigGen.cshtml

Solo tienes que coger la firma de uno de los ejemplos de TBAI y pegarla en la ventana. Después de generar la firma digital (la clava) puedes usar el ejemplo de factura-e para enviarlo.


La franja horaria es GMT +2. Ahora son las 05:52:35.

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