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.

Zósimo 28-11-2022 10:18:15

Muchas gracias
 
Por cierto. No te he dado las gracias por el detalle de responder. Voy a probarlo

APO 29-11-2022 12:30:30

Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

bilbur 29-11-2022 12:45:09

Cita:

Empezado por APO (Mensaje 549434)
Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

Correcto y obligatorio


Un saludo

keys 29-11-2022 12:47:56

Cita:

Empezado por APO (Mensaje 549434)
Buenos días, una pregunta sólo por confirmar que lo estoy haciendo bien. Creo que es así, pero me gustaría saber vuestra opinión:

Es referente al encadenamiento. En nuestro caso tenemos 2 puntos de venta independientes y 1 Backoffice también independiente. El encadenamiento lo estoy haciendo por 3 dispositivos distintos. Es decir, cada dispositivo encadena con la factura anterior generada por ese dispositivo. ¿Es correcto cómo lo estoy haciendo?

Muchas gracias!

En principio el encadenamiento no tiene que ser por dispositivo, tiene que ser por sistema. Si cada punto de venta no tiene acceso a los otros entonces si se puede encadenar por puntos de venta y cada uno tendrá que usar una serie distinta, ya que sino dará numeros de facturas duplicados.

Por tanto depende del sistema.

bilbur 29-11-2022 12:49:06

OFF Impuesto al plástico e IIEE
 
He buscado y no he encontrado, ni aquí ni en google

¿Existe en estos foros alguno relativo a los impuestos especiales (en particular relativo al nuevo impuesto al plástico) y que se trata de cómo enviar datos contables o de existencias a la AEAT ?


Disculpad las molestias.


Un saludo

Zósimo 29-11-2022 17:54:44

¿Qué certificado espera el servicio rest?
 
Yo no encuentro el modo en que me admita el certificado de la extensión c12.

Si envío el archivo así: curl_setopt($ch, CURLOPT_CAINFO, $file); Error 01
Si quito o añado la contraseña así curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $pass); Error 01
Si meto el certificado en una variable y lo envío con CURLOPT_CAINFO; Error 01
Si lo limpio de retornos de carro y cualquier otra cosa; Error 01
Si lo convierto a pem y lo mando como una variable así curl_setopt($ch, CURLOPT_SSLCERT, $certi_pem); no responde nada, nada en absoluto.

Por supuesto he probado también a quitar y poner la clave, quitar y poner la llave privada, indicar el tipo de certificado...

¿Alguien podría decirme qué espera el servidor? Porque cuando lo hago por archivo no lo reconoce y cuando lo hago como variable en formato pem no responde.

Muchas gracias por vuestra ayuda

Irreo 29-11-2022 18:02:41

Cita:

Empezado por Zósimo (Mensaje 549439)
Yo no encuentro el modo en que me admita el certificado de la extensión c12.

¿Has probado lo que te puse en este post?:

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

Un saludo.

Zósimo 29-11-2022 18:11:42

Por supuesto y no soy capaz.
¿Qué metes en $appConfig["certificate"]?

Irreo 29-11-2022 18:34:08

Cita:

Empezado por Zósimo (Mensaje 549441)
Por supuesto y no soy capaz.
¿Qué metes en $appConfig["certificate"]?

Ah ok, es que te veía insistiendo en lo de CURL, por si acaso...

En esa variable tengo la ruta al fichero PEM:

$appConfig = $_SERVER["DOCUMENT_ROOT"]."/certs/XXXXX.pem";

edari 30-11-2022 07:47:14

Factura simplificada clientes varios
 
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...




Cita:

En relación con su consulta le indico que, la factura simplificada se identificará con la clave "S" en el campo "Factura simplificada" y además se deberán recoger los datos identificativos del destinatario de la operación (por lo menos el NIF del mismo o, en su caso, otro número identificativo).

...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo

APO 30-11-2022 08:10:48

Cita:

Empezado por edari (Mensaje 549446)
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...







...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo


Buenos días,

Creo que el error está en que estás enviando la sección <Destinatarios>, cuando en las facturas simplificadas no se debe rellenar.
Nosotros hemos realizado varias consultas y hemos alucinado con las respuestas. A veces lían más que otra cosa...

Saludos.

keys 30-11-2022 08:15:10

Cita:

Empezado por edari (Mensaje 549446)
Buenos días,


A ver si me podéis sacar de una duda. Es en relación a las facturas que en mis tiempos se llamaban de "clientes varios" clientes que p.e. iban a comprar algo al almacén y les hacían una factura sin nif. Tengo un cliente que hacía mucha de este tipo.


Yo tengo programado la opción de FacturaSimplificada = S pero no consigo la forma de que subir una factura sin tener un cif real.


Hago la consulta a Hacienda y me dice...







...lo que viene a indicar que nanay



El caso es que el asesor del cliente, también con su parte de razón, me dice...


