Pular para o conteúdo principal

Vários Vendedores Por Produto (Rateio de Comissão por Item)

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Aba "Vendedor" → Label Vários Vendedores Por Produto (ComboBox cmbST_VARIOSVENDEDORES) Tabela: PARMFATUR.ST_VARIOSVENDEDORES Valor padrão: N (Não) Hint da tela (módulos relacionados): [MRC001, MPD002, MNF002, MNF024]

Controla se o sistema permite vários vendedores rateando a comissão por item do documento (Pedido, Nota Fiscal, Ordem de Serviço, Ordem de Carregamento e Produção). Quando ativo, cada item passa a ter uma grade auxiliar (ITEMPEDIDOVENDEDOR, ITEMNOTAVENDEDOR, SERVICOITEMVENDEDOR, etc.) permitindo dividir a comissão entre múltiplos vendedores; quando inativo, apenas o vendedor único do cabeçalho recebe a comissão.

Este parâmetro é um dos mais difundidos do módulo faturamento: aparece em 59 stored procedures SQL e em cerca de 30 módulos Delphi, além de ser o gatilho para exibir/ocultar abas inteiras em telas de cadastro como CNF001, MPD002, MNF002, MOF001 e a UI compartilhada em jVendedor/UVendedorAgrupado.pas e jVendedor/UVendedorIndividual.pas.

Telas impactadas​

MóduloCódigoEfeito principal do parâmetro
Parâmetros de FaturamentoMFA001Tela onde o parâmetro é cadastrado; controla UI complementar (aba Vendedor)
NF Saída (principal)MNF002Exibido no hint como alvo principal; alimenta o rateio por item
NF Cupom/ContingênciaMNF008SELECT em PARMFATUR carrega ST_VARIOSVENDEDORES
NF Troca de VendedorMNF011Quando S, exibe grupos de vários vendedores (item/nota/pedido); quando N, atualiza ENDERECOPESSOA.CD_VENDEDOR
NF DevoluçãoMNF019Ajustes no rateio quando S
NF CT-eMNF013Interage com PARMTRANSPORTE.ST_VENDEDOR
Cupom FiscalMNF024Exibido no hint; quando N oculta cmbTP_COMISSAO/lblcomissao; quando S + TP_COMISSAO='M' gera parâmetros de vários vendedores
Conhecimento de TransporteMNF022Usa SELECT próprio de ST_VARIOSVENDEDORES
Ordem Produção RecapadoraMNF025Lógica no rateio
Fechamento NF / RateioMNF026Múltiplas ramificações conforme valor
Pedido de VendaMPD002 (via jVendedor)Exibido no hint como alvo principal
Ordem de ServiçoMOF001Quando S, oculta colunas/edits de vendedor no grid de serviços e trava SERVICOITEMCD_VENDEDOR
Recebimento / CompensaçãoMRC001Exibido no hint como alvo principal
Cadastro VendedorCNF001Quando S, torna pagVendedoresAlteracao visível
Cadastro Tipo MovimentoCNF003Controle de UI específico
Cadastro MovimentaçãoCNF007Controle de UI específico
Cadastro ComissãoCNF008SELECT específico
Cadastro Comissão V2CNF009SELECT ST_VARIOSVENDEDORES, ST_ALTERABASECALCULOCOMISSAO
Cópia PARMFATURCPD001, CPD003, CPD013Replica/ajusta valor na cópia entre empresas
Parâmetros AdminADM010SELECT direto em PARMFATUR.ST_VARIOSVENDEDORES
Conferência/ProduçãoCRC001, CRC002Carrega em iVariosVend
Movimentação ContábilMCO006SELECT em PARMFATUR
Rateio de vendedores (shared)jVendedor/UVendedorAgrupado.pas + jVendedor/UVendedorIndividual.pas + jVendedor/jRateioVendedor.pasCampo St_VariosVendedores do record TParametrosVendedor; gate inicial de abertura da tela agrupada (exige S e TP_MOSTRAVENDEDORES='A')
Serviço de integraçãoJunsoftServiceFatApp/PersistenciaDao.pasCarrega stVariosVendedores

