Pular para o conteúdo principal

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_BLOQINICIAL se houver)
  • Até (data final; default = PARMCONTABIL.DT_BLOQFINAL se 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). Respeita PARMSISTEMA.TP_PLANOCONTABIL (se 'E' exige empresa selecionada)
  • Livro Nº (readonly) — preenchido automaticamente consultando LIVRO.NR_RAZAO por 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_PAGRAZAO e, 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_CONTACONTRA e troca layout para RCB001_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 = '+' (ignora PARMCONTABIL.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_RAZAOCONTABIL e VIEW_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​

TabelaCampoEfeito
PARMSISTEMATP_PLANOCONTABILSe '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.
PARMSISTEMADS_RODAPETexto impresso no rodapé do relatório (evento edtNR_CNPJPrint).
PARMCONTABILTP_NEGATIVOMá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.
PARMCONTABILDT_BLOQINICIALPreenche automaticamente o campo "Período De" ao abrir a tela (tabFILTROAfterInsert).
PARMCONTABILDT_BLOQFINALPreenche 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ódigoTipoMensagem
W-1637AvisoO 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)​

TabelaOperacoes
EMPRESADELETE, INSERT, SELECT, UPDATE
LIVROSELECT, UPDATE

Tabelas de Leitura (SELECT)​

TabelaOperacoes
CONTADORSELECT
ENDERECOPESSOASELECT
HISTORICOCONTABILSELECT
MUNICIPIOSELECT
PARMCONTABILSELECT
PARMSISTEMASELECT
PESSOASELECT
PLANOEMPRESASELECT
SOCIOSELECT
TIPOSOCIOSELECT

Procedures Chamadas​

ProcedureTabelas Acessadas
MES_EXTENSO-
RETORNA_MATRIZEFILIALEMPRESA (SELECT), PARMCONTABIL (SELECT), PESSOA (SELECT)
RETORNA_SALDODIAMTF-
VIEW_PLANOCONTASCENTROCUSTO (SELECT), CONTASPESSOA (SELECT), PARMCONTABIL (SELECT), PARMSISTEMA (SELECT), PLANOCONTAS (SELECT), PLANOEMPRESA (SELECT)
VIEW_RAZAOCONTABILCONTASPESSOA (SELECT), EMPRESA (SELECT), HISTORICOCONTABIL (SELECT), MOVTOCONTABIL (SELECT), PESSOA (SELECT)

Tabelas via Procedures (acesso indireto)​

TabelaOperacoes
CENTROCUSTOSELECT
CONTASPESSOASELECT
EMPRESASELECT
HISTORICOCONTABILSELECT
MOVTOCONTABILSELECT
PARMCONTABILSELECT
PARMSISTEMASELECT
PESSOASELECT
PLANOCONTASSELECT
PLANOEMPRESASELECT

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.