Pular para o conteúdo principal

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_ALTERACOMISSAO Valor padrão: N (Não) — definido em UdmMFA001.pas:519

Telas impactadas​

MóduloCódigoDescriçãoTipo de uso
Parâmetros de FaturamentoMFA001Configura o valor do parâmetro (combobox Sim/Não)Produtora
Pedido de VendaMPD002Ao salvar o pedido, pula o rateio/recalculo de vendedores quando o item já possui registros em ITEMPEDIDOVENDEDORConsumidora
Ordem de Serviço (Máquinas/Recapagem)MPD004Mesma lógica do MPD002, porém sobre ITEMORCAMENTOVENDEDORConsumidora
Vendedor Individual (jVendedor)jVendedor/UVendedorIndividual.pasBloqueia a edição das colunas VL_COMISSAO e PC_COMISSAO no grid e oculta o botão btnALTERACOMISSAO quando o parâmetro está como SConsumidora
Vendedor Agrupado (jVendedor)jVendedor/UVendedorAgrupado.pasIdem ao individual: bloqueia as colunas de comissão, oculta botão e desabilita itens de PopupMenu quando SConsumidora

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​

CampoTabelaDescrição
ST_ALTERACOMISSAOPARMFATURLiga/desliga a possibilidade de alterar manualmente o percentual/valor de comissão rateado entre vendedores
PC_COMISSAO, VL_COMISSAOITEMPEDIDOVENDEDOR, ITEMORCAMENTOVENDEDORPercentual e valor de comissão por vendedor, preenchidos via rateio. São os campos "protegidos" quando o parâmetro está em S
ST_COMISSAOITEMPEDIDO / 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_MOSTRAVENDEDORESPARMFATURControlam 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 fazDetalhe
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 IndividualColunas 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 AgrupadoColunas 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​

  1. Vá em MFA001 → aba Faturamento → Vendedor → combobox Bloq Alt. de Comissão dos Vários Vendedores = Sim.
  2. Garanta que Mostra Valor e Percentual dos Vários Vendedores (ST_MOSTRACOMISSAO) = Sim e Vários Vendedores Por Produto (ST_VARIOSVENDEDORES) = Sim.
  3. Salve (F6).
  4. Abra um Pedido de Venda em MPD002 e inclua um item que gere comissão (ST_COMISSAO = 'S').
  5. Clique em "Alterar Comissão" do rateio de vendedores (ou abra a tela de vendedor individual/agrupado).

Resultado esperado:

  • As colunas VL_COMISSAO e PC_COMISSAO aparecem com fundo cinza e texto dourado, não editáveis.
  • O botão btnALTERACOMISSAO nã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 ITEMPEDIDOVENDEDOR com 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 tabela VENDEDOR/ITEM tenha mudado).

N - Não (default — permite alteração manual)​

O que fazDetalhe
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 / AgrupadoColunas PC_COMISSAO/VL_COMISSAO permanecem editáveis, botão "Alterar Comissão" visível, PopupMenu habilitado

Simulação passo a passo​

  1. Em MFA001 → ST_ALTERACOMISSAO = Não.
  2. Abra um pedido em MPD002 com item que gere comissão.
  3. 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árioST_COMISSAO (item)ST_ALTERACOMISSAOST_ALTERACOMISSAOGRUPOComportamento
Sem comissão no itemN——Bloco de rateio não é executado
Com comissão, livreSNNUsuário edita %/VL do vendedor; comissão do item não se propaga ao grupo
Com comissão, rateio travadoSSNRateio 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 grupoSSSRateio 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_ALTERACOMISSAO nã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​

ValorDescriçãoGrid de VendedorBotão "Alterar Comissão"Recalculo ao salvar
NPermite alterar (default)EditávelVisívelSim, sempre
SBloqueia alteraçãoReadOnly, fundo cinza, fonte douradaInvisívelSó para itens sem rateio prévio ou com valor líquido alterado

Referências no Código Fonte​

Delphi — tela de parâmetros (MFA001)​

ArquivoLinha(s)Conteúdo
source/MFA001/UMFA001.dfm5140-5153Label lbl59: Caption = 'Bloq Alt. de Comissão dos Vários Vendedores' (Left=262, Top=94, taRightJustify)
source/MFA001/UMFA001.dfm5446-5472cmbST_ALTERACOMISSAO: TwwDBComboBox vinculado a ST_ALTERACOMISSAO, Items: Sim=S / Não=N
source/MFA001/UdmMFA001.pas199Declaração do field tabPARMFATURST_ALTERACOMISSAO: TStringField
source/MFA001/UdmMFA001.pas519AfterInsert: tabPARMFATURST_ALTERACOMISSAO.AsString := 'N'; (valor default)
source/MFA001/UdmMFA001.dfm209, 1488-1493, 2570, 2798, 3089SELECT/INSERT/UPDATE da PARMFATUR e definição do field persistente

Delphi — telas consumidoras​

ArquivoLinha(s)Conteúdo
source/MPD002/UdmMPD002.pas5753Carga do parâmetro no SELECT da PARMFATUR usado pelo pedido
source/MPD002/UMPD002.pas2500-2518Dentro 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.pas315-316, 373, 391Declaração da variável iST_ALTERACOMISSAO, carga via SELECT e atribuição de Resultado[14]
source/MPD004/UMPD004.pas702-719Mesma lógica do MPD002, aplicada a OS (ITEMORCAMENTOVENDEDOR, tabMAQUINA)
source/jVendedor/UVendedorIndividual.pas558-567FormShow: se ST_ALTERACOMISSAO='S', torna colunas 2 e 3 do grid ReadOnly, aplica cores cinza/dourado e oculta btnALTERACOMISSAO
source/jVendedor/UVendedorAgrupado.pas709-720Idem ao individual, mas sobre colunas 4 e 5; também desabilita itens 1 e 3 do PopupMenu
source/jVendedor/UVendedorAgrupado.pas1196-1210SELECT que carrega ST_ALTERACOMISSAO da PARMFATUR para Param.St_BloqAlteraComissao
source/jVendedor/jRateioVendedor.pas58Declaraçã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).