Procedures SQL impactadas (destaques)​

São 59 arquivos em Scripts/ que referenciam ST_VARIOSVENDEDORES. Principais:

Procedure / ViewPapel
CALCULA_COMISSAO.sqlProcedure-chave. Lê o parâmetro (linhas 44, 72-75). Quando N, força CD_TIPOVENDEDOR IS NULL no WHERE. Ramifica várias vezes (ex.: linha 184, 688) para usar RETORNA_BASENOTACOMISSAO_V2 (quando S) vs RETORNA_BASENOTACOMISSAO (quando N)
CALCULA_COMISSAO_V2.sqlVariante utilizada em pipeline novo
CALCULA_CENTRORESULTITEM.sqlRamifica UNION ALL lendo comissão de ITEMNOTA (quando N, linha 119) ou de ITEMNOTAVENDEDOR (quando S, linha 142)
CALCULA_CENTRORESULT.sqlMesma lógica em versão agregada (linha 195 monta WHERE dinâmico AND PF.ST_VARIOSVENDEDORES = ''N'')
GRAVA_NOTAFISCALPEDIDO.sql, GERA_NOTAFISCALPEDIDO.sql, GERA_NOTAFISCALORDEMCARREG.sql, GERA_NFORDEMCARREGMRC049.sqlDecidem se copiam registros de ITEMPEDIDOVENDEDOR para ITEMNOTAVENDEDOR
GRAVA_NOTACTE.sqlIntegra com transporte
RETORNA_VENDEDORES.sql, RETORNA_VENDEDORESPEDIDO.sql, RETORNA_VENDEDORESOS.sql, RETORNA_VENDEDORESOS2.sql, RETORNA_VENDEDORESORDEMSERV.sql, RETORNA_VENDEDORVISITA.sqlFontes de dados do grid de rateio
RETORNA_LIQUIDACAOCOMISSAO.sqlLiquidação olha o parâmetro
RETORNA_VLCONTA_VENDNOTA.sql, RETORNA_VENDASPESSOA.sql, RETORNA_PRODUTOSRRC022.sql, RETORNA_OBSNOTA.sql, RETORNA_ITENSADICIONAISNOTA.sqlUsadas em relatórios fiscais/gerenciais
VIEW_COMISSAO.sql, VIEW_COMISSAONOTA_E.sql, VIEW_COMISSAOMODELO_A/G/H/K.sqlViews de comissão comutam fonte ITEMNOTA ↔ ITEMNOTAVENDEDOR
VIEW_RNF010(_D/_F).sql, VIEW_RNF017_2.sql, VIEW_RNF020(_V).sql, VIEW_RNF029_V.sql, VIEW_RNF035(_GRAFICO).sqlRelatórios de NF consomem o parâmetro
VIEW_REQ014_LUCRATIVIDADE.sql, VIEW_CUSTOVENDARNF006.sql, VIEW_RPD009.sql, VIEW_ROF004_FATMENSAL.sqlRelatórios de rentabilidade/custo/ordem
JV_ACOMPANHAMENTOVENDAS.sql, JV_FATURAMENTOMENSALPORVENDEDOR.sql, JV_PROJECAOVENDEDOR.sqlDashboards do módulo JV
INSERE_CONSERTOSPNEU.sql, INSERE_CONSERTOSRETRABALHO.sql, INSERE_ITEMPEDIDO_BANDARECAP.sqlRecapadora / recondicionamento
GERA_ORDEMPRODUCAORECAP.sql, FECHA_ORDEMPRODUCAORECAP(NOTA).sql, CONFIRMA_ORDEMSERVICO(METAL).sqlProdução/OS
PROCESSA_PEDIDOSOVIS(_DESM).sql, PROCESSA_VISITASOVIS.sql, PROCESSA_ITEMPEDIDOHUB.sql, PROCESSA_ITEMPEDIDOIMPORTACAO.sql, PROCESSA_ITEMPEDIMPPRESTASHOP.sqlIntegrações (SOVIS/Hub/E-commerce)
ITEMPEDIDOPNEUBORRACHEIRO_BI0.sql, GERA_INTEGRACAO.sqlIntegração de pedido específico

