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)

Sanduzelai 21-11-2022 10:14:13

RECTIFICATIVA por SUSTITUCION
 
Buenas,
tengo un error en algunas facturas enviadas y me dicen que para solucionarlo debo hacer una rectificativa por sustitución y tengo varias dudas:

1. ¿Esta factura rectificativa habría que mandarla a la URL de alta?

2. ¿El bloque de encadenamiento de la factura con errores habría que actualizarlo para que la rectificativa "apunte" a la última enviada o simplemente tendría que cambiar los datos incorrectos y añadir el nodo <FacturaRectificativa>? Esto lo pregunto porque me he dado cuenta del error yo pero las facturas han sido recibidas sin errores y por lo tanto, después de estas, se han enviado otras correctas.

3. En el nodo <FacturaRectificativa> no tengo muy claro que son exactamente los valores que hay que poner en <BaseRectificada> y <CuotaRectificada>. Por ejemplo, si el caso es que he vendido una coca-cola de 2€ ¿qué valores se supone que deberían tener BaseRectificada y CuotaRectificada?


Muchas gracias de antemano, estoy un poco perdido con las rectificativas...

Irreo 21-11-2022 12:00:54

Cita:

Empezado por Sanduzelai (Mensaje 549338)
Buenas,
tengo un error en algunas facturas enviadas y me dicen que para solucionarlo debo hacer una rectificativa por sustitución y tengo varias dudas:

1. ¿Esta factura rectificativa habría que mandarla a la URL de alta?

2. ¿El bloque de encadenamiento de la factura con errores habría que actualizarlo para que la rectificativa "apunte" a la última enviada o simplemente tendría que cambiar los datos incorrectos y añadir el nodo <FacturaRectificativa>? Esto lo pregunto porque me he dado cuenta del error yo pero las facturas han sido recibidas sin errores y por lo tanto, después de estas, se han enviado otras correctas.

3. En el nodo <FacturaRectificativa> no tengo muy claro que son exactamente los valores que hay que poner en <BaseRectificada> y <CuotaRectificada>. Por ejemplo, si el caso es que he vendido una coca-cola de 2€ ¿qué valores se supone que deberían tener BaseRectificada y CuotaRectificada?

Muchas gracias de antemano, estoy un poco perdido con las rectificativas...

1. Las facturas rectificativas son facturas nuevas, por lo tanto, sí, se mandan al servicio ALTA.

2. El encadenamiento debe apuntar siempre a la última factura emitida por ese dispositivo y emisor, independientemente de la serie, de si ha habido errores, etc.
Si lo tienes automático (como debería ser, entiendo) no tienes que actualizar nada... de hecho incluso facturas que den error, sean rechazadas, etc. se tienen en cuenta para el encadenamiento.

3. Cuando la factura es por sustitución, en Base y Cuota rectificadas estás indicando el importe que estás "anulando". En tu caso, si los 2€ son el total de la factura, en la base serían los 2€ sin el IVA, y en la cuota sería el IVA, que entre los dos sumarían 2€.
Con esto, le estás diciendo a Hacienda que 2€ de esa factura sustituida dejan de computar, y la nueva factura emitida quedaría como debería haber sido la anterior, computando todo lo que indiques.

Luego ya las facturas rectificativas por diferencias son otro asunto...

Sanduzelai 22-11-2022 09:15:41

Cita:

Empezado por Irreo (Mensaje 549344)
1. Las facturas rectificativas son facturas nuevas, por lo tanto, sí, se mandan al servicio ALTA.

2. El encadenamiento debe apuntar siempre a la última factura emitida por ese dispositivo y emisor, independientemente de la serie, de si ha habido errores, etc.
Si lo tienes automático (como debería ser, entiendo) no tienes que actualizar nada... de hecho incluso facturas que den error, sean rechazadas, etc. se tienen en cuenta para el encadenamiento.

3. Cuando la factura es por sustitución, en Base y Cuota rectificadas estás indicando el importe que estás "anulando". En tu caso, si los 2€ son el total de la factura, en la base serían los 2€ sin el IVA, y en la cuota sería el IVA, que entre los dos sumarían 2€.
Con esto, le estás diciendo a Hacienda que 2€ de esa factura sustituida dejan de computar, y la nueva factura emitida quedaría como debería haber sido la anterior, computando todo lo que indiques.

Luego ya las facturas rectificativas por diferencias son otro asunto...

Muchas gracias por la ayuda!:)

Maska10 22-11-2022 10:52:04

Seguimos con problemas en Vizcaya
 
Buenos días a todos

