Pular para o conteúdo principal

Replicar Preço dos Produtos por Seção

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 → Campo "Replicar Preço dos Produtos por Seção [MPD002]" Tabela: PARMFATUR.TP_REPLICAVALOR Valor padrão: N (Não)

Telas impactadas​

MóduloCódigoDescrição
Pedido de VendaMPD002Habilita/oculta a aba "Preço por Seção" e o botão "Replicar Preço"

Campos envolvidos​

CampoDescrição
CD_SECAOCódigo da seção do item do pedido (tabela ITEMPEDIDO)
DS_SECAODescrição da seção do item (apresentada somente-leitura na aba)
CD_TABPRECOTabela de preço do item de referência, replicada nos demais itens da mesma seção
VL_UNITARIOValor unitário do item de referência, replicado nos demais itens da mesma seção

Opções disponíveis​

M - Manual​

O que fazDetalhe
Aba "Preço por Seção" no MPD002Visível (pgcSecao.TabVisible := True)
Botão "Replicar Preço"Habilitado nessa aba
AçãoUsuário escolhe manualmente um item de referência e clica em Replicar Preço para copiar CD_TABPRECO e VL_UNITARIO desse item para todos os itens do pedido que estejam na mesma seção (CD_SECAO)
Itens de outras seçõesNão são alterados

Simulação passo a passo​

  1. MFA001 → Ambos → Opção 1 → "Replicar Preço dos Produtos por Seção" = Manual
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda (MPD002)
  4. Adicione vários itens — alguns com a mesma CD_SECAO (ex.: seção 10) e outros em seções diferentes
  5. Navegue até a aba "Preço por Seção" — ela agora está visível
  6. Posicione-se em um item da seção 10, ajuste o VL_UNITARIO e/ou CD_TABPRECO
  7. Clique no botão "Replicar Preço"
  8. Todos os itens do pedido cuja CD_SECAO = 10 recebem o mesmo VL_UNITARIO e CD_TABPRECO do item atual
  9. Itens de outras seções permanecem inalterados

Resultado esperado: A aba "Preço por Seção" aparece no MPD002 e o botão "Replicar Preço" propaga preço e tabela do item atual para todos os itens da mesma seção.


N - Não (valor padrão)​

O que fazDetalhe
Aba "Preço por Seção" no MPD002Oculta (pgcSecao.TabVisible := False)
Botão "Replicar Preço"Indisponível para o usuário
AçãoNenhuma replicação automática ou manual por seção é oferecida; cada item é editado individualmente

Simulação passo a passo​

  1. MFA001 → Ambos → Opção 1 → "Replicar Preço dos Produtos por Seção" = Não
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda (MPD002)
  4. Adicione vários itens — mesmo que compartilhem CD_SECAO
  5. Verifique as abas disponíveis no pedido → não há aba "Preço por Seção"
  6. Para alterar preços, é necessário editar cada item individualmente

Resultado esperado: A aba "Preço por Seção" não é exibida e não há mecanismo de replicação de preço por seção no pedido.

Este é o valor padrão ao criar um novo registro no MFA001 (AfterInsert atribui 'N').


Tabela Comparativa Resumida​

OpçãoDescriçãoAba "Preço por Seção" [MPD002]Botão "Replicar Preço"Itens afetados
MManualVisívelDisponívelTodos os itens com a mesma CD_SECAO do item atual
NNão (padrão)OcultaIndisponívelNenhum

Referências no Código Fonte​

MFA001 - Tela de configuração​

source/MFA001/UMFA001.dfm (linhas 9178-9204) — ComboBox cmbTP_REPLICAPRECO com as opções cadastradas no DFM:

object cmbTP_REPLICAPRECO: TwwDBComboBox
Left = 476
Top = 437
DataField = 'TP_REPLICAVALOR'
DataSource = dmMFA001.dsPARMFATUR
Items.Strings = (
'Manual'#9'M'
'Não'#9'N')
end

Label associado (source/MFA001/UMFA001.dfm linha 8235-8247):

object lbl75: TLabel
Left = 234
Top = 440
Caption = 'Replicar Preço dos Produtos por Seção [MPD002]'
end

source/MFA001/UdmMFA001.pas (linha 568) — valor padrão no AfterInsert:

tabPARMFATURTP_REPLICAVALOR.AsString := 'N';

source/MFA001/UdmMFA001.pas (linha 277) — definição do campo:

tabPARMFATURTP_REPLICAVALOR: TStringField;

source/MFA001/UdmMFA001.dfm — campo incluído nos SELECT/INSERT/UPDATE da tabela PARMFATUR (linhas 292, 1939-1941, 2442, 2614, 2870, 3172).

MPD002 - Pedido de Venda (tela impactada)​

source/MPD002/UdmMPD002.pas (linhas 604-607) — lógica que habilita/oculta a aba "Preço por Seção" ao abrir o pedido:

if (parmfatur.values['TP_REPLICAVALOR'] = 'M') then
frmMPD002.pgcSecao.TabVisible := True
else
frmMPD002.pgcSecao.TabVisible := False;

source/MPD002/UdmMPD002.pas (linha 5748) — campo retornado no SELECT de parâmetros do pedido, junto com demais flags (ST_ALTERAPEDIDOBLOQ, ST_SCPC, ST_BLOQUEIADESCPROM, etc.).

source/MPD002/UMPD002.dfm (linhas 2522-2523) — aba controlada pelo parâmetro:

object pgcSecao: TTabSheet
Caption = 'Preço por Seção'

source/MPD002/UMPD002.pas (procedure btnReplicarClick, linhas 7689-7720) — ação do botão "Replicar Preço": percorre tabITEMPEDIDO e, para cada item com a mesma CD_SECAO do item atual, atribui o CD_TABPRECO e o VL_UNITARIO do item de referência.

SQL​

Nenhuma referência encontrada em Scripts/ (nenhuma stored procedure utiliza TP_REPLICAVALOR). O parâmetro é consumido exclusivamente pelo código Delphi do MPD002.