De alguna manera se tiene que poder hacer porque tú cuando vas a un bar y te imprimen un ticket no te piden el dni obviamente


Sabéis alguno como tendría que subir a Ticket Bai este tipo de clientes? Yo en mis pruebas subo el valor S1 en el campo TipoNoExenta como un cliente "normal"



Puede ser por ahí la cosa?


Gracias de nuevo

Hola logicamente se pueden emitir tickets sin identificar al destinatario. Te pongo un ejemplo de cabecera de factura simplificada.

Código PHP:

<Sujetos>
  <
Emisor>
    <
NIF>CIF EMISOR</NIF>
    <
ApellidosNombreRazonSocial>NOMBRE EMISOR</ApellidosNombreRazonSocial>
  </
Emisor>

  <
EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario>
</
Sujetos>
<
Factura>
 <
CabeceraFactura>
   <
NumFactura>00002962</NumFactura>
   <
FechaExpedicionFactura>30-11-2022</FechaExpedicionFactura>
   <
HoraExpedicionFactura>08:08:46</HoraExpedicionFactura>
   <
FacturaSimplificada>S</FacturaSimplificada
   
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
 </
CabeceraFactura>
 <
DatosFactura>
  ...
  ... 


pablog2k 30-11-2022 08:17:02

Hola, se me ha adelantado keys, creo que te refieres a los tickets de toda la vida (vamos cualquier tienda tipo todo a 100, chinos...etc), donde no se identifica al destinatario.
Nosotros lo subimos así y ningún problema: (iba a adjuntar el código pero el de keys es igual que el mío).
Por lo demás, es una sujeta no exenta, vamos los mismos nodos en la parte de DatosFactura que una factura donde si se identifica al destinatario

APO 30-11-2022 08:17:26

Cita:

Empezado por keys (Mensaje 549436)
En principio el encadenamiento no tiene que ser por dispositivo, tiene que ser por sistema. Si cada punto de venta no tiene acceso a los otros entonces si se puede encadenar por puntos de venta y cada uno tendrá que usar una serie distinta, ya que sino dará numeros de facturas duplicados.

Por tanto depende del sistema.

Gracias keys por la respuesta.

En nuestro caso los 2 puntos de venta comparten la misma base de datos, usamos una serie para las facturas simplificadas y otra serie para las facturas completas. Pero hemos hecho pruebas de encadenando sin diferenciar por dispositivo, y no nos da ningún aviso de encadenamiento. ¿Consideras que sería necesario encadenar diferenciando por dispositivo?

En el Backoffice ya estamos encadenando por dispositivo. Gracias!

keys 30-11-2022 08:35:16

Cita:

Empezado por APO (Mensaje 549450)
Gracias keys por la respuesta.

En nuestro caso los 2 puntos de venta comparten la misma base de datos, usamos una serie para las facturas simplificadas y otra serie para las facturas completas. Pero hemos hecho pruebas de encadenando sin diferenciar por dispositivo, y no nos da ningún aviso de encadenamiento. ¿Consideras que sería necesario encadenar diferenciando por dispositivo?

En el Backoffice ya estamos encadenando por dispositivo. Gracias!

Te pongo lo que me contesto hacienda sobre este tema.
Cita:

En TicketBAI cada factura debe de identificar la factura anterior. 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).

No obstante, si existen diferentes dispositivos de facturación, los cuales sólo expiden facturas dentro de una serie específica para cada dispositivo, el encadenamiento se produce dentro de cada serie, ya que el sistema de facturación funciona de este modo.
Nuestro sistema tambien comparte la base de datos, por lo que para evitar que cada dispositivo tenga una serie distinta las encadenamos todas como si fuera un único sistema independientemente de la serie.

Yo no me fiaría de los avisos de encadenamiento que dan las haciendas.

edari 30-11-2022 08:51:36

Gracias APO y keys...era eso!!


Sigo alucinando con el servicio de atención de Hacienda...madre mía :eek:




Mersi ^\||/





Cambiando de tema y yendo a lo que estáis hablando de los errores de encadenamiento me he encontrado algún caso de que mandas p.e. 30 facturas, las imprimes todos juntas y la factura 22 te da un error de validación de xml (por ejemplo por estas cosas que tenía con los clientes varios)...como ni siquiera ha llegado a subir a hacienda luego cuando arreglo el error y vuelvo a subir la factura 22 da error de encadenamiento al saltar de la 21 a la 23 que se imprimieron en la primera pasada y la 22 subirse al final del todo el proceso.



Espero que no se pongan muy tikis mikis con esto.

HerensugeBeltz 30-11-2022 11:40:25

Listado de URLs Zuzendu de Gipuzkoa en preproducción
 
