Query
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]
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
Curtidas 0
Respostas
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.
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