CD_SUBGRUPO — Subgrupo do Parâmetro de Tabela de Preço
Tela de configuração: MFA006 — Parâmetros de Tabela de Preço Tabela:
PARMTABPRECO.CD_SUBGRUPOTipo:INTEGER(opcional) Componente:edtCD_SUBGRUPO(edit) Valor padrão: vazio (sem filtro de subgrupo)
Visão Geral
O campo CD_SUBGRUPO define, dentro de uma regra de parâmetro de tabela de preço, o subgrupo de produtos ao qual a regra se aplica. Quando preenchido, a regra só será considerada pelo sistema para itens que pertençam àquele subgrupo. Quando vazio, a regra aceita qualquer subgrupo (o campo é ignorado na resolução de preço).
Faz parte do conjunto de filtros hierárquicos de classificação de itens junto com CD_GRUPO e CD_SECAO (ambos configurados na mesma tela MFA006).
Campos Relacionados na Tela
| Campo | Descrição |
|---|---|
CD_GRUPO | Grupo de produtos — filtra a busca do subgrupo ao pressionar <F9> |
CD_SECAO | Seção de produtos — complementa a hierarquia de classificação |
CD_ITEM | Produto específico — quando preenchido, subgrupo é redundante |
CD_TABPRECO | Tabela de preço que será aplicada quando a regra for satisfeita |
Opções Disponíveis
Em Branco (Sem filtro de subgrupo)
| O que faz | Detalhe |
|---|---|
| Regra válida para todos os subgrupos | Campo opcional; a regra ignora subgrupo na resolução |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Cadastre ou edite uma regra preenchendo os campos desejados (empresa, tabela de preço, etc.).
- Deixe o campo Subgrupo (
edtCD_SUBGRUPO) em branco. - Salve o registro (
<F4>ou botão Salvar). - O sistema gravará
CD_SUBGRUPO = NULLna tabelaPARMTABPRECO.
Resultado esperado: Na resolução de preço (por exemplo, ao gerar um pedido de venda), a regra será considerada para itens de qualquer subgrupo, desde que os demais critérios da regra sejam atendidos.
Código de Subgrupo Específico
| O que faz | Detalhe |
|---|---|
| Restringe a regra a um subgrupo específico | Edita-se o campo e busca-se com <F9> |
Exige que CD_GRUPO já esteja preenchido | A busca de subgrupo é filtrada pelo grupo selecionado |
Valida FK contra tabela SUBGRUPO | Constraint RPARMTABPRECO_SUBGRUPO |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Cadastre ou edite uma regra.
- No campo Grupo (
edtCD_GRUPO), informe um grupo válido (por exemplo, código1). - Posicione o cursor no campo Subgrupo (
edtCD_SUBGRUPO) e pressione<F9>. - O sistema abrirá a tela de busca de SUBGRUPO, já filtrando apenas os subgrupos pertencentes ao grupo informado no passo 3.
- Selecione o subgrupo desejado (por exemplo, código
5). - O campo será preenchido com o código selecionado.
- Preencha os demais campos da regra (tabela de preço, etc.) e salve.
Resultado esperado: O sistema gravará o código do subgrupo (por exemplo, 5) no campo CD_SUBGRUPO. Na resolução de preço, essa regra só será considerada para itens cujo CD_SUBGRUPO na tabela ITEM corresponda ao valor configurado.
Excecao / Importante:
- A busca de subgrupo via
<F9>recebe como filtro o valor atual deCD_GRUPO. Se o grupo estiver vazio, a busca exibe todos os subgrupos cadastrados (parâmetroNULLé enviado).- Se o campo
CD_ITEM(produto específico) estiver preenchido na mesma regra, o filtro por subgrupo atua como redundância — o sistema já identifica o item diretamente.
Hierarquia de Classificação
Os três campos de classificação de itens na tela MFA006 funcionam em hierarquia:
CD_GRUPO (Grupo)
└── CD_SUBGRUPO (Subgrupo)
└── CD_SECAO (Seção)
Quanto mais campos de classificação preenchidos, mais específica é a regra. Uma regra com grupo + subgrupo + seção preenchidos terá prioridade sobre uma regra com apenas o grupo preenchido (dependendo da lógica de resolução da procedure RETORNA_TABPRECO).
Tabela de Referência: SUBGRUPO
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
CD_SUBGRUPO | INTEGER | ✓ | Código do subgrupo (PK) |
DS_SUBGRUPO | VARCHAR(60) | ✓ | Descrição do subgrupo |
CD_GRUPO | INTEGER | Grupo ao qual pertence | |
CD_TABPRECO | INTEGER | Tabela de preço vinculada ao subgrupo |
Procedures Impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Evidência |
|---|---|---|---|
TfrmMFA006.edtCD_SUBGRUPOKeyDown | source/MFA006/UMFA006.pas | 635 | Abre busca de SUBGRUPO com filtro de CD_GRUPO ao pressionar <F9> |
Referências SQL diretas ao campo
Não foram encontradas referências literais ao campo CD_SUBGRUPO da tabela PARMTABPRECO nos scripts SQL. O campo é utilizado indiretamente via consultas dinâmicas construídas na procedure RETORNA_TABPRECO.
Candidatas por uso da tabela
Estas procedures/views utilizam a tabela PARMTABPRECO, mas não citam o campo CD_SUBGRUPO diretamente. O campo pode ser afetado em consultas dinâmicas (EXECUTE STATEMENT) ou joins genéricos.
| Procedure/View | Arquivo | Linha | Evidência |
|---|---|---|---|
ATUALIZA_PESSOA | Scripts/ATUALIZA_PESSOA.sql | 302 | update PARMTABPRECO P |
ATUALIZA_PRECOVENDA | Scripts/ATUALIZA_PRECOVENDA.sql | 79 | FROM PARMTABPRECO PP |
CALCULA_MAQUINA | Scripts/CALCULA_MAQUINA.sql | 81 | FROM PARMTABPRECO P |
CALCULA_MAQUINAFICHA | Scripts/CALCULA_MAQUINAFICHA.sql | 79 | FROM PARMTABPRECO P |
GERA_COMISSAOTABPRECO | Scripts/GERA_COMISSAOTABPRECO.sql | 84 | from PARMTABPRECO |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql | 104 | FROM PARMTABPRECO P |
RETORNA_TABPRECO | Scripts/RETORNA_TABPRECO.sql | 51 | FROM PARMTABPRECO P — procedure principal de resolução de tabela de preço |
TRGAD_PARMTABPRECO | Scripts/TRGAD_PARMTABPRECO.sql | 5 | Trigger de exclusão em PARMTABPRECO |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql | 1115 | FROM PARMTABPRECO P |
VIEW_TFA006 | Scripts/VIEW_TFA006.sql | 84 | Join com PARMTABPRECO |
Observações Técnicas
- Resolução de preço: A procedure
RETORNA_TABPRECOlê oCD_SUBGRUPOdo item (ITEM.CD_SUBGRUPO) e utiliza-o em consulta dinâmica para casar com as regras emPARMTABPRECO. O campo é parte do critério de matching da regra. - Subgrupo e tabela de preço do subgrupo: A tabela
SUBGRUPOpossui campoCD_TABPRECOpróprio. Quando um subgrupo tem tabela vinculada, procedures comoITEMTABPRECO_AU0eRECALCULA_PRECOVENDAutilizam essa associação (INNER JOIN SUBGRUPO S ON (S.CD_SUBGRUPO = I.CD_SUBGRUPO)) para definir a tabela de preço correta.