Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   programa por niveles (https://www.clubdelphi.com/foros/showthread.php?t=4575)

marcelofabiani 20-10-2003 21:52:23

programa por niveles
 
Bueno aqui de nuevo me consulta es la siguiente, ya que estoy completamente perdido en este tema tengo un cliente que requiere un programa que controle el pago de ingreso y comisiones de una representacion que gano, basicamente la idea es la siguiente un vendedor llega a hacer una cantidad de ventas y sube aun nivel superior, en el cual tiene varios vendedores a su cargo de los cuales recibe una comision, llega a un nivel de ventas y sube otro nivel y este a su vez recibe comision de todos a su cargo de los niveles inferiores y asi... bueno es la estructura de piramide

presidente
director director
supervisor supervisor
vendedores vendedores

Mi consulta es que tablas serian las que deberia crear y mas o menos con que campos es obvio que deberia haber una de los usuarios o clientes, una de los niveles pero las otras son las que no las tengo muy claras alguna idea de cuales deberia incluir ?

Desde ya muchas gracias

gatosoft 21-10-2003 16:16:50

Bueno, yo lo veria de la sigueiente forma:

Debes tener una tabla de vendedores, independientemente del nivel que tengan en la pirámide. y basado en esto, tienes tres alternativas:

=================================
1. Un campo que almacene el "padre" en la tabla vendedores:

create table vendedores
(
ve_codigo
ve_nombre
ve_padre
foreign key (ve_padre) references vendedores (ve_codigo)
);

Para conocer el nivel del vendedor dentro de la piramide y las personas que tiene a cargo debes entoonces crear procedimientos almacenados que los "deduzcan". (o desde Delphi, utilizando ciclos...

Para el siguiente ejemplo:

Alvaro-->Pedro-->Maria
Susana
Carlos-->Alberto
Otra Maria

La tabla vendedores quedaria asi:

1 Alvaro NULL
2 Pedro 1
3 Carlos 1
4 Maria 2
5 Susana 2
6 Alberto 3
7 Otra Maria 3

=================================
2. Una tabla que almacene los vendedores a cargo, (solo los del primer nivel)

create table vendedores
(
ve_codigo
ve_nombre
);

create table vendedores_a_cargo
(
vc_codigo_padre
vc_codigo_hijo
foreign key (ve_codigo_padre) references vendedores (ve_codigo)
foreign key (ve_codigo_hijo) references vendedores (ve_codigo)
);

De igual manera, para conocer el nivel y los vendedores a cargo en cualquiera de los niveles, debes hacer un procedimiento almacenado o procedimientos en delphi que te ayuden a calcularlos.

En el mismo ejemplo:

Alvaro-->Pedro-->Maria
Susana
Carlos-->Alberto
Otra Maria

La tabla vendedores, quedaria asi:
1 Alvaro
2 Pedro
3 Carlos
4 Maria
5 Susana
6 Alberto
7 Otra Maria

La tabla vendedores_a_cargo, quedaria asi:

1,2
1,3
2,4
2,5
3,6
3,7

=================================
3. Por último, se puede hacer una mezcla de los dos anteriores, pero en este caso, en la tabla de vendedores a cargo, se almacenan todos los vendedores, que estan relacionados a un vendedor en particular en cualquier nivel.

create table vendedores
(
ve_codigo
ve_nombre
ve_padre
foreign key (ve_padre) references vendedores (ve_codigo)
);

create table vendedores_a_cargo
(
vc_codigo_padre
vc_codigo_hijo
vc_nivel
foreign key (ve_codigo_padre) references vendedores (ve_codigo)
foreign key (ve_codigo_hijo) references vendedores (ve_codigo)
);

De esta manera, cada vez que ingreses un nuevo vendedor, y logicamente conoces su padre, debes comenzar a guardar las relaciones que este tenga con sus ramas superiores.

Continuando con el mismo ejemplo:

Alvaro-->Pedro-->Maria
Susana
Carlos-->Alberto
Otra Maria

La tabla vendedores, quedaria asi:
1 Alvaro
2 Pedro
3 Carlos
4 Maria
5 Susana
6 Alberto
7 Otra Maria

La tabla vendedores_a_cargo, quedaria asi:

1,2,1
1,3,1
1,4,2
1,5,2
1,6,2
1,7,2
2,4,1
2,5,1
3,6,1
3,7,1

Este último método, solo ahoora tiempo en las consultas que deben hacerse, para averiguar el nivel y las personas a cargo, pueden obtenerse inmediatamente los vendedores a cargo, haciendo una simple consulta. sin embargo, debe tenerse mucho cuidado, pues la infromacion aqui almacenada puede no ser coherente, y debe actualizarse cada vez que haya un cambio en uno de los niveles.

Adicionalmente, el tamaño de la tabla puede crecer exponencialmente a dependiendo de la profundidad de la piramide, que como sabemos, pude llegar a ser bastante.

Yo te recomendaria tener en cuenta, una de las dos primeras opciones.

=====================================

en cuanto a las comiciones, ya seria lo de menos, seria un modelo mas o menos normal de facturacion. Lo iportante es poder saber en un momento determinado, sobre que vendedores se debe liquidar una comisión.


Saludos

marcelofabiani 21-10-2003 18:27:17

Gracias por la ayuda la verdad me abriste los ojos en este tema te lo agradezco


La franja horaria es GMT +2. Ahora son las 23:33:50.

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