Pular para o conteúdo principal

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_ABRECUSTOREPO Valor padrão: T (Todos os Produtos) - atribuído no AfterInsert do PARMFATUR (UdmMFA001.pas linha 536)

Telas impactadas​

MóduloCódigoDescrição
NF de Entrada - Custo de ReposiçãoMNF001 (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 AcabadoMNF001 (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 FaturamentoMFA001Tela 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​

CampoDescrição
PARMFATUR.ST_ABRECUSTOREPOArmazena a opção configurada (F ou T)
PARMFATUR.ST_CUSTOREPOSICAOParâ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_TIPOCONTAAlvo 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_MOVIMENTACAOUsado para juntar ITEMNOTA com MOVIMENTACAO na query filtrada
ITEMTABCOMPRA.VL_PRECODestino final da atualização manual feita pela telinha (herdado do fluxo de ST_CUSTOREPOSICAO)

Opções disponíveis​

F - Produtos com Financeiro​

O que fazDetalhe
Filtro na telinha TfrmCUSTOREPOSICAONFINNER 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 TfrmPRODACABADONFMesmo filtro é aplicado nas duas sub-queries UNION do SELECT da query tabCUSTO (UPRODACABADONF.dfm linhas 365-366 e 454-455)
Produtos sem reflexo financeiroExcluí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áticoSomente quando ST_CUSTOREPOSICAO IN ('M','T') (modos manuais) - é o momento em que a telinha efetivamente abre

Simulação passo a passo​

  1. Em MFA001 → Parâmetros → Notas Fiscais → Parâmetros de Notas, configure primeiro ST_CUSTOREPOSICAO = 'M' (ou 'T') e informe a Tabela de Compra
  2. Com o combo de cima habilitado (regra em cmbST_CUSTOREPOSICAOChange), selecione "Modo p/ Custo Reposi." = "Produtos com Financeiro" (F)
  3. Salve (F6)
  4. 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)
  5. Ao finalizar a nota, o sistema dispara TfrmCUSTOREPOSICAONF (porque ST_CUSTOREPOSICAO IN ('M','T'))
  6. 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)...
  7. Informe manualmente os custos de reposição dos Itens A e B → gravados em ITEMTABCOMPRA.VL_PRECO
  8. 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 fazDetalhe
Filtro na telinha TfrmCUSTOREPOSICAONFINNER 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 TfrmPRODACABADONFTambém entram todas as matérias-primas e itens (mesmo CASE nas duas sub-queries UNION do SELECT em UPRODACABADONF.dfm)
Produtos sem reflexo financeiroIncluídos na telinha - qualquer item com movimentação associada é listado
Quando tem efeito práticoSomente quando ST_CUSTOREPOSICAO IN ('M','T') - é o momento em que a telinha efetivamente abre

Simulação passo a passo​

  1. Em MFA001 → Notas Fiscais → Parâmetros de Notas, configure ST_CUSTOREPOSICAO = 'M' (ou 'T') e informe CD_TABCOMPRA
  2. Selecione "Modo p/ Custo Reposi." = "Todos os Produtos" (T) - este é o valor default
  3. Salve (F6)
  4. Em MNF001 inclua a mesma NF da simulação anterior (Itens A com conta=10, B com conta=15, C com conta=NULL)
  5. Ao finalizar, o TfrmCUSTOREPOSICAONF abre com os três itens (A, B e C) na grade
  6. 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_CUSTOREPOSICAOTelinha 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 ManualSim (UMNF001.pas:2519)Sim - decide se aparecem todos ou só os com financeiro
C - Apenas Tabela de Compra (automático)NãoNão
T - Apenas Tabela de Compra ManualSim (UMNF001.pas:2519)Sim
N - Não atualizaNã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çãoItens exibidos na telinha manualFiltro aplicado no JOIN de MOVIMENTACAODepende de ST_CUSTOREPOSICAO IN ('M','T')?
FSomente 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 notaCOALESCE(M.CD_TIPOCONTA, 0) = COALESCE(M.CD_TIPOCONTA, 0) (sempre verdadeiro)Sim

Referências no Código Fonte​

Delphi (Desktop)​

ArquivoLinha(s)Papel
source/MFA001/UMFA001.dfm6370-6382Label79: caption "Modo p/ Custo Reposi." - rótulo do campo
source/MFA001/UMFA001.dfm7331-7357Combo cmbST_ABRECUSTOREPO (DataField, valores F/T, MapList)
source/MFA001/UMFA001.pas425-426Declaração do Label79 e cmbST_ABRECUSTOREPO: TwwDBComboBox
source/MFA001/UMFA001.pas2376-2379cmbST_CUSTOREPOSICAOChange - habilita/desabilita o combo conforme ST_CUSTOREPOSICAO
source/MFA001/UdmMFA001.pas236Campo tabPARMFATURST_ABRECUSTOREPO: TStringField
source/MFA001/UdmMFA001.pas536Valor padrão 'T' no AfterInsert do PARMFATUR
source/MFA001/UdmMFA001.dfm251, 1708-1713, 2419, 2590, 2829, 3131StringField (size=1, FixedChar) e inclusão nos SELECT/INSERT/UPDATE do PARMFATUR
source/MNF001/UMNF001.pas2409-2411Comentá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.pas2519Guarda que dispara a telinha: if ((dmMNF001.iST_CUSTOREPOSICAO = 'M') or (dmMNF001.iST_CUSTOREPOSICAO = 'T'))
source/MNF001/UMNF001.pas2582-2583SQL 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.pas2626-2627SQL da telinha (variante padrão): mesmo filtro replicado
source/MNF001/UCUSTOREPOSICAONF.dfm450-458Query estática do formulário TfrmCUSTOREPOSICAONF com o mesmo CASE
source/MNF001/UPRODACABADONF.dfm362-369, 451-458Query 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.