Pular para o conteúdo principal

MFC024 — Movimentação MFC024

Fonte​

  • Form: source/MFC024/UMFC024.pas
  • DataModule: source/MFC024/UdmMFC024.pas
  • Package: source/MFC024/MFC024.dpk

Objetivo​

Lancar manualmente duplicatas (a pagar/receber) e adiantamentos (de cliente/fornecedor) vinculados a uma Ordem de Serviço (ORCAMENTO). Gera o registro em CONTAS via GRAVA_CONTAS, cria processo de adiantamento via GRAVA_PROCESSO quando aplicavel, executa rateios de Centro de Resultado e de Despesa por Bem do Imobilizado, integra com a contabilidade e associa a parcela gerada ao numero da Ordem de Serviço informada.

Funcionalidades​

  • Selecao obrigatoria da Ordem de Serviço (ORCAMENTO) que sera vinculada ao lancamento.
  • Selecao do Tipo de Conta (filtrado para nao aceitar historicos de cheque HR/HP nem cartao CT).
  • Lookup de Historico com validacao de natureza (R/P) e tipo (Duplicata U / Adiantamento A) conforme o Tipo de Conta.
  • Sugestao automatica de banco/agencia quando a forma de pagamento tem parametrizacao de boleto (tabela BOLETO).
  • Calculo automatico de VL_TOTAL = VL_DOCUMENTO * NR_PARCELAS na digitacao.
  • Para adiantamentos ou quando vencimento == lancamento, gera processo (GRAVA_PROCESSO), movimento do processo (GRAVA_MOVTOPROCESSO), executa o processo (EXECUTA_PROCESSO) e abre a baixa no caixa via AbreCaixa (jCaixa).
  • Rateio de Centro de Resultado via RateioCR (jCentroResultado) apos gravar CONTAS.
  • Rateio de Despesa por Bens do Imobilizado (DESPESABEM) quando as contas debito/credito estao em PARMDESPESABEM.
  • Integracao contábil automatica via GERA_INTEGRACAO quando PARMCONTABIL.ST_INTEGRACAO = 'A'.
  • Associacao do lancamento a Ordem de Serviço em ORCAMENTOCONTAS (uma linha por parcela).
  • Impressao automatica de promissoria pelo layout definido em PARMFINANC.CD_LAYPROMISSORIA quando for entrada (tpContas = 'E').

Estrutura da Tela​

SecaoCaption / RotuloControleObservacoes
GroupBoxDados do LancamentogrpAdiantamentoAgrupa todos os campos do lancamento
CampoData LancamentoedtDT_LANCAMENTOInicializa com Date em btnNovo
CampoNº Ordem ServiçoedtNR_ORCAMENTOObrigatorio; F9 lista ORCAMENTO ativas da empresa
Campo(readonly) descricao Ordem ServiçoedtDS_ORCAMENTOPreenchido via Validate (NM_PESSOA do contrato)
CampoTipo de ContaedtCD_TIPOCONTAF9 lista TIPOCONTA exceto HR/HP/CT; bloqueia CT e cheques
CampoHistoricoedtCD_HISTORICOF9 filtra por LISTA_HISTORICOS (depende do Tipo de Conta)
CampoDocumentoedtNR_DOCUMENTONumero do documento (opcional)
CampoPessoaedtCD_PESSOAObrigatorio; F9 via Busca('PESSOA')
CampoForma PagamentoedtCD_FORMAPAGTOPode sugerir Banco/Agencia via tabela BOLETO
CampoBancoedtCD_BANCOF12 abre pesquisa de BANCO
CampoAgenciaedtCD_AGENCIAF12 abre pesquisa de AGENCIA filtrando por banco
CampoJuroedtCD_JUROF9 lista JURO
CampoData VencimentoedtDT_VENCIMENTONao pode ser menor que Data Lancamento
CampoNº ParcelasedtNR_PARCELASDefault 1; deve ser > 0
CampoValor ParcelaedtVL_DOCUMENTOObrigatorio; recalcula VL_TOTAL
CampoValor TotalDBEdit1Readonly, calculado
CampoComplementoedtDS_OBSERVACAOTDBMemo, maxlength 240
BotaoLancar <F6>BitBtn1Replica btnSalvar
ToolbarNovo Registro <F5>btnNovoInsert novo CONTAS
ToolbarSalvar Alteracoes <F6>btnSalvarExecuta fluxo completo de gravacao
ToolbarExcluir Registro <F7>btnExcluirOculto no iniciar (apenas navegacao)
ToolbarCancelar Registro <F4>btnLimparRollback + StartTransaction + Append
ToolbarConsultar <F3>btnProcurarOculto no iniciar
ToolbarAtualizar Registros <F2>btnAtualizarOculto no iniciar
ToolbarImprimir <F8>btnImprimirOculto no iniciar
ToolbarSair <F12>btnSairClose

