Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2021
Elyas Elyas is offline
Registrado
 
Registrado: mar 2021
Posts: 6
Poder: 0
Elyas Va por buen camino
Yo sigo liado con los encadenamientos xDD, cuál de estos supuestos vale y cuál de estos ,no?

Pj.

Sería correcto hacerlo así OPCION A:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazadas (pj por fallo del sistema ticketbai)
3.Registramos la factura 003 y la encadenamos a la última factura recibida en TicketBAI, la 001, recibida
4.Se arregla el error y ahora volvemos a mandar la 002 encadenando a la última factura registrada en ticketbai, la 003.

O hay que hacerlo tal que así OPCIÓN B:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazada (pj por fallo del sistema ticketbai)
3.Registramos la factura 003, encadenando a la 002, obtenemos el warning.
4.Volvemos a enviar la 002 encadenada a la 001.

p.d. me han dichos los de ticketbai que van a sacar pronto nueva versión con opción de subsanar facturas. cómo es posible que a estas alturas metan nuevas funciones posiblemente tan vitales? en fin
Responder Con Cita
  #2  
Antiguo 05-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 132
Poder: 6
tejano Va por buen camino
Factura encadenada

Cita:
Empezado por Elyas Ver Mensaje
Yo sigo liado con los encadenamientos xDD, cuál de estos supuestos vale y cuál de estos ,no?

Pj.

Sería correcto hacerlo así OPCION A:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazadas (pj por fallo del sistema ticketbai)
3.Registramos la factura 003 y la encadenamos a la última factura recibida en TicketBAI, la 001, recibida
4.Se arregla el error y ahora volvemos a mandar la 002 encadenando a la última factura registrada en ticketbai, la 003.

O hay que hacerlo tal que así OPCIÓN B:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazada (pj por fallo del sistema ticketbai)
3.Registramos la factura 003, encadenando a la 002, obtenemos el warning.
4.Volvemos a enviar la 002 encadenada a la 001.

p.d. me han dichos los de ticketbai que van a sacar pronto nueva versión con opción de subsanar facturas. cómo es posible que a estas alturas metan nuevas funciones posiblemente tan vitales? en fin
Os adjunto respuesta de Batuz con respuesta a las encadenadas. Nosotros tenemos varias delegaciones y cada delegación una serie de factura y no tienen las facturas del resto de delegaciones, por lo que el encadenamiento lo vamos a realizar en base a la serie.

Contestación de Batuz:

El sistema TicketBAI implica que cada factura debe identificar la factura anterior (serie, número, fecha y 100 primeros caracteres de la firma). Aunque en el esquema del fichero TicketBAI estos campos no son obligatorios, esta circunstancia se debe a que existen varias situaciones en los que este requisito no es exigible (p. ej. la primera factura, o en caso de rotura del dispositivo).

El cumplimiento del requisito de encadenamiento depende de la forma de funcionamiento del sistema de facturación:
- Si un mismo dispositivo emite facturas de diferentes series, el requisito de encadenamiento debe identificar la factura anterior expedida, con independencia de la serie (por ejemplo, a una factura de una serie ordinaria le puede preceder una factura rectificativa de otra serie).
- Igualmente, si el sistema de facturación es un sistema centralizado que genera las series y los números de facturación, con independencia del dispositivo que se esté utilizando, el encadenamiento se refiere a la última factura expedida por el sistema.
En concreto, “Haz tu factura” funcionaría como un sistema de facturación “centralizado”, por lo que encadena las facturas independientemente de la serie.
- No obstante, si existen diferentes dispositivos o centros de facturación, los cuales sólo expiden facturas dentro de una serie específica para cada dispositivo o centro, el encadenamiento se produce dentro de cada serie.
Este último parece ser el caso al que se refiere la pregunta planteada.
Responder Con Cita
  #3  
Antiguo 07-05-2021
Noe277 Noe277 is offline
Miembro
 
Registrado: jul 2017
Posts: 162
Poder: 9
Noe277 Va por buen camino
Estoy teniendo muchos problemas a la hora de firmar las facturas, ¿Alguien lo ha conseguido en C#?

Empecé adaptando la aplicación que ofrecen en PAe y he logrado firmar XMLs con una estructura muy similar a la que muestran en el ejemplo oficial, no obstante algunas etiquetas como "<DataObjectFormat>" parecen tener algunos campos distintos, (Podría ser un problema) pero en general creo que podría dar el pego.

