RCB001 — Razão Contábil
Fonte
- Source:
source/RCB001/
Objetivo
Emitir o Livro Razão Contábil (por conta, por empresa e por período), com opções de quebra por mês, exibição de contrapartida, situação do saldo (financeiro/contábil) e geração dos termos de abertura/encerramento do livro.
Modelos de Relatorio
Modelo 1: Padrão
Quando usado: botão "Imprimir <F8>" (btnImprimir.OnClick) — a tela gera um único modelo cujo SQL e layout variam conforme os checkboxes marcados (sem combobox de modelo).
O layout físico (.rtm) é escolhido assim:
RCB001_CP.rtm— quando "Mostrar Conta de Contra Partida" está marcado E nenhum "Mostrar Situação do Saldo" está marcado.RCB001.rtm— demais casos (com ou sem situação de saldo).
SQL Base:
SELECT /*0*/ V.NR_LANCAMENTO, V.CD_EMPRESA, V.CD_CLASSIFICACAO,
V.CD_CONTA, V.DS_CONTA,
:TP_MASCARA TP_MASCARA, -- '+' se Situacao Saldo Financeiro, senao PARMCONTABIL.TP_NEGATIVO
V.DT_LANCAMENTO, V.DS_COMPLEMENTO, V.TP_DOCTO,
(CASE WHEN V.TP_NATUREZA = 'D' THEN V.VL_DEBITO ELSE (V.VL_DEBITO * -1) END) VL_DEBITO,
(CASE WHEN V.TP_NATUREZA = 'C' THEN V.VL_CREDITO ELSE (V.VL_CREDITO * -1) END) VL_CREDITO,
SUM((CASE WHEN V.TP_NATUREZA = 'D' THEN V.VL_DEBITO ELSE (V.VL_DEBITO * -1) END) +
(CASE WHEN V.TP_NATUREZA = 'C' THEN V.VL_CREDITO ELSE (V.VL_CREDITO * -1) END)) VL_SALDO,
V.CD_FILIAL
/* se chkContraPartida */ , V.CD_CONTACONTRA
, V.TP_NATUREZA
/* se chkQuebraMes */
, EXTRACT(YEAR FROM V.DT_LANCAMENTO)||'.'||EXTRACT(MONTH FROM V.DT_LANCAMENTO) NR_MES,
(SELECT R.O_DS_MES||' de '||EXTRACT(YEAR FROM V.DT_LANCAMENTO)
FROM MES_EXTENSO(V.DT_LANCAMENTO) R) DS_MES
FROM VIEW_RAZAOCONTABIL(
:WHERE, -- WHERE V.CD_EMPRESA IN (...) AND V.DT_LANCAMENTO BETWEEN ... AND V.CD_HISTORICOCONTABIL = ...
:FILTRO1, -- ' AND V.CD_CONTADEBITO = COALESCE(P.CD_CONTA,0) ' se houve filtro de conta
:FILTRO2, -- ' AND V.CD_CONTACREDITO = COALESCE(P.CD_CONTA,0) ' se houve filtro de conta
:FILTROS3, -- INNER JOIN CONTAS_FILTRADAS FR ON (...) se houve filtro de conta
:ST_MOSTRACODPESSOA, -- 'S' se chkMostraCodPessoa, 'N' caso contrario
:SQL_CTE -- WITH CONTAS_FILTRADAS AS (UNION de VIEW_PLANOCONTAS para contas Titulo + Analitica)
) V
GROUP BY V.NR_LANCAMENTO, V.CD_EMPRESA, V.CD_CLASSIFICACAO, V.CD_FILIAL,
V.CD_CONTA, V.DS_CONTA, V.TP_NATUREZA,
V.DT_LANCAMENTO, V.DS_COMPLEMENTO, V.TP_DOCTO,
V.VL_DEBITO, V.VL_CREDITO
/* se chkContraPartida */ , V.CD_CONTACONTRA
ORDER BY V.CD_CLASSIFICACAO,
/* se chkQuebraMes */ V.DT_LANCAMENTO, EXTRACT(MONTH FROM V.DT_LANCAMENTO)||'.'||EXTRACT(YEAR FROM V.DT_LANCAMENTO),
V.CD_CONTA, V.DT_LANCAMENTO,
CASE WHEN V.TP_DOCTO = 'N' THEN 'Z'
WHEN V.TP_DOCTO = 'D' THEN 'Y'
WHEN V.TP_DOCTO = 'C' THEN 'X'
ELSE V.TP_DOCTO END DESC,
VL_DEBITO
CTE auxiliar (SqlCte) — montada quando existe filtro de Conta (campo "Conta Contábil" e/ou grid "Contas Contábeis"):
WITH CONTAS_FILTRADAS AS (
-- contas tipo T (titulo): expande classificacao filha analitica
SELECT E.CD_EMPRESA, VP.CD_CONTA, VP.DS_CONTA
FROM EMPRESA E
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CONTA IN (<contas T>)') V ON (1=1)
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CLASSIFICACAO STARTING WITH '''
|| V.CD_CLASSIFICACAO
|| ''' AND P.TP_CONTA = ''A'' ') VP ON (1=1)
WHERE E.CD_EMPRESA IN (<empresas selecionadas>)
AND E.CD_EMPRESA = COALESCE(VP.CD_EMPRESA, E.CD_EMPRESA)
UNION ALL
-- contas tipo A (analiticas): direto
SELECT E.CD_EMPRESA, V.CD_CONTA, V.DS_CONTA
FROM EMPRESA E
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CONTA IN (<contas A>)') V ON (1=1)
WHERE E.CD_EMPRESA IN (<empresas selecionadas>)
AND E.CD_EMPRESA = COALESCE(V.CD_EMPRESA, E.CD_EMPRESA)
)
Fallback (sem movimento) — quando tabRazao.IsEmpty e há Conta filtrada, a tela exibe as contas com saldo zerado:
SELECT /*2*/ NULL NR_LANCAMENTO, P.CD_EMPRESA, P.CD_CLASSIFICACAO,
P.CD_CONTA, P.DS_CONTA,
:TP_MASCARA TP_MASCARA,
NULL DT_LANCAMENTO, NULL DS_COMPLEMENTO, NULL TP_DOCTO,
0.00 VL_DEBITO, 0.00 VL_CREDITO, 0.00 VL_SALDO,
NULL CD_FILIAL, P.TP_NATUREZA
FROM VIEW_PLANOCONTAS(:CD_EMPRESA,
'AND P.CD_CONTA in (<contas>)',
NULL,
:ST_MOSTRACODPESSOA) P
Saldo anterior (por conta no header do grupo) — via RETORNA_SALDODIAMTF no evento VL_SALDOGroupBreak:
SELECT SUM(O_VL_SALDO)
FROM RETORNA_SALDODIAMTF(:CD_EMPRESAS, :CD_CONTA, :DT_DIA_ANTERIOR)
Termos de Abertura/Encerramento — quando "Emitir Termo de Abertura" e/ou "Emitir Termo de Encerramento" marcados:
SELECT FIRST 1 E.NM_EMPRESA,
EP.DS_ENDERECO||', '||COALESCE(EP.NR_ENDERECO,'') DS_ENDERECO,
M.DS_MUNICIPIO, M.SG_ESTADO, EP.NR_CEP, E.NR_REGISTROJUNTA,
E.DT_REGISTROJUNTA, EP.NR_INSCEST, P.NR_CNPJCPF, E.NR_INSCMUNICIPAL,
M.DS_MUNICIPIO||' - '||M.SG_ESTADO||', '|| :DATA_ABERTURA DS_DATAABERTURA,
M.DS_MUNICIPIO||' - '||M.SG_ESTADO||', '|| :DATA_FECHAMENTO DS_DATAFECHAMENTO,
PS.NM_PESSOA NM_SOCIO, T.DS_TIPOSOCIO, 'CPF '||PS.NR_CNPJCPF NR_CPFSOCIO,
PC.NM_PESSOA NM_CONTADOR, 'CRC '||C.NR_CRCCONTADOR NR_CRC, C.DS_TITULOCONTADOR
FROM EMPRESA E
INNER JOIN PESSOA P ON (P.CD_PESSOA = E.CD_PESSOA)
INNER JOIN ENDERECOPESSOA EP ON (P.CD_PESSOA = EP.CD_PESSOA)
INNER JOIN MUNICIPIO M ON (M.CD_MUNICIPIO = EP.CD_MUNICIPIO)
LEFT JOIN SOCIO S ON (S.CD_EMPRESA = :CD_EMPRESA
AND S.ST_RESPONSAVEL = 'S')
LEFT JOIN PESSOA PS ON (PS.CD_PESSOA = S.CD_PESSOA)
LEFT JOIN TIPOSOCIO T ON (T.CD_TIPOSOCIO = S.CD_TIPOSOCIO)
LEFT JOIN CONTADOR C ON (1 = 1)
LEFT JOIN PESSOA PC ON (PC.CD_PESSOA = C.CD_PESSOA)
WHERE E.CD_EMPRESA = :CD_EMPRESA
ORDER BY EP.CD_ENDERECO
Atualização de paginação do Livro — se o usuário clicou em "Buscar" da Pagina Inicial antes de imprimir (AtualizaPagina = True):
UPDATE LIVRO
SET NR_PAGRAZAO = :NOVA_PAGINA
WHERE CD_EMPRESA = :CD_EMPRESA
AND NR_ANO = :NR_ANO
Layout: dist/Relatorios/RCB001.rtm ou dist/Relatorios/RCB001_CP.rtm.
Filtros
Campos simples:
- Período De (data inicial; default =
PARMCONTABIL.DT_BLOQINICIALse houver) - Até (data final; default =
PARMCONTABIL.DT_BLOQFINALse houver; se informada Inicial e Final em branco, assume fim do mês da inicial) - Histórico Cont. (Lista de Históricos Contábeis) F9 — filtra por
CD_HISTORICOCONTABIL - Conta Contábil (Lista de Contas Contábeis) F9 / F10 — lookup via
VIEW_PLANOCONTAS; F10 abre PesquisaPlano (arvore). RespeitaPARMSISTEMA.TP_PLANOCONTABIL(se 'E' exige empresa selecionada) - Livro Nº (readonly) — preenchido automaticamente consultando
LIVRO.NR_RAZAOpor empresa/ano da Data Final - Nº Páginas do Livro (opcional) — se informado, sobrescreve o total impresso nos termos
- Pagina Inicial (opcional) — numeração inicial do relatório; botão "Buscar" traz
LIVRO.NR_PAGRAZAOe, após imprimir, atualiza a tabela LIVRO - Espaço entre Grupos (mm) — ajuste fino da altura do footer de grupo no layout
- Emitir Termo de Abertura (checkbox) — inclui sub-relatório TermoA em nova página no início
- Emitir Termo de Encerramento (checkbox) — inclui sub-relatório TermoE em nova página no fim
- Mostrar Conta de Contra Partida (checkbox) — acrescenta coluna
CD_CONTACONTRAe troca layout paraRCB001_CP.rtm(desde que nenhum Saldo C/D esteja marcado) - Mostrar Situação do Saldo (C/D) - Financeiro (checkbox) — exibe coluna de situação financeira; força
TP_MASCARA = '+'(ignoraPARMCONTABIL.TP_NEGATIVO); mutuamente exclusivo com Contábil - Mostrar Situação do Saldo (C/D) - Contábil (checkbox) — exibe coluna de situação contábil; mutuamente exclusivo com Financeiro
- Mostrar Código Pessoa Cliente/Fornecedor (TFA001) (checkbox) — ativa parâmetro ST_MOSTRACODPESSOA em
VIEW_RAZAOCONTABILeVIEW_PLANOCONTAS - Quebra por Mês (checkbox) — adiciona agrupamento e ordenação por mês/ano no SQL
Filtros de grid (multi-selecao via F9):
- Consolidação Matriz e Filiais (gridEMPRESAS) — multi-seleção via barra de espaço ou clique na coluna Å; obrigatório selecionar ao menos uma empresa. A empresa logada já vem marcada por padrão
- Contas Contábeis (gridContas) F9 / F10 — multi-seleção adicional de contas (além do campo "Conta Contábil" simples); contas do tipo T (Título) expandem para as analíticas filhas via
CD_CLASSIFICACAO STARTING WITH
Parametros que Influenciam
| Tabela | Campo | Efeito |
|---|---|---|
| PARMSISTEMA | TP_PLANOCONTABIL | Se 'G' (global) usa CD_EMPRESA = 1 no lookup de contas; se 'E' (por empresa) exige empresa selecionada no grid antes de validar a conta. Se vazio, bloqueia abertura da tela. |
| PARMSISTEMA | DS_RODAPE | Texto impresso no rodapé do relatório (evento edtNR_CNPJPrint). |
| PARMCONTABIL | TP_NEGATIVO | Máscara padrão de valores (coluna TP_MASCARA) quando "Saldo Financeiro" não está marcado. Se bloqueia abertura da tela quando não cadastrado para a empresa. |
| PARMCONTABIL | DT_BLOQINICIAL | Preenche automaticamente o campo "Período De" ao abrir a tela (tabFILTROAfterInsert). |
| PARMCONTABIL | DT_BLOQFINAL | Preenche automaticamente o campo "Até" ao abrir a tela (tabFILTROAfterInsert). |
Perguntas Frequentes
Perguntas Gerais
P: Para que serve a tela RCB001? R: A tela RCB001 e a tela do Razao Contábil do sistema. Ela permite gerar o relatorio de Razao Contábil, que apresenta todos os lancamentos realizados em uma ou mais contas contábeis dentro de um determinado periodo. Este relatorio e essencial para a analise detalhada da movimentação de cada conta, permitindo verificar debitos, creditos, saldos e os historicos associados a cada lancamento. E uma ferramenta fundamental para auditoria e conferencia contábil.
P: O que e a consolidacao multiempresa no Razao Contábil? R: A consolidacao multiempresa permite gerar o Razao Contábil considerando os lancamentos de mais de uma empresa simultaneamente. Quando habilitada, o sistema reune os dados contábeis de todas as empresas selecionadas em um unico relatorio consolidado. Isso e util para grupos empresariais que precisam analisar a movimentação contábil de forma unificada, sem a necessidade de gerar relatorios individuais para cada empresa.
P: O que sao os termos de abertura e encerramento no Razao Contábil? R: Os termos de abertura e encerramento sao textos oficiais impressos no inicio e no final do relatorio do Razao Contábil. O termo de abertura identifica o inicio do livro contábil, contendo informacoes como o nome da empresa, o periodo abrangido e o objetivo do relatorio. O termo de encerramento formaliza o fechamento do livro, indicando a quantidade de paginas e demais informacoes legais. Esses termos sao exigidos para fins de escrituracao oficial e devem ser incluidos quando o relatorio for utilizado para registros legais.
P: O que significa a opcao de exibicao de contrapartida no Razao Contábil? R: A opcao de contrapartida permite que, ao lado de cada lancamento exibido no Razao Contábil, seja apresentada tambem a conta contábil que recebeu o lancamento oposto (a contrapartida). Isso facilita a compreensao dos lancamentos, pois o usuario consegue visualizar tanto a conta debitada quanto a conta creditada em cada operacao, sem a necessidade de consultar separadamente os lancamentos da outra conta.
P: Qual a diferenca entre saldo financeiro e saldo contábil no Razao Contábil? R: O saldo financeiro apresenta os valores considerando a natureza da conta (se devedora ou credora), exibindo saldos positivos ou negativos de acordo com a movimentação. Ja o saldo contábil segue a convencao contábil tradicional, onde contas de natureza devedora apresentam saldo devedor e contas de natureza credora apresentam saldo credor, sem a utilizacao de sinais negativos. A escolha entre um e outro depende da necessidade de analise e da preferencia do usuario.
P: Para que serve a opcao de detalhamento mensal? R: A opcao de detalhamento mensal permite que o Razao Contábil apresente os lancamentos agrupados por mes, facilitando a analise da movimentação periodica de cada conta. Com essa opcao habilitada, o relatorio exibe subtotais mensais de debitos e creditos, permitindo uma visao mais clara da evolucao dos saldos ao longo do periodo selecionado.
Mensagens de Validacao e Erros
P: Ao acessar a tela RCB001, o sistema apresenta a mensagem "Os parametros de Sistema nao estao cadastrados!". Como devo proceder? R: Esta mensagem indica que os parametros gerais do sistema ainda nao foram configurados. Os parametros de sistema sao pre-requisitos para o funcionamento de diversas telas, incluindo o Razao Contábil. Solicite ao administrador do sistema que realize o cadastro dos parametros de sistema antes de utilizar esta tela.
P: O sistema apresenta a mensagem "Os Parametros Contábeis nao estao cadastrados!". Como devo proceder? R: Esta mensagem indica que os parametros do módulo contábil ainda nao foram configurados. Acesse a tela de Parametros Contábeis (MCB001) e realize o cadastro de todos os parametros obrigatorios, incluindo o Plano de Contas, a mascara, o numero de graus e demais configuracoes. Somente apos a configuracao dos parametros contábeis sera possivel utilizar o Razao Contábil.
P: O sistema apresenta a mensagem "A Data Final nao pode ser Menor que a Data Inicial!". Como devo proceder? R: O intervalo de datas informado nos filtros esta invalido. A Data Final deve ser igual ou posterior a Data Inicial. Verifique os campos de data e corrija para que a Data Final seja maior ou igual a Data Inicial, definindo assim um periodo valido para a geracao do relatorio.
P: O sistema apresenta a mensagem "A Empresa deve ser informada!". Como devo proceder? R: Para gerar o Razao Contábil e obrigatorio selecionar ao menos uma empresa. Informe o codigo da empresa desejada no campo correspondente. Caso deseje utilizar a consolidacao multiempresa, selecione todas as empresas que devem ser consideradas no relatorio.
P: O sistema apresenta a mensagem sobre Plano de Contas por Empresa exigindo que a empresa seja informada primeiro. O que isso significa? R: Quando o sistema esta configurado para utilizar o Plano de Contas por Empresa, e necessario informar a empresa antes de selecionar as contas contábeis, pois cada empresa pode possuir um plano de contas diferente. Preencha primeiro o campo de empresa e em seguida informe as contas desejadas nos filtros do relatorio.
P: O sistema apresenta a mensagem "Esta Conta nao esta Cadastrada [TCB008]!" ou "Esta Conta nao esta Cadastrada [TCB002]!". Como devo proceder? R: A conta contábil informada no filtro nao foi encontrada no Plano de Contas. Se o sistema utiliza o Plano de Contas por Empresa, verifique o cadastro na tela Plano de Contas por Empresa (TCB008). Se utiliza o Plano de Contas Global, verifique na tela Plano de Contas (TCB002). Certifique-se de que o codigo da conta esta correto e que a conta esta cadastrada antes de informar novamente.
P: O sistema apresenta a mensagem "Historico nao Cadastrado! Verifique [TCB006]". Como devo proceder? R: O codigo de historico informado no filtro do relatorio nao existe no cadastro de historicos contábeis. Acesse a tela de Historicos Contábeis (TCB006) para verificar os historicos disponiveis ou cadastrar um novo historico. Informe um codigo de historico valido no filtro para gerar o relatorio corretamente.
P: O sistema apresenta a mensagem "O Numero de Paginas deve ser Maior que Zero!". Como devo proceder? R: O campo referente ao numero de paginas iniciais do relatorio foi preenchido com zero ou valor negativo. Informe um valor maior que zero para que a numeracao das paginas do relatorio seja gerada corretamente. Este campo e utilizado para dar continuidade a numeracao de paginas quando o Razao Contábil faz parte de um livro contábil maior.
P: O sistema apresenta a mensagem "A Altura deve ser Maior ou Igual a Zero!". Como devo proceder? R: O campo de altura informado possui um valor negativo, o que nao e permitido. Informe um valor igual ou superior a zero para o campo de altura. Este campo controla o espacamento ou dimensao de impressão do relatorio.
P: O sistema apresenta uma mensagem informando que o usuario nao possui acesso a tela TFI013. O que significa? R: Esta mensagem de aviso (W-1637) indica que o usuario atual nao possui permissao para acessar a tela TFI013. Solicite ao administrador do sistema a liberacao de acesso a essa tela para que voce possa utilizar as funcionalidades vinculadas a ela dentro do Razao Contábil.
Mensagens exibidas
Levantadas de source/RCB001/ pela camada 0 (commit 96fc51e236).
| Código | Tipo | Mensagem |
|---|---|---|
| W-1637 | Aviso | O Usuário não possui acesso a tela Controle Numeração de Livros! [TFI013] |
Mais 17 mensagens com texto literal no código: RCB001.
Tabelas de Escrita (INSERT/UPDATE/DELETE)
| Tabela | Operacoes |
|---|---|
| EMPRESA | DELETE, INSERT, SELECT, UPDATE |
| LIVRO | SELECT, UPDATE |
Tabelas de Leitura (SELECT)
| Tabela | Operacoes |
|---|---|
| CONTADOR | SELECT |
| ENDERECOPESSOA | SELECT |
| HISTORICOCONTABIL | SELECT |
| MUNICIPIO | SELECT |
| PARMCONTABIL | SELECT |
| PARMSISTEMA | SELECT |
| PESSOA | SELECT |
| PLANOEMPRESA | SELECT |
| SOCIO | SELECT |
| TIPOSOCIO | SELECT |
Procedures Chamadas
| Procedure | Tabelas Acessadas |
|---|---|
| MES_EXTENSO | - |
| RETORNA_MATRIZEFILIAL | EMPRESA (SELECT), PARMCONTABIL (SELECT), PESSOA (SELECT) |
| RETORNA_SALDODIAMTF | - |
| VIEW_PLANOCONTAS | CENTROCUSTO (SELECT), CONTASPESSOA (SELECT), PARMCONTABIL (SELECT), PARMSISTEMA (SELECT), PLANOCONTAS (SELECT), PLANOEMPRESA (SELECT) |
| VIEW_RAZAOCONTABIL | CONTASPESSOA (SELECT), EMPRESA (SELECT), HISTORICOCONTABIL (SELECT), MOVTOCONTABIL (SELECT), PESSOA (SELECT) |
Tabelas via Procedures (acesso indireto)
| Tabela | Operacoes |
|---|---|
| CENTROCUSTO | SELECT |
| CONTASPESSOA | SELECT |
| EMPRESA | SELECT |
| HISTORICOCONTABIL | SELECT |
| MOVTOCONTABIL | SELECT |
| PARMCONTABIL | SELECT |
| PARMSISTEMA | SELECT |
| PESSOA | SELECT |
| PLANOCONTAS | SELECT |
| PLANOEMPRESA | SELECT |
Modelos de Relatório
Modelo 1: Padrão
Quando usado: botão "Imprimir <F8>" (btnImprimir.OnClick) — a tela gera um único modelo cujo SQL e layout variam conforme os checkboxes marcados (sem combobox de modelo).
O layout físico (.rtm) é escolhido assim:
RCB001_CP.rtm— quando "Mostrar Conta de Contra Partida" está marcado E nenhum "Mostrar Situação do Saldo" está marcado.RCB001.rtm— demais casos (com ou sem situação de saldo).
SQL Base:
SELECT /*0*/ V.NR_LANCAMENTO, V.CD_EMPRESA, V.CD_CLASSIFICACAO,
V.CD_CONTA, V.DS_CONTA,
:TP_MASCARA TP_MASCARA, -- '+' se Situacao Saldo Financeiro, senao PARMCONTABIL.TP_NEGATIVO
V.DT_LANCAMENTO, V.DS_COMPLEMENTO, V.TP_DOCTO,
(CASE WHEN V.TP_NATUREZA = 'D' THEN V.VL_DEBITO ELSE (V.VL_DEBITO * -1) END) VL_DEBITO,
(CASE WHEN V.TP_NATUREZA = 'C' THEN V.VL_CREDITO ELSE (V.VL_CREDITO * -1) END) VL_CREDITO,
SUM((CASE WHEN V.TP_NATUREZA = 'D' THEN V.VL_DEBITO ELSE (V.VL_DEBITO * -1) END) +
(CASE WHEN V.TP_NATUREZA = 'C' THEN V.VL_CREDITO ELSE (V.VL_CREDITO * -1) END)) VL_SALDO,
V.CD_FILIAL
/* se chkContraPartida */ , V.CD_CONTACONTRA
, V.TP_NATUREZA
/* se chkQuebraMes */
, EXTRACT(YEAR FROM V.DT_LANCAMENTO)||'.'||EXTRACT(MONTH FROM V.DT_LANCAMENTO) NR_MES,
(SELECT R.O_DS_MES||' de '||EXTRACT(YEAR FROM V.DT_LANCAMENTO)
FROM MES_EXTENSO(V.DT_LANCAMENTO) R) DS_MES
FROM VIEW_RAZAOCONTABIL(
:WHERE, -- WHERE V.CD_EMPRESA IN (...) AND V.DT_LANCAMENTO BETWEEN ... AND V.CD_HISTORICOCONTABIL = ...
:FILTRO1, -- ' AND V.CD_CONTADEBITO = COALESCE(P.CD_CONTA,0) ' se houve filtro de conta
:FILTRO2, -- ' AND V.CD_CONTACREDITO = COALESCE(P.CD_CONTA,0) ' se houve filtro de conta
:FILTROS3, -- INNER JOIN CONTAS_FILTRADAS FR ON (...) se houve filtro de conta
:ST_MOSTRACODPESSOA, -- 'S' se chkMostraCodPessoa, 'N' caso contrario
:SQL_CTE -- WITH CONTAS_FILTRADAS AS (UNION de VIEW_PLANOCONTAS para contas Título + Analitica)
) V
GROUP BY V.NR_LANCAMENTO, V.CD_EMPRESA, V.CD_CLASSIFICACAO, V.CD_FILIAL,
V.CD_CONTA, V.DS_CONTA, V.TP_NATUREZA,
V.DT_LANCAMENTO, V.DS_COMPLEMENTO, V.TP_DOCTO,
V.VL_DEBITO, V.VL_CREDITO
/* se chkContraPartida */ , V.CD_CONTACONTRA
ORDER BY V.CD_CLASSIFICACAO,
/* se chkQuebraMes */ V.DT_LANCAMENTO, EXTRACT(MONTH FROM V.DT_LANCAMENTO)||'.'||EXTRACT(YEAR FROM V.DT_LANCAMENTO),
V.CD_CONTA, V.DT_LANCAMENTO,
CASE WHEN V.TP_DOCTO = 'N' THEN 'Z'
WHEN V.TP_DOCTO = 'D' THEN 'Y'
WHEN V.TP_DOCTO = 'C' THEN 'X'
ELSE V.TP_DOCTO END DESC,
VL_DEBITO
CTE auxiliar (SqlCte) — montada quando existe filtro de Conta (campo "Conta Contábil" e/ou grid "Contas Contábeis"):
WITH CONTAS_FILTRADAS AS (
-- contas tipo T (titulo): expande classificacao filha analitica
SELECT E.CD_EMPRESA, VP.CD_CONTA, VP.DS_CONTA
FROM EMPRESA E
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CONTA IN (<contas T>)') V ON (1=1)
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CLASSIFICACAO STARTING WITH '''
|| V.CD_CLASSIFICACAO
|| ''' AND P.TP_CONTA = ''A'' ') VP ON (1=1)
WHERE E.CD_EMPRESA IN (<empresas selecionadas>)
AND E.CD_EMPRESA = COALESCE(VP.CD_EMPRESA, E.CD_EMPRESA)
UNION ALL
-- contas tipo A (analiticas): direto
SELECT E.CD_EMPRESA, V.CD_CONTA, V.DS_CONTA
FROM EMPRESA E
LEFT JOIN VIEW_PLANOCONTAS(E.CD_EMPRESA,
' AND P.CD_CONTA IN (<contas A>)') V ON (1=1)
WHERE E.CD_EMPRESA IN (<empresas selecionadas>)
AND E.CD_EMPRESA = COALESCE(V.CD_EMPRESA, E.CD_EMPRESA)
)
Fallback (sem movimento) — quando tabRazao.IsEmpty e há Conta filtrada, a tela exibe as contas com saldo zerado:
SELECT /*2*/ NULL NR_LANCAMENTO, P.CD_EMPRESA, P.CD_CLASSIFICACAO,
P.CD_CONTA, P.DS_CONTA,
:TP_MASCARA TP_MASCARA,
NULL DT_LANCAMENTO, NULL DS_COMPLEMENTO, NULL TP_DOCTO,
0.00 VL_DEBITO, 0.00 VL_CREDITO, 0.00 VL_SALDO,
NULL CD_FILIAL, P.TP_NATUREZA
FROM VIEW_PLANOCONTAS(:CD_EMPRESA,
'AND P.CD_CONTA in (<contas>)',
NULL,
:ST_MOSTRACODPESSOA) P
Saldo anterior (por conta no header do grupo) — via RETORNA_SALDODIAMTF no evento VL_SALDOGroupBreak:
SELECT SUM(O_VL_SALDO)
FROM RETORNA_SALDODIAMTF(:CD_EMPRESAS, :CD_CONTA, :DT_DIA_ANTERIOR)
Termos de Abertura/Encerramento — quando "Emitir Termo de Abertura" e/ou "Emitir Termo de Encerramento" marcados:
SELECT FIRST 1 E.NM_EMPRESA,
EP.DS_ENDERECO||', '||COALESCE(EP.NR_ENDERECO,'') DS_ENDERECO,
M.DS_MUNICIPIO, M.SG_ESTADO, EP.NR_CEP, E.NR_REGISTROJUNTA,
E.DT_REGISTROJUNTA, EP.NR_INSCEST, P.NR_CNPJCPF, E.NR_INSCMUNICIPAL,
M.DS_MUNICIPIO||' - '||M.SG_ESTADO||', '|| :DATA_ABERTURA DS_DATAABERTURA,
M.DS_MUNICIPIO||' - '||M.SG_ESTADO||', '|| :DATA_FECHAMENTO DS_DATAFECHAMENTO,
PS.NM_PESSOA NM_SOCIO, T.DS_TIPOSOCIO, 'CPF '||PS.NR_CNPJCPF NR_CPFSOCIO,
PC.NM_PESSOA NM_CONTADOR, 'CRC '||C.NR_CRCCONTADOR NR_CRC, C.DS_TITULOCONTADOR
FROM EMPRESA E
INNER JOIN PESSOA P ON (P.CD_PESSOA = E.CD_PESSOA)
INNER JOIN ENDERECOPESSOA EP ON (P.CD_PESSOA = EP.CD_PESSOA)
INNER JOIN MUNICIPIO M ON (M.CD_MUNICIPIO = EP.CD_MUNICIPIO)
LEFT JOIN SOCIO S ON (S.CD_EMPRESA = :CD_EMPRESA
AND S.ST_RESPONSAVEL = 'S')
LEFT JOIN PESSOA PS ON (PS.CD_PESSOA = S.CD_PESSOA)
LEFT JOIN TIPOSOCIO T ON (T.CD_TIPOSOCIO = S.CD_TIPOSOCIO)
LEFT JOIN CONTADOR C ON (1 = 1)
LEFT JOIN PESSOA PC ON (PC.CD_PESSOA = C.CD_PESSOA)
WHERE E.CD_EMPRESA = :CD_EMPRESA
ORDER BY EP.CD_ENDERECO
Atualização de paginação do Livro — se o usuário clicou em "Buscar" da Pagina Inicial antes de imprimir (AtualizaPagina = True):
UPDATE LIVRO
SET NR_PAGRAZAO = :NOVA_PAGINA
WHERE CD_EMPRESA = :CD_EMPRESA
AND NR_ANO = :NR_ANO
Layout: dist/Relatórios/RCB001.rtm ou dist/Relatórios/RCB001_CP.rtm.