CD_MARCA - Filtro de Marca nos Parâmetros de Vendedor
Tela de configuração: MFA007 — Parâmetros de Vendedor Tabela:
PARMVENDEDOR.CD_MARCA(INTEGER, FK →MARCA.CD_MARCA) Valor padrão: preenchido pela pesquisa (Resultado[1]) Campo de descrição associado:DS_MARCA(somente leitura, ao lado do campo de código)
Resumo
O campo CD_MARCA filtra quais Marcas de produto um vendedor pode atender/comercializar. Ele é um dos filtros opcionais da tabela PARMVENDEDOR, usada para restringir o escopo de atuação do vendedor por Marca, Grupo, Item, Pessoa ou Região Comercial.
Telas impactadas
| Tela | Contexto |
|---|---|
| MFA007 — Parâmetros de Vendedor | Onde o parâmetro é cadastrado (este campo) |
| CNF001 — Cadastro de Marca | Cadastro da tabela MARCA referenciada pela FK |
| Telas de faturamento/vendas (indireto) | A tabela PARMVENDEDOR é consumida na lógica de comissionamento |
Campos envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
CD_MARCA | PARMVENDEDOR | INTEGER | Código da Marca cadastrada como filtro do vendedor |
DS_MARCA | PARMVENDEDOR (lookup via join) | VARCHAR(60) | Descrição da Marca exibida ao lado do campo |
CD_MARCA | MARCA | INTEGER (PK) | Tabela-mestre de Marcas |
CD_MARCA | COMISSAOVENDEDOR | INTEGER | Marca usada como critério no cálculo de comissões |
CD_MARCA | ITEM | INTEGER | Marca associada ao produto |
Opções disponíveis
Preenchimento livre — Seleção de Marca via pesquisa
Este campo não possui opções fixas (combo/radio). Trata-se de um campo editável que aceita o código de uma Marca cadastrada na tabela MARCA.
| O que faz | Detalhe |
|---|---|
| Permite digitar código da Marca | Sim, campo editável |
Pesquisa com <F9> | Sim, abre janela "Selecione a Marca" listando DS_MARCA e CD_MARCA |
| Obrigatório | Não — campo opcional; se vazio, não filtra por marca |
| Validação | FK → MARCA.CD_MARCA (garante que o código exista) |
| Campo de descrição | edtDS_MARCA (somente leitura, preenchido automaticamente) |
Simulação passo a passo
- Acesse MFA007 — Parâmetros de Vendedor.
- Selecione o vendedor desejado no campo superior.
- Posicione o cursor no campo Marca (label "Marca").
- Pressione
<F9>para abrir a janela de pesquisa. - Na janela "Selecione a Marca", localize a marca desejada (ex.: "Bridgestone", "Michelin").
- Dê duplo-clique na marca desejada ou selecione e confirme.
- O campo será preenchido com o código da marca e a descrição aparecerá ao lado.
- Clique em Salvar para gravar o parâmetro.
Resultado esperado: O vendedor fica associado à marca selecionada na tabela PARMVENDEDOR. Essa associação será usada como critério de comissionamento: quando o item vendido pertence a essa marca, o percentual de comissão correspondente será aplicado.
Exceção / Importante: Se o campo ficar vazio, o filtro de marca é ignorado no cálculo de comissão — a procedure
CALCULA_COMISSAOusaCOALESCE(CD_MARCA, -1)para tratar marcas não especificadas como "todas". Se houver múltiplos registros emPARMVENDEDORpara o mesmo vendedor com marcas diferentes, a comissão é determinada pela melhor correspondência (mais específica) na tabelaCOMISSAOVENDEDOR.
Regra de Comissionamento
O CD_MARCA informado em PARMVENDEDOR alimenta o fluxo de cálculo de comissão das procedures:
CALCULA_COMISSAO— Busca oCD_MARCAdoITEMvendido e cruza comCOMISSAOVENDEDOR.CD_MARCAusando a lógica de "melhor correspondência" (COALESCEordenado pela especificidade).CALCULA_COMISSAO_V2— Mesma lógica, versão atualizada com suporte aCD_TIPOVENDEDOR.VIEW_COMISSAOMODELO_A/C/G/H/K— RecebemI_CD_MARCAcomo parâmetro de entrada para determinar a faixa de comissão no modelo de meta.VIEW_COMISSAOMODELO_C— UsaI_CD_MARCApara buscar faixas de preço/comissão interpoladas.
A lógica de "melhor correspondência" prioriza registros de COMISSAOVENDEDOR mais específicos: primeiro tenta casar Marca + Grupo + Subgrupo + Item + Pessoa; se não encontrar, vai abrindo para níveis menos específicos (usando COALESCE com -1 para campos nulos).
Tabela Comparativa Resumida
| Situação | Comportamento |
|---|---|
| Marca preenchida | Filtra comissão pela marca específica do item |
| Marca vazia (NULL) | Marca não é usada como critério de filtro — todas as marcas são consideradas |
Marca não existe em COMISSAOVENDEDOR | A procedure usa COALESCE(CD_MARCA, -1) = COALESCE(:I_CD_MARCA, -1) para buscar registro genérico |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Descrição |
|---|---|---|
TfrmMFA007.edtCD_MARCAKeyDown | source/MFA007/UMFA007.pas:408 | Abre pesquisa <F9> de Marca e preenche tabPARMVENDEDORCD_MARCA |
Referências SQL diretas ao campo (comissionamento)
| Procedure/View | Arquivo | Uso |
|---|---|---|
CALCULA_COMISSAO | Scripts/CALCULA_COMISSAO.sql:28 | Declara I_CD_MARCA; usa-o como filtro dinâmico em COMISSAOVENDEDOR |
CALCULA_COMISSAO_V2 | Scripts/CALCULA_COMISSAO_V2.sql:28 | Idem, versão V2 |
VIEW_COMISSAOMODELO_A | Scripts/VIEW_COMISSAOMODELO_A.sql:15 | Parâmetro de entrada I_CD_MARCA |
VIEW_COMISSAOMODELO_C | Scripts/VIEW_COMISSAOMODELO_C.sql:10 | Parâmetro de entrada I_CD_MARCA; filtra COMISSAOVENDEDOR.CD_MARCA |
VIEW_COMISSAOMODELO_G | Scripts/VIEW_COMISSAOMODELO_G.sql:15 | Parâmetro de entrada I_CD_MARCA |
VIEW_COMISSAOMODELO_H | Scripts/VIEW_COMISSAOMODELO_H.sql:16 | Parâmetro de entrada I_CD_MARCA |
VIEW_COMISSAOMODELO_K | Scripts/VIEW_COMISSAOMODELO_K.sql:16 | Parâmetro de entrada I_CD_MARCA |
VIEW_CNF005 | Scripts/VIEW_CNF005.sql:15 | Parâmetro de saída O_CD_MARCA |
Candidatas por uso da tabela (sem referência direta ao campo)
| Procedure/View | Arquivo | Observação |
|---|---|---|
ATUALIZA_PESSOA | Scripts/ATUALIZA_PESSOA.sql:307 | Faz UPDATE PARMVENDEDOR mas sem referência direta a CD_MARCA |
Relacionamentos
PARMVENDEDOR.CD_MARCA → MARCA.CD_MARCA (FK)
COMISSAOVENDEDOR.CD_MARCA → MARCA.CD_MARCA (FK)
ITEM.CD_MARCA → MARCA.CD_MARCA (FK)
PARMVENDEDOR.CD_VENDEDOR → VENDEDOR.CD_VENDEDOR (FK)
COMISSAOVENDEDOR.CD_VENDEDOR → VENDEDOR.CD_VENDEDOR (FK)