![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
||||
|
||||
|
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 |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|