Seguimos sin poder finalizar el proceso de envío con Vizcaya, ahora tenemos el siguiente problema .. cuando firmamos el filchero Ticket Bai, si NO incluimos los siguiente parámetros en la firma:

\npolicyIdentifier=EL ENLACE A POLICYIDENTIFIER
\npolicyIdentifierHash=Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=
\npolicyIdentifierHashAlgorithm=EL ENLACE A HASHALGORITHM
\npolicyQualifier=EL ENLACE A POLICYQUALIFIER

El resultado es que a la hora del envío el servidor de Batuz nos devuelve un error de validación de certificado (lógico al no incluir los parámetros), pero si los incluimos nos devuelve un error de decodificación de base64 .. el caso es que cuando decodificamos el Ticket Bai lo hacemos sin problema.

Saludos.

Zósimo 22-11-2022 13:33:07

Yo he probado eso mismo y no me funciona
 
Pues yo he probado ese mismo comando:
Código:

openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
Y me responde el servidor:

<b>Parse error</b>: syntax error, unexpected identifier &quot;pkcs12&quot; in <b>/srv/vhost/kalion.com/home/html/enviaXML.php</b> on line <b>32</b>

Lo cual es lógico porque ese comando con espacios entre medias no me ha parecido que exista en PHP. Lo he buscado en la bibliografía oficial y existen otros. ¿es en otro leguaje? ¿hay que adaptarlo a cada lenguaje en concreto?

Si alguien pudiera responder lo agradecería porque llevo luchando con esto ni se sabe.

sEngine 22-11-2022 13:50:16

Cita:

Empezado por Zósimo (Mensaje 549358)
Pues yo he probado ese mismo comando:
Código:

openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
Y me responde el servidor:

<b>Parse error</b>: syntax error, unexpected identifier &quot;pkcs12&quot; in <b>/srv/vhost/kalion.com/home/html/enviaXML.php</b> on line <b>32</b>

Lo cual es lógico porque ese comando con espacios entre medias no me ha parecido que exista en PHP. Lo he buscado en la bibliografía oficial y existen otros. ¿es en otro leguaje? ¿hay que adaptarlo a cada lenguaje en concreto?

Si alguien pudiera responder lo agradecería porque llevo luchando con esto ni se sabe.

Ese comando que has puesto es el que se usa desde el cmd de windows, no?
Yo lo estoy usando mas o menos asi para comprobar la fecha de caducidad desde delphi

Código:

openssl pkcs12 -in "certificadoengineclaveprivada.pfx" -passin pass:password -passout pass:password -clcerts -nodes | openssl x509 -noout -enddate

Zósimo 22-11-2022 14:02:29

Este ha sido una repetición del mensaje anterior creada por error. No sé como borrarlo. Siento las molestias

Zósimo 22-11-2022 19:28:39

No me deja escribir la clave
 
Cita:

Empezado por sEngine (Mensaje 549359)
Ese comando que has puesto es el que se usa desde el cmd de windows, no?
Yo lo estoy usando mas o menos asi para comprobar la fecha de caducidad desde delphi

Código:

openssl pkcs12 -in "certificadoengineclaveprivada.pfx" -passin pass:password -passout pass:password -clcerts -nodes | openssl x509 -noout -enddate

Efectivamente. Solo que al terminar me pide "Enter import Password:" pero curiosamente no me permite escribir, solo pulsar en intro.ç

¿alguien tiene algún vínculo a un tutorial o similar?

Gracias otra vez

Zósimo 22-11-2022 20:03:07

No me deja escribir la clave
 
Perdón por repetirme.

Zósimo 22-11-2022 20:23:11

No me deja escribir la clave
 
¿Cómo puedo borrar los mensajes repetidos?

espinete 22-11-2022 21:09:03

Cita:

Empezado por Zósimo (Mensaje 549363)
Efectivamente. Solo que al terminar me pide "Enter import Password:" pero curiosamente no me permite escribir, solo pulsar en intro.ç

¿alguien tiene algún vínculo a un tutorial o similar?

Gracias otra vez

Ten en cuenta que algunos programas en la línea de comandos, cuando preguntan contraseña, no se ve lo que escribes pero sí se está escribiendo. Por seguridad no se muestran los caracteres escritos.

Por si acaso sea eso

KiwiCode 23-11-2022 10:39:42

Tarjetas regalo
 
Buenos días, ¿alguien ha tenido que lidiar con tarjetas regalo? He enviado varios mensajes a las diferentes haciendas preguntando como se tiene que gestionar este tipo de operativa y no me han aclarado absolutamente nada. (que sorpresa...)
Se me plantean dos posibilidades:

