PHP - aprobaciones

 
Vista:

aprobaciones

Publicado por Pablo (33 intervenciones) el 13/07/2013 14:27:05
Tengo una aplicación en java con una BD mysql que genera tickets.

Un ticket consta de los datos del cliente, el tipo de trabajo a realizar, el mecánico al que se le asigna, la fecha en la que se va a producir el trabajo, etc.

Leo los datos de esta BD, y los muestro en una página a la que tiene acceso el departamento contable.

Un responsable de contabilidad dará el visto bueno para que ese trabajo se realice.

Para ello hará clic en el número de ticket, le aparecerá un pequeño formulario dónde se completará la información del trabajo a realizar y dará el visto bueno para que se realice (o lo pondrá en stand by, o lo rechazará). La sesión me dice quién y cuando se valida.

Esos datos pasan a otra base de datos que almacena los trabajos que se van aprobando, etc. para luego facturar.

Lo que necesito es que cada trabajo "validado" desaparezca de la lista de trabajos pendientes de validar teniendo en cuenta que la primera base de datos solo la leo.

Y esto entiendo que debe ser así porque: Por un lado están entrando trabajos nuevos constantemente y por otro el orden de los tickets puede alterarse ya que un trabajo previsto para mañana puede realizarse pasado, puede entrar una urgencia y mover todos los trabajos hacia adelante, etc.

He pensado usar el número de ticket y si ya lo tengo registrado, que de alguna forma no lo muestre, pero no sé como hacer una consulta a la primera BD que filtre los que ya están en la segunda.

¿Hay alguna forma de realizar una consulta en dos bases de datos a la vez?

La opción B sería quizá usando una <div> que oculte los ya validados, pero habrá un momento en el que el número de validados será muy grande.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

aprobaciones

Publicado por xve (6935 intervenciones) el 13/07/2013 20:14:37
Hola pablo, no se si te he entendido bien pero lo que creo que tendrias que hacer, es hacer una marca o algo en la base de datos, para que sepas que registros ya estan pasados, de esta manera no mostrarlos nuevamente en la web...

No se como tienes las tablas, ni que como tendrias que hacer la consulta...

No se si me he explicado bien...

Como sabes que registros son para ocultarlos en los div's?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

aprobaciones

Publicado por Pablo (33 intervenciones) el 15/07/2013 14:48:18
La aplicación está escrita en Java, tengo acceso a la base de datos, que es MySQL, pero no sé qué implicaciones tendría añadirle un campo a una tabla.

Por otra parte, es un poco complejo, porque en lugar de tablas del estilo id, cliente, dirección, localidad, vehículo, incidencia, etc. lo que tengo es id, ticket_id, descripción, valor. ¿Eso qué significa? Que un ticket puede tener tres, cuatro, cinco o más registros, por ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
id	ticket_id	descipcion	        valor
1	1		cliente		Fulano de Tal
2	1		localidad	        Móstoles – Madrid
3	1		teléfono	        642536155
4	1		Intervención	Instalar alarma volumétrica
5	1		lugar		        taller
6	1		fecha		        20/07/2013
7	2		cliente		Automóviles Norte
8	2		localidad	        Arganda – Madrid
9	2		Intervención	Revisión y puesta a punto.
10	2		lugar		        Arganda – Madrid
11	2		fecha		        21/07/2013
12	2		vehículo	        Ford – Focus 2008

Estos tickets se muestran en un panel, al estilo de la agenda de Outlook, pero con la particularidad que la persona que gestiona los recursos puede arrastrar y colocar los tickets para otra fecha o para otro mecánico, etc. Eso da flexibilidad a la aplicación.

La persona que gestiona los tickets recibe la información por teléfono y la introduce en su aplicación un poco a salto de mata.

Lo que he hecho para mi aplicación es hacer una vista en MySQL, que leo desde un ejecutable en PHP, me creo un array con los datos y los muestro como pendientes en una hoja.

El usuario de contabilidad, abre una línea pendiente, da su visto bueno, pone algún comentario si procede, etc. Y este registro, lo introduzco en mi BD para que luego se proceda a facturar, etc.

