Pular para o conteúdo principal

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_REGISTRO via CURRENT_TIMESTAMP no 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/ControleFocusControl / DataFieldCaption visivel
Empresa (codigo)edtCD_EMPRESA / CD_EMPRESA"Empresa"
Empresa (nome)edtNM_EMPRESA / NM_EMPRESA(read-only, ao lado do codigo)
TransferenciacmbST_TRANSFERENCIA / ST_TRANSFERENCIA"Transferencia" (Sim / Nao)
Ultima AlteracaoedtDT_REGISTRO / DT_REGISTRO"Ultima Alteracao" (read-only)

Sub-GroupBox: Parametros do Local de Transferencia

Campo/ControleFocusControl / DataFieldCaption visivel
Local DestinoedtCD_LOCALDEST / CD_LOCALDESTINO"Local Destino"
Tipo Local DestinoedtCD_TIPOLOCALDEST / CD_TIPOLOCALDESTINO"Tipo Local Destino" (read-only, auto)
Operacao EntradaedtCD_OPERACAOENTRADA / CD_OPERACAOENTRADA"Operacao Entrada"
Historico EntradaedtCD_HISTORICOENTRADA / CD_HISTENTRADA"Historico Entrada"
Operacao SaidaedtCD_OPERACAOSAIDA / CD_OPERACAOSAIDA"Operacao Saida"
Historico SaidaedtCD_HISTORICOSAIDA / CD_HISTSAIDA"Historico Saida"
Movimentação Geral/MestraedtCD_MOVIMENTACAO / CD_MOVIMENTACAO"Movimentação Geral/Mestra"

Botoes:

BotaoCaptionAtalhoAcao
buttonOK"OK (F6)"F6actionOKExecute → Post + frameCadastro.gravar
buttonCancelar"Cancelar"EscactionCancelarExecute → 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.

TabelaCampoEfeito
PARMENTREGACD_EMPRESAChave primaria — apenas um registro por empresa e permitido (validado no BeforePost)
PARMENTREGAST_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
PARMENTREGACD_LOCALDESTINO / CD_TIPOLOCALDESTINOLocal e tipo de local destino pre-carregados na NF de transferencia (consumido pelas telas de emissao)
PARMENTREGACD_OPERACAOENTRADA / CD_OPERACAOSAIDACodigos de operacao fiscal usados como default no par de notas de transferencia (entrada no destino / saida na origem)
PARMENTREGACD_HISTENTRADA / CD_HISTSAIDAHistoricos contábeis aplicados ao lancamento no destino e na origem
PARMENTREGACD_MOVIMENTACAOMovimentação Geral/Mestra (MOVIMENTACAO.ST_MESTRA = 'M') que agrupa os movimentos da transferencia

Regras de Negocio​

  1. AfterInsert — seta ST_TRANSFERENCIA := 'S' como default ao inserir novo registro.
  2. BeforePost (unicidade) — ao inserir, varre PARMENTREGA e impede mais de um registro por empresa: "Ja existe um parametro cadastrado para esta empresa. Verifique!".
  3. Validate CD_EMPRESA — exige empresa cadastrada em EMPRESA; caso contrario "Empresa nao cadastrada! Use a tela de cadastro de empresas [ADM002]".
  4. Validate CD_LOCALDESTINO — verifica em LOCALESTOQUE; preenche DS_LOCALDESTINO e CD_TIPOLOCALDESTINO automaticamente. Erro: "Local nao cadastrado! [TEQ003]".
  5. Validate CD_TIPOLOCALDESTINO — confere em TIPOLOCAL. Erro: "Tipo de Local nao Cadastrado! [TEQ002]".
  6. Validate CD_OPERACAOENTRADA / CD_OPERACAOSAIDA — exige registro em OPERACAO com ST_ATIVO = 'S'. Erros: "Operacao nao Cadastrada! [TEQ001]" e "A Operacao selecionada nao esta Ativa. Verifique! [TEQ001]".
  7. Validate CD_HISTENTRADA / CD_HISTSAIDA — exige registro em HISTORICO com ST_ATIVO = 'S'. Erros: "Historico nao Cadastrado! [TCB003]" e "O Historico selecionado nao esta Ativo. Verifique! [TCB003]".
  8. Validate CD_MOVIMENTACAO — exige registro em MOVIMENTACAO ativo (ST_ATIVO = 'S') e do tipo mestra (ST_MESTRA = 'M'). Erros: "... nao esta Cadastrada", "... nao esta Ativa", "... nao e Geral/Mestra. [TCB001]".
  9. DT_REGISTRO — gravado automaticamente via CURRENT_TIMESTAMP no INSERT e no UPDATE (definido no updCadastro).
  10. F9 Movimentação — edtCD_MOVIMENTACAOKeyDown chama busca(transaction, 'MOVIMENTACAOMESTRA', ...) — so lista movimentacoes mestras.
  11. Controle de acesso — se programa.tpAcesso = 2, o botao OK (actionOK) fica oculto/desabilitado (modo somente leitura).
  12. Observacao de seguranca/legado — todas as validacoes usam concatenacao de SQL via ExecutaConsulta (padrao legado do framework jDB). Em manutencoes novas, preferir ParamByName.

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​

  • InsertSQL grava CD_EMPRESA, CD_HISTENTRADA, CD_HISTSAIDA, CD_LOCALDESTINO, CD_OPERACAOENTRADA, CD_OPERACAOSAIDA, CD_TIPOLOCALDESTINO, CD_MOVIMENTACAO, ST_TRANSFERENCIA e DT_REGISTRO = CURRENT_TIMESTAMP.
  • ModifySQL atualiza todos os campos (exceto chave), sempre aplicando DT_REGISTRO = CURRENT_TIMESTAMP, usando CD_EMPRESA = :OLD_CD_EMPRESA no WHERE.
  • DeleteSQL apaga por CD_EMPRESA = :OLD_CD_EMPRESA.
  • FetchRowSQL reabre o mesmo SELECT do dataset, filtrado por P.CD_EMPRESA = :CD_EMPRESA.

