Parâmetro de Bloqueio da Alteração do Percentual de Comissão
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Vendedor → Parâmetros de Vendedor Caption (label na tela):
Bloq Alt. de Comissão dos Vários Vendedores(rótulo posicionado à esquerda do combo) Tabela:PARMFATUR.ST_ALTERACOMISSAOValor padrão:N(Não) — definido emUdmMFA001.pas:519
Telas impactadas
| Módulo | Código | Descrição | Tipo de uso |
|---|---|---|---|
| Parâmetros de Faturamento | MFA001 | Configura o valor do parâmetro (combobox Sim/Não) | Produtora |
| Pedido de Venda | MPD002 | Ao salvar o pedido, pula o rateio/recalculo de vendedores quando o item já possui registros em ITEMPEDIDOVENDEDOR | Consumidora |
| Ordem de Serviço (Máquinas/Recapagem) | MPD004 | Mesma lógica do MPD002, porém sobre ITEMORCAMENTOVENDEDOR | Consumidora |
| Vendedor Individual (jVendedor) | jVendedor/UVendedorIndividual.pas | Bloqueia a edição das colunas VL_COMISSAO e PC_COMISSAO no grid e oculta o botão btnALTERACOMISSAO quando o parâmetro está como S | Consumidora |
| Vendedor Agrupado (jVendedor) | jVendedor/UVendedorAgrupado.pas | Idem ao individual: bloqueia as colunas de comissão, oculta botão e desabilita itens de PopupMenu quando S | Consumidora |
Procedures impactadas
Nenhuma procedure, view ou trigger em Scripts/ faz referência a ST_ALTERACOMISSAO. A lógica do parâmetro é inteiramente executada no cliente Delphi (MPD002, MPD004 e jVendedor), atuando sobre dataset em memória e sobre controles visuais de grid.
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_ALTERACOMISSAO | PARMFATUR | Liga/desliga a possibilidade de alterar manualmente o percentual/valor de comissão rateado entre vendedores |
PC_COMISSAO, VL_COMISSAO | ITEMPEDIDOVENDEDOR, ITEMORCAMENTOVENDEDOR | Percentual e valor de comissão por vendedor, preenchidos via rateio. São os campos "protegidos" quando o parâmetro está em S |
ST_COMISSAO | ITEMPEDIDO / MAQUINA (OS) | Indica se o item gera comissão — pré-requisito para que o bloco de rateio seja disparado no MPD002/MPD004 |
ST_VARIOSVENDEDORES, TP_MOSTRAVENDEDORES | PARMFATUR | Controlam se o bloco de rateio de vendedores é executado (ST_VARIOSVENDEDORES='S' e TP_MOSTRAVENDEDORES<>'A') |
Opções disponíveis
S - Sim (bloqueia alteração manual da comissão)
| O que faz | Detalhe |
|---|---|
| No MPD002 (salvar pedido) | Ao varrer tabITEMPEDIDO, se o item já tiver linhas em ITEMPEDIDOVENDEDOR, não re-executa o rateio (RateioVendedorIndividual). Apenas recalcula quando o item ainda não possui vendedores rateados (Resultado[0] = '') ou quando o valor líquido do item foi alterado |
| No MPD004 (salvar OS) | Mesma lógica, aplicada sobre ITEMORCAMENTOVENDEDOR e tabMAQUINA |
| No grid de Vendedor Individual | Colunas 2 e 3 (VL_COMISSAO e PC_COMISSAO) ficam ReadOnly, com fonte $009D6A00 e fundo $00EEEEEE (cinza). Botão btnALTERACOMISSAO invisível |
| No grid de Vendedor Agrupado | Colunas 4 e 5 ficam ReadOnly com mesmas cores; botão btnALTERACOMISSAO invisível; itens 1 e 3 do PopupMenu desabilitados |
| Pergunta ao usuário? | Não. Não há confirmação — o comportamento é silencioso |
Simulação passo a passo
- Vá em MFA001 → aba Faturamento → Vendedor → combobox
Bloq Alt. de Comissão dos Vários Vendedores= Sim. - Garanta que
Mostra Valor e Percentual dos Vários Vendedores(ST_MOSTRACOMISSAO) = Sim eVários Vendedores Por Produto(ST_VARIOSVENDEDORES) = Sim. - Salve (F6).
- Abra um Pedido de Venda em MPD002 e inclua um item que gere comissão (
ST_COMISSAO = 'S'). - Clique em "Alterar Comissão" do rateio de vendedores (ou abra a tela de vendedor individual/agrupado).
Resultado esperado:
- As colunas
VL_COMISSAOePC_COMISSAOaparecem com fundo cinza e texto dourado, não editáveis. - O botão
btnALTERACOMISSAOnão é exibido. - No rateio agrupado, os itens do menu popup "Alterar Comissão" ficam desabilitados.
- Ao salvar o pedido, se o item já tiver rateio de vendedores cadastrado em
ITEMPEDIDOVENDEDORcom o mesmo valor líquido, o sistema não refaz o rateio (preserva os percentuais que já existem, mesmo que a comissão do vendedor na tabelaVENDEDOR/ITEMtenha mudado).
N - Não (default — permite alteração manual)
| O que faz | Detalhe |
|---|---|
| No MPD002 (salvar pedido) | Chama sempre RateioVendedorIndividual para cada item com ST_COMISSAO='S', recalculando percentuais/valores com base nas regras da procedure CALCULA_COMISSAO_V2 |
| No MPD004 (salvar OS) | Mesmo comportamento sobre ordens de serviço (tabMAQUINA) |
| No grid de Vendedor Individual / Agrupado | Colunas PC_COMISSAO/VL_COMISSAO permanecem editáveis, botão "Alterar Comissão" visível, PopupMenu habilitado |
Simulação passo a passo
- Em MFA001 →
ST_ALTERACOMISSAO= Não. - Abra um pedido em MPD002 com item que gere comissão.
- Abra o rateio de vendedor do item.
Resultado esperado: Usuário consegue digitar livremente o % e o Valor de comissão no grid. Ao salvar o pedido, o sistema refaz o rateio para todos os itens comissionáveis (regerando ITEMPEDIDOVENDEDOR a cada Post).
Interação com ST_COMISSAO / ST_ALTERACOMISSAOGRUPO
O parâmetro ST_COMISSAO (no cadastro do item/grupo) define se o item gera comissão. ST_ALTERACOMISSAO atua em uma camada posterior — depois que o item já está marcado para comissionar — e decide se o percentual rateado entre vendedores pode ser editado manualmente.
Ele também é complementar a ST_ALTERACOMISSAOGRUPO, que propaga o PC_COMISSAO do item para todos os demais itens do mesmo grupo (dataset ITEMPEDIDO), enquanto ST_ALTERACOMISSAO governa o rateio por vendedor (dataset ITEMPEDIDOVENDEDOR).
| Cenário | ST_COMISSAO (item) | ST_ALTERACOMISSAO | ST_ALTERACOMISSAOGRUPO | Comportamento |
|---|---|---|---|---|
| Sem comissão no item | N | — | — | Bloco de rateio não é executado |
| Com comissão, livre | S | N | N | Usuário edita %/VL do vendedor; comissão do item não se propaga ao grupo |
| Com comissão, rateio travado | S | S | N | Rateio fica ReadOnly; botão "Alterar Comissão" oculto; alteração do item não se propaga ao grupo |
| Com comissão, rateio travado + propagação no grupo | S | S | S | Rateio travado no grid; alteração do PC_COMISSAO do item (via edtPC_COMISSAOExit no MPD002) é propagada a todos os itens do mesmo CD_GRUPO, mediante confirmação |
Observação:
ST_ALTERACOMISSAOnão impede a execução das procedures de comissão (CALCULA_COMISSAO,CALCULA_COMISSAO_V2, etc.). Ele apenas evita que o rateio seja refeito quando já existem registros de vendedor no item, preservando percentuais manuais previamente digitados ou herdados.
Tabela Comparativa Resumida
| Valor | Descrição | Grid de Vendedor | Botão "Alterar Comissão" | Recalculo ao salvar |
|---|---|---|---|---|
N | Permite alterar (default) | Editável | Visível | Sim, sempre |
S | Bloqueia alteração | ReadOnly, fundo cinza, fonte dourada | Invisível | Só para itens sem rateio prévio ou com valor líquido alterado |
Referências no Código Fonte
Delphi — tela de parâmetros (MFA001)
| Arquivo | Linha(s) | Conteúdo |
|---|---|---|
source/MFA001/UMFA001.dfm | 5140-5153 | Label lbl59: Caption = 'Bloq Alt. de Comissão dos Vários Vendedores' (Left=262, Top=94, taRightJustify) |
source/MFA001/UMFA001.dfm | 5446-5472 | cmbST_ALTERACOMISSAO: TwwDBComboBox vinculado a ST_ALTERACOMISSAO, Items: Sim=S / Não=N |
source/MFA001/UdmMFA001.pas | 199 | Declaração do field tabPARMFATURST_ALTERACOMISSAO: TStringField |
source/MFA001/UdmMFA001.pas | 519 | AfterInsert: tabPARMFATURST_ALTERACOMISSAO.AsString := 'N'; (valor default) |
source/MFA001/UdmMFA001.dfm | 209, 1488-1493, 2570, 2798, 3089 | SELECT/INSERT/UPDATE da PARMFATUR e definição do field persistente |
Delphi — telas consumidoras
| Arquivo | Linha(s) | Conteúdo |
|---|---|---|
source/MPD002/UdmMPD002.pas | 5753 | Carga do parâmetro no SELECT da PARMFATUR usado pelo pedido |
source/MPD002/UMPD002.pas | 2500-2518 | Dentro do BtnSalvar, se ST_COMISSAO='S' e ST_ALTERACOMISSAO='S', consulta ITEMPEDIDOVENDEDOR pelo item; se já houver rateio (Resultado[0] <> ''), desativa FlagAlteraComissao para não refazer o RateioVendedorIndividual |
source/MPD004/UdmMPD004.pas | 315-316, 373, 391 | Declaração da variável iST_ALTERACOMISSAO, carga via SELECT e atribuição de Resultado[14] |
source/MPD004/UMPD004.pas | 702-719 | Mesma lógica do MPD002, aplicada a OS (ITEMORCAMENTOVENDEDOR, tabMAQUINA) |
source/jVendedor/UVendedorIndividual.pas | 558-567 | FormShow: se ST_ALTERACOMISSAO='S', torna colunas 2 e 3 do grid ReadOnly, aplica cores cinza/dourado e oculta btnALTERACOMISSAO |
source/jVendedor/UVendedorAgrupado.pas | 709-720 | Idem ao individual, mas sobre colunas 4 e 5; também desabilita itens 1 e 3 do PopupMenu |
source/jVendedor/UVendedorAgrupado.pas | 1196-1210 | SELECT que carrega ST_ALTERACOMISSAO da PARMFATUR para Param.St_BloqAlteraComissao |
source/jVendedor/jRateioVendedor.pas | 58 | Declaração do campo St_BloqAlteraComissao no record de parâmetros do rateio |
SQL
Nenhuma procedure/view/trigger em Scripts/ faz referência a ST_ALTERACOMISSAO. A lógica é exclusivamente cliente (Delphi/MPD002/MPD004/jVendedor).