Campos envolvidos​

Campo / TabelaRelação com o parâmetro
PARMFATUR.ST_VARIOSVENDEDORESO próprio parâmetro (S/N), domínio DOM_CHAR1
PEDIDO.CD_VENDEDOR / NOTA.CD_VENDEDORVendedor único do cabeçalho (sempre existe)
ITEMPEDIDOVENDEDOR (CD_VENDEDOR, PC_COMISSAO, VL_COMISSAO, CD_TIPOVENDEDOR)Grid de rateio utilizado apenas quando S
ITEMNOTAVENDEDOR (idem)Grid de rateio da NF; UNIONs em CALCULA_CENTRORESULTITEM escolhem esta tabela quando S
SERVICOITEMVENDEDOR, ITENSCONSUMOVENDEDORRateio para Ordem de Serviço
ENDERECOPESSOA.CD_VENDEDOREm MNF011 (troca de vendedor), só é atualizado globalmente quando o parâmetro é N
VENDEDOR.CD_TIPOVENDEDOR / TIPOVENDEDOR"Tipos" de vendedor (ex.: Principal, Técnico, Externo). Usados no rateio quando S
PARMFATUR.TP_MOSTRAVENDEDORESDetermina onde aparece o grid: A=Agrupado, N=Nenhum/individual. UVendedorAgrupado só abre quando ST_VARIOSVENDEDORES='S' e TP_MOSTRAVENDEDORES='A'
PARMFATUR.ST_OBRIGATIPOVENDPRINCIPALObriga tipo "Principal" no rateio; só é visível se este parâmetro = S
PARMFATUR.ST_BLOQMESMOTIPOVENDEDORBloqueia repetir o mesmo tipo de vendedor; visível só quando S
PARMFATUR.ST_REPETECOMISSAOControla o que é reaproveitado Pedido→NF; só é visível quando S e TP_MOSTRAVENDEDORES='N'
PARMFATUR.ST_VENDEDOR (bloqueio)Combinado no MPD020: bloqueia PC_COMISSAOGERAL quando ST_VENDEDOR∈{A,P} e ST_VARIOSVENDEDORES='N' e ST_COMISSAO='S'
PARMFATUR.ST_COMISSAORegras de comissão de item só fazem sentido quando ST_COMISSAO='S'; em MNF024 só gera parâmetros de vários vendedores se ST_COMISSAO='S' e ST_VARIOSVENDEDORES='S'
PARMFATUR.ST_ALTERACOMISSAOO ComboBox é desabilitado quando ST_VARIOSVENDEDORES='N' (cmbST_ALTERACOMISSAOChange)

Opções disponíveis​

S - Sim​

