RFC001 — Diário de Caixa / Banco
Fonte
- Form:
source/RFC001/URFC001.pas - DataModule:
source/RFC001/UdmRFC001.pas - Design Form:
source/RFC001/URFC001.dfm - Design DM:
source/RFC001/UdmRFC001.dfm - Package:
source/RFC001/RFC001.dpk - Procedure:
Scripts/VIEW_DIARIOCAIXA.sql - Menu:
source/jCommon/jMenu.pas(linha 789:RFC.add('RFC001', 'Diário de Caixa / Banco', 1, [erpFinBasico]))
Objetivo
Relatório financeiro que lista, no formato de diario contábil (debito / credito), todos os lancamentos de caixa e banco de uma empresa em um intervalo de datas. Consome a procedure selectable VIEW_DIARIOCAIXA, que faz UNION ALL entre a perna de debito (conta a debitar) e a perna de credito (conta a creditar) de cada MOVTOCAIXA nao estornado, juntando dados do plano de contas, caixa/controle, usuario, historico e pessoa. A tela em si e apenas um formulario de filtros (empresa + periodo) e nao persiste nada no banco.
Modelos de Relatorio
Modelo 1: Padrao
Quando usado: unico modelo — a tela nao tem combobox de selecao de layout. O leiaute de impressao e definido por programa.codigo (RFC001) via GeraRelatorio do jReport.
Relatorio analitico do movimento de caixa/banco, ordenado por empresa, data de lancamento, conta e numero do lancamento (NR_LANCCAIXA). Exibe, para cada lancamento: data, numero do lancamento, plano de contas (codigo + descricao), historico (codigo + descricao), numero do documento, complemento e os valores de debito e credito ja segregados em duas linhas (o UNION ALL na procedure desdobra um MOVTOCAIXA em uma linha de VL_DEBITO e outra de VL_CREDITO).
SQL Base (montado em btnImprimirClick):
SELECT DS_EMPRESA, DT_LANCAMENTO, CD_CONTA, DS_CONTA, NR_LANCCAIXA, CD_HISTORICO,
NR_DOCUMENTO, DS_COMPLEMENTO, VL_DEBITO, VL_CREDITO
FROM VIEW_DIARIOCAIXA(:CD_EMPRESA, :DT_INICIAL, :DT_FINAL,
' AND PARMSALDO.TP_SALDO IN (''X'', ''B'') ')
ORDER BY DS_EMPRESA, DT_LANCAMENTO, CD_CONTA, NR_LANCCAIXA
O quarto parametro da procedure (I_FILTRO) e um fragmento SQL concatenado usado dentro de um EXECUTE STATEMENT: RFC001 sempre passa AND PARMSALDO.TP_SALDO IN ('X', 'B'), restringindo o relatorio a contas marcadas como caixa (X) ou banco (B) no PARMSALDO (via VIEW_PARMSALDO). Contas de outro tipo (I = Informativo, por exemplo) sao ignoradas.
Filtros
Campos simples:
- Empresa (Lista de Empresas cadastradas) F9 — default: empresa da sessao (
sessao.empresa.cd_empresa) - Período - De (data inicial do lancamento) — obrigatorio
- Período - Até (data final do lancamento) — obrigatorio
A validacao no btnImprimirClick exige Data Inicial e Data Final preenchidas, caso contrario levanta JException com a mensagem "É Obrigatório Informar a Data Inicial/Final do Período para Realizar a Consulta!".
Parametros que Influenciam
| Tabela | Campo | Efeito |
|---|---|---|
| PARMSALDO | TP_SALDO | A procedure VIEW_PARMSALDO classifica cada conta do plano: X=Caixa, B=Banco, I=Informativo. RFC001 passa filtro fixo TP_SALDO IN ('X','B') — contas informativas nunca aparecem no diario. |
| PARMSALDO | CD_CONTA | Vinculo entre a conta parametrizada e a conta do lancamento (MX.CD_CONTADEBITO / MX.CD_CONTACREDITO). Se uma conta nao estiver em PARMSALDO da empresa, seu movimento nao aparece. |
Observacao: a tela nao expoe nenhum parametro
PARM*ao usuario. A restricao de contas e feita viaTP_SALDOdentro da view.
Regras de Negocio
- Data inicial obrigatoria: se
DT_INICIALvazio, foco emedtDT_INICIALeJException('E-0000', 'É Obrigatório Informar a Data Inicial do Período para Realizar a Consulta!'). - Data final obrigatoria: se
DT_FINALvazio, foco emedtDT_FINALe mesma mensagem com "Data Final". - Validacao de empresa:
tabEMPRESACD_EMPRESAValidateexecutaSELECT NM_EMPRESA FROM EMPRESA WHERE CD_EMPRESA = ...; se nao encontrar, levantaJException('E-0000', 'A Empresa não está Cadastrada [ADM002]!')e limpaNM_EMPRESA. - Lookup F9 na Empresa:
edtCD_EMPRESAKeyDownabrePesquisacom SQLSELECT NM_EMPRESA, CD_EMPRESA FROM EMPRESA(colunas Nome / Código, titulo "Selecione a Empresa"); o codigo selecionado volta paraedtCD_EMPRESA. - Empresa default: no
btnNovoClick, aposAppendemtabEMPRESA,CD_EMPRESArecebe o valor da sessao (sessao.empresa.cd_empresa). - Tela e somente leitura: no
iniciar, os botoesbtnSalvar,btnExcluir,btnProcurar,btnAtualizareSeparador3sao escondidos. OFormClosefaztransaction.Rollback— portanto nenhumINSERT/UPDATE/DELETEjamais e persistido pela tela, mesmo que o mapper registretabEMPRESAcom access CRUD (buffer client-side em memoria para armazenar os filtros). - Filtro fixo de tipo de conta: sempre concatena
AND PARMSALDO.TP_SALDO IN ('X', 'B')no quarto parametro deVIEW_DIARIOCAIXA, limitando a saida a contas de Caixa e Banco. - Cabecalho do relatorio: variavel global
ParmRelate setada com'Data Referência: ' + edtDT_INICIAL.Textantes deGeraRelatorio, servindo como parametro para o leiaute. - Atalhos de teclado: F4=Limpar, F5=Novo, F8=Imprimir, F12=Sair (mapeados em
FormKeyDown). - Segregacao debito/credito: a procedure faz
UNION ALLentre a perna de debito (CD_CONTADEBITO) e a perna de credito (CD_CONTACREDITO) de cada movimento — um unicoMOVTOCAIXAnao estornado gera duas linhas no relatorio, uma comVL_DEBITOpreenchido e outra comVL_CREDITOpreenchido. - Exclui estornos: a procedure filtra
WHERE MX.ST_ESTORNO = 'N'. Lancamentos estornados nao aparecem no diario.
Mensagens exibidas
Levantadas de source/RFC001/ pela camada 0 (commit 96fc51e236).
Mais 3 mensagens com texto literal no código: RFC001.
Datasets e SQL
| Dataset | Descricao | Tabelas |
|---|---|---|
tabEMPRESA | Buffer em memoria que guarda os filtros do usuario (CD_EMPRESA, NM_EMPRESA, DT_INICIAL, DT_FINAL). Sem persistencia — FormClose faz Rollback. | EMPRESA (leitura para validacao) |
A query principal do relatorio e construida em runtime em btnImprimirClick (nao e um TFDQuery persistido no DataModule) e e entregue ao engine GeraRelatorio do jReport via programa.codigo.
Perguntas Frequentes
Módulo: RFC001 - Diário de Caixa
P: Qual é a finalidade da tela RFC001? R: A tela RFC001 tem como objetivo gerar o relatório de Diário de Caixa, que apresenta os lançamentos de caixa da empresa em um determinado período. O relatório exibe informações como a empresa, data de lançamento, conta, número do lançamento, histórico, número do documento, complemento, valores de débito e crédito, organizados por empresa, data e conta.
P: Ao tentar gerar o relatório, o sistema apresenta a mensagem "É Obrigatório Informar a Data Inicial do Período para Realizar a Consulta!". Como devo proceder? R: Este erro ocorre porque o campo Período (Data Inicial) não foi preenchido. Para corrigir, informe a data inicial do período desejado no campo correspondente antes de clicar em Imprimir.
P: Ao tentar gerar o relatório, o sistema apresenta a mensagem "É Obrigatório Informar a Data Final do Período para Realizar a Consulta!". Como devo proceder? R: Este erro ocorre porque o campo Período (Data Final) não foi preenchido. Para corrigir, informe a data final do período desejado no campo "Até" antes de clicar em Imprimir.
P: Ao informar o código da empresa, o sistema apresenta a mensagem "A Empresa não está Cadastrada [ADM002]!". O que significa? R: Este erro indica que o código da empresa informado não foi encontrado no cadastro de empresas do sistema. Verifique se o código está correto. Caso a empresa ainda não esteja cadastrada, acesse a tela de Cadastro de Empresas (ADM002) para realizar o cadastro.
P: Como utilizar a pesquisa de empresas? R: No campo Empresa, pressione a tecla F9 para abrir a lista de pesquisa de empresas. A lista exibirá o nome e o código de todas as empresas cadastradas, permitindo a seleção direta.
P: Quais são os atalhos de teclado disponíveis nesta tela? R: Os atalhos disponíveis são: F4 para limpar os filtros, F5 para novo registro, F8 para imprimir o relatório e F12 para sair da tela.
Tabelas de Escrita (INSERT/UPDATE/DELETE)
Nenhuma. A tela faz
AppendnotabEMPRESAapenas para editar campos visuais de filtro em memoria; oFormCloseexecutatransaction.Rollbackantes de liberar o DataModule, garantindo que nada e persistido. O mapper marca CRUD por analise estatica (presenca deAppend/Edit), mas em runtime a operacao efetiva e somente leitura.
Tabelas de Leitura (SELECT)
| Tabela | Operacoes |
|---|---|
| EMPRESA | SELECT (validacao do filtro + lookup F9) |
Procedures Chamadas
| Procedure | Tabelas Acessadas |
|---|---|
| VIEW_DIARIOCAIXA | MOVTOCAIXA (SELECT), CAIXA (SELECT), EMPRESA (SELECT), PESSOA (SELECT), HISTORICO (SELECT), USUARIO (SELECT) |
| VIEW_PLANOCONTAS | CONTA (SELECT) — invocada internamente pela VIEW_DIARIOCAIXA |
| VIEW_PARMSALDO | PARMSALDO (SELECT) — invocada internamente pela VIEW_DIARIOCAIXA |
| VERIFICA_CONTA_SALDO | CONTA (SELECT) — invocada internamente pela VIEW_DIARIOCAIXA |
Tabelas via Procedures (acesso indireto)
| Tabela | Operacoes |
|---|---|
| CAIXA | SELECT |
| CONTA | SELECT |
| EMPRESA | SELECT |
| HISTORICO | SELECT |
| MOVTOCAIXA | SELECT |
| PARMSALDO | SELECT |
| PESSOA | SELECT |
| USUARIO | SELECT |
Dependencias Aferentes (quem alimenta esta tela)
Telas que escrevem nas tabelas lidas por RFC001 (direta ou via VIEW_DIARIOCAIXA). Ordenadas por relevancia (MOVTOCAIXA / CAIXA / HISTORICO — o core do relatorio — primeiro).
| Tela | Título | Tabelas em Comum |
|---|---|---|
| CFC001 | Contas / Cheques / Adiantamentos | HISTORICO, MOVTOCAIXA, PESSOA |
| MNF001 | Recebimento de Notas Fiscais de Compra | EMPRESA, MOVTOCAIXA, PESSOA |
| MRC020 | Confirmação de Ordem de Carregamento Recapadora | EMPRESA, MOVTOCAIXA, PESSOA |
| MFC004 | Pagamento / Recebimento de Contas | MOVTOCAIXA, PESSOA |
| MFC007 | Estorno de Pagamento / Recebimento de Contas | MOVTOCAIXA, PESSOA |
| MFC009 | Alteração de Duplicatas | HISTORICO, PESSOA |
| MNF002 | Emissão de Nota Fiscal de Venda | EMPRESA, MOVTOCAIXA |
| MNF026 | Troca de Produtos com Emissão de Nota Fiscal | EMPRESA, MOVTOCAIXA |
| MNF032 | Importação de XML Transmitido | MOVTOCAIXA, PESSOA |
| MFC001 | Abertura / Fechamento de Caixa | CAIXA |
| MFC002 | Lançamento de Duplicata / Adiantamento | MOVTOCAIXA |
| MFC003 | Lançamento de Caixa Avulso / Cheque | MOVTOCAIXA |
| MFC006 | Estorno de Lançamento de Caixa Avulso / Cheque | MOVTOCAIXA |
| MFC008 | Fechamento de Caixas | CAIXA |
| MFC020 | Transferência de Caixa / Banco | MOVTOCAIXA |
| MNF033 | Faturamento Agrupado | MOVTOCAIXA |
| CFC002 | Movimentos de Caixa | HISTORICO |
| MFC017 | Lançamento de Duplicata com Históricos | HISTORICO |
| MFC023 | Duplicata / Adiantamento por Obra | HISTORICO |
| TCB003 | Históricos | HISTORICO |
| ADM002 | Empresa | EMPRESA |
| TPO001 | Produtos | PESSOA |
| TFA001 | Pessoas | PESSOA |
+508 telas tambem escrevem em EMPRESA/PESSOA/USUARIO (cadastros basicos compartilhados com todo o ERP) — omitidas por baixa relevancia para o diario de caixa.
Dependencias Eferentes (quem consome dados desta tela)
RFC001 nao persiste dados — e apenas consumidor. Nao possui eferentes reais.
O mapper registra EMPRESA como "escrita" pela presenca de Append/Edit no tabEMPRESA, mas o FormClose faz transaction.Rollback antes do Free. Logo, nenhuma outra tela consome mudancas feitas por RFC001.
Modelos de Relatório
Modelo 1: Padrao
Quando usado: unico modelo — a tela nao tem combobox de selecao de layout. O leiaute de impressão e definido por programa.codigo (RFC001) via GeraRelatorio do jReport.
Relatório analitico do movimento de caixa/banco, ordenado por empresa, data de lancamento, conta e numero do lancamento (NR_LANCCAIXA). Exibe, para cada lancamento: data, numero do lancamento, plano de contas (codigo + descricao), historico (codigo + descricao), numero do documento, complemento e os valores de debito e credito ja segregados em duas linhas (o UNION ALL na procedure desdobra um MOVTOCAIXA em uma linha de VL_DEBITO e outra de VL_CREDITO).
SQL Base (montado em btnImprimirClick):
SELECT DS_EMPRESA, DT_LANCAMENTO, CD_CONTA, DS_CONTA, NR_LANCCAIXA, CD_HISTORICO,
NR_DOCUMENTO, DS_COMPLEMENTO, VL_DEBITO, VL_CREDITO
FROM VIEW_DIARIOCAIXA(:CD_EMPRESA, :DT_INICIAL, :DT_FINAL,
' AND PARMSALDO.TP_SALDO IN (''X'', ''B'') ')
ORDER BY DS_EMPRESA, DT_LANCAMENTO, CD_CONTA, NR_LANCCAIXA
O quarto parametro da procedure (I_FILTRO) e um fragmento SQL concatenado usado dentro de um EXECUTE STATEMENT: RFC001 sempre passa AND PARMSALDO.TP_SALDO IN ('X', 'B'), restringindo o relatorio a contas marcadas como caixa (X) ou banco (B) no PARMSALDO (via VIEW_PARMSALDO). Contas de outro tipo (I = Informativo, por exemplo) sao ignoradas.