Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

TPV virtual número de producto

21 de febrero de 2014

Hola, estoy implementando un TPV Virtual. Mi problema viene con el código de venta, que se lo tengo que enviar al TPV. El problema me viene cuando tengo dos tablas e incluso cuando tengo dos bases de datos para el mismo TPV (una web en español y otra en ingles). Como código le mandaba el id de la tabla de venta, pero el problema es que debe ser único en el TPV y claro, al ser dos tablas distintas y dos base de datos distintas (sin acceso la una a la otra web) pues se repiten los id. Había pensado meter al código que le envío unas claves del tipo GFcodigoES, GFcodigoEN, donde:

  • GF es el tipo de producto
  • codigo id de la venta
  • ES idioma

Pero el TPV no acepta texto en el código. Otra opción que he pensado a sido el meter un numero al código para según el tipo, pero claro al final otro tipo acabará alcanzando a otro.

¿Se os ocurre alguna forma?


Respuestas

#1

En el caso de sistemas distribuidos sin posibilidad de comunicación entre sí, la solución sencilla que se suele aplicar para generar ID únicos consiste en concatenar los siguientes valores:

  • Una primera parte que dependa de la hora (por ejemplo el timestamp)
  • Una segunda parte que dependa de la máquina en la que se genera el ID.
  • Una tercera parte formada por un número aleatorio para evitar problemas al generar varios ID al mismo tiempo en una misma máquina.

En tu caso creo que no sería estrictamente necesaria la segunda parte, así que podrías utilizar directamente el siguiente código:

$idVenta = date('U').mt_rand();

No olvides consultar la longitud máxima del id en el TPV, ya que seguramente tendrás que acortar la segunda parte del id generada por mt_rand().

Si el escenario propuesto fuera más complejo, deberías crear un servicio web dedicado exclusivamente a generar id. Esto es por ejemplo lo que tiene que hacer Twitter, que ha desarrollado su propio generador distribuido de id y lo ha publicado como software libre bajo el proyecto SnowFlake.

@javiereguiluz

21 febrero 2014, 11:35
#2

Hola, no lo había pensado pero me parece buena idea, la he puesto y funciona, muchas gracias. Lo de twitter es mucho, ahora mismo con eso nos vale, si se dispara las ventas pues lo valoraré pero no creo que tengamos esa suerte jaja

@AlbertoVioque

21 febrero 2014, 19:58