O que fazDetalhe
Habilita grade ITEMPEDIDOVENDEDOR/ITEMNOTAVENDEDOR?SIM - vários vendedores por item, cada um com seu PC_COMISSAO/VL_COMISSAO/CD_TIPOVENDEDOR
Onde aparece a UI de rateio?UVendedorAgrupado (se TP_MOSTRAVENDEDORES='A') ou UVendedorIndividual caso contrário
Impacto no CALCULA_COMISSAO.sqlV_WHERE_VARIOSVENDEDORES = '' (sem filtrar tipo de vendedor); usa RETORNA_BASENOTACOMISSAO_V2 (linha 688)
Impacto no CALCULA_CENTRORESULTITEM.sqlRamo superior do UNION ALL (linha 142): puxa VL_COMISSAO de ITEMNOTAVENDEDOR
MOF001Oculta lblNM_VENDEDOR / edtNM_VENDEDOR1, alarga coluna 1 do gridSERVICOITEM, zera largura da coluna 4, trava tabSERVICOITEMCD_VENDEDOR
MNF011Torna visíveis grpNOTAVARVEND, grpITEMVARVEND, grpVENDEDORESNOTA, grpPEDVARVEND; oculta grpSALDO/grpITEMNOTA; tabITEMPEDIDOPC_COMISSAO.ReadOnly := True
MNF024Quando S, exibe cmbTP_COMISSAO e lblcomissao. Com TP_COMISSAO='M' e ST_COMISSAO='S', monta array ParmVendedores[0..19] para chamar rotina de rateio (linha 1024)
CNF001pagVendedoresAlteracao.TabVisible := True (linhas 3017, 7214) - libera aba de alteração de vendedores do cadastro
CPD001, CPD013Copia ITEMPEDIDOVENDEDOR/ITEMNOTAVENDEDOR durante a cópia entre empresas
MFA001 - comportamento ao marcar ScmbST_ALTERACOMISSAO.Enabled := True; torna visíveis chkST_OBRIGATIPOVENDPRINCIPAL, chkST_BLOQMESMOTIPOVENDEDOR, lblTP_MOSTRAVENDEDORES, cmbTP_MOSTRAVENDEDORES

Simulação passo a passo (modo S)​

  1. Abra MFA001 → aba Vendedor
  2. No campo "Vários Vendedores Por Produto" selecione Sim
  3. Observe: o ComboBox "Altera Comissão" é liberado e aparecem os campos de Obriga Tipo Vendedor Principal, Bloqueia Mesmo Tipo Vendedor, Mostrar Vendedores e (se Mostrar Vendedores='Nenhum') Repetir Vendedores do Pedido na Nota
  4. Salve (F6)
  5. Abra um Pedido (MPD002) e insira um item
  6. Clique em Vendedores (ou a tecla/menu do item) → abre a tela agrupada (UVendedorAgrupado) ou individual (UVendedorIndividual) dependendo de TP_MOSTRAVENDEDORES
  7. Adicione múltiplos vendedores com percentuais diferentes (ex.: V1=60%, V2=40%) - registros vão para ITEMPEDIDOVENDEDOR
  8. Gere a NF a partir do pedido → GERA_NOTAFISCALPEDIDO / GRAVA_NOTAFISCALPEDIDO copiam ITEMPEDIDOVENDEDOR → ITEMNOTAVENDEDOR
  9. Abra o relatório de comissão: VIEW_COMISSAO consulta ITEMNOTAVENDEDOR (cada vendedor recebe proporcional)
  10. Em MNF011, a troca de vendedor apresenta os grupos grpNOTAVARVEND/grpITEMVARVEND/grpVENDEDORESNOTA em vez de atualizar ENDERECOPESSOA em massa

Resultado esperado: A comissão é rateada por vendedor por item; relatórios e integrações contábeis (CALCULA_CENTRORESULTITEM, VIEW_COMISSAO*) consomem ITEMNOTAVENDEDOR. Cadastro de Vendedor em CNF001 ganha a aba "Alterações de Vendedor".


N - Não (valor padrão)​