El caso es que siempre recibo el siguiente error:
"org.apache.axis.types.URI$MalformedURIException: No scheme found in URI"

Lo que no es de extrañar ya que el campo donde se encuentra la URI <xades:Identifier> y los tres de la política de firma no hay donde entenderlos, en cada documento dicen unos valores distintos...

Actualmente la política la genero así:

Código:
						<xades:SignaturePolicyIdentifier>
							<xades:SignaturePolicyId>
								<xades:SigPolicyId>
									<xades:Identifier>Politica de firma TicketBAI 1.0</xades:Identifier>
									<xades:Description/>
								</xades:SigPolicyId>
								<xades:SigPolicyHash>
									<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
									<ds:DigestValue>6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0=</ds:DigestValue>
								</xades:SigPolicyHash>
								<xades:SigPolicyQualifiers>
									<xades:SigPolicyQualifier>
										<xades:SPURI>https://www.gipuzkoa.eus/documents/2456431/12093238/TicketBAI_Pol%C3%ADtica_firma_v_1_0.pdf/3c6e5431-bb1d-34ed-5b26-206aaf085452</xades:SPURI>
									</xades:SigPolicyQualifier>
								</xades:SigPolicyQualifiers>
							</xades:SignaturePolicyId>
						</xades:SignaturePolicyIdentifier>
Algunas preguntas
¿Qué datos insertasteis?, ¿Usasteis algún algoritmo concreto?, ¿Dónde hay documentación medio clara sobre el tema?

En fin, cualquier ayuda es bien recibida, gracias de antemano.
Responder Con Cita
  #4  
Antiguo 07-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 62
Poder: 7
bilbur Va por buen camino
Cita:
Empezado por Noe277 Ver Mensaje
Estoy teniendo muchos problemas a la hora de firmar las facturas, ¿Alguien lo ha conseguido en C#?...

El caso es que siempre recibo el siguiente error:
"org.apache.axis.types.URI$MalformedURIException: No scheme found in URI"

En fin, cualquier ayuda es bien recibida, gracias de antemano.
Prueba a quitar los acentos o utiliza otra url


"url" => "https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf",

Suerte
Responder Con Cita
  #5  
Antiguo 12-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Firmar xml ticketBAI utilizando c#

Hola, yo también estoy intentando firmar las facturas para tickeBAI en C# y no consigo que me acepten la factura como válida.

Código:
<?xml version="1.0" encoding="utf-8"?>
       <ResultadosValidacion>
        <Codigo>008</Codigo>
        <Descripcion>El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="#Signature509508-SignedProperties932727" failed to verify. Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Descripcion>
Alguien ha encontrado algún ejemplo en c# para firmar para TicketBAI? No encuentro nada por internet en c#


Coincido con Noe277 en que la documentación no es suficientemente detallada para firmar los xml.



Cualquier ayuda se agradece!

Muchas gracias!




Cita:
Empezado por Noe277 Ver Mensaje
Estoy teniendo muchos problemas a la hora de firmar las facturas, ¿Alguien lo ha conseguido en C#?

Empecé adaptando la aplicación que ofrecen en PAe y he logrado firmar XMLs con una estructura muy similar a la que muestran en el ejemplo oficial, no obstante algunas etiquetas como "<DataObjectFormat>" parecen tener algunos campos distintos, (Podría ser un problema) pero en general creo que podría dar el pego.

El caso es que siempre recibo el siguiente error:
"org.apache.axis.types.URI$MalformedURIException: No scheme found in URI"

Lo que no es de extrañar ya que el campo donde se encuentra la URI <xades:Identifier> y los tres de la política de firma no hay donde entenderlos, en cada documento dicen unos valores distintos...

Actualmente la política la genero así:

Código:
                        <xades:SignaturePolicyIdentifier>
                            <xades:SignaturePolicyId>
                                <xades:SigPolicyId>
                                    <xades:Identifier>Politica de firma TicketBAI 1.0</xades:Identifier>
                                    <xades:Description/>
                                </xades:SigPolicyId>
                                <xades:SigPolicyHash>
                                    <ds:DigestMethod Algorithm="nopuedoponerenlaces"/>
                                    <ds:DigestValue>6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0=</ds:DigestValue>
                                </xades:SigPolicyHash>
                                <xades:SigPolicyQualifiers>
                                    <xades:SigPolicyQualifier>
                                        <xades:SPURI>nopuedoponerenlaces</xades:SPURI>
                                    </xades:SigPolicyQualifier>
                                </xades:SigPolicyQualifiers>
                            </xades:SignaturePolicyId>
                        </xades:SignaturePolicyIdentifier>