1) Para operativas de recarga de tarjetas regalo, generar un fichero de alta de TicketBAI donde el desglose de factura sea NoSujeto con causa OT y en el importe el correspondiente a la recarga de la tarjeta.
Por otra parte, cuando se hace uso de la tarjeta regalo no reflejar nada en el fichero de alta ya que se trataría como un medio de pago.

2) Para operativas de recarga de tarjetas regalo, generar un fichero de alta de TicketBAI donde el desglose de factura sea NoSujeto con causa OT y en el importe el correspondiente a la recarga de la tarjeta.
Por otra parte, cuando se hace uso de la tarjeta regalo, reflejar ese importe empleado como si fuera un descuento.

3) Para operativas de recarga de tarjetas regalo, no generar un fichero de alta TicketBAI ya que no hay un movimiento real de mercancías ni existe IVA que puedan recaudar (es un cambio de un tipo de medio de pago por otro)
Por otra parte, cuando se hace uso de la tarjeta regalo no reflejar nada en el fichero de alta ya que se trataría como un medio de pago.

A ver si alguien puede arrojar un poco de luz...

Gracias!

HerensugeBeltz 23-11-2022 11:24:55

Tarjetas regalo
 
En mi opinión, por el hecho de ser un concepto no sujeto yo optaría por la opción 3, dado que al ser no sujeto no se da el hecho imponible, lo mismo que tampoco se indicaría en el modelo 303 de IVA.

Otra cosa es que la factura contenga conceptos adicionales sujetos a IVA, o una factura de servicios a empresas intracomunitarias (no sujeta por reglas de localización). No sé qué pensarán los compañeros pero, en tu caso, yo pienso que sería la tres.

AlbertPujol 23-11-2022 14:06:51

Errores en Gipuzkoa
 
Hola,

Os comento por si a alguien más le han aparecido una serie de errores desde el 3 de noviembre en algunas facturas enviadas a TBAI Gipuzkoa:

(5016) La suma de los importes indicados en el desglose Sujeto y NoExento no coincide con lo recogido en las lí¬neas de detalle. Esta validación no se aplicará cuando alguna clave de régimen sea 03, 05, 06 o 09 o cuando TipoRectificativa sea I o tipo de...
(5017) Los importes indicados en los desgloses NoSujeto o Exento no coinciden con lo recogido en las líneas de detalle. Esta validación no se aplicará cuando alguna clave de régimen sea 03, 05, 06 o 09
(5018) El IVA calculado de alguna de las lí¬neas no es un tipo aceptado. Asegúrese de haber informado del ImporteUnitario sin IVA, el ImporteTotal de la línea con IVA y de indicar siempre en euros el Descuento aplicado. Esta validación no se aplicará...

Nos hemos puesto en contacto con la diputación y nos han contestado lo siguiente:
Buenos días,

Hemos tenido una incidencia a la hora de validar facturas con conceptos no sujetas o exentas, es por eso que han recibido esos errores, en realidad no deberían recibir esos errores.

Disculpamos las molestias

Saludos
Así que parece que han tenido algunos problemas con las validaciones desde el día 3 de noviembre.

Irreo 23-11-2022 18:26:41

Cita:

Empezado por KiwiCode (Mensaje 549369)
Buenos días, ¿alguien ha tenido que lidiar con tarjetas regalo? He enviado varios mensajes a las diferentes haciendas preguntando como se tiene que gestionar este tipo de operativa y no me han aclarado absolutamente nada. (que sorpresa...)

Me suena, sí... en su momento les pregunte sobre temas de bonos regalo, etc.. y la respuesta básicamente siempre es un copy-paste de "TicketBAI no modifica la Ley de IVA ni la normativa de facturación".

Te doy un poco mi opinión en base a lo que estuve investigando en su día, pero yo de contabilidad sé lo básico básico, así que no me lo tengas muy en cuenta.

Para mí, si alguien compra una tarjeta regalo, es a esa persona a la que se le hace una factura, digamos por 50€, por un producto llamado "Tarjeta Regalo 50".

Ahora, al usar esa tarjeta, entiendo que en el momento de comprar un producto, si por ejemplo es por valor de 60€, además de las líneas para los productos adquiridos, habría una línea de descuento por valor de 50€, quedando un total de 10€ a pagar.

Si fuese por ejemplo de 40€, entiendo que sería un descuento de -40€, y luego ya se gestiona como corresponda para saber que a esa tarjeta le quedan 10€ (en caso que se permita eso, claro).

Quizás si es una tarjeta regalo de estas que son tipo de crédito, que hay que activar, etc. y creo que llevan un banco por detrás, igual la operativa es diferente, y la compra del cliente final se trata como una compra normal y corriente.

