Pular para o conteúdo principal

Parâmetro de Alteração de Comissão em Grupo

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Parâmetros de Pedidos/Ordem de Serviço (Opção 1) Caption (label na tela): Altera Comissão de Todo o Grupo do Item Tabela: PARMFATUR.ST_ALTERACOMISSAOGRUPO Valor padrão: N (Não) — definido em UdmMFA001.pas:499

Telas impactadas​

MóduloCódigoDescriçãoTipo de uso
Parâmetros de FaturamentoMFA001Configura o valor do parâmetro (combobox Sim/Não)Produtora
Pedido de VendaMPD002Lê o parâmetro para propagar PC_COMISSAO a todos os itens do mesmo grupo do produto ao sair do campo de comissãoConsumidora

Procedures impactadas​

Não há procedures SQL no diretório Scripts/ que referenciem ST_ALTERACOMISSAOGRUPO. A lógica do parâmetro é inteiramente executada no cliente Delphi (no MPD002), atualizando o dataset tabITEMPEDIDO em memória.

Campos envolvidos​

CampoTabelaDescrição
ST_ALTERACOMISSAOGRUPOPARMFATURLiga/desliga a propagação da comissão a todo o grupo
PC_COMISSAOITEMPEDIDOPercentual de comissão do item do pedido (campo que será replicado)
CD_GRUPOITEMPEDIDOCódigo do grupo do produto — chave de agrupamento utilizada para identificar quais itens recebem o mesmo percentual

Opções disponíveis​

S - Sim (propaga comissão ao grupo)​

O que fazDetalhe
Pergunta ao usuário?SIM, exibe msgcodigo('C-0000', ['Deseja Alterar o Percentual de todo o Grupo ' + Grupo + '?'])
Quando dispara?No OnExit do campo edtPC_COMISSAO do MPD002 (ao sair do % de comissão do item)
O que altera?Para cada linha de tabITEMPEDIDO cujo CD_GRUPO seja igual ao do item que disparou o evento, coloca o dataset em Edit e grava o novo percentual em PC_COMISSAO
Como itera?Percorre todo o dataset (First + while not Eof do ... Next) com DisableControls e DesabilitaEventos := True, restaurando o RecNo original no final
Mensagem finalmsgcodigo('I-0000', ['Operação Realizada com Sucesso!'])

Simulação passo a passo​

  1. Vá em MFA001 → aba Pedidos / O.S. → Parâmetros de Pedidos/Ordem de Serviço → combobox Altera Comissão de Todo o Grupo do Item = Sim.
  2. Salve (F6).
  3. Abra um Pedido de Venda em MPD002.
  4. Inclua dois ou mais itens do mesmo grupo (ex.: grupo 01 → Produto A e Produto B).
  5. Inclua também um item de outro grupo (ex.: grupo 02 → Produto C).
  6. Posicione em Produto A e altere % Comissão de 2,00 para 5,00. Saia do campo (Tab / Enter).
  7. Sistema pergunta: "Deseja Alterar o Percentual de todo o Grupo 01?" → clique Sim.

Resultado esperado:

  • Produto A → PC_COMISSAO = 5,00 (alteração original).
  • Produto B → PC_COMISSAO = 5,00 (propagado por estar no grupo 01).
  • Produto C → PC_COMISSAO permanece inalterado (grupo 02 ≠ 01).
  • Mensagem "Operação Realizada com Sucesso!" exibida.
  • O cursor permanece no item que disparou a alteração (o RecNo é restaurado).

N - Não (default)​

O que fazDetalhe
Pergunta ao usuário?NÃO
Efeito ao sair do PC_COMISSAOA função recalculaComissaoGrupo é chamada, mas o if (parmfatur.values['ST_ALTERACOMISSAOGRUPO'] = 'S') retorna falso e nada é executado
Alteração de comissãoAfeta somente o item corrente