Parametros que Influenciam​

TabelaCampoEfeito
PARMCONTABILST_INTEGRACAOQuando = 'A' e o tpDocumento for ES/CS/DP/AP/RS/OC, dispara GERA_INTEGRACAO apos gravar CONTAS.
PARMDESPESABEMCD_CONTASe a conta debito ou credito do historico estiver cadastrada, exige rateio de DESPESABEM e insere linhas em DESPESABEM.
PARMFINANCCD_LAYPROMISSORIAQuando tpContas = 'E' (entrada), carrega o layout e imprime a promissoria via CarregaLayout.
BOLETOCD_BANCO / CD_AGENCIAQuando a forma de pagamento tem 1 registro, preenche banco/agencia automaticamente; quando tem mais, abre pesquisa para selecao.

Regras de Negocio​

  1. Ordem de Serviço (NR_ORCAMENTO) e campo obrigatorio — valida existencia em ORCAMENTO com ST_ORCAMENTO &lt;&gt; 'C' para a empresa corrente.
  2. Tipo de Conta nao pode ser iniciado por H (cheque) — redireciona o usuario para MFC003; cartao de credito (CT) tambem e bloqueado.
  3. Historico deve respeitar a natureza conforme o Tipo de Conta: CP (Contas a Pagar) exige tipo U + natureza R; CR exige U+P; AC (Adiantamento Cliente) exige A+R; AF (Adiantamento Fornecedor) exige A+P. Historico de Adiantamento obriga contra partida (CD_HISTCONT).
  4. Data de Vencimento nao pode ser menor que Data de Lancamento.
  5. Nº Parcelas deve ser &gt; 0; Valor Parcela deve ser preenchido e &lt;&gt; 0.
  6. tpContas e derivado do tipo: AC/CP/PP -> 'E' (entrada), demais -> 'S' (saida). Controla impressão da promissoria.
  7. tpLancamento/tpDocumento definidos pelo primeiro caractere do TP_TIPOCONTA: C* -> D/DP (duplicata), P* -> D/PR, demais -> A/AD (adiantamento).
  8. Se tipo e Adiantamento ou Data Vencimento <= Data Lancamento, gera processo, move o caixa e alterna a natureza (P <-> R) para a contrapartida.
  9. Quando existe Historico de Juro, gera movimento de processo adicional na parcela 1 com valor VL_JURO.
  10. Observacao e atualizada via UPDATE CONTAS separado apos GRAVA_CONTAS (o SP nao recebe DS_OBSERVACAO).
  11. Rateio de Centro de Resultado (RateioCR) e obrigatorio apos gravar — cancelamento desfaz a transacao.
  12. Rateio de Despesa por Bem so ocorre quando CD_CONTADEBITO ou CD_CONTACREDITO existem em PARMDESPESABEM; usa GERA_SEQUENCIA('SEQ_DESPESABEM').
  13. Para cada parcela gerada em CONTAS, insere uma linha em ORCAMENTOCONTAS ligando Ordem de Serviço <-> Lancamento.
  14. tpAcesso = 2 oculta botoes Novo/Salvar/Excluir (somente leitura). Botoes Excluir, Procurar, Imprimir, Atualizar ja sao ocultos por padrao na iniciar.
  15. FormClose sempre faz Rollback da transacao principal — so registros commitados sao persistidos.

Datasets e SQL​