Pero estas tarjeta tipo "vale" o "bono", yo personalmente las veo como un descuento. Compro una cámara de fotos de 450€, y lo mismo que puedo tener un vale de "10% de descuento", o "10€ para compras superiores a 80€", etc... si tengo un vale, tarjeta, bono.... de 50€, a mi la cámara me costará 400€ aplicando el descuento de 50€, y alguien tendrá una factura por la compra de ese vale.

Lo que ya no sé cómo va es el tema de si ese descuento se ha pagado a 50€ IVA inc... como aplicarlo si vendes productos de diferentes IVAs... si da igual, o qué...

Pero lo dicho... mejor contrastarlo con un contable o asesor :D

trumbolt 24-11-2022 10:59:56

Cita:

Empezado por espinete (Mensaje 549331)
Casualmente a nosotros nos está dando hoy un error similar con un certificado renovado esta misma semana (caduca en 2026):

"certificado remitente no válido para emisor factura"

Tras varios intentos seguidos, se envía sin problema.

No sé si serán fallos puntuales de los servidores de Gipuzkoa o qué.

Ojito porque Gipuzkoa no valida todas las veces los certificados y te puedes encontrar con que pienses que está solucionado el tema y unas facturas más tarde te vuelve a salir.

En mi caso ese error nos salía cuando no estábamos registrados como colaborador social de ese cliente.

Zósimo 24-11-2022 12:35:56

El servidor de Guipuzkua ¿espera el certificado o la clave privada?
 
Sé que he preguntado antes torpemente y sin investigar, pese a todo quisiera que alguien me dijera ¿con qué hay que certificar los envíos del XML ya firmado por XADES?

Me explico .

Tengo un c12 expedido por Izenpe hace unos meses. Si llamo al archivo del certificado no parece reconocerlo:

Código PHP:

curl_setopt($chCURLOPT_URL$server);
curl_setopt($chCURLOPT_HTTPHEADER$cabeceras);
curl_setopt($chCURLOPT_POSTFIELDS$texto);
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_TIMEOUT10);
curl_setopt($chCURLOPT_SSLCERTTYPE"PFX");
curl_setopt($chCURLOPT_CAPATH$camino);
curl_setopt($chCURLOPT_CAINFO$file);
curl_setopt($chCURLOPT_SSLCERTPASSWD$pass);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue); 

Tampoco me ha funcionado si en lugar de llamar al certificado lo abro, extraigo solo el certificado como tal y lo envío como una variable, tampoco si lo limpio de cabeceras, retornos de carro y demás. Siempre me devuelve el error 01 de que el certificado no es válido o está caducado.
Lo he convertido a PEM como dicen en varios sitios, pero así lo que se mete en el nuevo archivo que yo he llamado cert.pem es la clave privada, sin embargo, otros dicen que eso les funciona. Yo lo envío con este otro código:

Código PHP:

curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_HTTPHEADER$cabeceras);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_SSLCERTTYPE"PEM");
curl_setopt($chCURLOPT_SSLCERT,$camino.'cert.pem');
//curl_setopt($ch, CURLOPT_SSLKEY, $certs['pkey']);
curl_setopt($chCURLOPT_SSLKEYPASSWD$pass);
curl_setopt($chCURLOPT_SSL_VERIFYPEER1);
curl_ 

Al parecer es el indicado para el formato pem según dice la documentación oficial de PHP. Aquí no responde nada el servidor de la Diputación, absolutamente nada.

Por puesto he preguntado a la diputación y no parecen saber nada.

¿Qué estoy haciendo mal? ¿Qué no he entendido? ¿debo limpiar el archivo pem que he creado de código como "-----BEGIN PRIVATE KEY-----" o "Bag Attributes"? ¿no lo debo hacer en mi ordenador sino directamente en el servidor por aquello del "localKeyID"?

Zósimo 24-11-2022 12:38:36

Cita:

Empezado por espinete (Mensaje 549367)
Ten en cuenta que algunos programas en la línea de comandos, cuando preguntan contraseña, no se ve lo que escribes pero sí se está escribiendo. Por seguridad no se muestran los caracteres escritos.

Por si acaso sea eso

Muchas gracias. No había caído en eso. Ya lo hace.

Irreo 24-11-2022 12:44:48

Cita:

Empezado por Zósimo (Mensaje 549388)
Sé que he preguntado antes torpemente y sin investigar, pese a todo quisiera que alguien me dijera ¿con qué hay que certificar los envíos del XML ya firmado por XADES?

