ST_RATEIAVENDEDOR — Rateio de Comissão por Vendedor
Tela de configuração: OFI001 — Parâmetros de Oficina Localização: Aba Ordem 2 Tabela:
PARMOFICINA.ST_RATEIAVENDEDORTipo:CHAR(1),NOT NULL, padrão'N'
Controla se o valor base para cálculo de comissão dos vendedores é dividido igualmente entre todos os vendedores vinculados ao item da Ordem de Serviço, ou se cada vendedor recebe comissão sobre o valor integral do item.
Telas impactadas
| Tela | Efeito |
|---|---|
| MOF001 | Altera o cálculo de comissão ao salvar itens de serviço e peça na OS; afeta gravação em ORDEMSERVICOVENDEDOR e comportamento ao recalcular vendedores em VariosVendedores. |
UVendedorIndividual (janela de vendedores individuais) | Altera validações de VL_BASE e PC_BASE; quando S, exige que a soma das bases individuais iguale o total do item. |
Campos envolvidos
| Tabela | Campo | Relação |
|---|---|---|
ORDEMSERVICOVENDEDOR | VL_BASE | Grava o valor rateado (S) ou integral (N) como base de comissão por vendedor. |
ORDEMSERVICOVENDEDOR | VL_COMISSAO | Comissão calculada sobre VL_BASE. |
ORDEMSERVICOVENDEDOR | PC_COMISSAO | Percentual de comissão aplicado. |
Opções disponíveis
S — Sim (Rateio Ativado)
| O que faz | Detalhe |
|---|---|
| Divisão igualitária | O valor líquido do item (VL_TOTAL − VL_DESCONTO) é dividido pela quantidade de vendedores vinculados. Cada vendedor recebe comissão sobre a fração. |
| Validacao de base na tela de vendedores | Ao confirmar (btnOK), o sistema soma VL_BASE de todos os vendedores e compara com o total do item. Se não bater, exibe erro W-0139. |
| Preservacao de registros ao recalcular | Ao detectar alteração no item (valor, quantidade, tabela), o sistema não deleta os registros de ORDEMSERVICOVENDEDOR antes de recalcular; faz UPDATE OR INSERT mantendo vendedores existentes. |
| Base zero permitida | Na tela de vendedores individuais, aceita VL_BASE = 0 e PC_BASE = 0 (validação de valor mínimo é ignorada para OS com rateio). |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2.
- No campo Rateio de Comissão por Vendedor, selecione S (Sim).
- Salve os parâmetros.
- Abra MOF001 e crie ou edite uma Ordem de Serviço.
- Adicione um serviço com valor total de R$ 300,00 e desconto de R$ 0,00.
- Vincule 3 vendedores ao item (Vendedor A, Vendedor B, Vendedor C).
- Salve a OS.
- Consulte a tabela
ORDEMSERVICOVENDEDORpara o item: cada vendedor teráVL_BASE = R$ 100,00(300 / 3). - A comissão de cada vendedor é calculada sobre R$ 100,00, não sobre R$ 300,00.
Resultado esperado: O valor base de comissão é dividido igualmente entre os vendedores. Cada um recebe comissão proporcional à sua fração do total do item.
Excecao / Importante: O rateio ocorre tanto para itens de serviço (
ORDEMSERVITEM) quanto para itens de peça (SERVICOITEM). A contagem de vendedores é feita em tempo real no momento do cálculo — se houver 0 vendedores ou valor líquido ≤ 0, ovlTotaldo rateio será 0.
N — Não (Rateio Desativado — Padrão)
| O que faz | Detalhe |
|---|---|
| Comissão sobre valor integral | Cada vendedor recebe comissão calculada sobre o valor líquido completo do item (VL_TOTAL − VL_DESCONTO). |
| Delete antes de recalcular | Ao detectar alteração no item, o sistema deleta todos os registros de ORDEMSERVICOVENDEDOR daquele item antes de chamar o recálculo, gerando registros novos. |
| Validacao de base flexível | Na tela de vendedores individuais, aceita VL_BASE = 0 e PC_BASE = 0 sem erro (validação de valor mínimo é ignorada para OS). |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2.
- No campo Rateio de Comissão por Vendedor, selecione N (Não).
- Salve os parâmetros.
- Abra MOF001 e crie ou edite uma Ordem de Serviço.
- Adicione um serviço com valor total de R$ 300,00 e desconto de R$ 0,00.
- Vincule 3 vendedores ao item (Vendedor A, Vendedor B, Vendedor C).
- Salve a OS.
- Consulte a tabela
ORDEMSERVICOVENDEDORpara o item: cada vendedor teráVL_BASE = R$ 300,00(valor integral). - A comissão de cada vendedor é calculada sobre R$ 300,00.
Resultado esperado: Todos os vendedores recebem comissão sobre o valor integral do item. Não há divisão.
Excecao / Importante: Ao alterar um item da OS (valor, quantidade, tabela de preço), os registros de vendedor daquele item são deletados e recriados do zero. Quando
S, o sistema preserva os registros existentes e apenas atualiza viaUPDATE OR INSERT.
Interação com outros parâmetros
| Parâmetro | Efeito conjunto |
|---|---|
ST_MODULOVARIOSVENDEDORES (configurado em OFI001 — Parâmetros de Oficina, aba Ordem 2) | Quando S, ativa o módulo de vários vendedores. O rateio só tem efeito prático quando há mais de um vendedor vinculado ao item. Se ST_MODULOVARIOSVENDEDORES = N, o sistema ignora o rateio ao recalcular vendedores de outros itens da OS. |
ST_OBRIGAVENDEDOR (configurado em OFI001 — Parâmetros de Oficina, aba Ordem 2) | Quando S, exige que pelo menos um vendedor seja informado na OS. O rateio divide entre os vendedores existentes; se houver apenas 1, o valor é integral (divisão por 1). |
Regra geral de cálculo
A fórmula aplicada depende do modo de cálculo de vendedores (FlagVendedores):
| FlagVendedores | ST_RATEIAVENDEDOR = S | ST_RATEIAVENDEDOR = N |
|---|---|---|
V (por vendedor) | vlBase = (VL_TOTAL − VL_DESCONTO) / countVend | vlBase = VL_TOTAL − VL_DESCONTO |
| Repetição automática | Mesma lógica — divide antes de chamar CALCULA_COMISSAO_V2 | Comissão calculada sobre valor integral |
O resultado é gravado no campo VL_BASE da tabela ORDEMSERVICOVENDEDOR e utilizado pela function CALCULA_COMISSAO_V2 para retornar V_VL_COMISSAO e V_PC_COMISSAO.
Tabela comparativa resumida
| Aspecto | S (Rateio) | N (Sem rateio) |
|---|---|---|
| Base de comissão por vendedor | Valor do item ÷ nº de vendedores | Valor integral do item |
VL_BASE em ORDEMSERVICOVENDEDOR | Fração igualitária | Valor completo |
| Ao alterar item da OS | Preserva registros, faz UPDATE OR INSERT | Deleta registros e recria |
| Validação soma de bases | Exige que soma = total (erro W-0139) | Não valida soma |
| Valor padrão | — | ✅ 'N' |