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_SOLICITALOCALINDIVIDUALPEDValor 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ódulo | Código | Descrição |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Tela onde o parâmetro é configurado; o combo só fica habilitado quando ST_SOLICITALOCALPED = 'S' |
| Pedido de Venda | MPD002 | Quando 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
| Campo | Descrição |
|---|---|
PARMFATUR.ST_SOLICITALOCALINDIVIDUALPED | Parâmetro em análise (S/N) |
PARMFATUR.ST_SOLICITALOCALPED | Parâmetro pai — controla se este fica habilitado |
ITEMPEDIDO.CD_TIPOLOCAL / ITEMPEDIDO.CD_LOCAL | Par que identifica o local de armazenagem do item do pedido |
ITEMPEDIDO.DS_TIPOLOCAL / ITEMPEDIDO.DS_LOCAL | Descriçõ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_LOCAISARMAZENAGEM | Funçã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 faz | Detalhe |
|---|---|
| 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 MPD002 | Para cada novo item, o sistema entra no bloco if (not achouLocal) e consulta RETORNA_LOCAISARMAZENAGEM, permitindo escolher um local específico |
| Pré-requisito | ST_SOLICITALOCALPED = 'S' (caso contrário o combo está desabilitado) |
Simulação passo a passo
- Acesse MFA001 → aba Parâmetros → Pedidos → Opção 1
- Defina "Solicita Local de Estoque" (
ST_SOLICITALOCALPED) = Sim - Observe que o combo "Solicita Local de Estoque Individual por Item" fica habilitado (evento
cmbST_SOLICITALOCALPEDChangeemUMFA001.pas:2381-2384) - Defina este combo = Sim
- Salve (F6)
- Abra um Pedido de Venda (MPD002)
- Adicione o primeiro item em um produto cadastrado em múltiplos locais → o sistema abre a tela
Lista_Localpara escolha - Escolha, por exemplo, o Local 01
- Adicione o segundo item em outro produto também com múltiplos locais
- O sistema abre novamente a tela de seleção de local — permite escolher o Local 02 (diferente do primeiro)
- No bloco
UdmMPD002.pas:3193-3199, após gravar o local do primeiro item, as variáveisiCD_TIPOLOCALGERAL/iCD_LOCALGERALforam 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 faz | Detalhe |
|---|---|
| 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 |
| Fallback | Se 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 MFA001 | Combo desabilitado quando ST_SOLICITALOCALPED <> 'S' |
Simulação passo a passo
- Acesse MFA001 → aba Parâmetros → Pedidos → Opção 1
- Defina "Solicita Local de Estoque" (
ST_SOLICITALOCALPED) = Sim - Defina "Solicita Local de Estoque Individual por Item" = Não
- Salve (F6)
- Abra um Pedido de Venda (MPD002)
- Adicione o primeiro item em um produto com múltiplos locais → escolha o Local 01
- Adicione o segundo item em outro produto que também esteja cadastrado no Local 01 (via
ITEMLOCAL) - O sistema NÃO abre a seleção de local — herda automaticamente Local 01 do primeiro item (condição
UdmMPD002.pas:3061-3062) - Adicione um terceiro item em um produto que NÃO está cadastrado no Local 01
- O
COUNT(I.CD_ITEM)emUdmMPD002.pas:3066-3074retorna0;achouLocalpermaneceFalse; o sistema cai no fallback e abreLista_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 escolheSouNST_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_SOLICITALOCALPED | ST_SOLICITALOCALINDIVIDUALPED | Combo habilitado no MFA001? | Comportamento no MPD002 |
|---|---|---|---|
S (Sim) | S (Individual) | Sim | Cada item escolhe seu local — variáveis gerais zeradas após cada item |
S (Sim) | N (Único) | Sim | Reaproveita o local do primeiro item sempre que o produto estiver em ITEMLOCAL com esse par |
N (Não) | (qualquer) | Não | Parâmetro ignorado — não há local de estoque no pedido |
Q (Valida Qtde) | (qualquer) | Não | Parâmetro tratado como N no fluxo (reutiliza local geral), pois o combo nunca é habilitado para setar S |
Referências no Código Fonte
Delphi
| Arquivo | Linha(s) | Referência |
|---|---|---|
source/MFA001/UMFA001.dfm | 9274 | Caption 'Solicita Local de Estoque Individual por Item' |
source/MFA001/UMFA001.dfm | 9844-9872 | Combo cmbST_SOLICITALOCALINDIVIDUALPED (Items: Sim S / Não N) |
source/MFA001/UMFA001.pas | 459 | Declaração do componente cmbST_SOLICITALOCALINDIVIDUALPED |
source/MFA001/UMFA001.pas | 2381-2384 | Evento cmbST_SOLICITALOCALPEDChange — habilita o combo dependente quando pai = 'S' |
source/MFA001/UMFA001.pas | 2386-2399 | Hint do GroupBox quando o combo está desabilitado |
source/MFA001/UMFA001.pas | 2402-2414 | Clique na área do combo desabilitado devolve foco para cmbST_SOLICITALOCALPED |
source/MFA001/UdmMFA001.pas | 238 | Declaração do campo tabPARMFATURST_SOLICITALOCALINDIVIDUALPED |
source/MFA001/UdmMFA001.pas | 538 | Valor default 'N' no AfterInsert |
source/MFA001/UdmMFA001.dfm | 254, 1718-1723, 2832-2833, 3134 | Select / Update / FieldDef do campo |
source/MPD002/UdmMPD002.pas | 3061-3082 | Quando 'N', reutiliza o local geral se o item estiver cadastrado em ITEMLOCAL com aquele par |
source/MPD002/UdmMPD002.pas | 3193-3199 | Quando 'S', zera as variáveis iCD_TIPOLOCALGERAL/iCD_LOCALGERAL após cada item para forçar nova seleção |
source/MPD002/UdmMPD002.pas | 5751 | Select 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.