He visto lo siguiente: No todos los tickets tienen todas las descripciones. Por tanto mi consulta puede tener elementos del array que sean null. Pero eso al menos me permite hacer una tabla con campos más precisos, dónde las fechas sean fechas, las cantidades numéricas números, etc.

Un campo "check" en alguna tabla que controle los tickets podría ser la solución, pero desconozco las repercusiones que tendría en el funcionamiento de la aplicación original.

En cambio, en mi BD, ese "check" podría servir para decirle al id de una div, a través de la css que si el check es OK que se quede hidden. Tampoco sé si esto es una solución, aunque he visto que se usa mucho en páginas con Ajax.

Xve, cualquier comentario tuyo es bien recibido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

aprobaciones

Publicado por xve (6935 intervenciones) el 15/07/2013 16:02:04
Hola Pablo, muchas gracias por tus comentarios... creo haber entendido el problema.

Yo, tendría que decirte que la aplicación que se ejecuta en Java, ya dispone de alguna marca o campo fecha para determinar que ese ticket esta finalizado o cerrado... de alguna manera tiene que saberlo.

Puede ser que ese valor este en alguna otra tabla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

aprobaciones

Publicado por Pablo (33 intervenciones) el 15/07/2013 23:20:52
Sí, sí, lo está.

Pero Contabilidad da el visto bueno para "iniciar los trabajos" por diferentes motivos:

Primero. Los clientes suelen ser empresas que pueden tener facturas pendientes (tal y como está la cosa), por lo que contabilidad puede solicitar un pago a cuenta.
Segundo. Cuando un mecánico se desplaza a una empresa debe llevar cierta documentación en regla (el TC2) por temas legales. La mayoría de las empresas, sobre todo grandes, tienen un responsable que verifica que el personal que le mandas tiene su documentación en regla.
Tercero. Hay empresas que exigen que tu personal haya seguido unas charlas de seguridad para moverse por sus instalaciones.

La función de arrastrar y colocar de la aplicación en Java es muy gráfica, a costa de grandes cantidades de datos en su BD, pero a la gente le apasiona mover trabajos o intercambiar mecánicos.

Pedí al responsable del departamento un par de licencias de usuario para la gente de Contabilidad pero me dijo que no, así es que en lugar de que ellos generen un listado que los otros aprueben (papeleo), pensé en meter un punto intermedio entre esto y la facturación, de tal manera que se ahorraran papeles, emails cruzados, llamadas de teléfono, etc.

El "problema" es el "dinamismo". Si copio ahora esa consulta que hago y la paso a una tabla, quizá mañana haya cambiado, es decir, que a Talleres Pepe ya no va Mariano, sino Manolo y ya no es mañana sino pasado. Eso debería generar dos "aprobaciones".

Creo, no sé qué te parece, que podría crear un indice ticket-fecha-mecánico y si 3-27-07-2013-Manolo ya existe en mi tabla (ya está aprobado) no aparezca en la consulta de pendientes...

Las dos BD's las tengo en el mismo servidor, ¿podría hacer una consulta Left Join que me diera los no coincidentes haciendo referencia a la bd.tabla.registro para hacer la relación?

Gracias de nuevo por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

aprobaciones

Publicado por xve (6935 intervenciones) el 16/07/2013 07:21:36
Hola Pablo, yo atacaría siempre directamente a la base de datos real, no crearía una copia de la misma, sino, ta como comentas, tendrás muchos problemas con los cambios y demás.

Yo me refería, a que en la base de datos original, tiene que haber algo que indique que ese trabajo esta realizado o finalizado, no? Yo buscaría ese valor, y seria el que utilizaría para saber si esta activo o no, y de esta forma mostrarlo en el listado.

No se si me he explicado bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

aprobaciones

Publicado por Pablo (33 intervenciones) el 16/07/2013 23:45:42
Bueno, intentaré buscarle las vueltas.
He comprobado que puedo crearle vistas y tablas, así es que intentaré atacar por ese flanco.
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar