Pular para o conteúdo principal

Permite Troca de Produtos no Carregamento (MPD011)

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 2 → "Permite troca de produtos no Carregamento[MPD011]" Tabela: PARMFATUR.ST_TROCAPRODCARREG Valor padrão: N (Não)

Este parâmetro habilita/oculta o botão "Trocar Produtos" (btnTrocarProdutos) dentro da janela de Embarque do módulo MPD011 - Faturamento por Ordem de Carregamento. Quando ligado, o usuário pode abrir um formulário auxiliar e trocar produtos já vinculados ao embarque antes de confirmar a alteração da ordem.

O parâmetro não é consultado por stored procedures — toda a lógica mora no código Delphi do módulo MPD011. O rótulo na tela do MFA001 reforça o destino da configuração: "Permite troca de produtos no Carregamento**[MPD011]**".

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Produtor — grava o valor em PARMFATUR.ST_TROCAPRODCARREG
Faturamento por Ordem de CarregamentoMPD011Consumidor — ao editar um embarque, consulta o parâmetro em ParmFatur.Values['ST_TROCAPRODCARREG'] para decidir se mostra o botão "Trocar Produtos" no formulário TfrmEmbarque (UEmbarque)

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_TROCAPRODCARREGO parâmetro em si (CHAR(1)), domínio Sim/Não. Default N gravado no AfterInsert do dataset tabPARMFATUR
btnTrocarProdutos (UEmbarque.dfm)Botão "Trocar Produtos" (Caption fixo, Hint "Trocar produtos na Ordem"). Visible é forçado a false em runtime quando o parâmetro é N
btnRetirar, btnIncluir (UEmbarque.dfm)Quando o botão "Trocar Produtos" é ocultado, esses dois botões são reposicionados (Left := btnConfirmar.Left / btnCancelar.Left) para ocupar o espaço vago — garantindo layout consistente
TfrmMPD011TrocaFormulário auxiliar de troca de produtos da ordem, instanciado apenas quando o usuário clica no botão "Trocar Produtos" (portanto só é acessível quando ST_TROCAPRODCARREG = 'S')
tabTROCAPED (UdmMPD011)Dataset que alimenta o grid de troca — aberto via ParamByName('CD_EMPRESA') e ParamByName('NR_EMBARQUE') dentro do btnTrocarProdutosClick

Opções disponíveis​

S - Sim​

O que fazDetalhe
Visibilidade do botãoNa janela de edição do Embarque (aberta pelo duplo-clique em uma ordem no MPD011), o botão "Trocar Produtos" fica visível junto aos botões Confirmar / Cancelar / Retirar / Incluir
Ação do botão (UEmbarque.pas:322)Ao clicar, o sistema: (1) faz rollback em transactionOrdem se estiver ativa; (2) inicia nova transactionOrdem.StartTransaction; (3) reabre dmMPD011.tabTROCAPED filtrando por CD_EMPRESA e NR_EMBARQUE do embarque corrente; (4) instancia e exibe TfrmMPD011Troca modalmente; (5) se ShowModal = mrOK, dispara btnConfirmar.Click automaticamente para persistir a alteração da ordem
Layout dos demais botõesbtnRetirar e btnIncluir permanecem em sua posição original, ao lado do botão "Trocar Produtos"

Simulação passo a passo​

  1. MFA001 → aba Parâmetros → Pedidos / O.S. → Opção 2 → "Permite troca de produtos no Carregamento[MPD011]" = Sim
  2. Grave (F6) os parâmetros
  3. Abra o MPD011 - Faturamento por Ordem de Carregamento
  4. Dê duplo-clique em uma ordem/embarque existente para abrir o formulário de edição (TfrmEmbarque)
  5. Observe a linha de botões: Confirmar, Cancelar, Retirar, Incluir, Trocar Produtos
  6. Clique em "Trocar Produtos"
  7. Uma nova janela (TfrmMPD011Troca) é exibida mostrando os produtos do embarque em grid — com recursos para substituir um item por outro
  8. Efetue as trocas desejadas e confirme (OK) → o btnConfirmar.Click é disparado na janela pai e a ordem é persistida com os produtos trocados

Resultado esperado: o operador consegue, diretamente do fluxo de faturamento por embarque, substituir produtos já vinculados à ordem sem precisar voltar ao pedido original.


N - Não (default)​

O que fazDetalhe
Visibilidade do botão (UMPD011.pas:1241-1246)O código testa if (ParmFatur.Values['ST_TROCAPRODCARREG'] = 'N') antes de exibir o TfrmEmbarque. Quando verdadeiro, força frmEmbarque.btnTrocarProdutos.Visible := false
Reposicionamento dos botões vizinhosJunto com a ocultação do botão, o código reposiciona: btnRetirar.Left := btnConfirmar.Left e btnIncluir.Left := btnCancelar.Left. Isso encosta os botões remanescentes sobre o espaço vago — evitando "buraco" no layout
Fluxo de troca de produtosFica inacessível na janela de embarque. O usuário precisa alterar o pedido original no fluxo de Pedidos (ex.: MPD002) antes de processá-lo pelo embarque

Simulação passo a passo​

  1. MFA001 → "Permite troca de produtos no Carregamento[MPD011]" = Não (valor padrão)
  2. Grave (F6) os parâmetros
  3. Abra o MPD011 e dê duplo-clique em uma ordem existente
  4. Observe: o botão "Trocar Produtos" não aparece; btnRetirar e btnIncluir ficam deslocados à esquerda, encostando no btnConfirmar e btnCancelar
  5. Para trocar um produto, é necessário sair do MPD011, abrir o pedido de venda de origem em MPD002 e editá-lo ali