Simulação passo a passo​

  1. Em MFA001 → ST_ALTERACOMISSAOGRUPO = Não.
  2. Abra um pedido no MPD002 com vários itens do mesmo grupo.
  3. Altere % Comissão de um item de 2,00 para 5,00. Saia do campo.

Resultado esperado: Apenas o item editado fica com 5,00. Os demais itens do mesmo grupo mantêm os percentuais originais. Nenhuma pergunta é exibida.


Interação com ST_COMISSAO​

O parâmetro ST_COMISSAO controla se o sistema calcula comissão (valor e percentual) nos itens de pedidos, notas e ordens de serviço. O parâmetro ST_ALTERACOMISSAOGRUPO atua em uma camada posterior: depois que o percentual PC_COMISSAO já está no item do pedido, ele define se uma alteração manual desse percentual deve se propagar aos demais itens do mesmo grupo.

CenárioST_COMISSAOST_ALTERACOMISSAOGRUPOComportamento no MPD002
Não calcula comissãoN—O campo PC_COMISSAO tende a ficar zerado/ignorado; a propagação em grupo perde sentido
Calcula comissão, sem propagaçãoS (ou V)NCada item mantém o seu próprio PC_COMISSAO. Alterações são locais ao item
Calcula comissão, com propagaçãoS (ou V)SApós calcular comissão por item, qualquer ajuste manual de PC_COMISSAO via tela pode ser replicado a todos os itens do mesmo CD_GRUPO, mediante confirmação

Observação: ST_ALTERACOMISSAOGRUPO não invoca nenhuma das procedures de comissão (CALCULA_COMISSAO, RECALCULA_COMISSAO, etc.). A alteração é feita direto no dataset tabITEMPEDIDO em memória e será persistida no próximo Post/gravação do pedido.

Tabela Comparativa Resumida​

ValorDescriçãoPergunta na tela?Afeta quais itens?Disparo
NNão propaga (default)NãoApenas o item corrente—
SPropaga comissão ao grupoSim (C-0000)Todos os itens com o mesmo CD_GRUPOOnExit de edtPC_COMISSAO no MPD002

Referências no Código Fonte​

Delphi — tela de parâmetros (MFA001)​

ArquivoLinha(s)Conteúdo
source/MFA001/UMFA001.dfm7957-7970Label Label21: Caption = 'Altera Comissão de Todo o Grupo do Item' (Left=291, Top=279)
source/MFA001/UMFA001.dfm8692-8718wwDBComboBox7 — ComboBox vinculado a ST_ALTERACOMISSAOGRUPO com itens Sim=S / Não=N
source/MFA001/UdmMFA001.pas148Declaração do field tabPARMFATURST_ALTERACOMISSAOGRUPO: TStringField
source/MFA001/UdmMFA001.pas499AfterInsert: tabPARMFATURST_ALTERACOMISSAOGRUPO.AsString := 'N'; (valor default)
source/MFA001/UdmMFA001.dfm154, 1200-1203, 2384, 2546, 2761, 3034Queries SELECT/INSERT/UPDATE da PARMFATUR e definição do field

Delphi — tela consumidora (MPD002)​

ArquivoLinha(s)Conteúdo
source/MPD002/UdmMPD002.pas5744Carga do parâmetro no SELECT da PARMFATUR (alias P) utilizado pelo pedido
source/MPD002/UMPD002.pas6897-6928Procedure recalculaComissaoGrupo(Percentual, Grupo) — lê parmfatur.values['ST_ALTERACOMISSAOGRUPO'], confirma via msgcodigo('C-0000', ...) e percorre tabITEMPEDIDO aplicando o novo PC_COMISSAO em todos os itens com CD_GRUPO igual
source/MPD002/UMPD002.pas6930-6933Handler edtPC_COMISSAOExit → chama recalculaComissaoGrupo(PC_COMISSAO, CD_GRUPO)

SQL​

Nenhuma procedure/view/trigger em Scripts/ faz referência a ST_ALTERACOMISSAOGRUPO. A lógica é exclusivamente cliente (Delphi/MPD002).