Tabelas de Escrita (INSERT/UPDATE/DELETE)​

TabelaOperacoes
PARMENTREGADELETE, INSERT, SELECT, UPDATE

Tabelas de Leitura (SELECT)​

TabelaOperacoes
EMPRESASELECT
HISTORICOSELECT
LOCALESTOQUESELECT
MOVIMENTACAOSELECT
OPERACAOSELECT
TIPOLOCALSELECT

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).

TelaTítuloTabelas em Comum
REQ002Evolucao de Movimentos no EstoqueEMPRESA, OPERACAO, TIPOLOCAL
CEQ001Saldo em EstoqueEMPRESA, LOCALESTOQUE
CEQ002Consulta Ordens de ProducaoEMPRESA, TIPOLOCAL
CEQ005Movimentos EstoqueEMPRESA, OPERACAO
CNF001Consulta de Notas FiscaisEMPRESA, MOVIMENTACAO
CNF012Consulta de CTRCEMPRESA, MOVIMENTACAO
CPD001Consulta de PedidosEMPRESA, MOVIMENTACAO
CPD002Consulta de Orcamentos / Ordem de ServiçoEMPRESA, MOVIMENTACAO
CPD003Consulta de Ordens de ServiçoEMPRESA, MOVIMENTACAO
CPD005—EMPRESA, MOVIMENTACAO
MFI011Recalculo de Impostos e Saldo FiscalEMPRESA, HISTORICO
MNF011Alteracao de ComissoesEMPRESA, MOVIMENTACAO
MNF024—EMPRESA, MOVIMENTACAO
MPD076Cadastro de Previsao de VendaEMPRESA, MOVIMENTACAO
MPD084—EMPRESA, MOVIMENTACAO
RCO003Giro de Estoque e posicao atualEMPRESA, TIPOLOCAL
REQ001Saldo em Estoque por ProdutoEMPRESA, TIPOLOCAL
REQ003Niveis de EstoqueEMPRESA, TIPOLOCAL
REQ005Ordens de ProducaoEMPRESA, TIPOLOCAL
REQ006Movimentos do EstoqueEMPRESA, OPERACAO
REQ019Saldo de Produtos no EstoqueEMPRESA, TIPOLOCAL
REQ033—EMPRESA, TIPOLOCAL
RFC040Impressao de Confissao de DividaEMPRESA, MOVIMENTACAO
RFI039—EMPRESA, MOVIMENTACAO
RNF002Comissao sobre Notas FiscaisEMPRESA, HISTORICO
RNF003Comissao sobre DuplicatasEMPRESA, HISTORICO
RNF005Demonstrativo de Notas FiscaisEMPRESA, HISTORICO
RNF006Relacao de Custo X Lucro sobre VendasEMPRESA, MOVIMENTACAO
RNF012Notas Fiscais por CFOEMPRESA, 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:

TelaTítuloTabelas em Comum
LNF043— (Layout de NF relacionado a entrega/transferencia)PARMENTREGA
MNF002Emissao de Nota Fiscal de VendaPARMENTREGA
MNF008Emissao Nota Fiscal de Venda - ObrasPARMENTREGA
MNF019Gerenciamento de Notas Geral/MestraPARMENTREGA
MPD002Emissao de Pedidos de VendaPARMENTREGA
MRC020Confirmacao de Ordem de Carregamento RecapadoraPARMENTREGA

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