Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2013, 18:30
marcosgue
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 3 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!