O que fazDetalhe
Habilita grade ITEMPEDIDOVENDEDOR/ITEMNOTAVENDEDOR?NÃO - somente o vendedor único (PEDIDO.CD_VENDEDOR/NOTA.CD_VENDEDOR) recebe toda a comissão
Impacto no CALCULA_COMISSAO.sqlV_WHERE_VARIOSVENDEDORES = 'AND CD_TIPOVENDEDOR IS NULL' (linhas 77-78); totais são calculados por vendedor único
Impacto no CALCULA_CENTRORESULTITEM.sqlRamo inferior do UNION ALL (linha 119): puxa VL_COMISSAO de ITEMNOTA
MFA001 - comportamento ao marcar NcmbST_ALTERACOMISSAO.Enabled := False; oculta chkST_OBRIGATIPOVENDPRINCIPAL, chkST_BLOQMESMOTIPOVENDEDOR, lblTP_MOSTRAVENDEDORES, cmbTP_MOSTRAVENDEDORES, lblST_REPETECOMISSAO, cmbST_REPETECOMISSAO
MNF011Ao trocar vendedor, executa UPDATE ENDERECOPESSOA SET CD_VENDEDOR = :novo WHERE CD_VENDEDOR = :antigo (substitui em lote)
MNF024Oculta cmbTP_COMISSAO e lblcomissao no abrir da tela (linhas 222-226)
MNF013 (CT-e)Só aplica lógica de PARMTRANSPORTE.ST_VENDEDOR='S' se ST_VARIOSVENDEDORES<>'S' (linha 2518)
MOF001Se TP_COMISSAOMEC='N' e ST_VARIOSVENDEDORES='N', exibe campos de mecânica e comissão de mecânico no cabeçalho (linha 609)
MPD020Quando ST_VENDEDOR∈{A,P} e ST_VARIOSVENDEDORES='N' e ST_COMISSAO='S', bloqueia PC_COMISSAOGERAL
CNF001pagVendedoresAlteracao.TabVisible := False (aba ocultada)

Simulação passo a passo (modo N)​

  1. MFA001 → aba Vendedor → "Vários Vendedores Por Produto" = Não
  2. Salve (F6) - observe que os campos de controle de tipo/bloqueio de vendedor e Mostrar Vendedores/Repetir Vendedores somem
  3. Abra um Pedido (MPD002) → só há 1 vendedor (cabeçalho); não aparece a chamada de rateio por item
  4. Se em MFA001 ST_VENDEDOR = A ou P e ST_COMISSAO='S', o campo Comissão Geral (PC_COMISSAOGERAL) também fica travado no MPD020
  5. Gere a NF → não há cópia de ITEMPEDIDOVENDEDOR para ITEMNOTAVENDEDOR
  6. Relatórios consultam direto ITEMNOTA.VL_COMISSAO (branch N do UNION ALL)
  7. No MNF011, ao trocar de vendedor, é executado um único UPDATE ENDERECOPESSOA atualizando o vendedor do cliente em todos os endereços
  8. No MNF024, a seleção "Tipo Comissão" fica escondida (não relevante sem rateio)

Resultado esperado: Um vendedor, uma comissão por item, UI simplificada em todos os módulos. Este é o valor definido pelo AfterInsert de MFA001 quando um novo registro de PARMFATUR é criado.


Interação com ST_VENDEDOR / ST_COMISSAO e parâmetros correlatos​

  • ST_VENDEDOR (bloqueio de vendedor): É parâmetro ortogonal - cuida apenas do cabeçalho. Em MPD020 (UdmMPD020.pas linhas 391-393), o PC_COMISSAOGERAL só é travado se ST_VENDEDOR∈{A,P} E ST_VARIOSVENDEDORES='N' E ST_COMISSAO='S'. Se ST_VARIOSVENDEDORES='S', a comissão geral é ignorada porque o rateio por item é o que vale.
  • ST_COMISSAO: Em MNF024 (UMNF024.pas linha 1024) a criação de parâmetros de vários vendedores só acontece se ST_COMISSAO='S' E ST_VARIOSVENDEDORES='S'. Um sem o outro não produz rateio.
  • TP_MOSTRAVENDEDORES: jVendedor/UVendedorAgrupado.pas linha 181 tem o gate if (St_VariosVendedores<>'S' or Tp_MostraVendedores<>'A') then exit;. Ou seja, a tela agrupada só funciona com os dois parâmetros ligados na combinação certa.
  • ST_OBRIGATIPOVENDPRINCIPAL / ST_BLOQMESMOTIPOVENDEDOR: dependem totalmente de ST_VARIOSVENDEDORES='S' (caso contrário, os checks são escondidos em cmbST_VARIOSVENDEDORESChange).
  • ST_REPETECOMISSAO: exibido apenas quando ST_VARIOSVENDEDORES='S' E TP_MOSTRAVENDEDORES='N' (callback cmbTP_MOSTRAVENDEDORESChange, UMFA001.pas:2568).
  • ST_ALTERACOMISSAO: o combo é Enabled := False automaticamente quando ST_VARIOSVENDEDORES='N' (não faz sentido alterar comissão item a item sem rateio).
  • jVendedor.TParametrosVendedor: o record em jRateioVendedor.pas linha 62 declara St_VariosVendedores junto com St_Vendedor, St_Comissao, St_AlteraComissao etc. - explicitando que são um conjunto.
  • TP_OBSNOTA: não há dependência direta de código entre ST_VARIOSVENDEDORES e TP_OBSNOTA. RETORNA_OBSNOTA.sql referencia ambos em ramos independentes (observação da nota é montada em função do tipo de vendedor quando rateio está ativo).

