ST_CALCULOCOMISSAO — Descontar Comissão do Mecânico no Cálculo do Vendedor
Tela de configuração: OFI001 — Parâmetros da Oficina Localização na UI: Aba Ordem 1 Tabela / Campo:
PARMOFICINA.ST_CALCULOCOMISSAOTipo:CHAR(1),NOT NULL, padrão'S'Controle: CheckboxchkST_CALCULOCOMISSAO
Finalidade
Controla se o cálculo de comissão do vendedor sobre serviços e peças de uma Ordem de Serviço deve descontar previamente o valor da comissão do mecânico antes de aplicar o percentual do vendedor.
- Marcado (
S): Base do vendedor =Total - Descontos - Comissão do Mecânico. - Desmarcado (
N): Base do vendedor =Total - Descontos(comissão do mecânico não é deduzida).
O parâmetro atua conjuntamente com ST_COMISSAOTERCEIROS (configurado em OFI001 — Parâmetros da Oficina, aba Ordem 1) e ST_DESCONTOTERCEIROS (mesma tela), que controlam respectivamente se serviços de terceiros entram na base e se seus descontos são considerados.
Telas / Rotinas impactadas
| Tela / Rotina | Arquivo | Efeito |
|---|---|---|
| MOF001 — Ordem de Serviço | source/MOF001/UMOF001.pas | Função CalculaComissao deduz a comissão do mecânico antes de calcular a do vendedor |
| LNF107 — Layout Nota Fiscal (impressão) | source/LNF107/ULNF107.pas | Procedures Calcula_Comissao e Calcula_Totais aplicam a mesma lógica para exibição no relatório |
| ROF004 — Relatório de Comissões | Scripts/VIEW_ROF004.sql | View SQL busca o parâmetro e aplica a dedução ao calcular comissões do vendedor |
| ROF004B — Relatório de Comissões (variação) | Scripts/VIEW_ROF004B.sql | Mesma lógica no script SQL |
| ROF004B_V2 — Relatório de Comissões v2 | Scripts/VIEW_ROF004B_V2.sql | Carrega o parâmetro para cálculo |
| ROF004_OFXMM — Relatório (variante) | Scripts/VIEW_ROF004_OFXMM.sql | Carrega o parâmetro para cálculo |
| MOF006 — Consulta de OS | source/MOF006/UdmMOF006.pas | Carrega o parâmetro em Busca_Parametros para uso interno |
Campos envolvidos
| Campo | Tabela | Papel |
|---|---|---|
ST_CALCULOCOMISSAO | PARMOFICINA | Parâmetro (configuração) |
PC_COMISSAOMEC | ORDEMSERVICO | Percentual de comissão do mecânico |
PC_COMISSAOVEND | ORDEMSERVICO | Percentual de comissão do vendedor (serviços) |
PC_COMISSAOPECAVEND | ORDEMSERVICO | Percentual de comissão do vendedor (peças) |
VL_COMISSAOMEC | ORDEMSERVICO | Valor calculado da comissão do mecânico |
VL_COMISSAOVEND | ORDEMSERVICO | Valor calculado da comissão do vendedor |
Opções disponíveis
S — Descontar Comissão do Mecânico (Padrão)
| O que faz | Detalhe |
|---|---|
| Comportamento | A comissão do vendedor é calculada sobre o valor líquido após deduzir a comissão do mecânico |
| Fórmula serviços | ComissãoVendServ = PC_COMISSAOVEND × (TotalServiços − Descontos − ComissãoMecServ) / 100 |
| Fórmula peças | ComissãoVendPeca = PC_COMISSAOPECAVEND × (TotalPeças − DescontosPeca − ComissãoMecPeca) / 100 |
| Valor padrão | 'S' (marcado ao inserir novo registro em PARMOFICINA) |
Simulação passo a passo
- Acesse OFI001 (Parâmetros da Oficina).
- Na aba Ordem 1, localize o checkbox "Descontar da Comissão da Empresa no Cálculo da Comissão dos Vend.".
- Certifique-se de que está marcado.
- Salve o parâmetro.
- Abra uma Ordem de Serviço em MOF001 com um mecânico e um vendedor configurados.
- Registre serviços de R$ 1.000,00 com comissão do mecânico de 10% (R$ 100,00) e comissão do vendedor de 5%.
- Feche a OS.
- Consulte o relatório de comissões (ROF004).
Resultado esperado: A comissão do vendedor é calculada sobre R$ 900,00 (R$ 1.000,00 − R$ 100,00), resultando em R$ 45,00. A comissão do mecânico permanece R$ 100,00 (integral).
N — Não Descontar Comissão do Mecânico
| O que faz | Detalhe |
|---|---|
| Comportamento | A comissão do vendedor é calculada sobre o valor bruto sem deduzir a comissão do mecânico |
| Fórmula serviços | ComissãoVendServ = PC_COMISSAOVEND × (TotalServiços − Descontos) / 100 |
| Fórmula peças | ComissãoVendPeca = PC_COMISSAOPECAVEND × (TotalPeças − DescontosPeca) / 100 |
Simulação passo a passo
- Acesse OFI001 (Parâmetros da Oficina).
- Na aba Ordem 1, localize o checkbox "Descontar da Comissão da Empresa no Cálculo da Comissão dos Vend.".
- Desmarque o checkbox.
- Salve o parâmetro.
- Abra uma Ordem de Serviço em MOF001 com as mesmas condições do exemplo anterior (serviços de R$ 1.000,00, comissão mecânico 10%, comissão vendedor 5%).
- Feche a OS.
- Consulte o relatório de comissões (ROF004).
Resultado esperado: A comissão do vendedor é calculada sobre R$ 1.000,00 (valor integral), resultando em R$ 50,00. A comissão do mecânico permanece R$ 100,00.
Excecao / Importante: Quando
TP_COMISSAOMEC = 'V'(configurado em OFI001 — Parâmetros da Oficina, aba Ordem 1), o sistema calcula uma média ponderada das comissões de peças e serviços para o vendedor. A lógica de dedução do mecânico continua sendo controlada porST_CALCULOCOMISSAO: se'S', a média é calculada já descontando a comissão do mecânico; se'N', a média usa os valores brutos. O parâmetroTP_COMISSAOMECaltera o método (individual vs. média), mas não substitui o papel deST_CALCULOCOMISSAO.
Regra Geral de Cálculo
A fórmula resumida aplicada em MOF001, LNF107 e nas views de relatório (ROF004) é:
BaseVendedor = TotalLiquido − Descontos − (se ST_CALCULOCOMISSAO = 'S' então ComissaoMec senão 0)
ComissaoVendedor = PercentualVendedor × BaseVendedor / 100
Se ST_CALCULOCOMISSAO = 'N', a parcela ComissaoMec não é subtraída, e o vendedor recebe comissão sobre o valor integral (menos descontos).
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha |
|---|---|---|
Calcula_Comissao | source/LNF107/ULNF107.pas | 362 |
Calcula_Totais | source/LNF107/ULNF107.pas | 396 |
CalculaComissao | source/MOF001/UMOF001.pas | 1069, 1190, 1198 |
Busca_Parametros | source/MOF001/UdmMOF001.pas | 669, 687 |
Busca_Parametros | source/MOF006/UdmMOF006.pas | 270, 288 |
tabPARMOFICINAAfterInsert | source/OFI001/UdmOFI001.pas | 349 |
Referências SQL diretas ao campo em Scripts/
| View | Arquivo | Linha |
|---|---|---|
VIEW_ROF004 | Scripts/VIEW_ROF004.sql | 37, 46, 49, 91 |
VIEW_ROF004B | Scripts/VIEW_ROF004B.sql | 65 |
VIEW_ROF004B_V2 | Scripts/VIEW_ROF004B_V2.sql | 69 |
VIEW_ROF004_OFXMM | Scripts/VIEW_ROF004_OFXMM.sql | 70 |
Candidatas por uso da tabela (sem referência direta ao campo)
Estas procedures/views acessam a tabela PARMOFICINA, mas não citam o campo ST_CALCULOCOMISSAO literalmente. Não há impacto funcional direto identificado:
PARCELA_FINANC_MNF017, PARCELA_FINANCIAMENTO, REABRE_OS, RETORNA_MOTIVOBLOQUEIO, RETORNA_PRECOITEM, VERIFICA_BLOQUEIO, VIEW_DOCUMENTOSBLOQUEADOS, VIEW_ROF008.
Tabela Comparativa Resumida
| Aspecto | S (Marcado) | N (Desmarcado) |
|---|---|---|
| Base de cálculo do vendedor | Total − Descontos − Comissão Mecânico | Total − Descontos |
| Comissão do vendedor fica | Menor (base reduzida) | Maior (base completa) |
| Impacto na comissão do mecânico | Nenhum (recebe integral) | Nenhum (recebe integral) |
| Valor padrão | ✅ 'S' | — |