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_GRUPOTipo:INTEGER(opcional — aceitaNULL) 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 casamCD_GRUPOdo item comCD_GRUPOdePARMTABPRECO
Campos envolvidos
| Tabela | Campo | Relação |
|---|---|---|
PARMTABPRECO | CD_GRUPO | Campo do parâmetro (filtro opcional) |
GRUPO | CD_GRUPO | Tabela de referência (chave primária) |
ITEM | CD_GRUPO | Grupo 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 faz | Detalhe |
|---|---|
| Editável | Sim — aceita digitação direta ou consulta via <F9> |
| Obrigatório | Não — pode ficar em branco (NULL) |
| Restrição | O código digitado deve existir na tabela GRUPO (FK RPARMTABPRECO_GRUPO) |
| Interação | Afeta 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
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Crie ou edite um registro de parâmetro vinculado a uma tabela de preço.
- Deixe o campo Grupo (
edtCD_GRUPO) em branco. - Preencha os demais critérios desejados (empresa, tabela de preço, etc.).
- Salve o registro.
- Acesse uma tela de venda/pedido que utilize
RETORNA_TABPRECO. - 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_GRUPOpreenchido 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
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Crie ou edite um registro de parâmetro vinculado a uma tabela de preço.
- Clique no campo Grupo e pressione
<F9>para abrir a lista de grupos. - Selecione o grupo desejado (ex: grupo "Eletrônicos", código
5). - Preencha os demais critérios desejados (tabela de preço, perfil, etc.).
- Salve o registro.
- Acesse uma tela de venda/pedido.
- 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).
- 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
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Crie ou edite um registro de parâmetro.
- Informe um código de grupo válido no campo Grupo (ex:
5). - 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_GRUPOestiver 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:
| Campo | Peso quando preenchido |
|---|---|
CD_ITEM | 20 |
CD_PESSOA | 10 |
CD_CONDPAGTO | 1 |
CD_TIPOPESSOA | 1 |
CD_CONDFISCAL | 1 |
CD_VENDEDOR | 1 |
CD_GRUPO | 1 |
CD_SUBGRUPO | 1 |
CD_SECAO | 1 |
CD_REGIAOCOMERCIAL | 1 |
CD_TELA | 1 |
QT_MINIMA / QT_MAXIMA | 1 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ção | CD_GRUPO | Efeito na resolução |
|---|---|---|
| Todos os grupos | NULL | Regra genérica — vale para qualquer item (peso 0) |
| Grupo específico | código válido | Restrita àquele grupo (peso 1) |
| Grupo + Subgrupo | ambos preenchidos | Restrita ao subgrupo dentro do grupo (peso 2) |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Evidência |
|---|---|---|
TfrmMFA006.edtCD_GRUPOKeyDown | source/MFA006/UMFA006.pas:621 | Busca grupo via <F9> e atribui a tabPARMTABPRECOCD_GRUPO |
TfrmMFA006.edtCD_SUBGRUPOKeyDown | source/MFA006/UMFA006.pas:635 | Passa CD_GRUPO como filtro para busca de subgrupo |
Referências SQL diretas ao campo CD_GRUPO em PARMTABPRECO
| Procedure/View | Arquivo | Evidência |
|---|---|---|
RETORNA_TABPRECO | Scripts/RETORNA_TABPRECO.sql:96 | COALESCE(P.CD_GRUPO,-1) = CASE ... — casamento do grupo do item com o parâmetro |
RETORNA_TABPRECO | Scripts/RETORNA_TABPRECO.sql:114 | CASE 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/View | Arquivo |
|---|---|
ATUALIZA_PESSOA | Scripts/ATUALIZA_PESSOA.sql |
ATUALIZA_PRECOVENDA | Scripts/ATUALIZA_PRECOVENDA.sql |
CALCULA_MAQUINA | Scripts/CALCULA_MAQUINA.sql |
CALCULA_MAQUINAFICHA | Scripts/CALCULA_MAQUINAFICHA.sql |
GERA_COMISSAOTABPRECO | Scripts/GERA_COMISSAOTABPRECO.sql |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql |
TRGAD_PARMTABPRECO | Scripts/TRGAD_PARMTABPRECO.sql |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql |
VIEW_TFA006 | Scripts/VIEW_TFA006.sql |