DatasetTipoDescricaoPrincipais tabelas
tabCONTASTFDQuery (CachedUpdates)Edicao do lancamento. SQL com WHERE 1=0 (tela e so de Insert) unindo CONTAS + PESSOA + TIPOCONTA + FORMAPAGTO + BANCO + AGENCIA + CONTACORPESSOA + JURO e LEFT JOIN HISTORICO. updCONTAS define INSERT/UPDATE/DELETE para CONTAS.CONTAS (escrita), PESSOA/TIPOCONTA/FORMAPAGTO/BANCO/AGENCIA/JURO/HISTORICO (leitura)
SQLTFDQueryQuery auxiliar reutilizavel usada por ExecutaConsulta/ExecUpdate.varias
Lookups F9Dinamico (Pesquisa/Busca)F9 em Tipo Conta, Forma Pagamento, Juro, Historico, Pessoa, Ordem de Serviço; F12 em Banco/Agencia.TIPOCONTA, FORMAPAGTO, JURO, HISTORICO (via LISTA_HISTORICOS), PESSOA, ORCAMENTO, BANCO, AGENCIA
Pipeline btnSalvarExecutaConsulta (transactionBanco)Sequencia: GRAVA_CONTAS -> [se adiant/mesmo dia] GRAVA_PROCESSO + GRAVA_MOVTOPROCESSO (principal e juro) + EXECUTA_PROCESSO + AbreCaixa -> UPDATE CONTAS DS_OBSERVACAO -> RateioCR -> RateioBens + INSERT DESPESABEM (conta debito e credito) -> [se PARMCONTABIL='A'] GERA_INTEGRACAO -> INSERT ORCAMENTOCONTAS por parcela -> CarregaLayout (promissoria).CONTAS, PROCESSO, MOVTOPROCESSO, CAIXA, DESPESABEM, CONTASCTB (via GERA_INTEGRACAO), ORCAMENTOCONTAS

Validates no DataModule: CD_PESSOA, CD_FORMAPAGTO, CD_BANCO, CD_AGENCIA, CD_JURO, CD_TIPOCONTA, CD_HISTORICO, CD_HISTJURO, VL_DOCUMENTO, NR_PARCELAS, DT_VENCIMENTO, NR_ORCAMENTO — cada um faz lookup/validacao e preenche descricao/flags auxiliares (tpContas, tpTipocontas, tpNatureza, cdHistcont).

Tabelas de Escrita (INSERT/UPDATE/DELETE)​

TabelaOperacoes
CONTASDELETE, INSERT, SELECT, UPDATE
DESPESABEMINSERT
ORCAMENTOCONTASINSERT

Tabelas de Leitura (SELECT)​

TabelaOperacoes
AGENCIASELECT
BANCOSELECT
BOLETOSELECT
CONTACORPESSOASELECT
FORMAPAGTOSELECT
HISTORICOSELECT
JUROSELECT
ORCAMENTOSELECT
PARMCONTABILSELECT
PARMDESPESABEMSELECT
PARMFINANCSELECT
PESSOASELECT
TIPOCONTASELECT

Procedures Chamadas​

ProcedureTabelas Acessadas
EXECUTA_PROCESSOAGENCIA (SELECT), AJUSTEFISCALITEMNOTA (DELETE/INSERT/SELECT), ALIQUOTA (SELECT), AVISOSCPC (INSERT), BANCO (SELECT), CHEQUE (SELECT) +63
GERA_INTEGRACAOAJUSTEFISCALITEMNOTA (DELETE/INSERT/SELECT), ALIQUOTA (SELECT), CODRECEITA (SELECT), CONDPAGTO (SELECT), CONTAS (SELECT), CONTASCTB (DELETE/INSERT/SELECT) +53
GERA_SEQUENCIASEQUENCIA (SELECT/UPDATE)
GRAVA_CONTASAJUSTEFISCALITEMNOTA (DELETE/INSERT/SELECT), ALIQUOTA (SELECT), BOLETO (SELECT), CODRECEITA (SELECT), CONDPAGTO (SELECT), CONDPARCELA (SELECT) +64
GRAVA_MOVTOPROCESSOCONTAS (SELECT), CONTASHISTORICO (SELECT), HISTORICO (SELECT), MOVTOPROCESSO (INSERT/SELECT), PARMFINANC (SELECT), PROCESSO (SELECT/UPDATE)
GRAVA_PROCESSOPROCESSO (INSERT), SEQUENCIA (SELECT/UPDATE), SESSAO (SELECT)
LISTA_HISTORICOSHISTORICO (SELECT), TIPOCONTA (SELECT)
VIEW_PLANOCONTASCENTROCUSTO (SELECT), CONTASPESSOA (SELECT), PARMCONTABIL (SELECT), PARMSISTEMA (SELECT), PLANOCONTAS (SELECT), PLANOEMPRESA (SELECT)

