Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   crear AGENDA de pedidos (https://www.clubdelphi.com/foros/showthread.php?t=93601)

mRoman 26-11-2018 20:03:33

crear AGENDA de pedidos
 
Hola amigos.
Iniciando un nuevo proyecto con DELPHI 6 y Firebird 2.5.

Explico: Me están solicitando una agenda para registrar pedidos, los cuales en fechas criticasquieren solamente atender 10 pedidos por cada hora, el pedido No.11 se irá al siguiente horario disponible.

No tengo nada hecho todavía (ni la estructura de la tabla !! jejeje), mas bien solicitarles su apoyo para que me sugieran ideas de como hacerlo y que componentes usar, he leído acerca de TDBPlanner de TMS aqui en el club, pero la verdad no tengo dinero para comprarlos así que si saben de algunos gratuitos se los agredecere.

He jugado un poco de como construirlo, viendo precisamente una agenda en físico y de como lo llevan en el negocio de mi cliente, para emular su funcionamiento manual y llevarlo acabo en el sistema q estoy desarrollando, en realidad no me parece nada complicado desarrollarlo, pero talvez existan mejores ideas y maneras creativas de hacer algo parecido a una agenda, asi que espero sus comentarios.

De antemano, muchísimas gracias por su tiempo que le dediquen a mi consulta.

SALUDOS !!

mRoman 26-11-2018 20:05:45

(Estoy revisando los links q están al final de mi post)

Casimiro Notevi 26-11-2018 21:22:56

No explicas nada sobre cómo se va a usar eso, pero básicamente crearía una tabla con los horarios disponibles, otra tabla donde almacenar asociación de pedido-horario, y le asignaría pedidos hasta completar 10 por cada horario. Una vez ha llegado a 10, pasar al siguiente horario de la tabla horarios disponibles.

mRoman 26-11-2018 22:57:34

Cita:

Empezado por Casimiro Notevi (Mensaje 529744)
No explicas nada sobre cómo se va a usar eso, pero básicamente crearía una tabla con los horarios disponibles, otra tabla donde almacenar asociación de pedido-horario, y le asignaría pedidos hasta completar 10 por cada horario. Una vez ha llegado a 10, pasar al siguiente horario de la tabla horarios disponibles.

Gracias casimiro...efectivamente no explique nada de como se va a usar. Explico:

El cliente quiere no saturase de trabajo y poder controlar la cantidad de pedidos a realizar para no quedar mal con sus clientes, así que me encargo que el sistema cuidara que por cada hora solo se permitan 10 pedidos....

Lo que llevo: (pruebas)

Cree una tabla llamada FECHA_CRITICA, en la cual tiene estos campos:
Código:

mes numeric(2)
anio numeric(4)
hora_inicial time
hora_final time
maximo_pedidos numeric(2)

y otra tabla con los pedidos, que básicamente solo le cree 3 campos:

Código:

id_pedido numeric(2)
fecha_levantamiento_pedido date /*que pude ser también timestamp, para no tener 2 campos*/
hora_levantamiento_pedido time

A la tabla de PEDIDOS le cree un trigger para que valide la fecha y el horario por cada INSERT o UPDATE q se le haga a la tabla.
Código SQL [-]
CREATE TRIGGER TRG_VALIDAR_FECHA_CRITICA FOR AGENDA_PEDIDO
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
declare variable vmaximopedidos numeric(2);
declare variable vtotpedidos numeric(3);
begin
select a.maximo_pedidos,
       count(*) as tot_pedidos
     from fecha_critica a,
          agenda_pedido b
     where a.mes =extract(month from new.fecha_pedido)
       and a.anio=extract (year from new.fecha_pedido)
       and new.hora_pedido between a.hora_inicial and a.hora_final
     group by a.maximo_pedidos
     into :vmaximopedidos,
          :vtotpedidos;
     if (:vTotPedidos>=:vMaximoPedidos) then
     begin
          exception exc_horario_saturado;
     end
end

Hasta ahorita esto me ha resultado...pero no sé si sea la mas adecuada, sigo probando.

Gracias por tus comentarios y tu tiempo Casimiro!...y a todos los q consulten y lean este hilo, también muchas gracias.

Saludos.

Casimiro Notevi 27-11-2018 02:11:42

¿Y la asignación de horas a los pedidos es automática consecutiva o lo elige el usuario o el cliente?

mamcx 27-11-2018 03:13:33

Creo que esto se simplifica mucho mas.

Usa un FIFO Queue. Cojes pedidos y llenas, digamos de a 10.

Inicias un contador de cantidad y uno de tiempo.


Antes de tomar seguiente pedido, checas los contadores.

Vas tomando pedidos, y acumulas.

Cuando los contadores llegan a tope, esperas instruccion de continuar y reinicias. Si te quedas sin pedidos, cojes los siguientes 10 hasta que te quedes sin mas trabajo.

Asi, solo te importa la tabla de pedidos y no hay que complicarse con fechas. Solo importa cuantos se hace por un tiempo X.

mRoman 01-12-2018 00:28:19

Cita:

Empezado por mamcx (Mensaje 529751)
Creo que esto se simplifica mucho mas.

Usa un FIFO Queue. Cojes pedidos y llenas, digamos de a 10.

Inicias un contador de cantidad y uno de tiempo.


Antes de tomar seguiente pedido, checas los contadores.

Vas tomando pedidos, y acumulas.

Cuando los contadores llegan a tope, esperas instruccion de continuar y reinicias. Si te quedas sin pedidos, cojes los siguientes 10 hasta que te quedes sin mas trabajo.

Asi, solo te importa la tabla de pedidos y no hay que complicarse con fechas. Solo importa cuantos se hace por un tiempo X.

Excelente idea...!!. Vera que tan factible es de implementar.

Gracias.

mRoman 01-12-2018 00:32:12

Cita:

Empezado por Casimiro Notevi (Mensaje 529750)
¿Y la asignación de horas a los pedidos es automática consecutiva o lo elige el usuario o el cliente?

Es lo que estoy viendo...como seria conveniente que se registrara, me parece que la forma AUTOMÁTICA podría ser la mas factible, dejársela al usuario que la captura, puede ser contraproducente...la idea es que el usuario registre solo 10 pedidos por cada hora...el pedido 11 tendría que ser en el siguiente bloque de pedidos, en la hora siguiente, entonces....mm...el horario se asignaría de manera automática (ahora q lo escribo me están viniendo las ideas !!).

Gracias Casimiro por tu tiempo.


La franja horaria es GMT +2. Ahora son las 11:59:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi