Pular para o conteúdo principal

CD_GRUPO — Grupo de Produtos (Parâmetro de Tabela de Preço)

Tela de configuração: MFA006 — Parâmetros de Tabela de Preço Tabela: PARMTABPRECO.CD_GRUPO Tipo: INTEGER (opcional — aceita NULL) Chave estrangeira: RPARMTABPRECO_GRUPO → GRUPO (CD_GRUPO) Componente na tela: edtCD_GRUPO (hint: Lista de Grupos <F9>)

Finalidade​

Define o grupo de produtos ao qual a regra de tabela de preço se aplica. Quando preenchido, o registro de PARMTABPRECO só será associado a itens cujo CD_GRUPO na tabela ITEM coincida com este valor. Quando deixado em branco (NULL), a regra vale para todos os grupos — a lógica de casamento usa COALESCE para tratar NULL como curinga.

Este campo é um dos vários critérios de filtragem da tabela de preço (junto com CD_ITEM, CD_PESSOA, CD_CONDPAGTO, CD_TIPOPESSOA, CD_CONDFISCAL, CD_VENDEDOR, CD_SUBGRUPO, CD_SECAO, etc.). Quanto mais critérios preenchidos, mais específica é a regra e maior sua prioridade na resolução.

Telas impactadas​

  • MFA006 — Parâmetros de Tabela de Preço (tela de configuração do campo)
  • TFA006 / Retorno de Preço — utiliza RETORNA_TABPRECO / RETORNA_PRECOITEM, que casam CD_GRUPO do item com CD_GRUPO de PARMTABPRECO

Campos envolvidos​

TabelaCampoRelação
PARMTABPRECOCD_GRUPOCampo do parâmetro (filtro opcional)
GRUPOCD_GRUPOTabela de referência (chave primária)
ITEMCD_GRUPOGrupo do produto — valor comparado durante a resolução de preço

Opções disponíveis​

Este parâmetro não possui lista de opções fixas. O campo aceita:

  • Vazio (NULL): a regra se aplica a todos os grupos de produtos.
  • Código de grupo válido (inteiro): a regra se aplica somente a itens daquele grupo.
O que fazDetalhe
EditávelSim — aceita digitação direta ou consulta via <F9>
ObrigatórioNão — pode ficar em branco (NULL)
RestriçãoO código digitado deve existir na tabela GRUPO (FK RPARMTABPRECO_GRUPO)
InteraçãoAfeta a busca de subgrupo (CD_SUBGRUPO) — o subgrupo é filtrado pelo grupo selecionado

Vazio (NULL) — Aplica-se a Todos os Grupos​

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Crie ou edite um registro de parâmetro vinculado a uma tabela de preço.
  3. Deixe o campo Grupo (edtCD_GRUPO) em branco.
  4. Preencha os demais critérios desejados (empresa, tabela de preço, etc.).
  5. Salve o registro.
  6. Acesse uma tela de venda/pedido que utilize RETORNA_TABPRECO.
  7. Informe um produto de qualquer grupo e verifique o preço retornado.

Resultado esperado: A regra de preço é considerada para todos os grupos de produtos. Na consulta SQL (RETORNA_TABPRECO), a cláusula COALESCE(P.CD_GRUPO,-1) = CASE COALESCE(P.CD_GRUPO,-1) WHEN -1 THEN -1 ELSE <CD_GRUPO_DO_ITEM> END permite que NULL corresponda a qualquer grupo. Regras sem grupo definido recebem peso 0 na ordenação de prioridade (menor especificidade).

Excecao / Importante: Por ter prioridade menor (peso 0), uma regra com CD_GRUPO preenchido terá preferência sobre uma regra genérica (sem grupo), desde que os demais critérios também coincidam. O sistema escolhe o registro com a maior pontuação acumulada.

Código Válido — Filtrar por Grupo Específico​

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Crie ou edite um registro de parâmetro vinculado a uma tabela de preço.
  3. Clique no campo Grupo e pressione <F9> para abrir a lista de grupos.
  4. Selecione o grupo desejado (ex: grupo "Eletrônicos", código 5).
  5. Preencha os demais critérios desejados (tabela de preço, perfil, etc.).
  6. Salve o registro.
  7. Acesse uma tela de venda/pedido.
  8. Informe um produto que pertença ao grupo "Eletrônicos" (código 5).