Tabelas via Procedures (acesso indireto)​

TabelaOperacoes
AGENCIASELECT
AJUSTEFISCALITEMNOTADELETE, INSERT, SELECT
ALIQUOTASELECT
AVISOSCPCINSERT
BANCOSELECT
BOLETOSELECT
CENTROCUSTOSELECT
CHEQUESELECT
CODRECEITASELECT
COMISSAOCONTASINSERT
CONDPAGTOSELECT
CONDPARCELASELECT
CONTASINSERT, SELECT, UPDATE
CONTASBLOQFINANCSELECT
CONTASCTBDELETE, INSERT, SELECT
CONTASHISTORICOINSERT, SELECT
CONTASHISTORICOCCSELECT
CONTASHISTORICOCTBDELETE, INSERT, SELECT
CONTASJUNCAOSELECT
CONTASPESSOAINSERT, SELECT
...+61 tabelas

Dependencias Aferentes (quem alimenta esta tela)​

Telas que escrevem em tabelas lidas por esta tela.

TelaTítuloTabelas em Comum
jCaixaCONTAS
MFC028CONTAS
CFC006Consulta Fatura (Agrupamento de Notas)CONTAS
MFC033Gerenciamento Boleto Rápido JunsoftCONTAS
TRC037CONTAS
JunsoftAPIBoletosCONTAS
MPD094CONTAS
MNF019Gerenciamento de Notas Geral/MestraCONTAS
MFC021CONTAS
MFC003Lançamento de Caixa Avulso / ChequeCONTAS
JunsoftServiceFatAppCONTAS
MNF032Importação de XML TransmitidoCONTAS
CFC008Controle de CobrançaCONTAS
MFC019Reparcelamento de ContasCONTAS
MNF027Cancelamento de Notas FiscaisCONTAS
MRC030CONTAS
MCA007Condenação de LeiteCONTAS
MFC016Fatura ( Agrupamento de Notas Fiscais )CONTAS
MRC021Cancelamento de Ordem de carregamento RecapadoraCONTAS
CFC009Consulta/Cancelamento de ReparcelamentoCONTAS
MNF029CONTAS
TFA067Contratos e Licenças de SoftwareCONTAS
MFC009Alteração de DuplicatasCONTAS
MFC036Liberação de Contas a PagarCONTAS
CPD008CONTAS
MNF005Cancelamento de Notas FiscaisCONTAS
MFC023Duplicata / Adiantamento por ObraCONTAS
CFC012CONTAS
MFC030CONTAS
MFC012Agrupamento de ContasCONTAS
...+74 telas

Dependencias Eferentes (quem consome dados desta tela)​

Telas que leem tabelas escritas por esta tela.

TelaTítuloTabelas em Comum
RNF021Resumo DiárioCONTAS
MPD094CONTAS
RFC021Movimentação por HistóricoCONTAS
RTR008Relatório de ViagensCONTAS
MFC020Transferência de Caixa / BancoCONTAS
MFC021CONTAS
LNF500CONTAS
LCX032CONTAS
MNF027Cancelamento de Notas FiscaisCONTAS
LCX026CONTAS
MCA007Condenação de LeiteCONTAS
LDP006CONTAS
MRC021Cancelamento de Ordem de carregamento RecapadoraCONTAS
TFA067Contratos e Licenças de SoftwareCONTAS
TRD016CONTAS
LDP015CONTAS
MFC009Alteração de DuplicatasCONTAS
LCX021CONTAS
MFC036Liberação de Contas a PagarCONTAS
MNF005Cancelamento de Notas FiscaisCONTAS
RFC046CONTAS
MFC030CONTAS
LNF015CONTAS
LDP011CONTAS
MFC027Gerenciamento Conciliação BancáriaCONTAS
LCX022CONTAS
CNF008Demonstrativo de Margens sobre VendasCONTAS
LNF168CONTAS
jCaptacaoCONTAS
MCB017Reprocessamento de Centro de CustoCONTAS
...+323 telas