Query

Delphi

17/10/2003

Prezados,
Estou com um grande problema:
- Aplicação para calcular comissões de vendedores e gerentes;
- Comissao Gerente : em cima do total geral(venda comissionada e ñ comissionada)
- Comissao Vendedor : em cima do total geral do vendedor(venda comissionada)
- As comissões de Vendedores e gerentes serão lançadas individualmente na base,
- Vendedores e gerentes possuem uma cota de venda que será lançada na base:
- Se venda(total) < cota, comissão = 4¬;
- Se venda(total) > cota até 20¬(da cota), comissão = 4,5¬;
- Se venda(total) > 20¬(da cota), comissão = 5¬;

OBS1: Como esses campos são lançados também individualmente, e podem sofrer mudanças,
criei 3 campos: comissao1,comissao2,comissao3;

OBS2: na tabela de vendedores criei um campo tipo (´V´ ou ´G´)

OBS3: O parametro de entrada será o mês. Uma das minhas dúvidas é onde colocar a
consulta(no query do Data Module ou no QuickReport) e onde vou fazer os testes para
saber se é vendedor ou gerente e atualizar os valores de acordo com o total de sua venda

OBS4:
campos comissionados: avista,cartao,cartao_parc,cred_proprio,juros
campos não comissionados: vale_func, outros

- Aplicação: Delphi6, Interbase, Data Module, paleta INTERBASE, QuickReport

Segue o script de criação das tabelas e a consulta:

create table loja (
cod_loja integer not null primary key,
nome varchar(30) unique not null
);

create table vendedor (
cod_vendedor integer not null primary key,
nome varchar(50) unique not null,
tipo varchar(1) not null,
cota double precision,
comissao1 double precision,
comissao2 double precision,
comissao3 double precision,
cod_loja integer not null references
loja(cod_loja)
);

create table venda (
cod_boleta integer not null primary key,
data date not null,
vale_func double precision,
avista double precision,
cartao double precision,
cartao_parc double precision,
cred_proprio double precision,
entrada double precision,
cheque_pre double precision,
outros double precision,
juros double precision,
cod_loja integer not null references
loja(cod_loja),
cod_vendedor integer not null references
vendedor(cod_vendedor)
);


sql:

SELECT VENDA.cod_loja, VENDEDOR.nome, Sum(avista+cartao+cartao_parc+cred_proprio+juros) AS TOTAL
FROM VENDEDOR INNER JOIN VENDA ON
VENDEDOR.cod_vendedor = VENDA.cod_vendedor
GROUP BY VENDA.cod_loja, VENDEDOR.nome;

Qualquer ajuda será muito bem vinda

Grata

[i:efb784ca63]Título em maiúsculas editado. Leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689&sid=add834b4ed94967502cf2381c38e751a][u:efb784ca63]Regras de Conduta[/u:efb784ca63][/url]. (marcelo.c – Moderador)[/i:efb784ca63]


Angela

Angela

Curtidas 0

Respostas

Ursula

Ursula

17/10/2003

ja tentou usar condicoes no sql ?

se campo condiçao for = > < ... , faça isso, caso contrario isso
iif(campo < cota, faça, caso contrario faça isso) as resultado

Voce pode ter varioas condicoes ... exe

iif(soma(Total) > 3 , comissao1, iff(soma(Total) <= 3, comissao2,comissao3), 0) as result

Espero ter ajudado.




consulta(no query do Data Module ou no QuickReport
EU coloco no DATA MODULE quando e uma query onde possa reutilizar varias vezes como exe QryDeTrabalho

No relatorio geralmente se vai usar expecificamente.


GOSTEI 0
POSTAR