Algunas preguntas
¿Qué datos insertasteis?, ¿Usasteis algún algoritmo concreto?, ¿Dónde hay documentación medio clara sobre el tema?

En fin, cualquier ayuda es bien recibida, gracias de antemano.
Responder Con Cita
  #6  
Antiguo 12-05-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por rci Ver Mensaje
Hola, yo también estoy intentando firmar las facturas para tickeBAI en C# y no consigo que me acepten la factura como válida.

<Descripcion>El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="#Signature509508-SignedProperties932727" failed to verify. Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Descripcion>

En esta página hemos hablado de ese error:
https://www.clubdelphi.com/foros/sho...d.php?p=540615

Posible que esté relacionado con la codificación.
Revisa además si tienes caracteres extraños en el mensaje (en la razón social, por ejemplo) como ñáéüç...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 12-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 62
Poder: 7
bilbur Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
En esta página hemos hablado de ese error:
https://www.clubdelphi.com/foros/sho...d.php?p=540615

Posible que esté relacionado con la codificación.
Revisa además si tienes caracteres extraños en el mensaje (en la razón social, por ejemplo) como ñáéüç..
.
En las direcciones que no puedes escribir es posible que tengas acentos en "Política de firma..", en direcciones URI
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices

Espero que sea eso
Responder Con Cita
  #8  
Antiguo 12-05-2021
sline sline is offline
Miembro
 
Registrado: may 2021
Posts: 18
Poder: 0
sline Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
En las direcciones que no puedes escribir es posible que tengas acentos en "Política de firma..", en direcciones URI
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices

Espero que sea eso

no tengo ningún carácter con tilde en el xml.
Responder Con Cita
  #9  
Antiguo 13-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Hola, gracias por las respuestas bilbur y Neftali


Pues sí que va a ser eso de los acentos... al leer vuestras respuestas he revisado la factura que me daba ese error y he visto que en la dirección del cliente había un acento "ú".
He hecho otra factura exactamente igual pero poniendo la letra sin acento y ya no ha dado el error de la firma.


Lo que no acabo de ver es como solucionarlo porque ya estoy haciendo todo lo que proponéis (creo).
1. Al crear el fichero TicketBAI y guardarlo en disco lo hago en UTF8:


Código:
     var encoding = System.Text.Encoding.UTF8;
     FileMgr.Save(Path.Combine(filePath, fileName), xmltbai, encoding, false);
2. Al leer el fichero xml de disco para firmarlo le indico que es UTF8, después de firmar al salvar el xml firmado a disco también:


Código:
     XmlWriterSettings settings = new XmlWriterSettings();
     settings.Encoding = new UTF8Encoding();
     using (var writer = XmlWriter.Create(fileName, settings))
     {
           this.Document.Save(writer);
      }
3. Al leer el fichero xml firmado de disco para enviarlo también le indico UTF8:




Código:
     using (StreamReader sr = new StreamReader(filePath, Encoding.UTF8))
    {
           string content = sr.ReadToEnd();
           return content;
     }
4. Finalmente para enviar también indico UTF8



Código:
   var encoding = Encoding.UTF8;
    byte[] contentBytes = encoding.GetBytes(content);

    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.AllowAutoRedirect = true;
    httpWebRequest.ClientCertificates.Add(certificate);
    httpWebRequest.Method = "POST";
    httpWebRequest.ContentType = "application/xml";
    httpWebRequest.ContentLength = contentBytes.Length;

    var postStream = httpWebRequest.GetRequestStream();
    postStream.Write(contentBytes, 0, contentBytes.Length);
    postStream.Flush();
    postStream.Close();
De todas formas si hay un acento en el XML antes de firmar, da el error de verificación de la firma.

He enviado correos con los dos ficheros y la dos respuestas al correo de consultas técnicas de Gipuzkoa pero... deben estar colapsados porque hace mucho que no me contestan, creo que llevan más de 2 semanas de retraso en las respuestas T_T