Resultado esperado: fluxo de embarque simplificado, sem o atalho de troca — compatível com operações em que a ordem de carregamento é imutável após emitida e toda alteração deve ocorrer no pedido.


Interação com outros parâmetros do MPD011​

  • ST_ORDEMCARREG (parâmetro de MFA001) — define o modelo de consolidação da NF (por Pedido, Pessoa, Similar, Recapadora). Não afeta a visibilidade do botão "Trocar Produtos"; ambos atuam em momentos distintos do ciclo (troca é pré-confirmação do embarque, ST_ORDEMCARREG é usado na emissão da NF). A query BuscaParametros_MPD011 (UdmMPD011.pas:1577) carrega ambos em uma única leitura da PARMFATUR.
  • ST_ATENDECARREG (parâmetro de MFA001) — controla se o pedido é atendido ao faturar a nota pela ordem. Independente de ST_TROCAPRODCARREG; são botões/fluxos separados no formulário de embarque.
  • ST_BLOQUEIAORDEMCARREG (parâmetro de MFA001) — bloqueia faturamento pela ordem. Também é ortogonal: mesmo com o bloqueio ativo, a troca de produtos (se permitida) continua disponível enquanto a ordem não for confirmada.
  • ST_BLOQPESSOACARREG — valida atrasos do cliente no carregamento. Atua na inclusão do pedido no embarque, não na troca de itens.

Em resumo: ST_TROCAPRODCARREG é um toggle de UX isolado, que mostra ou esconde um único botão dentro do TfrmEmbarque do MPD011.

Tabela Comparativa Resumida​

ValorNomeBotão "Trocar Produtos" no TfrmEmbarqueReposicionamento de botões vizinhosAcesso ao TfrmMPD011Troca
SSimVisívelNão — layout originalPermitido
NNão (default)Oculto (Visible := false)btnRetirar.Left := btnConfirmar.Left e btnIncluir.Left := btnCancelar.LeftIndisponível

Referências no Código Fonte​

Tela MFA001 (definição do parâmetro)​

  • source/MFA001/UdmMFA001.dfm:1740-1745 — declaração do TField tabPARMFATURST_TROCAPRODCARREG: TStringField, FieldName ST_TROCAPRODCARREG, FixedChar/Size 1
  • source/MFA001/UdmMFA001.dfm:257 e 3137 — SELECT da tabPARMFATUR lendo PARMFATUR.ST_TROCAPRODCARREG
  • source/MFA001/UdmMFA001.dfm:2423 — INSERT da PARMFATUR incluindo a coluna
  • source/MFA001/UdmMFA001.dfm:2596 — bind do parâmetro :ST_TROCAPRODCARREG no INSERT
  • source/MFA001/UdmMFA001.dfm:2837 — UPDATE ST_TROCAPRODCARREG = :ST_TROCAPRODCARREG (persistência)
  • source/MFA001/UdmMFA001.pas:242 — TField publicado no TDataModule
  • source/MFA001/UdmMFA001.pas:542 — tabPARMFATURST_TROCAPRODCARREG.ASString := 'N'; (valor default no AfterInsert)
  • source/MFA001/UMFA001.pas:460 — declaração cmbST_TROCAPRODCARREG: TwwDBComboBox;
  • source/MFA001/UMFA001.pas:476 — declaração cmbST_TROCAPRODCARREG1: TwwDBComboBox; (clone usado em outro pageControl da tela)
  • source/MFA001/UMFA001.pas:478 — cmbST_TROCAPRODCARREG2: TwwDBComboBox; (atenção: apesar do nome, o DataField desse componente é ST_HABILITACUSTOMINIMO — ver UMFA001.dfm:9983)
  • source/MFA001/UMFA001.dfm:9282-9295 — Label83: TLabel com Caption "Permite troca de produtos no Carregamento[MPD011]"
  • source/MFA001/UMFA001.dfm:9310-9323 — lbl66: TLabel com mesma Caption (label duplicado para o segundo ComboBox)
  • source/MFA001/UMFA001.dfm:9873-9901 — cmbST_TROCAPRODCARREG: TwwDBComboBox (DataField = 'ST_TROCAPRODCARREG') com os 2 itens:
    • Sim → S
    • Não → N
  • source/MFA001/UMFA001.dfm:9944-9972 — cmbST_TROCAPRODCARREG1: TwwDBComboBox (mesmo DataField e mesmos itens; duplicata em outra aba do formulário)

Consumo do parâmetro (leitura via ParmFatur.Values['ST_TROCAPRODCARREG'])​

  • source/MPD011/UdmMPD011.pas:1580 — query BuscaParametros_MPD011 que inclui PF.ST_TROCAPRODCARREG no SELECT da PARMFATUR e popula o ParmFatur: TStringList do módulo
  • source/MPD011/UMPD011.pas:1241-1246 — único ponto de consumo: se ParmFatur.Values['ST_TROCAPRODCARREG'] = 'N' (antes do frmEmbarque.ShowModal), oculta btnTrocarProdutos.Visible e reposiciona btnRetirar.Left e btnIncluir.Left
  • source/MPD011/UEmbarque.pas:47 / UEmbarque.dfm:621-641 — declaração visual do btnTrocarProdutos: TBitBtn (Caption "Trocar Produtos", Hint "Trocar produtos na Ordem")
  • source/MPD011/UEmbarque.pas:322-339 — btnTrocarProdutosClick que abre a transaction, carrega tabTROCAPED e exibe TfrmMPD011Troca

DDL​

  • docs/schema/tables/PARMFATUR.sql — coluna ST_TROCAPRODCARREG (CHAR(1), default N, NOT NULL) — parte do domínio Sim/Não da tabela