Parâmetro Tipo de Movimentação no Controle de Entrega
Tela de configuração: MFA001 - Parâmetros de Faturamento
Localização: Parâmetros → aba Controle Entrega (pagControleEntrega / grupo grpControleEntrega - "Parâmetros de Controle de Entrega") - rótulo "Tp. Mov. Cont. Entrega" (Label95)
Tabela: PARMFATUR.TP_MOVCONTENTREGA
Valor padrão: A (Ambas)
Define quais movimentações (normais, mestras ou ambas) geram itens no controle de entrega. O filtro é aplicado sobre a coluna MOVIMENTACAO.ST_MESTRA na montagem da grade de agendamento em TfrmEntrega (shared unit jControleEntrega). Só é relevante quando ST_ENTREGA <> 'N' - o combo é habilitado/desabilitado pelo OnChange de cmbST_ENTREGA em UMFA001.pas:1872,1880. Quando ST_ENTREGA = 'N', o valor é forçado para 'A' (UMFA001.pas:1886).
Além de decidir o universo de itens na agenda de entrega, funciona como gatilho de exibição de Nota Mestra em MNF019 (itens de observação só aparecem no modo 'M') e condiciona a habilitação do parâmetro ST_CONFIRMAENTREGAREMESSA na própria MFA001 (UMFA001.pas:2470-2482).
Telas impactadas
| Módulo | Código | Uso |
|---|
| Parâmetros de Faturamento | MFA001 | Único local de configuração (cmbTP_MOVCONTENTREGA) - UMFA001.dfm:11288-11316 |
| Pedido de Venda | MPD002 | Lê o valor da PARMFATUR e passa em ParametrosEntrega[11] para ControleEntrega(...) (UMPD002.pas:3250); também seleciona em UdmMPD002.pas:5754 |
| Nota Fiscal de Saída | MNF002 | Passa em ParametrosEntrega[11] (UMNF002.pas:4588); carrega em UdmMNF002.pas:10505 |
| Itens da Nota de Entrega | MNF019 | Em FormShow ajusta layout da grade: se diferente de 'M' esconde colunas e exibe grade "enxuta"; se 'M' exibe lblDS_OBSERVACAO e memoDS_OBSERVACAO (UMNF019ITEMNOTA.pas:610-620) |
| Consulta interna de parâmetros | MNF008, MCO006 | Apenas seleciona o campo junto de outros parâmetros de PARMFATUR (UdmMNF008.pas:770, UdmMCO006.pas:2114) - não altera comportamento |
Procedures/Views impactadas
Nenhuma stored procedure ou view do banco lê diretamente TP_MOVCONTENTREGA (grep em Scripts/ não retornou resultados). Todo o comportamento é implementado em código Delphi:
| Objeto | Arquivo | Papel |
|---|
CarregarControleEntrega | source/jControleEntrega/UDadosEntrega.pas linhas 102-158 | Recebe o valor em Parametros[11]. Linhas 154-158: quando = 'N' adiciona AND M.ST_MESTRA = 'N' ao filtro da grade; quando = 'M' adiciona AND M.ST_MESTRA = 'M'; quando = 'A' (ou vazio) não aplica filtro sobre ST_MESTRA |
ControleEntrega (wrapper) | source/jControleEntrega/jEntrega.pas | Função pública que repassa iParametros para CarregarControleEntrega |
Campos envolvidos
| Tabela.Campo | Tipo | Descrição |
|---|
PARMFATUR.TP_MOVCONTENTREGA | CHAR(1) / FixedChar | O próprio parâmetro (UdmMFA001.dfm:1900-1905) |
PARMFATUR.ST_ENTREGA | CHAR(1) | Parâmetro "pai" - quando = 'N', desabilita este combo e força = 'A' (UMFA001.pas:1880,1886) |
PARMFATUR.ST_CONFIRMAENTREGAREMESSA | CHAR(1) | Combo dependente - só é habilitado quando TP_MOVCONTENTREGA = 'M' (UMFA001.pas:2472-2481); quando <> 'M' é forçado a 'N' |
MOVIMENTACAO.ST_MESTRA | CHAR(1) | Coluna filtrada no SQL do agendamento. Valores esperados: 'N' (normal) e 'M' (mestra) |
CONTROLEENTREGA.* | - | Tabela-alvo do agendamento (populada após passar pelo filtro deste parâmetro) |
Opções disponíveis
N - Normal
| O que faz | Detalhe |
|---|
Filtro em TfrmEntrega | Adiciona AND M.ST_MESTRA = 'N' ao SQL da grade de agendamento (UDadosEntrega.pas:155-156) |
| Itens exibidos no agendamento | Somente itens cuja movimentação não é mestra (MOVIMENTACAO.ST_MESTRA = 'N') |
ST_CONFIRMAENTREGAREMESSA | Desabilitado e forçado a 'N' - sem confirmação de entrega em remessa (UMFA001.pas:2476-2480) |
| Layout de MNF019 | Em FormShow, grade da nota de entrega usa layout "enxuto": coluna [2] com Width = 294, colunas [4] e [5] invisíveis; lblDS_OBSERVACAO e memoDS_OBSERVACAO permanecem ocultos (UMNF019ITEMNOTA.pas:611-614) |
| Cenário típico | Empresas que não operam com Nota Mestra - a entrega controla apenas movimentos de venda normais |
Simulação passo a passo
- Em MFA001 → aba Controle Entrega → Controle de Entrega (
ST_ENTREGA) = Pedido Atendido (P)
- O combo Tp. Mov. Cont. Entrega (
cmbTP_MOVCONTENTREGA) fica habilitado → selecione Normal (N)
- Salve os parâmetros (F6) -
PARMFATUR.TP_MOVCONTENTREGA = 'N'
- Observe que
cmbST_CONFIRMAENTREGAREMESSA fica desabilitado e seu valor vai para 'N' (UMFA001.pas:2478-2480)
- Abra um pedido em MPD002 com itens usando movimentos normais (
MOVIMENTACAO.ST_MESTRA = 'N') e um item com movimento mestra (ST_MESTRA = 'M', típico de nota mestra)
- Salve o pedido →
ControleEntrega recebe ParametrosEntrega[11] = 'N'
CarregarControleEntrega (UDadosEntrega.pas:155-156) aplica AND M.ST_MESTRA = 'N' → abre TfrmEntrega mostrando apenas os itens com movimento normal; os de nota mestra não aparecem na agenda
Resultado esperado: O controle de entrega trabalha apenas com movimentos normais. Itens originados de movimentação mestra ficam de fora da agenda. Útil para empresas que não utilizam fluxo de Nota Mestra/Filha.
M - Mestra
| O que faz | Detalhe |
|---|
Filtro em TfrmEntrega | Adiciona AND M.ST_MESTRA = 'M' ao SQL da grade de agendamento (UDadosEntrega.pas:157-158) |
| Itens exibidos no agendamento | Somente itens cuja movimentação é mestra (MOVIMENTACAO.ST_MESTRA = 'M') |
ST_CONFIRMAENTREGAREMESSA | Habilitado - torna-se possível exigir confirmação de entrega em remessas (UMFA001.pas:2472-2475) |
| Layout de MNF019 | Em FormShow, grade da nota de entrega exibe o label e memo de observação (lblDS_OBSERVACAO.Visible := True, memoDS_OBSERVACAO.Visible := True) - importante para indicar pendências/observações em remessas (UMNF019ITEMNOTA.pas:617-620) |
| Cenário típico | Empresas que operam fluxo de Nota Mestra (remessa) → Nota Filha (faturamento), tipicamente distribuidores que entregam primeiro e faturam depois, com controle de observações por item de remessa |
Simulação passo a passo
- Em MFA001 → aba Controle Entrega → Controle de Entrega (
ST_ENTREGA) = Nota Fiscal (S) ou Pedido Atendido (P)
- Selecione Tp. Mov. Cont. Entrega =
Mestra (M)
- O combo
cmbST_CONFIRMAENTREGAREMESSA é imediatamente habilitado (UMFA001.pas:2474) - configure conforme necessidade
- Salve (F6) -
PARMFATUR.TP_MOVCONTENTREGA = 'M'
- Abra uma Nota Fiscal de saída em MNF002 usando um movimento marcado como mestra (
MOVIMENTACAO.ST_MESTRA = 'M') e outro normal
- Salve a nota →
ControleEntrega recebe ParametrosEntrega[11] = 'M'
CarregarControleEntrega (UDadosEntrega.pas:157-158) aplica AND M.ST_MESTRA = 'M' → TfrmEntrega exibe apenas os itens da movimentação mestra
- Ao abrir MNF019 (Itens da Nota de Entrega),
FormShow detecta TP_MOVCONTENTREGA = 'M' e mostra o memo de observação para digitação de notas da remessa (UMNF019ITEMNOTA.pas:617-620)
Resultado esperado: Apenas movimentações mestras entram no controle de entrega, e a tela de itens de entrega passa a ter campo de observação. Fluxo adequado para distribuidores com remessa/faturamento separados.
A - Ambas (padrão)
| O que faz | Detalhe |
|---|
Filtro em TfrmEntrega | Nenhum filtro adicional sobre MOVIMENTACAO.ST_MESTRA - o if (Parametros[11] = 'N' ... else if 'M' ...) em UDadosEntrega.pas:154-158 não entra em nenhum ramo |
| Itens exibidos no agendamento | Todos os itens (movimentos normais e mestras) |
ST_CONFIRMAENTREGAREMESSA | Desabilitado e forçado a 'N' (UMFA001.pas:2476-2480) - só habilita em 'M' puro |
| Layout de MNF019 | Como 'A' <> 'M', segue o layout "enxuto" (colunas 4 e 5 ocultas, grid sem memo de observação) - igual ao comportamento da opção N (UMNF019ITEMNOTA.pas:610-614) |
| Valor forçado | É o que AfterInsert grava ao criar um novo PARMFATUR (UdmMFA001.pas:561) e é o valor de fallback quando ST_ENTREGA volta para 'N' (UMFA001.pas:1886) |
| Cenário típico | Default conservador: empresa agenda entrega de tudo, sem separar normal de mestra - adequado quando o usuário não quer diferenciar os fluxos |
Simulação passo a passo
- Em MFA001 → aba Controle Entrega → Controle de Entrega (
ST_ENTREGA) = Pedido Atendido (P)
- Deixe Tp. Mov. Cont. Entrega em
Ambas (A) - padrão ao criar a PARMFATUR
- Salve (F6) -
PARMFATUR.TP_MOVCONTENTREGA = 'A'
- Abra um pedido com itens mistos (movimentos normais e mestras)
ControleEntrega recebe ParametrosEntrega[11] = 'A'
- Como
'A' <> 'N' e 'A' <> 'M', nenhum if em UDadosEntrega.pas:154-158 adiciona filtro de ST_MESTRA → TfrmEntrega lista todos os itens do pedido
- Em MNF019, layout "enxuto" prevalece (memo de observação oculto)
Resultado esperado: Todos os itens (independente do tipo de movimentação) entram na agenda de entrega. O confirmador de remessa (ST_CONFIRMAENTREGAREMESSA) permanece inativo.
Interação com ST_CONTENTREGA / ST_CONTENTREGACONF / ST_ENTREGA
ST_ENTREGA (pai): quando = 'N' (sem controle de entrega), cmbST_ENTREGAChange (UMFA001.pas:1880) desabilita cmbTP_MOVCONTENTREGA e, se a PARMFATUR estiver em edição, força TP_MOVCONTENTREGA := 'A' e ST_CONFIRMAENTREGAREMESSA := 'N' (UMFA001.pas:1885-1886). Quando <> 'N', o combo é habilitado (UMFA001.pas:1872).
ST_CONFIRMAENTREGAREMESSA (filho): cmbTP_MOVCONTENTREGAChange habilita/desabilita o combo e zera o valor quando <> 'M' (UMFA001.pas:2470-2481). Fluxo resumido:
TP_MOVCONTENTREGA = 'M' → ST_CONFIRMAENTREGAREMESSA pode ser editado (Sim/Não).
TP_MOVCONTENTREGA = 'N' ou 'A' → ST_CONFIRMAENTREGAREMESSA desabilitado e forçado a 'N'.
ST_CONTENTREGA (irmão): outro parâmetro da mesma aba, independente deste - filtra por ITEM.TP_ITEM (Produto vs Produto+Serviço), ver ST_CONTENTREGA. Os dois operam em colunas SQL diferentes e os filtros se combinam na mesma query (UDadosEntrega.pas:151-158).
ST_CONTENTREGACONF (não confundir): parâmetro de conferência (separação de ordem/pedido), totalmente diferente deste. Ver ST_CONTENTREGACONF quando disponível.
TP_EXCLUSAOENTREGADEVOLUCAO: outro irmão da aba, relacionado a exclusão de entregas de devolução. Não interage diretamente com TP_MOVCONTENTREGA, mas pertence ao mesmo grupo grpControleEntrega.
Tabela Comparativa Resumida
| Opção | Nome | Filtro em TfrmEntrega | ST_CONFIRMAENTREGAREMESSA | Layout MNF019 | Cenário típico |
|---|
| N | Normal | AND M.ST_MESTRA = 'N' | Desabilitado (forçado 'N') | Enxuto (sem memo observação) | Empresa que não usa Nota Mestra |
| M | Mestra | AND M.ST_MESTRA = 'M' | Habilitado (Sim/Não) | Completo (com memo observação) | Distribuidor com remessa/faturamento separados |
| A | Ambas (padrão) | Sem filtro de ST_MESTRA | Desabilitado (forçado 'N') | Enxuto (sem memo observação) | Default conservador - agenda tudo |
Referências no Código Fonte
ComboBox e valor padrão
| Arquivo | Linha(s) | Trecho |
|---|
source/MFA001/UMFA001.dfm | 11109-11117 | pagControleEntrega: TTabSheet com Caption = 'Controle Entrega' e grpControleEntrega: TGroupBox - Caption = ' Parâmetros de Controle de Entrega ' |
source/MFA001/UMFA001.dfm | 11161-11167 | Label do combo - Caption = 'Tp. Mov. Cont. Entrega' |
source/MFA001/UMFA001.dfm | 11288-11316 | cmbTP_MOVCONTENTREGA: TwwDBComboBox com Items.Strings = ('Normal'#9'N', 'Mestra'#9'M', 'Ambas'#9'A'), DataField = 'TP_MOVCONTENTREGA', OnChange = cmbTP_MOVCONTENTREGAChange |
source/MFA001/UMFA001.pas | 523 | Declaração cmbTP_MOVCONTENTREGA: TwwDBComboBox |
source/MFA001/UMFA001.pas | 826 | Declaração do handler cmbTP_MOVCONTENTREGAChange |
source/MFA001/UMFA001.pas | 1872, 1880, 1886 | cmbST_ENTREGAChange habilita/desabilita e força TP_MOVCONTENTREGA := 'A' quando ST_ENTREGA = 'N' |
source/MFA001/UMFA001.pas | 2470-2482 | cmbTP_MOVCONTENTREGAChange controla o combo filho cmbST_CONFIRMAENTREGAREMESSA |
source/MFA001/UdmMFA001.pas | 270 | Declaração tabPARMFATURTP_MOVCONTENTREGA: TStringField |
source/MFA001/UdmMFA001.pas | 561 | AfterInsert: tabPARMFATURTP_MOVCONTENTREGA.AsString := 'A' (valor padrão) |
source/MFA001/UdmMFA001.dfm | 1900-1905 | Campo tabPARMFATURTP_MOVCONTENTREGA (FieldName = 'TP_MOVCONTENTREGA', FixedChar = True, Size = 1) |
source/MFA001/UdmMFA001.dfm | 283, 3163 | TP_MOVCONTENTREGA nos SELECTs do tabPARMFATUR |
source/MFA001/UdmMFA001.dfm | 2439, 2611, 2863 | TP_MOVCONTENTREGA nos INSERT/UPDATE gerados pelo FireDAC |
Consumidores (leem o parâmetro)
| Arquivo | Linha | Uso |
|---|
source/MPD002/UMPD002.pas | 3250 | ParametrosEntrega[11] := ParmFatur.Values['TP_MOVCONTENTREGA'] ao chamar ControleEntrega na gravação do pedido |
source/MPD002/UdmMPD002.pas | 5754 | SELECT ... P.TP_MOVCONTENTREGA ... FROM PARMFATUR P |
source/MNF002/UMNF002.pas | 4588 | ParametrosEntrega[11] := ParmFatur.Values['TP_MOVCONTENTREGA'] ao chamar ControleEntrega na gravação da nota |
source/MNF002/UdmMNF002.pas | 10505 | SELECT ... P.TP_MOVCONTENTREGA ... |
source/MNF019/UMNF019ITEMNOTA.pas | 610-620 | Em FormShow: if (ParmFatur.Values['TP_MOVCONTENTREGA'] <> 'M') define layout enxuto; caso = 'M', exibe label e memo de observação |
source/MNF008/UdmMNF008.pas | 770 | SELECT ... P.TP_MOVCONTENTREGA ... (leitura em conjunto com outros parâmetros) |
source/MCO006/UdmMCO006.pas | 2114 | SELECT ... P.TP_MOVCONTENTREGA ... (leitura em conjunto com outros parâmetros) |
source/jControleEntrega/UDadosEntrega.pas | 123 | Comentário: 11 - Tp_Nota - Utilizado na MPD002/MNF002 (obs: comentário histórico, o uso real é como TP_MOVCONTENTREGA) |
source/jControleEntrega/UDadosEntrega.pas | 154-158 | Uso efetivo: if (Parametros[11] <> '') then if (Parametros[11] = 'N') then iTp := iTp + 'AND M.ST_MESTRA = ''N''' else if (Parametros[11] = 'M') then iTp := iTp + ' AND M.ST_MESTRA = ''M'''; |
Scripts SQL (Firebird)
Nenhuma referência direta a TP_MOVCONTENTREGA foi encontrada em Scripts/ - o parâmetro é consumido exclusivamente por código Delphi (shared unit jControleEntrega). Os filtros resultantes sobre MOVIMENTACAO.ST_MESTRA são concatenados dinamicamente na query montada em UDadosEntrega.pas.