Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2003
marcelofabiani marcelofabiani is offline
Miembro
 
Registrado: may 2003
Ubicación: Bolivia
Posts: 64
Poder: 22
marcelofabiani Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 21-10-2003
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
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
  #3  
Antiguo 21-10-2003
marcelofabiani marcelofabiani is offline
Miembro
 
Registrado: may 2003
Ubicación: Bolivia
Posts: 64
Poder: 22
marcelofabiani Va por buen camino
Gracias por la ayuda la verdad me abriste los ojos en este tema te lo agradezco
Responder Con Cita
Respuesta



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 01:41:42.


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
Copyright 1996-2007 Club Delphi