Nota para el administrador: las URLS de Zuzendu de Gipuzkoa (preproducción) que figuran al inicio del foro son incorrectas.
Las correctas son:
Alta: https://tbai-z.prep.gipuzkoa.eus/sarrerak/zuzendu-alta
Baja: https://tbai-z.prep.gipuzkoa.eus/sarrerak/zuzendu-baja

Es decir, es tbai-z.prep en lugar de tbai.prep

rcarteaga 30-11-2022 11:48:32

Envio de XML a Alava
 
Buenos días (no se si estoy repitiendo el mensaje, si es asi disculpas)
La empresa se decidio a ultima hora a meterse en este ajo y yo estoy ya de los nervios.
Hago el envio a ALAVA, ya quité avisos, pero siempre recibo el aviso "error en verificacion de firma", compruebo el fichero con Izenpe y me da correcto. Parece ser que a ellos les llega cambiado.
He leido por el foro que puede ser problema de que la forma de enviarlo haga algún cambio en el fichero. a pesar de que no he puesto acentos ni simbolos ni nada raro.
Paso la forma en que hago mi envío, en VB6
¿Es correcto?
¿cómo lo haceis? tambien me sirve en vb.net

Dim domSolicitud As DOMDocument
Dim objHTTP As XMLHTTPRequest
Dim URL As String
Set objHTTP = New XMLHTTPRequest
Set domSolicitud = New DOMDocument
If domSolicitud.loadXML(sbXml.GetAsString) Then

URL = "pruebas-ticketbai.araba.eus/TicketBAI/v1/facturas"(modificado por que no me permite poner urls)
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/xml;charset=UTF-8"
objHTTP.send domSolicitud.xml
End if

Zósimo 30-11-2022 12:48:54

El servidor de Guipuzkua no responde nada
 
Pues a mí el servidor de Guipuzkua sigue sin responderme nada. Absolutamente nada.

Estoy haciéndolo tal como se me ha dicho y verificando con la documentación de PHP.
- En "local_cert" meto "CERTIFICADO.p12" (están en el mismo directorio que los otros archivos).
- En "passphrase" la clave para ese mismo certificado.
- En "cafile" nuevamente el certificado.
- En "capath" la ruta absoluta al directorio donde está el certificado

Lo demás no lo he tocado salvo el apartado "content" donde meto el XML.

He comprobado que se genere el vector correctamente.

hago el $context = stream_context_create($opts);

y por último $haciendaResult = file_get_contents('https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta', false, $context);

Lo que obtengo cuando hago var_dump($haciendaResult); es "bool(false)"

Como ya llevo tiempo peleando con esto, he convertido la clave privada del c12 a pem, pero cuando la mando en lugar del certificado el mismo resultado. Se supone que algo tendría que responder.

Según me han contestado en Diputación los certificados PFX son igualmente válidos que los pem. ¿he comprendido mal y la respuesta del servidor no está en "$haciendaResult"?

Muchas gracias por vuestra ayuda.

Por si acaso mi código:

$opts = array(
"ssl" => array(
"local_cert" => $file,
"passphrase" => $pass,
"allow_self_signed" => true,
"cafile" => $file,
"capath" => $camino,
"verify_peer" => false
),
"http" => array (
"method" => "POST",
"ignore_errors" => true,
"timeout" => 9,
"header" => "Accept-language: es\r\n"."Content-type: application/xml;charset=UTF-8\r\n",
"content" => $texto
)
);
var_dump($opts);

$context = stream_context_create($opts);
var_dump($context);

$haciendaResult = file_get_contents('https://tbai-z.prep.gipuzkoa.eus/sarrerak/alta', false, $context);
var_dump($haciendaResult);

echo "\n La Dipiutación respondió: ".$haciendaResult;

Irreo 30-11-2022 17:10:15

Cita:

Empezado por Zósimo (Mensaje 549455)
Pues a mí el servidor de Guipuzkua sigue sin responderme nada. Absolutamente nada.

Estoy haciéndolo tal como se me ha dicho y verificando con la documentación de PHP.

Buenas,

Ánimo, yo creo que estás cerca.

Para el envío yo estoy usando certificados en formato PEM. En su día recuerdo que con ese código me estuve peleando bastante, hasta que di con la combinación de parámetros y valores correcta.

Por si te sirve, te paso las instrucciones que usé en el servidor para convertir el certificado a PEM desde la consola SSH:

(te irá pidiendo contraseña actual del certificado, o la nueva que quieres poner, según el caso)

openssl pkcs12 -in TITXXXX.pfx -out TIT.nokey.pem -nokeys
openssl pkcs12 -in TITXXXX.pfx -out TIT.withkey.key
openssl rsa -in TIT.withkey.key -out TIT.key
cat TIT.nokey.pem TIT.key > TITXXXX.pem

Al final el fichero que uso es el último fusionado usando "cat" (TITXXXX.pem)

Suerte!


La franja horaria es GMT +2. Ahora son las 14:51:19.

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