Resultado esperado: A regra é aplicada normalmente ao item, pois o CD_GRUPO do item (5) coincide com o CD_GRUPO do parâmetro (5). Na ordenação de prioridade, este registro recebe peso 1 (campo preenchido).

  1. Agora informe um produto de outro grupo (ex: grupo "Alimentos", código 3).

Resultado esperado: Esta regra não é aplicada a esse item. O sistema busca a próxima regra compatível ou retorna o preço direto da tabela de preço sem filtro de grupo.

Busca de Subgrupo Condicionada​

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Crie ou edite um registro de parâmetro.
  3. Informe um código de grupo válido no campo Grupo (ex: 5).
  4. Em seguida, clique no campo Subgrupo (edtCD_SUBGRUPO) e pressione <F9>.

Resultado esperado: A lista de subgrupos exibida é filtrada pelo grupo informado (código 5). Apenas subgrupos vinculados àquele grupo aparecem. Isso ocorre porque o evento edtCD_SUBGRUPOKeyDown passa CD_GRUPO como parâmetro de filtro na chamada Busca('SUBGRUPO', parm).

Excecao / Importante: Se CD_GRUPO estiver vazio, a busca de subgrupo não recebe filtro de grupo e exibe todos os subgrupos cadastrados.

Regra Geral de Resolução de Prioridade​

A function RETORNA_TABPRECO consulta PARMTABPRECO usando uma query dinâmica que monta cláusulas COALESCE para cada campo. Cada campo preenchido soma pontos na ordenação final:

CampoPeso quando preenchido
CD_ITEM20
CD_PESSOA10
CD_CONDPAGTO1
CD_TIPOPESSOA1
CD_CONDFISCAL1
CD_VENDEDOR1
CD_GRUPO1
CD_SUBGRUPO1
CD_SECAO1
CD_REGIAOCOMERCIAL1
CD_TELA1
QT_MINIMA / QT_MAXIMA1 cada

O registro com maior pontuação é selecionado (FIRST 1 ... ORDER BY soma dos pesos). Em caso de empate, o DT_REGISTRO mais recente prevalece.

Tabela Comparativa Resumida​

SituaçãoCD_GRUPOEfeito na resolução
Todos os gruposNULLRegra genérica — vale para qualquer item (peso 0)
Grupo específicocódigo válidoRestrita àquele grupo (peso 1)
Grupo + Subgrupoambos preenchidosRestrita ao subgrupo dentro do grupo (peso 2)

Procedures impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoEvidência
TfrmMFA006.edtCD_GRUPOKeyDownsource/MFA006/UMFA006.pas:621Busca grupo via <F9> e atribui a tabPARMTABPRECOCD_GRUPO
TfrmMFA006.edtCD_SUBGRUPOKeyDownsource/MFA006/UMFA006.pas:635Passa CD_GRUPO como filtro para busca de subgrupo

Referências SQL diretas ao campo CD_GRUPO em PARMTABPRECO​

Procedure/ViewArquivoEvidência
RETORNA_TABPRECOScripts/RETORNA_TABPRECO.sql:96COALESCE(P.CD_GRUPO,-1) = CASE ... — casamento do grupo do item com o parâmetro
RETORNA_TABPRECOScripts/RETORNA_TABPRECO.sql:114CASE COALESCE(P.CD_GRUPO,-1) WHEN -1 THEN 0 ELSE 1 END — peso de prioridade

Candidatas por uso da tabela (sem referência literal ao campo)​

Estas procedures/views usam a tabela PARMTABPRECO mas não citam CD_GRUPO diretamente. O impacto é indireto (acesso ao registro completo).

Procedure/ViewArquivo
ATUALIZA_PESSOAScripts/ATUALIZA_PESSOA.sql
ATUALIZA_PRECOVENDAScripts/ATUALIZA_PRECOVENDA.sql
CALCULA_MAQUINAScripts/CALCULA_MAQUINA.sql
CALCULA_MAQUINAFICHAScripts/CALCULA_MAQUINAFICHA.sql
GERA_COMISSAOTABPRECOScripts/GERA_COMISSAOTABPRECO.sql
RETORNA_PRECOITEMScripts/RETORNA_PRECOITEM.sql
TRGAD_PARMTABPRECOScripts/TRGAD_PARMTABPRECO.sql
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sql
VIEW_TFA006Scripts/VIEW_TFA006.sql