Relatório comissões: gerentes e vendedores
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
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
Angela
Curtidas 0
Respostas
Bacalhau
17/10/2003
Estimada colega, não vou responder à tua enorme questão, mas lançar outra questão: essas comissões são pagas após a venda ou após o recebimento? E como é feito o recebimento? Na totalidade ou parcelado?
Se respondeste sim, então o problema é mais complexo (que é o problema aqui na Europa).
A solução que encontrei é não olhar para as vendas, mas sim para os recebimentos. Aí calculo a comissão dos vendedores. Só depois é que os gerentes entram na fatia do dinheiro.
Espero ter ajudado.
Se respondeste sim, então o problema é mais complexo (que é o problema aqui na Europa).
A solução que encontrei é não olhar para as vendas, mas sim para os recebimentos. Aí calculo a comissão dos vendedores. Só depois é que os gerentes entram na fatia do dinheiro.
Espero ter ajudado.
GOSTEI 0