Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[DUDA] Recomendaciones sobre como llevar a cabo un estado de cuenta

Estas en el tema de [DUDA] Recomendaciones sobre como llevar a cabo un estado de cuenta en el foro de Mysql en Foros del Web. Como están? Vengo a solicitar consejos sobre como llevar a cabo esto que quiero hacer que es un estado de cuenta. Estoy trabajando en la ...
  #1 (permalink)  
Antiguo 06/07/2013, 18:30
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 1
[DUDA] Recomendaciones sobre como llevar a cabo un estado de cuenta

Como están?

Vengo a solicitar consejos sobre como llevar a cabo esto que quiero hacer que es un estado de cuenta.

Estoy trabajando en la creación de un sitio en el cual tengo clientes, dichos clientes tienen que poder ver los estados de cuenta y que trabajos que se les ha realizado según el número de orden del trabajo.

Los locales deben poder visualizar el saldo actual en el que se encuentran, y como se ha generado obviamente (esto lo haré como digo arriba revisando los id de las ordenes que se han llevado a cabo para X local)

Ahora presento la idea que tengo en mente para llevarlo a cabo y espero sus recomendaciones, que seguramente me ayudaran a mejorar lo que se me ha ocurrido.

Primero tengo la tabla locales la cuales está formada de la siguiente manera

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS locales(
  2. nombre varchar(30) NOT NULL,
  3. telefono varchar(15) NOT NULL,
  4. dirección varchar(40),
  5. localidad varchar(20),
  6. ciudad varchar(20),
  7. provincia varchar(20),
  8. cp varchar(7),
  9. mail varchar(40),
  10. puntos int DEFAULT '0',
  11. ordenes int unsigned NOT NULL;
  12. saldo DECIMAL(7,2),
  13. PRIMARY KEY (id_locales),
  14. FOREIGN KEY (tipo) REFERENCES tipocliente(id_tipocliente),
  15. FOREIGN KEY (ordenes) REFERENCES ordenes(orden)
  16. );

Luego tenemos la tabla de ordenes
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS ordenes(
  2. id_cliente int unsigned NOT NULL,
  3. marca varchar(20),
  4. modelo varchar(20),
  5. numserie varchar(40) NOT NULL,
  6. procedencia int unsigned NOT NULL,
  7. categoria int unsigned NOT NULL,
  8. servicio int unsigned NOT NULL,
  9. preciocliente decimal(6,2),
  10. sena decimal(6,2),
  11. precio decimal(6,2),
  12. movimientos int NOT NULL,
  13. ubicacion int DEFAULT '1',
  14. detalles varchar(255),
  15. entregada varchar(2) DEFAULT 'No',
  16. garantia int,
  17. PRIMARY KEY (orden),
  18. INDEX (numserie),
  19. FOREIGN KEY (id_cliente) REFERENCES clientes(id_clientes),
  20. FOREIGN KEY (procedencia) REFERENCES locales(id_locales),
  21. FOREIGN KEY (categoria) REFERENCES categ_servicios(id_categservicios),
  22. FOREIGN KEY (servicio) REFERENCES servicios(id_servicios)
  23. );

Ahora una tabla de pagos
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS pagos(
  2. monto decimal(6,2),
  3. fecha1 DATE,
  4. PRIMARY KEY (id_pago),
  5. FOREIGN KEY (local) REFERENCES locales(id_locales),
  6. );

Bien entonces ahora que tenemos la estructura de las 3 tablas que se tendrían en cuenta para armar el estado de cuenta la idea sería la siguiente.

Cita:
Primero tengamos en cuenta que cada vez que se marque una máquina como entregada, se sumará dicho monto al saldo de la cuenta de cada local. Esto se haría tomando el valor que tiene en este momento el campo "Saldo" de la tabla locales y sumándole el monto de la orden en su campo "precio".

De igual manera se restará cuando se cargue algún valor en la tabla de pagos.

Estas 2 acciones irán teniendo actualizado el estado de cuenta permanente haciendo uso de un solo valor para no tener que realizar operaciones cada vez que se quiera saber como está la cuenta.
Ahora vamos a ver como tengo pensado mostrar todo el registro de dicho estado de cuenta.

Cuando ingresa el usuario del local a ver el estado de cuenta hago una consulta
Código MySQL:
Ver original
  1. SELECT id_orden, servicio, precio FROM ordenes WHERE procedencia='$id_local' AND entregada='Si';

De esta forma solo se tienen en cuenta los trabajos ya entregados a dicho cliente y dejamos de lado los que todavía seguirian en el taller.

Y los listamos.

Ahora los pagos realizados
Código MySQL:
Ver original
  1. SELECT * FROM pagos WHERE local='$id_local';

Ahora listo los pagos con sus respectivas fechas.

Y al final de las 2 listas muestro el total de trabajos realizados y el total de pagos y la diferencia entre ambas listas debería ser igual al saldo.

Esta es la idea que tengo para realizar los estados de cuenta de los locales.

Me gustaría como dije al principio si alguien tiene alguna idea para simplificar o para optimizar agradezco sus recomendaciones.

Saludos!
  #2 (permalink)  
Antiguo 07/07/2013, 07:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 15 años, 10 meses
Puntos: 2658
Respuesta: [DUDA] Recomendaciones sobre como llevar a cabo un estado de cuenta

La primera observación que puedo hacerte,a vuelo de pájaro, es que parece que estás creando una dependencia circular entre locales y órdenes...
Yo no le veo sentido que pongas las ordenes en los locales, ya que las órdenes son de los locales y no al revés. Como mucho las ordenes serían para los locales, en cuyo caso el generador de la orden es otra entidad, y el destinatario sería el local. Pero sigue sin haber dependencia formal del local respecto a la orden.
En cuanto a la relación con tipo de cliente, eso me parece discutible. Sólo tendría sentido si un local sólo puede atender cierto tipo de clientes, pero ponerlo como FK implicaría que sólo puede atender a un único tipo de cliente y nada más (la relación sería 1:1), cosa que veo algo extraña.
De todos modos eso se debería manejar en otra entidad o con otro concepto. Como por ejemplo perfiles de local, donde definas el tipo de punto de venta, y entonces los clientes que pueden acceder a él, lo hacen por ese camino.
Luego analizaré mejor el tema, pero me parece que el DER no está bien planteado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/07/2013, 09:43
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [DUDA] Recomendaciones sobre como llevar a cabo un estado de cuenta

1ro - tienes razon la verdad no se que hace ordenes dentro de locales!!! aseguro que no era la idea jajaja.

2do - El Tipo de cliente es un identificador para saber si es un "Local Comercial", "Distribuidor", "Particular", Etc... Manejan diferentes precios dependiendo de que categoría sean. Porque en este punto no me refiero a los clientes finales, sino a los locales, distribuidores etc que son los clientes de la empresa dueña de la página. De todas formas ahora voy a cambiar el nombre de la tabla también y voy a poner "tipolocal" ya que es más identificador que tipocliente que presta a confusión.

Perfecto si tu no lo ves bien planteado es palabra santa aquí en el foro así que te agradezco todas las recomendaciones que puedas darme.

No se me permite editar el post viejo, pero aquí te dejo lo de tipocliente
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS tipocliente(
  2. descripcion varchar(20) NOT NULL,
  3. PRIMARY KEY (id_tipocliente)
  4. );

Saludos!

Etiquetas: campo, estado, recomendaciones, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.