Pular para o conteúdo principal

Solicita Local de Estoque Individual por Item no Pedido

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos → Opção 1 Tabela: PARMFATUR.ST_SOLICITALOCALINDIVIDUALPED Valor padrão: N (Não)

Controla se, no MPD002, cada item do pedido pode ter seu próprio local de armazenagem (Individual) ou se o local escolhido no primeiro item deve ser replicado automaticamente para os demais itens (local geral do pedido). Parâmetro dependente de ST_SOLICITALOCALPED — só tem efeito prático quando o pai vale S; caso contrário o combo fica desabilitado na UI.

Telas impactadas​

MóduloCódigoDescrição
Parâmetros de FaturamentoMFA001Tela onde o parâmetro é configurado; o combo só fica habilitado quando ST_SOLICITALOCALPED = 'S'
Pedido de VendaMPD002Quando N, reutiliza o local do primeiro item nos itens seguintes; quando S, zera o local geral a cada item para forçar nova escolha

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_SOLICITALOCALINDIVIDUALPEDParâmetro em análise (S/N)
PARMFATUR.ST_SOLICITALOCALPEDParâmetro pai — controla se este fica habilitado
ITEMPEDIDO.CD_TIPOLOCAL / ITEMPEDIDO.CD_LOCALPar que identifica o local de armazenagem do item do pedido
ITEMPEDIDO.DS_TIPOLOCAL / ITEMPEDIDO.DS_LOCALDescrições exibidas no grid do pedido
ITEMLOCAL (CD_ITEM, CD_TIPOLOCAL, CD_LOCAL)Verificada em UdmMPD002.pas:3067-3071 para testar se o item novo possui o mesmo local geral do pedido
RETORNA_LOCAISARMAZENAGEMFunção usada quando o item não aceita o local geral (UdmMPD002.pas:3089-3092)

Opções disponíveis​

S - Sim (Local Individual por Item)​

O que fazDetalhe
Exige local por item?SIM - cada item pode ter um local de armazenagem diferente
Reaproveita local do primeiro item?NÃO - as variáveis iCD_TIPOLOCALGERAL e iCD_LOCALGERAL são zeradas após cada item (UdmMPD002.pas:3193-3199), forçando nova busca
Comportamento no MPD002Para cada novo item, o sistema entra no bloco if (not achouLocal) e consulta RETORNA_LOCAISARMAZENAGEM, permitindo escolher um local específico
Pré-requisitoST_SOLICITALOCALPED = 'S' (caso contrário o combo está desabilitado)

Simulação passo a passo​

  1. Acesse MFA001 → aba Parâmetros → Pedidos → Opção 1
  2. Defina "Solicita Local de Estoque" (ST_SOLICITALOCALPED) = Sim
  3. Observe que o combo "Solicita Local de Estoque Individual por Item" fica habilitado (evento cmbST_SOLICITALOCALPEDChange em UMFA001.pas:2381-2384)
  4. Defina este combo = Sim
  5. Salve (F6)
  6. Abra um Pedido de Venda (MPD002)
  7. Adicione o primeiro item em um produto cadastrado em múltiplos locais → o sistema abre a tela Lista_Local para escolha
  8. Escolha, por exemplo, o Local 01
  9. Adicione o segundo item em outro produto também com múltiplos locais
  10. O sistema abre novamente a tela de seleção de local — permite escolher o Local 02 (diferente do primeiro)
  11. No bloco UdmMPD002.pas:3193-3199, após gravar o local do primeiro item, as variáveis iCD_TIPOLOCALGERAL/iCD_LOCALGERAL foram zeradas

Resultado esperado: Cada item do pedido pode ter um local físico diferente. Útil para pedidos que envolvem produtos armazenados em depósitos distintos ou quando há split logístico interno.


N - Não (Local Único do Pedido)​

O que fazDetalhe
Exige local por item?NÃO - o pedido usa um único local comum a todos os itens
Reaproveita local do primeiro item?SIM - UdmMPD002.pas:3061-3082 verifica se o item novo possui o local geral (iCD_TIPOLOCALGERAL/iCD_LOCALGERAL) cadastrado em ITEMLOCAL; se possuir, reaproveita sem perguntar
FallbackSe o produto novo não possui o local geral cadastrado em ITEMLOCAL, o sistema cai no bloco if (not achouLocal) e usa RETORNA_LOCAISARMAZENAGEM
Comportamento na UI do MFA001Combo desabilitado quando ST_SOLICITALOCALPED <> 'S'

Simulação passo a passo​

  1. Acesse MFA001 → aba Parâmetros → Pedidos → Opção 1
  2. Defina "Solicita Local de Estoque" (ST_SOLICITALOCALPED) = Sim
  3. Defina "Solicita Local de Estoque Individual por Item" = Não
  4. Salve (F6)
  5. Abra um Pedido de Venda (MPD002)
  6. Adicione o primeiro item em um produto com múltiplos locais → escolha o Local 01
  7. Adicione o segundo item em outro produto que também esteja cadastrado no Local 01 (via ITEMLOCAL)
  8. O sistema NÃO abre a seleção de local — herda automaticamente Local 01 do primeiro item (condição UdmMPD002.pas:3061-3062)
  9. Adicione um terceiro item em um produto que NÃO está cadastrado no Local 01
  10. O COUNT(I.CD_ITEM) em UdmMPD002.pas:3066-3074 retorna 0; achouLocal permanece False; o sistema cai no fallback e abre Lista_Local / RETORNA_LOCAISARMAZENAGEM