¿Qué estoy haciendo mal? ¿Qué no he entendido? ¿debo limpiar el archivo pem que he creado de código como "-----BEGIN PRIVATE KEY-----" o "Bag Attributes"? ¿no lo debo hacer en mi ordenador sino directamente en el servidor por aquello del "localKeyID"?

Te remito a una respuesta que publiqué hace poco con el código que utilizo yo, por si te sirve:

https://www.clubdelphi.com/foros/sho...postcount=3540

Sanduzelai 28-11-2022 09:59:20

Cita:

Empezado por Zósimo (Mensaje 549388)
Sé que he preguntado antes torpemente y sin investigar, pese a todo quisiera que alguien me dijera ¿con qué hay que certificar los envíos del XML ya firmado por XADES?

Me explico .

Tengo un c12 expedido por Izenpe hace unos meses. Si llamo al archivo del certificado no parece reconocerlo:

Código PHP:

curl_setopt($chCURLOPT_URL$server);
curl_setopt($chCURLOPT_HTTPHEADER$cabeceras);
curl_setopt($chCURLOPT_POSTFIELDS$texto);
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_TIMEOUT10);
curl_setopt($chCURLOPT_SSLCERTTYPE"PFX");
curl_setopt($chCURLOPT_CAPATH$camino);
curl_setopt($chCURLOPT_CAINFO$file);
curl_setopt($chCURLOPT_SSLCERTPASSWD$pass);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue); 

Tampoco me ha funcionado si en lugar de llamar al certificado lo abro, extraigo solo el certificado como tal y lo envío como una variable, tampoco si lo limpio de cabeceras, retornos de carro y demás. Siempre me devuelve el error 01 de que el certificado no es válido o está caducado.
Lo he convertido a PEM como dicen en varios sitios, pero así lo que se mete en el nuevo archivo que yo he llamado cert.pem es la clave privada, sin embargo, otros dicen que eso les funciona. Yo lo envío con este otro código:

Código PHP:

curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_HTTPHEADER$cabeceras);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_SSLCERTTYPE"PEM");
curl_setopt($chCURLOPT_SSLCERT,$camino.'cert.pem');
//curl_setopt($ch, CURLOPT_SSLKEY, $certs['pkey']);
curl_setopt($chCURLOPT_SSLKEYPASSWD$pass);
curl_setopt($chCURLOPT_SSL_VERIFYPEER1);
curl_ 

Al parecer es el indicado para el formato pem según dice la documentación oficial de PHP. Aquí no responde nada el servidor de la Diputación, absolutamente nada.

Por puesto he preguntado a la diputación y no parecen saber nada.

¿Qué estoy haciendo mal? ¿Qué no he entendido? ¿debo limpiar el archivo pem que he creado de código como "-----BEGIN PRIVATE KEY-----" o "Bag Attributes"? ¿no lo debo hacer en mi ordenador sino directamente en el servidor por aquello del "localKeyID"?


Yo tuve un problema hace poco con mi certificado porque se revocó el que estaba usando y tuve que poner otro nuevo. Te pongo lo que hice porque también me daba error 01 las primeras veces por culpa del .pem que generaba.

Yo tengo esto:
Código PHP:

        $soap_do curl_init();
        
curl_setopt($soap_doCURLOPT_URL$url);
        
curl_setopt($soap_doCURLOPT_CONNECTTIMEOUT100);
        
curl_setopt($soap_doCURLOPT_TIMEOUT,        100);
        
curl_setopt($soap_doCURLOPT_RETURNTRANSFERtrue);
        
curl_setopt($soap_doCURLOPT_FOLLOWLOCATIONtrue);
        
curl_setopt($soap_doCURLOPT_SSL_VERIFYPEERfalse);
        
curl_setopt($soap_doCURLOPT_SSL_VERIFYHOSTfalse);
        
curl_setopt($soap_doCURLOPT_USERAGENT'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        
curl_setopt($soap_doCURLOPT_POST,           true );
        
curl_setopt($soap_doCURLOPT_SSLCERT,        $pem);
        
curl_setopt($soap_doCURLOPT_POSTFIELDS,     $xml);
        
curl_setopt($soap_doCURLOPT_HTTPHEADER,     $header_soap);

        
$xmlResponse curl_exec($soap_do); 

donde $pem es mi path a a mi certificado.pem
Este lo he creado asi:
Código PHP:

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 
-in path.p12 -out newfile.key.pem -nocerts -nodes    
openssl pkcs12 
-in path.p12 -out newfile.pem -nodes 

El newfile.pem final es el que he usado y ahora me manda bien las facturas.


La franja horaria es GMT +2. Ahora son las 10:33:03.

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