Tabela Comparativa Resumida​

AspectoS (Sim)N (Não - padrão)
Rateio de comissão por itemSim (ITEM*VENDEDOR)Não (só cabeçalho)
Aba "Alterações de Vendedor" em CNF001VisívelOculta
Campos Obriga Tipo Principal / Bloqueia Mesmo Tipo / Mostrar Vendedores em MFA001VisíveisOcultos
cmbST_ALTERACOMISSAO editável?SimNão
cmbST_REPETECOMISSAO visível?Se TP_MOSTRAVENDEDORES='N'Nunca
MOF001 - Vendedor no grid de serviçoOculto e travadoVisível/editável
MNF024 - cmbTP_COMISSAOVisívelOculto
MNF011 troca de vendedorUsa rateio por itemUPDATE ENDERECOPESSOA em massa
CALCULA_COMISSAO / CALCULA_CENTRORESULTITEMFonte: ITEMNOTAVENDEDOR, sem filtro CD_TIPOVENDEDORFonte: ITEMNOTA, filtra CD_TIPOVENDEDOR IS NULL

Referências no Código Fonte​

Definição do parâmetro (MFA001)​

  • source/MFA001/UMFA001.dfm linha 5110-5124 - Label Label23 com Caption = 'Vários Vendedores Por Produto', FocusControl = cmbST_VARIOSVENDEDORES
  • source/MFA001/UMFA001.dfm linha 5370-5400 - ComboBox cmbST_VARIOSVENDEDORES: TwwDBComboBox, DataField = 'ST_VARIOSVENDEDORES', Items.Strings = ('Sim'#9'S', 'Não'#9'N'), Hint = '[MRC001, MPD002, MNF002, MNF024]', OnChange = cmbST_VARIOSVENDEDORESChange
  • source/MFA001/UMFA001.dfm linha 5557 - cmbST_REPETECOMISSAO.OnChange = cmbST_VARIOSVENDEDORESChange (compartilha o handler)
  • source/MFA001/UMFA001.pas linha 589 - declaração cmbST_VARIOSVENDEDORES: TwwDBComboBox
  • source/MFA001/UMFA001.pas linha 790 - declaração procedure cmbST_VARIOSVENDEDORESChange(Sender: TObject)
  • source/MFA001/UMFA001.pas linhas 2128-2160 - implementação do OnChange: mostra/oculta campos correlatos (cmbST_ALTERACOMISSAO.Enabled, chkST_OBRIGATIPOVENDPRINCIPAL.Visible, chkST_BLOQMESMOTIPOVENDEDOR.Visible, lblTP_MOSTRAVENDEDORES.Visible, cmbTP_MOSTRAVENDEDORES.Visible, lblST_REPETECOMISSAO.Visible, cmbST_REPETECOMISSAO.Visible)
  • source/MFA001/UMFA001.pas linha 2568 - cmbTP_MOSTRAVENDEDORESChange checa cmbST_VARIOSVENDEDORES.Value = 'S' antes de decidir visibilidade de cmbST_REPETECOMISSAO
  • source/MFA001/UdmMFA001.dfm linha 157, 2386, 3037 - tabPARMFATUR/outros datasets incluem ST_VARIOSVENDEDORES no SELECT
  • source/MFA001/UdmMFA001.dfm linha 1208-1211 - tabPARMFATURST_VARIOSVENDEDORES: TStringField definição
  • source/MFA001/UdmMFA001.dfm linha 2763 - UPDATE: ST_VARIOSVENDEDORES = :ST_VARIOSVENDEDORES
  • source/MFA001/UdmMFA001.pas linha 150 - campo tabPARMFATURST_VARIOSVENDEDORES: TStringField
  • source/MFA001/UdmMFA001.pas linha 491 - AfterInsert: tabPARMFATURST_VARIOSVENDEDORES.AsString := 'N'; (valor padrão)

Consumidores Delphi por módulo​

jVendedor (shared unit crítica)

  • source/jVendedor/jRateioVendedor.pas linha 62 - declaração St_VariosVendedores no record TParametrosVendedor
  • source/jVendedor/UVendedorAgrupado.pas linha 181 - gate inicial if (Param.St_VariosVendedores <> 'S') or (param.Tp_MostraVendedores <> 'A') then exit;
  • source/jVendedor/UVendedorAgrupado.pas linhas 1196-1214 - SELECT em PARMFATUR carregando ST_VARIOSVENDEDORES em Param.St_VariosVendedores
  • source/jVendedor/UVendedorIndividual.pas linha 450 - if (ParmFatur.Values['ST_BLOQMESMOTIPOVENDEDOR']='S' and ST_VARIOSVENDEDORES='S') then validação de tipo duplicado

Pedidos

  • source/CPD001/UCPD001.pas linhas 1333, 1454 - cópia de parâmetros entre empresas (ramos ='S')
  • source/CPD003/UCPD003.pas linhas 533, 1484 - cópia (ramo ='N' em 533, ramo ='S' em 1484)
  • source/CPD013/UCPD013.pas linhas 906, 1437, 2186 - cópia condicional quando ='S'
  • source/MPD020/UdmMPD020.pas (via MPD020) - bloqueia PC_COMISSAOGERAL combinado com ST_VENDEDOR/ST_COMISSAO

Notas Fiscais

  • source/MNF011/UMNF011.pas linhas 383, 558, 755, 805, 960, 1013, 1285, 1343 - ramificações ='S' (torna visíveis os grupos de rateio, trava comissões)
  • source/MNF011/UMNF011.pas linhas 1435, 1588 - ramificações ='N' (UPDATE em ENDERECOPESSOA)
  • source/MNF013/UdmMNF013.pas linhas 538, 700, 725, 1093, 1532, 1548, 1830 - lógica de CT-e lendo iST_VARIOSVENDEDORES
  • source/MNF013/UMNF013.pas linha 2518 - if (ParmTransporte.Values['ST_VENDEDOR']='S') and (dmMNF013.iST_VARIOSVENDEDORES<>'S') then
  • source/MNF019/UdmMNF019.pas linha 1539 - ramo específico de devolução
  • source/MNF022/UMNF022.pas linhas 346, 1403 - SELECT local em PARMFATUR + ramificação ='S'
  • source/MNF024/UdmMNF024.pas linhas 121, 145, 153 - declaração iST_VARIOSVENDEDORES, SELECT em PARMFATUR e atribuição Resultado[1]
  • source/MNF024/UMNF024.pas linha 222 - if (iST_VARIOSVENDEDORES='N') esconde cmbTP_COMISSAO/lblcomissao
  • source/MNF024/UMNF024.pas linhas 1024, 1332, 2282, 2769 - gera array ParmVendedores quando ='S' com ST_COMISSAO='S'
  • source/MNF025/UMNF025.pas linha 729 - ramo ='S'
  • source/MNF026/UdmMNF026.pas linhas 843, 1165, 1181, 5752, 5810, 5945, 6018, 6065, 6163 - múltiplas ramificações no fluxo de rateio
  • source/MNF008/UdmMNF008.pas linhas 765-766 - SELECT em PARMFATUR (campo repetido duas vezes no SQL, provavelmente um bug histórico inofensivo)

Ordem de Serviço

  • source/MOF001/UMOF001.pas linhas 540, 599, 609, 2235, 2264 - configura UI do grid de serviços e campos de mecânica

Cadastros correlatos

  • source/CNF001/UdmCNF001.pas linhas 1186, 1231, 1235 - carrega em iST_VARIOSVENDEDORES
  • source/CNF001/UCNF001.pas linhas 2768, 3017, 6968, 7214 - controla visibilidade de pagVendedoresAlteracao
  • source/CNF003/UCNF003.pas linhas 310, 520 - SELECT local
  • source/CNF007/UCNF007.pas linha 560 - ramo ='S'
  • source/CNF008/UCNF008.pas linhas 497, 499-502 - SELECT ad hoc e atribuição LVariosVendedores
  • source/CNF009/UCNF009.pas linha 400 - SELECT combinado ST_VARIOSVENDEDORES, ST_ALTERABASECALCULOCOMISSAO

Recebimento / Produção

  • source/CRC001/UdmCRC001.pas linha 229 - SELECT básico
  • source/CRC002/UdmCRC002.pas linhas 408-414 - SELECT e atribuição dmCRC002.iVariosVend := resultado[1];

Administração

  • source/ADM010/UADM010.pas linha 544 - 'SELECT P.ST_VARIOSVENDEDORES FROM PARMFATUR P ' + ...

Contábil

  • source/MCO006/UdmMCO006.pas linhas 2109-2110 - SELECT em PARMFATUR (campo repetido duas vezes no SQL)

Serviço de integração

  • source/JunsoftServiceFatApp/PersistenciaDao.pas linhas 243, 277, 1129, 1184 - carrega stVariosVendedores := DtParams.FieldByName('ST_VARIOSVENDEDORES').AsString;

Referências SQL (principais linhas)​

  • Scripts/CALCULA_COMISSAO.sql linhas 44 (declare), 72-75 (SELECT), 77 (IF), 184 (branch Modelo Sobre Faturamento), 644, 657 (chamadas a RETORNA_PERFILCOMISSAOV2/RETORNA_PERFILCOMISSAO passando o parâmetro como argumento), 688 (branch =S chamando RETORNA_BASENOTACOMISSAO_V2), 931, 946 (chamadas a VERIFICA_COMISSAOPERFIL passando o parâmetro)
  • Scripts/CALCULA_CENTRORESULTITEM.sql linhas 119, 296 (branch ='N'), 142, 319 (branch ='S')
  • Scripts/CALCULA_CENTRORESULT.sql linha 195 - WHERE dinâmico
  • Demais 55 arquivos listados na seção "Procedures SQL impactadas" acima.

Cópia entre empresas​

  • source/CPD009/UdmCPD009.* - Utilitário de cópia de PARMFATUR entre empresas; inclui ST_VARIOSVENDEDORES no INSERT/UPDATE/SELECT (padrão idêntico ao de ST_VENDEDOR).

Nota de modelo: a semântica do parâmetro é binária (S/N) e amplamente verificada em runtime Delphi via ParmFatur.Values['ST_VARIOSVENDEDORES'] (string lookup) e carregada explicitamente em variáveis iST_VARIOSVENDEDORES nos data modules das telas de alto volume (MNF013, MNF024, MNF026).