Pular para o conteúdo principal

ST_MANTEMORCAMENTO — Manter Orçamento/Pedido em Tela ao Salvar

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 2 (label lblST_MANTEMORCAMENTO / Caption "Manter Orçamento em Tela ao Salvar [MPD002]") Tabela: PARMFATUR.ST_MANTEMORCAMENTO Tipo: CHAR(1) — 'S' (Sim) ou 'N' (Não) Componente (UMFA001.dfm): TwwDBComboBox cmbST_MANTEMORCAMENTO (Style = csDropDownList, Items.Strings = ('Sim'#9'S', 'Não'#9'N')) Valor padrão: 'S' — atribuído em UdmMFA001.pas no tabPARMFATURAfterInsert (linha 547): tabPARMFATURST_MANTEMORCAMENTO.AsString := 'S';

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Produtora: cadastra/edita o parâmetro
Pedido de Venda / OrçamentoMPD002Único consumidor efetivo: consulta o valor ao final da gravação (btnSalvarClick) para decidir se limpa o formulário

Procedures impactadas​

Nenhuma stored procedure em Scripts/ referencia PARMFATUR.ST_MANTEMORCAMENTO. O parâmetro é consumido exclusivamente no cliente Delphi (MPD002).

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_MANTEMORCAMENTOEste parâmetro. Decide se MPD002 mantém o pedido/orçamento recém-salvo exibido em tela ou se limpa para um novo
PEDIDO.TP_PEDIDODiscriminador 'P' (Pedido), 'O' (Orçamento), 'X' (rascunho que vira 'O' ao gravar). O parâmetro atua independente do tipo, apesar do rótulo mencionar apenas "Orçamento"
PEDIDO.NR_PEDIDOUsado na lógica que recarrega o registro salvo (antes de eventual btnNovo.Click)

Opções disponíveis​

S - Sim (padrão)​

O que fazDetalhe
ComportamentoApós salvar, mantém o orçamento/pedido gravado aberto na tela do MPD002
Quando aplicadoNo finally do btnSalvarClick de MPD002/UMPD002.pas (linha 1411) — após o Commit, o refresh do tabPEDIDO e a mensagem "Nº. Salvo com Sucesso"
Código fonteif (ParmFatur.Values['ST_MANTEMORCAMENTO'] = 'N') THEN btnNovo.Click; — como o valor é 'S', o btnNovo.Click não é executado
Fluxo seguintePaginas.ActivePage := pagPEDIDO; edtNR_PEDIDO.SetFocus; — o usuário continua posicionado no registro recém-salvo

Simulação passo a passo​

  1. MFA001 → aba Faturamento Opção 1 → "Manter Orçamento em Tela ao Salvar [MPD002]" = Sim → F6 para salvar
  2. Abra MPD002 (Pedido de Venda) e inclua um orçamento (TP_PEDIDO = 'O') com cliente, itens e condição de pagamento
  3. Clique em Salvar (btnSalvar)
  4. O sistema executa toda a rotina de gravação (parcelamento, benefícios, juros, commit) e exibe a mensagem "Orçamento de Venda Nº.: <NR> Salvo com Sucesso."
  5. Após fechar a mensagem, o MPD002 permanece com o orçamento recém-salvo carregado: NR_PEDIDO, itens, totais e parcelas continuam visíveis
  6. O mesmo comportamento ocorre para pedido (TP_PEDIDO = 'P') — o rótulo cita "Orçamento", mas o código não filtra por tipo

Resultado esperado: o usuário vê o pedido/orçamento que acabou de gravar, podendo imprimir (btnImprimir) ou revisar os dados sem precisar procurar pelo número.


N - Não​

O que fazDetalhe
ComportamentoApós salvar, limpa a tela e coloca o MPD002 em modo de inclusão para um novo registro
Quando aplicadoNo finally do btnSalvarClick, após toda a rotina de gravação bem-sucedida
Código fonteif (ParmFatur.Values['ST_MANTEMORCAMENTO'] = 'N') THEN btnNovo.Click; — dispara um clique programático no btnNovo, que aciona o Insert do tabPEDIDO
Efeito colateralSe dmMPD002.iCD_MODORIGEM estiver preenchido (módulo chamou MPD002 passando origem), executa Close em seguida — o formulário fecha em vez de abrir novo

Simulação passo a passo​

  1. MFA001 → "Manter Orçamento em Tela ao Salvar [MPD002]" = Não → F6 para salvar
  2. Abra MPD002 e inclua um orçamento com itens
  3. Clique em Salvar (btnSalvar)
  4. Após a mensagem "Orçamento de Venda Nº.: <NR> Salvo com Sucesso.", o sistema dispara btnNovo.Click
  5. A tela é limpa: NR_PEDIDO em branco, grade de itens vazia, totais zerados — pronto para digitar um novo pedido/orçamento sem precisar clicar manualmente no botão "Novo"

Resultado esperado: fluxo otimizado para cadastro em sequência. Ideal para operadores que lançam vários pedidos/orçamentos seguidos.

Atenção: nesse modo, para consultar o pedido que acabou de ser salvo é necessário usar o botão Procurar (btnProcurar) ou o histórico — o registro não fica mais em tela.


Fluxo técnico (MPD002.btnSalvarClick)​

// UMPD002.pas — linhas 1407-1417 (bloco finally do btnSalvarClick)
finally
dmMPD002.nrPedidoTemporario := dmMPD002.tabPEDIDONR_PEDIDO.AsString;
dmMPD002.tpPedidoTemporario := dmMPD002.tabPEDIDOTP_PEDIDO.AsString;

if (ParmFatur.Values['ST_MANTEMORCAMENTO'] = 'N') THEN
btnNovo.Click;
if (Trim(dmMPD002.iCD_MODORIGEM) <> '') then
Close;

flagCalculaFrete := False;
end;

Ordem das ações pós-gravação:

  1. Commit da transação (linha 1387)
  2. Recarrega tabPEDIDO com o NR_PEDIDO gravado (linha 1390-1392)
  3. Foca edtNR_PEDIDO na aba principal (linha 1394-1395)
  4. Exibe MessageBox "Salvo com Sucesso" (linha 1398)
  5. Executa Imprime_Pedido (linha 1400)
  6. Bloco finally: guarda nrPedidoTemporario e — se ST_MANTEMORCAMENTO = 'N' — dispara btnNovo.Click

O parâmetro é lido do cache em memória ParmFatur (TStringList), carregado uma única vez quando o MPD002 inicia via BuscaParametros_MPD002 (ver UdmMPD002.pas linha 5753: P.ST_MANTEMORCAMENTO faz parte do SELECT da função que popula ParmFatur).


Interação com ST_ORCAMENTO / DS_MSGORCAMENTO​

ParâmetroRelação com ST_MANTEMORCAMENTO
ST_ORCAMENTOParâmetro "irmão" na mesma aba do MFA001. Sem interação funcional: ST_ORCAMENTO é carregado mas não é usado em nenhuma rotina (parâmetro legado/sem efeito). ST_MANTEMORCAMENTO é o parâmetro ativo que efetivamente controla o comportamento pós-gravação
DS_MSGORCAMENTOSem interação direta: DS_MSGORCAMENTO atua na impressão (layouts LPD042/LPD044/LOR026/LPD048/LPD128/LPD133), enquanto ST_MANTEMORCAMENTO atua no fluxo de UI pós-salvar. Ambos participam do ciclo de orçamento do MPD002, mas em etapas distintas (impressão vs. limpeza de tela)

Ciclo completo do orçamento no MPD002​

  1. Usuário inclui orçamento (TP_PEDIDO = 'O') — nenhum parâmetro envolvido
  2. Usuário clica Salvar → rotina de gravação consome ST_PARCELAPEDIDO, VL_MINPARCELAPEDIDO, etc.
  3. Imprime_Pedido é chamado — o layout consome DS_MSGORCAMENTO para o rodapé
  4. Bloco finally consulta ST_MANTEMORCAMENTO para decidir manter/limpar a tela

Tabela Comparativa Resumida​

OpçãoNomeAção após btnSalvarTela exibe o registro salvo?Uso recomendado
SSim (padrão)Mantém o pedido/orçamento carregadoSimOperadores que conferem/imprimem/alteram o registro após gravar
NNãoExecuta btnNovo.Click (modo Insert)Não (formulário limpo)Operadores que lançam muitos pedidos/orçamentos em sequência

Detalhe importante: embora o rótulo na tela MFA001 mencione apenas "Orçamento", o código no MPD002 aplica a lógica para qualquer TP_PEDIDO (Pedido, Orçamento ou rascunho promovido a Orçamento).


Referências no Código Fonte​

Delphi — Definição e cadastro (MFA001)​

  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UMFA001.dfm (linhas 9338-9351): label lblST_MANTEMORCAMENTO com caption 'Manter Orçamento em Tela ao Salvar [MPD002]'
  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UMFA001.dfm (linhas 10002-10027): combo cmbST_MANTEMORCAMENTO com DataField = 'ST_MANTEMORCAMENTO' e Items.Strings = ('Sim'#9'S', 'Não'#9'N')
  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UdmMFA001.pas (linha 251): declaração do field tabPARMFATURST_MANTEMORCAMENTO: TStringField
  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UdmMFA001.pas (linha 547): valor padrão tabPARMFATURST_MANTEMORCAMENTO.AsString := 'S'; em tabPARMFATURAfterInsert
  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UdmMFA001.dfm (linhas 1792-1795): TStringField do dataset
  • D:/Desenvolvimento/JunsoftERP_V2/source/MFA001/UdmMFA001.dfm (linhas 264, 2427, 2599, 2845, 3144): SQL do SELECT, INSERT e UPDATE do tabPARMFATUR

Delphi — Consumidor efetivo (MPD002)​

  • D:/Desenvolvimento/JunsoftERP_V2/source/MPD002/UdmMPD002.pas (linha 5753): SQL de BuscaParametros_MPD002 traz P.ST_MANTEMORCAMENTO para popular o cache ParmFatur
  • D:/Desenvolvimento/JunsoftERP_V2/source/MPD002/UMPD002.pas (linhas 1411-1412): consumo no finally do btnSalvarClick:
    if (ParmFatur.Values['ST_MANTEMORCAMENTO'] = 'N') THEN
    btnNovo.Click;

SQL​

  • Nenhuma ocorrência em D:/Desenvolvimento/JunsoftERP_V2/Scripts/ — o parâmetro não é referenciado por stored procedures, views ou triggers.