Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 21-10-2003
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 835
Poder: 24
gatosoft Va camino a la fama
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
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:04:22.


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