También he escrito a Araba preguntando por su entorno de pruebas y me han dicho que lo están desarrollando y que tiene previsto que para septiembre estará operativo :'(


Bueno voy a seguir investigando.


Ya sé que el foro es de Delphi y mi código es c# .net pero bueno, si alguien me puede dar otro consejo lo agradeceré.


Muchas gracias!







Cita:
Empezado por bilbur Ver Mensaje
En las direcciones que no puedes escribir es posible que tengas acentos en "Política de firma..", en direcciones URI
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices

Espero que sea eso
Responder Con Cita
  #10  
Antiguo 05-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Elyas Ver Mensaje
Yo sigo liado con los encadenamientos xDD, cuál de estos supuestos vale y cuál de estos ,no?

Pj.

Sería correcto hacerlo así OPCION A:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazadas (pj por fallo del sistema ticketbai)
3.Registramos la factura 003 y la encadenamos a la última factura recibida en TicketBAI, la 001, recibida
4.Se arregla el error y ahora volvemos a mandar la 002 encadenando a la última factura registrada en ticketbai, la 003.

O hay que hacerlo tal que así OPCIÓN B:

1.Registramos la factura 001, recibida
2.Registramos la factura 002, rechazada (pj por fallo del sistema ticketbai)
3.Registramos la factura 003, encadenando a la 002, obtenemos el warning.
4.Volvemos a enviar la 002 encadenada a la 001.

p.d. me han dichos los de ticketbai que van a sacar pronto nueva versión con opción de subsanar facturas. cómo es posible que a estas alturas metan nuevas funciones posiblemente tan vitales? en fin
Hola Elyas,

Creo que el encadenamiento de las facturas no tiene nada que ver con su envío.
El encadenamiento es algo secuencial (factura emitida a factura emitida) y que se hace en local.
Que luego al enviarlas a Ticketbai (en Gipuzkoa) o por LROE (en Bizkaia) alguna te la dan como incorrecta, es otro tema.

Si sabes cual ha sido el error, siempre podrás generar una anulación de la factura (también encadenada a la última generada) y enviarla.
Y emitir otra nueva (con número siguiente y encadenada a la anterior, como es normal) que sea correcta.

Si, más adelante, habilitan un mecanismo de corrección de facturas enviadas y que han considerado incorrectas, perfecto.
Pero con el mecanismo actual de anulación creo que tienes el tema resuelto.

Saludos
Responder Con Cita
  #11  
Antiguo 05-05-2021
Elyas Elyas is offline
Registrado
 
Registrado: mar 2021
Posts: 6
Poder: 0
Elyas Va por buen camino
Gracias a ambos! se agradece mucho la ayuda!!!!
Responder Con Cita
  #12  
Antiguo 07-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Hola Elyas,

Creo que el encadenamiento de las facturas no tiene nada que ver con su envío.
El encadenamiento es algo secuencial (factura emitida a factura emitida) y que se hace en local.
Que luego al enviarlas a Ticketbai (en Gipuzkoa) o por LROE (en Bizkaia) alguna te la dan como incorrecta, es otro tema.

Si sabes cual ha sido el error, siempre podrás generar una anulación de la factura (también encadenada a la última generada) y enviarla.
Y emitir otra nueva (con número siguiente y encadenada a la anterior, como es normal) que sea correcta.

Si, más adelante, habilitan un mecanismo de corrección de facturas enviadas y que han considerado incorrectas, perfecto.
Pero con el mecanismo actual de anulación creo que tienes el tema resuelto.

Saludos
Hola Elyas,

He releído algo más de la normativa de TicketBAI-LROE y he encontrado otro mecanismo para el caso en que una factura emitida con TicketBAI es rechazada, por incorrecta, cuando se envía, posteriormente, a LROE (Capítulo 1.1 - Facturas emitidas con software garante).
Como la factura no puede volver a emitirse, dan como opción enviar sus datos a LROE en el Capítulo 1.2 Facturas emitidas sin software garante.
Así, cuando Hacienda haga el borrador de la declaración de IVA, tendrá en cuenta todas las facturas emitidas, tanto las que se han transmitido al capítulo 1.1 (las de TicketBAI aceptadas) como las que se han enviado al capítulo 1.2 (las que no se habían aceptado por el capítulo 1.1)

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3716 19-01-2026 20:01:34
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 09:06:24.


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
Copyright 1996-2007 Club Delphi