Parâmetro de Filtro da Telinha de Custo de Reposição
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas (rótulo "Modo p/ Custo Reposi.") Tabela:
PARMFATUR.ST_ABRECUSTOREPOValor padrão:T(Todos os Produtos) - atribuído noAfterInsertdoPARMFATUR(UdmMFA001.paslinha 536)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| NF de Entrada - Custo de Reposição | MNF001 (UCUSTOREPOSICAONF) | Formulário TfrmCUSTOREPOSICAONF aberto ao finalizar uma NF de entrada quando ST_CUSTOREPOSICAO IN ('M','T'). O ST_ABRECUSTOREPO filtra quais itens da nota aparecem na telinha: apenas os com financeiro (F) ou todos (T). |
| NF de Entrada - Produto Acabado | MNF001 (UPRODACABADONF) | Formulário TfrmPRODACABADONF aberto quando iST_CUSTOPRODACABADO = 'S'; usa o mesmo filtro de ST_ABRECUSTOREPO no INNER JOIN de MOVIMENTACAO para decidir se entram apenas matérias-primas com tipo de conta ou todas. |
| Parâmetros de Faturamento | MFA001 | Tela onde o parâmetro é configurado. O combo só fica habilitado quando ST_CUSTOREPOSICAO <> 'N' (UMFA001.pas linha 2378). |
Procedures impactadas
Nenhuma procedure SQL em Scripts/ referencia ST_ABRECUSTOREPO. O parâmetro é consumido exclusivamente pela UI Delphi, nas consultas montadas em tempo de execução dentro de UMNF001.pas, UCUSTOREPOSICAONF.dfm e UPRODACABADONF.dfm.
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_ABRECUSTOREPO | Armazena a opção configurada (F ou T) |
PARMFATUR.ST_CUSTOREPOSICAO | Parâmetro acoplado: só o valor <> 'N' habilita o combo em MFA001 (ver ST_CUSTOREPOSICAO) e só os modos M/T realmente abrem a telinha (UMNF001.pas linha 2519) |
MOVIMENTACAO.CD_TIPOCONTA | Alvo do filtro aplicado pelo parâmetro (NULL ou número). Quando F, só entram itens cuja movimentação tem CD_TIPOCONTA IS NOT NULL |
ITEMNOTA.CD_MOVIMENTACAO | Usado para juntar ITEMNOTA com MOVIMENTACAO na query filtrada |
ITEMTABCOMPRA.VL_PRECO | Destino final da atualização manual feita pela telinha (herdado do fluxo de ST_CUSTOREPOSICAO) |
Opções disponíveis
F - Produtos com Financeiro
| O que faz | Detalhe |
|---|---|
Filtro na telinha TfrmCUSTOREPOSICAONF | INNER JOIN MOVIMENTACAO exige COALESCE(M.CD_TIPOCONTA, 0) = COALESCE(M.CD_TIPOCONTA, -1) - só casa quando CD_TIPOCONTA IS NOT NULL, ou seja, somente itens cuja movimentação possui tipo de conta configurado (tem reflexo financeiro) aparecem para digitação manual de custo (UMNF001.pas linhas 2582 e 2626) |
Filtro na telinha TfrmPRODACABADONF | Mesmo filtro é aplicado nas duas sub-queries UNION do SELECT da query tabCUSTO (UPRODACABADONF.dfm linhas 365-366 e 454-455) |
| Produtos sem reflexo financeiro | Excluídos da telinha - não entram na lista, portanto não podem ter o custo de reposição alterado manualmente nessa finalização |
| Quando tem efeito prático | Somente quando ST_CUSTOREPOSICAO IN ('M','T') (modos manuais) - é o momento em que a telinha efetivamente abre |
Simulação passo a passo
- Em MFA001 → Parâmetros → Notas Fiscais → Parâmetros de Notas, configure primeiro
ST_CUSTOREPOSICAO = 'M'(ou'T') e informe a Tabela de Compra - Com o combo de cima habilitado (regra em
cmbST_CUSTOREPOSICAOChange), selecione "Modo p/ Custo Reposi." = "Produtos com Financeiro" (F) - Salve (F6)
- Em MNF001, inclua uma NF de entrada com 3 itens:
- Item A: MOVIMENTACAO com
CD_TIPOCONTA = 10(tem reflexo financeiro) - Item B: MOVIMENTACAO com
CD_TIPOCONTA = 15 - Item C: MOVIMENTACAO com
CD_TIPOCONTA = NULL(sem reflexo financeiro)
- Item A: MOVIMENTACAO com
- Ao finalizar a nota, o sistema dispara
TfrmCUSTOREPOSICAONF(porqueST_CUSTOREPOSICAO IN ('M','T')) - Somente os Itens A e B aparecem na grade; o Item C é omitido pelo filtro
CASE PF.ST_ABRECUSTOREPO WHEN 'F' THEN COALESCE(M.CD_TIPOCONTA, -1)... - Informe manualmente os custos de reposição dos Itens A e B → gravados em
ITEMTABCOMPRA.VL_PRECO - O Item C não tem chance de ter o custo alterado nesse momento
Resultado esperado: apenas produtos cuja movimentação está vinculada a um tipo de conta (tem financeiro) aparecem para digitação manual do custo de reposição. Útil para empresas que só querem reajustar custo de itens que realmente geraram provisão/duplicata.
T - Todos os Produtos (padrão)
| O que faz | Detalhe |
|---|---|
Filtro na telinha TfrmCUSTOREPOSICAONF | INNER JOIN MOVIMENTACAO exige COALESCE(M.CD_TIPOCONTA, 0) = COALESCE(M.CD_TIPOCONTA, 0) - sempre verdadeiro, ou seja, todos os itens da nota entram na telinha independente de ter tipo de conta (UMNF001.pas linhas 2582-2583 e 2626-2627) |
Filtro na telinha TfrmPRODACABADONF | Também entram todas as matérias-primas e itens (mesmo CASE nas duas sub-queries UNION do SELECT em UPRODACABADONF.dfm) |
| Produtos sem reflexo financeiro | Incluídos na telinha - qualquer item com movimentação associada é listado |
| Quando tem efeito prático | Somente quando ST_CUSTOREPOSICAO IN ('M','T') - é o momento em que a telinha efetivamente abre |
Simulação passo a passo
- Em MFA001 → Notas Fiscais → Parâmetros de Notas, configure
ST_CUSTOREPOSICAO = 'M'(ou'T') e informeCD_TABCOMPRA - Selecione "Modo p/ Custo Reposi." = "Todos os Produtos" (
T) - este é o valor default - Salve (F6)
- Em MNF001 inclua a mesma NF da simulação anterior (Itens A com conta=10, B com conta=15, C com conta=NULL)
- Ao finalizar, o
TfrmCUSTOREPOSICAONFabre com os três itens (A, B e C) na grade - Informe o custo de reposição de cada um → todos são gravados em
ITEMTABCOMPRA.VL_PRECO
Resultado esperado: a telinha lista absolutamente todos os produtos da nota, permitindo ao operador digitar o custo de reposição mesmo dos itens sem reflexo financeiro. É o comportamento padrão do sistema.
Interação com ST_CUSTOREPOSICAO
O ST_ABRECUSTOREPO só tem efeito prático quando a telinha de custo de reposição é aberta, e isso depende do irmão ST_CUSTOREPOSICAO:
ST_CUSTOREPOSICAO | Telinha abre? | ST_ABRECUSTOREPO importa? |
|---|---|---|
S - Custo na Venda e Tab. de Compra (automático) | Não (atualização é automática) | Não (o combo pode ter valor, mas o SQL não roda) |
M - Custo na Venda e Tab. de Compra Manual | Sim (UMNF001.pas:2519) | Sim - decide se aparecem todos ou só os com financeiro |
C - Apenas Tabela de Compra (automático) | Não | Não |
T - Apenas Tabela de Compra Manual | Sim (UMNF001.pas:2519) | Sim |
N - Não atualiza | Não (inclusive o combo cmbST_ABRECUSTOREPO é desabilitado na UI do MFA001 - UMFA001.pas:2378) | Não |
Regra de UI em MFA001
UMFA001.pas linha 2376-2379:
procedure TfrmMFA001.cmbST_CUSTOREPOSICAOChange(Sender: TObject);
begin
cmbST_ABRECUSTOREPO.Enabled := not(cmbST_CUSTOREPOSICAO.Value = 'N')
end;
Assim que o usuário muda "Custo de Reposição" para "Não", o combo "Modo p/ Custo Reposi." fica desabilitado porque não faz sentido filtrar uma telinha que nunca vai abrir.
Tabela Comparativa Resumida
| Opção | Itens exibidos na telinha manual | Filtro aplicado no JOIN de MOVIMENTACAO | Depende de ST_CUSTOREPOSICAO IN ('M','T')? |
|---|---|---|---|
| F | Somente itens com CD_TIPOCONTA IS NOT NULL (produtos com reflexo financeiro) | COALESCE(M.CD_TIPOCONTA, 0) = COALESCE(M.CD_TIPOCONTA, -1) | Sim |
| T (padrão) | Todos os itens da nota | COALESCE(M.CD_TIPOCONTA, 0) = COALESCE(M.CD_TIPOCONTA, 0) (sempre verdadeiro) | Sim |
Referências no Código Fonte
Delphi (Desktop)
| Arquivo | Linha(s) | Papel |
|---|---|---|
source/MFA001/UMFA001.dfm | 6370-6382 | Label79: caption "Modo p/ Custo Reposi." - rótulo do campo |
source/MFA001/UMFA001.dfm | 7331-7357 | Combo cmbST_ABRECUSTOREPO (DataField, valores F/T, MapList) |
source/MFA001/UMFA001.pas | 425-426 | Declaração do Label79 e cmbST_ABRECUSTOREPO: TwwDBComboBox |
source/MFA001/UMFA001.pas | 2376-2379 | cmbST_CUSTOREPOSICAOChange - habilita/desabilita o combo conforme ST_CUSTOREPOSICAO |
source/MFA001/UdmMFA001.pas | 236 | Campo tabPARMFATURST_ABRECUSTOREPO: TStringField |
source/MFA001/UdmMFA001.pas | 536 | Valor padrão 'T' no AfterInsert do PARMFATUR |
source/MFA001/UdmMFA001.dfm | 251, 1708-1713, 2419, 2590, 2829, 3131 | StringField (size=1, FixedChar) e inclusão nos SELECT/INSERT/UPDATE do PARMFATUR |
source/MNF001/UMNF001.pas | 2409-2411 | Comentário histórico explicando o propósito do parâmetro ("para ver se irá abrir a telinha com os todos os produtos ou somente os que a mov. tem financeiro") |
source/MNF001/UMNF001.pas | 2519 | Guarda que dispara a telinha: if ((dmMNF001.iST_CUSTOREPOSICAO = 'M') or (dmMNF001.iST_CUSTOREPOSICAO = 'T')) |
source/MNF001/UMNF001.pas | 2582-2583 | SQL da telinha (variante ST_VALORESDIFERENTES = 'S'): filtro CASE PF.ST_ABRECUSTOREPO WHEN 'F' THEN COALESCE(M.CD_TIPOCONTA, -1) ELSE COALESCE(M.CD_TIPOCONTA, 0) END |
source/MNF001/UMNF001.pas | 2626-2627 | SQL da telinha (variante padrão): mesmo filtro replicado |
source/MNF001/UCUSTOREPOSICAONF.dfm | 450-458 | Query estática do formulário TfrmCUSTOREPOSICAONF com o mesmo CASE |
source/MNF001/UPRODACABADONF.dfm | 362-369, 451-458 | Query do TfrmPRODACABADONF (custo de produto acabado) com o mesmo CASE em duas sub-queries UNION |
SQL (Firebird)
Nenhuma ocorrência em Scripts/. O parâmetro é usado somente em queries montadas pela camada Delphi ao abrir as telinhas de custo de reposição e produto acabado - não participa das procedures de estoque/CMV/cancelamento.