Resultado esperado: Todos os itens do pedido ficam no mesmo local de armazenagem sempre que o produto estiver liberado nele. Reduz clicks e garante consistência logística quando há um único depósito de expedição.

Este é o valor padrão ao criar um novo registro no MFA001 (UdmMFA001.pas:538).


Interação com ST_SOLICITALOCALPED​

Este parâmetro é estritamente dependente de ST_SOLICITALOCALPED. A relação é enforced em duas camadas:

1. Camada de UI (MFA001)​

O evento cmbST_SOLICITALOCALPEDChange habilita/desabilita o combo deste parâmetro em tempo real (UMFA001.pas:2381-2384):

procedure TfrmMFA001.cmbST_SOLICITALOCALPEDChange(Sender: TObject);
begin
cmbST_SOLICITALOCALINDIVIDUALPED.Enabled := (cmbST_SOLICITALOCALPED.Value = 'S');
end;
  • ST_SOLICITALOCALPED = 'S' → combo habilitado, usuário escolhe S ou N
  • ST_SOLICITALOCALPED = 'N' ou 'Q' → combo desabilitado (cinza), valor preservado mas ignorado em runtime

Além disso, ao tentar clicar no combo desabilitado, UMFA001.pas:2402-2414 redireciona o foco de volta ao cmbST_SOLICITALOCALPED, guiando o usuário a habilitar o parâmetro pai primeiro. O hint do GroupBox explica: "Este parâmetro é dependente do parâmetro Solicita Local de Estoque." (UMFA001.pas:2386-2399).

2. Camada de Negócio (MPD002)​

O leitor em UdmMPD002.pas:3061-3062 só considera ST_SOLICITALOCALINDIVIDUALPED = 'N' quando precisa reutilizar o local geral. Como esse código só é alcançado dentro do bloco if (ParmFatur.Values['ST_SOLICITALOCALPED'] <> 'N') (linha 3056), o parâmetro não tem efeito quando o pai é N. Quando o pai é Q, o bloco é executado, mas a UI impede configurar S, então na prática o comportamento padrão é o de N (reutiliza local geral).

Tabela Comparativa Resumida​

ST_SOLICITALOCALPEDST_SOLICITALOCALINDIVIDUALPEDCombo habilitado no MFA001?Comportamento no MPD002
S (Sim)S (Individual)SimCada item escolhe seu local — variáveis gerais zeradas após cada item
S (Sim)N (Único)SimReaproveita o local do primeiro item sempre que o produto estiver em ITEMLOCAL com esse par
N (Não)(qualquer)NãoParâmetro ignorado — não há local de estoque no pedido
Q (Valida Qtde)(qualquer)NãoParâmetro tratado como N no fluxo (reutiliza local geral), pois o combo nunca é habilitado para setar S

Referências no Código Fonte​

Delphi​

ArquivoLinha(s)Referência
source/MFA001/UMFA001.dfm9274Caption 'Solicita Local de Estoque Individual por Item'
source/MFA001/UMFA001.dfm9844-9872Combo cmbST_SOLICITALOCALINDIVIDUALPED (Items: Sim S / Não N)
source/MFA001/UMFA001.pas459Declaração do componente cmbST_SOLICITALOCALINDIVIDUALPED
source/MFA001/UMFA001.pas2381-2384Evento cmbST_SOLICITALOCALPEDChange — habilita o combo dependente quando pai = 'S'
source/MFA001/UMFA001.pas2386-2399Hint do GroupBox quando o combo está desabilitado
source/MFA001/UMFA001.pas2402-2414Clique na área do combo desabilitado devolve foco para cmbST_SOLICITALOCALPED
source/MFA001/UdmMFA001.pas238Declaração do campo tabPARMFATURST_SOLICITALOCALINDIVIDUALPED
source/MFA001/UdmMFA001.pas538Valor default 'N' no AfterInsert
source/MFA001/UdmMFA001.dfm254, 1718-1723, 2832-2833, 3134Select / Update / FieldDef do campo
source/MPD002/UdmMPD002.pas3061-3082Quando 'N', reutiliza o local geral se o item estiver cadastrado em ITEMLOCAL com aquele par
source/MPD002/UdmMPD002.pas3193-3199Quando 'S', zera as variáveis iCD_TIPOLOCALGERAL/iCD_LOCALGERAL após cada item para forçar nova seleção
source/MPD002/UdmMPD002.pas5751Select de PARMFATUR carregando o campo junto com demais parâmetros de pedido

SQL​

Sem referências diretas em Scripts/ — o parâmetro é avaliado somente em Delphi (MFA001 e MPD002). A lógica de importação mobile (PROCESSA_ITEMPEDIDOIMPORTACAO) trata apenas ST_SOLICITALOCALPED, de modo que pedidos importados não respeitam a distinção individual/único.