MFA011 — Movimentação MFA011
Fonte
- Source:
source/MFA011/ - Form:
source/MFA011/UformMFA011.pas(+.dfm) - Frame:
source/MFA011/UframeMFA011.pas(+.dfm) - DataModule:
source/MFA011/UdmMFA011.pas(+.dfm) - Pacote:
source/MFA011/MFA011.dpk
Objetivo
Manter, por empresa, os parametros default usados na geracao de Nota Fiscal de Entrega (transferencia entre locais de estoque): local e tipo de local de destino, operacoes de entrada e saida, historicos contábeis de entrada e saida e a movimentação geral/mestra vinculada. Os registros gravados em PARMENTREGA sao consumidos pelas telas de emissao de NF/Pedido/Recapadora para pre-carregar valores quando ha transferencia.
Funcionalidades
- Cadastro unico por empresa (validacao de unicidade no
BeforePost). - Lookup F9 para Empresa, Local Destino, Operacao (entrada/saida), Historico (entrada/saida) e Movimentação Geral/Mestra.
- Flag "Transferencia" (Sim/Nao) controla se a empresa utiliza NF de transferencia entre locais.
- Preenchimento automatico do Tipo de Local a partir do Local selecionado.
- Grid de pesquisa + formulario de edicao fornecido pelo framework
TframeCadastro(jFrameCadastro). - Carimbo automatico de
DT_REGISTROviaCURRENT_TIMESTAMPno INSERT/UPDATE.
Estrutura da Tela
Título da janela: Parametros de Entrega [MFA011] (Caption do TForm).
Painel principal: Parametros de Entrega (ESPanel1).
GroupBox raiz: Parametros de Entrega da Empresa
| Campo/Controle | FocusControl / DataField | Caption visivel |
|---|---|---|
| Empresa (codigo) | edtCD_EMPRESA / CD_EMPRESA | "Empresa" |
| Empresa (nome) | edtNM_EMPRESA / NM_EMPRESA | (read-only, ao lado do codigo) |
| Transferencia | cmbST_TRANSFERENCIA / ST_TRANSFERENCIA | "Transferencia" (Sim / Nao) |
| Ultima Alteracao | edtDT_REGISTRO / DT_REGISTRO | "Ultima Alteracao" (read-only) |
Sub-GroupBox: Parametros do Local de Transferencia
| Campo/Controle | FocusControl / DataField | Caption visivel |
|---|---|---|
| Local Destino | edtCD_LOCALDEST / CD_LOCALDESTINO | "Local Destino" |
| Tipo Local Destino | edtCD_TIPOLOCALDEST / CD_TIPOLOCALDESTINO | "Tipo Local Destino" (read-only, auto) |
| Operacao Entrada | edtCD_OPERACAOENTRADA / CD_OPERACAOENTRADA | "Operacao Entrada" |
| Historico Entrada | edtCD_HISTORICOENTRADA / CD_HISTENTRADA | "Historico Entrada" |
| Operacao Saida | edtCD_OPERACAOSAIDA / CD_OPERACAOSAIDA | "Operacao Saida" |
| Historico Saida | edtCD_HISTORICOSAIDA / CD_HISTSAIDA | "Historico Saida" |
| Movimentação Geral/Mestra | edtCD_MOVIMENTACAO / CD_MOVIMENTACAO | "Movimentação Geral/Mestra" |
Botoes:
| Botao | Caption | Atalho | Acao |
|---|---|---|---|
| buttonOK | "OK (F6)" | F6 | actionOKExecute → Post + frameCadastro.gravar |
| buttonCancelar | "Cancelar" | Esc | actionCancelarExecute → Cancel + frameCadastro.cancelar |
Parametros que Influenciam
MFA011 e, ela propria, uma tabela de parametros (PARMENTREGA): cada linha define, por empresa, o comportamento padrao das emissoes de NF de transferencia/entrega. Nao ha leitura de outras tabelas PARM* no codigo.
| Tabela | Campo | Efeito |
|---|---|---|
| PARMENTREGA | CD_EMPRESA | Chave primaria — apenas um registro por empresa e permitido (validado no BeforePost) |
| PARMENTREGA | ST_TRANSFERENCIA | 'S' = empresa utiliza NF de transferencia entre locais; 'N' = nao utiliza. Lido por MNF002/MNF008/MNF019/MPD002/MRC020/LNF043 para decidir se aplica o fluxo de transferencia |
| PARMENTREGA | CD_LOCALDESTINO / CD_TIPOLOCALDESTINO | Local e tipo de local destino pre-carregados na NF de transferencia (consumido pelas telas de emissao) |
| PARMENTREGA | CD_OPERACAOENTRADA / CD_OPERACAOSAIDA | Codigos de operacao fiscal usados como default no par de notas de transferencia (entrada no destino / saida na origem) |
| PARMENTREGA | CD_HISTENTRADA / CD_HISTSAIDA | Historicos contábeis aplicados ao lancamento no destino e na origem |
| PARMENTREGA | CD_MOVIMENTACAO | Movimentação Geral/Mestra (MOVIMENTACAO.ST_MESTRA = 'M') que agrupa os movimentos da transferencia |
Regras de Negocio
- AfterInsert — seta
ST_TRANSFERENCIA := 'S'como default ao inserir novo registro. - BeforePost (unicidade) — ao inserir, varre
PARMENTREGAe impede mais de um registro por empresa: "Ja existe um parametro cadastrado para esta empresa. Verifique!". - Validate CD_EMPRESA — exige empresa cadastrada em
EMPRESA; caso contrario "Empresa nao cadastrada! Use a tela de cadastro de empresas [ADM002]". - Validate CD_LOCALDESTINO — verifica em
LOCALESTOQUE; preencheDS_LOCALDESTINOeCD_TIPOLOCALDESTINOautomaticamente. Erro: "Local nao cadastrado! [TEQ003]". - Validate CD_TIPOLOCALDESTINO — confere em
TIPOLOCAL. Erro: "Tipo de Local nao Cadastrado! [TEQ002]". - Validate CD_OPERACAOENTRADA / CD_OPERACAOSAIDA — exige registro em
OPERACAOcomST_ATIVO = 'S'. Erros: "Operacao nao Cadastrada! [TEQ001]" e "A Operacao selecionada nao esta Ativa. Verifique! [TEQ001]". - Validate CD_HISTENTRADA / CD_HISTSAIDA — exige registro em
HISTORICOcomST_ATIVO = 'S'. Erros: "Historico nao Cadastrado! [TCB003]" e "O Historico selecionado nao esta Ativo. Verifique! [TCB003]". - Validate CD_MOVIMENTACAO — exige registro em
MOVIMENTACAOativo (ST_ATIVO = 'S') e do tipo mestra (ST_MESTRA = 'M'). Erros: "... nao esta Cadastrada", "... nao esta Ativa", "... nao e Geral/Mestra. [TCB001]". - DT_REGISTRO — gravado automaticamente via
CURRENT_TIMESTAMPno INSERT e no UPDATE (definido noupdCadastro). - F9 Movimentação —
edtCD_MOVIMENTACAOKeyDownchamabusca(transaction, 'MOVIMENTACAOMESTRA', ...)— so lista movimentacoes mestras. - Controle de acesso — se
programa.tpAcesso = 2, o botao OK (actionOK) fica oculto/desabilitado (modo somente leitura). - Observacao de seguranca/legado — todas as validacoes usam concatenacao de SQL via
ExecutaConsulta(padrao legado do frameworkjDB). Em manutencoes novas, preferirParamByName.
Datasets e SQL
qryCadastro (TFDQuery) — unico dataset, master do cadastro
SELECT consolidado com os descritivos das FKs:
SELECT P.CD_EMPRESA, E.NM_EMPRESA,
P.CD_TIPOLOCALDESTINO, TDES.DS_TIPOLOCAL DS_TIPOLOCALDESTINO,
P.CD_LOCALDESTINO, LDES.DS_LOCAL DS_LOCALDESTINO,
P.CD_OPERACAOENTRADA, OE.DS_OPERACAO DS_OPERACAOENTRADA,
P.CD_OPERACAOSAIDA, OS.DS_OPERACAO DS_OPERACAOSAIDA,
P.CD_HISTENTRADA, HE.DS_HISTORICO DS_HISTENTRADA,
P.CD_HISTSAIDA, HS.DS_HISTORICO DS_HISTSAIDA,
P.CD_MOVIMENTACAO, MV.DS_MOVIMENTACAO,
P.ST_TRANSFERENCIA,
CASE P.ST_TRANSFERENCIA WHEN 'S' THEN 'Sim' ELSE 'Nao' END DS_TRANSFERENCIA,
P.DT_REGISTRO
FROM PARMENTREGA P
INNER JOIN EMPRESA E ON E.CD_EMPRESA = P.CD_EMPRESA
LEFT JOIN TIPOLOCAL TDES ON TDES.CD_TIPOLOCAL = P.CD_TIPOLOCALDESTINO
LEFT JOIN LOCALESTOQUE LDES ON LDES.CD_LOCAL = P.CD_LOCALDESTINO
LEFT JOIN OPERACAO OE ON OE.CD_OPERACAO = P.CD_OPERACAOENTRADA
LEFT JOIN OPERACAO OS ON OS.CD_OPERACAO = P.CD_OPERACAOSAIDA
LEFT JOIN HISTORICO HE ON HE.CD_HISTORICO = P.CD_HISTENTRADA
LEFT JOIN HISTORICO HS ON HS.CD_HISTORICO = P.CD_HISTSAIDA
LEFT JOIN MOVIMENTACAO MV ON MV.CD_MOVIMENTACAO = P.CD_MOVIMENTACAO
ORDER BY TDES.DS_TIPOLOCAL
updCadastro (TFDUpdateSQL) — INSERT / UPDATE / DELETE
InsertSQLgravaCD_EMPRESA, CD_HISTENTRADA, CD_HISTSAIDA, CD_LOCALDESTINO, CD_OPERACAOENTRADA, CD_OPERACAOSAIDA, CD_TIPOLOCALDESTINO, CD_MOVIMENTACAO, ST_TRANSFERENCIAeDT_REGISTRO = CURRENT_TIMESTAMP.ModifySQLatualiza todos os campos (exceto chave), sempre aplicandoDT_REGISTRO = CURRENT_TIMESTAMP, usandoCD_EMPRESA = :OLD_CD_EMPRESAno WHERE.DeleteSQLapaga porCD_EMPRESA = :OLD_CD_EMPRESA.FetchRowSQLreabre o mesmo SELECT do dataset, filtrado porP.CD_EMPRESA = :CD_EMPRESA.
Tabelas de Escrita (INSERT/UPDATE/DELETE)
| Tabela | Operacoes |
|---|---|
| PARMENTREGA | DELETE, INSERT, SELECT, UPDATE |
Tabelas de Leitura (SELECT)
| Tabela | Operacoes |
|---|---|
| EMPRESA | SELECT |
| HISTORICO | SELECT |
| LOCALESTOQUE | SELECT |
| MOVIMENTACAO | SELECT |
| OPERACAO | SELECT |
| TIPOLOCAL | SELECT |
Procedures Chamadas
Nenhuma stored procedure chamada.
Tabelas via Procedures (acesso indireto)
Nao aplicavel.
Dependencias Aferentes (quem alimenta esta tela)
Telas que escrevem nas tabelas lidas por MFA011 (EMPRESA, HISTORICO, LOCALESTOQUE, MOVIMENTACAO, OPERACAO, TIPOLOCAL). As aferentes sao cadastros e movimentos de dominio amplo; abaixo, as 30 mais conectadas (457 no total).
| Tela | Título | Tabelas em Comum |
|---|---|---|
| REQ002 | Evolucao de Movimentos no Estoque | EMPRESA, OPERACAO, TIPOLOCAL |
| CEQ001 | Saldo em Estoque | EMPRESA, LOCALESTOQUE |
| CEQ002 | Consulta Ordens de Producao | EMPRESA, TIPOLOCAL |
| CEQ005 | Movimentos Estoque | EMPRESA, OPERACAO |
| CNF001 | Consulta de Notas Fiscais | EMPRESA, MOVIMENTACAO |
| CNF012 | Consulta de CTRC | EMPRESA, MOVIMENTACAO |
| CPD001 | Consulta de Pedidos | EMPRESA, MOVIMENTACAO |
| CPD002 | Consulta de Orcamentos / Ordem de Serviço | EMPRESA, MOVIMENTACAO |
| CPD003 | Consulta de Ordens de Serviço | EMPRESA, MOVIMENTACAO |
| CPD005 | — | EMPRESA, MOVIMENTACAO |
| MFI011 | Recalculo de Impostos e Saldo Fiscal | EMPRESA, HISTORICO |
| MNF011 | Alteracao de Comissoes | EMPRESA, MOVIMENTACAO |
| MNF024 | — | EMPRESA, MOVIMENTACAO |
| MPD076 | Cadastro de Previsao de Venda | EMPRESA, MOVIMENTACAO |
| MPD084 | — | EMPRESA, MOVIMENTACAO |
RCO003 | Giro de Estoque e posicao atual | EMPRESA, TIPOLOCAL |
| REQ001 | Saldo em Estoque por Produto | EMPRESA, TIPOLOCAL |
| REQ003 | Niveis de Estoque | EMPRESA, TIPOLOCAL |
| REQ005 | Ordens de Producao | EMPRESA, TIPOLOCAL |
| REQ006 | Movimentos do Estoque | EMPRESA, OPERACAO |
| REQ019 | Saldo de Produtos no Estoque | EMPRESA, TIPOLOCAL |
| REQ033 | — | EMPRESA, TIPOLOCAL |
| RFC040 | Impressao de Confissao de Divida | EMPRESA, MOVIMENTACAO |
| RFI039 | — | EMPRESA, MOVIMENTACAO |
| RNF002 | Comissao sobre Notas Fiscais | EMPRESA, HISTORICO |
| RNF003 | Comissao sobre Duplicatas | EMPRESA, HISTORICO |
| RNF005 | Demonstrativo de Notas Fiscais | EMPRESA, HISTORICO |
| RNF006 | Relacao de Custo X Lucro sobre Vendas | EMPRESA, MOVIMENTACAO |
| RNF012 | Notas Fiscais por CFO | EMPRESA, MOVIMENTACAO |
| RNF038 | — | EMPRESA, MOVIMENTACAO |
+427 telas adicionais com uma tabela em comum (sobretudo consumidoras de EMPRESA e MOVIMENTACAO).
Dependencias Eferentes (quem consome dados desta tela)
Telas que leem PARMENTREGA (unica tabela escrita por MFA011). Estas sao as telas que realmente dependem dos parametros configurados aqui:
| Tela | Título | Tabelas em Comum |
|---|---|---|
LNF043 | — (Layout de NF relacionado a entrega/transferencia) | PARMENTREGA |
| MNF002 | Emissao de Nota Fiscal de Venda | PARMENTREGA |
| MNF008 | Emissao Nota Fiscal de Venda - Obras | PARMENTREGA |
| MNF019 | Gerenciamento de Notas Geral/Mestra | PARMENTREGA |
| MPD002 | Emissao de Pedidos de Venda | PARMENTREGA |
| MRC020 | Confirmacao de Ordem de Carregamento Recapadora | PARMENTREGA |
Fonte (fim)
- Form principal:
source/MFA011/UformMFA011.pas/.dfm - Frame de edicao:
source/MFA011/UframeMFA011.pas/.dfm - DataModule:
source/MFA011/UdmMFA011.pas/.dfm - Pacote BPL:
source/MFA011/MFA011.dpk