Pular para o conteúdo principal

EXTRATO_CAIXA — Tabela

EXTRATO_CAIXA (Stored Procedure)​

Chamada​

LEFT JOIN EXTRATO_CAIXA(CD_EMPRESA, DT_INICIAL, DT_FINAL, ST_SALDOCONTA, WHERE_MOVTO, WHERE_SALDO) E ON (1=1)

  • ST_SALDOCONTA: 'N' extrato geral, 'S' agrupado por conta saldo.
  • WHERE_MOVTO: filtro SQL dinamico para movimentos de caixa (string com clausula WHERE).
  • WHERE_SALDO: filtro SQL dinamico para contas saldo (string com clausula WHERE).

Saida Principal​

  • DT_LANCAMENTO (DATE): data do lancamento no caixa.
  • CD_CONTA (INTEGER): codigo da conta no plano de contas.
  • DS_CONTA (VARCHAR(120)): descricao da conta.
  • NR_DOCUMENTO (INTEGER): numero do documento.
  • VL_DEBITO, VL_CREDITO (NUMERIC(15,2)): valores do movimento.
  • VL_SALDOANTERIOR, VL_SALDO (NUMERIC(15,2)): saldo antes e apos movimento.
  • TP_OPERACAO (VARCHAR(1)): 'C' credito, 'D' debito.
  • CD_USUARIO: usuario que realizou o lancamento.
  • DS_COMPLEMENTO: descricao do historico + complemento.

Permissoes​

A permissao do usuario é controlada pelo parametro 'admin' passado a VIEW_PARMSALDO. NAO adicionar INNER JOIN USUARIOEMPRESA — é redundante e causa erros.

Snippet Completo (Extrato bancario por nome)​

ESCAPE DE ASPAS (CRITICO): Dentro dos parametros VARCHAR, usar ''valor'' (2 aspas). NUNCA ''''valor'''' (4 aspas) — causa SQLCODE -104.

SELECT
E.CD_EMPRESA, E.DT_LANCAMENTO, E.NR_LANCCAIXA, E.CD_CONTA, E.DS_CONTA,
E.NR_DOCUMENTO, E.TP_OPERACAO, E.DS_COMPLEMENTO,
E.VL_DEBITO, E.VL_CREDITO, E.VL_SALDOANTERIOR, E.VL_DOCUMENTO, E.VL_SALDO,
E.VL_CREDITOGERAL, E.VL_DEBITOGERAL, E.VL_SALDOGERAL,
P.NM_PESSOA AS CD_USUARIO, E.CD_HISTORICO, E.TP_DOCUMENTO, E.VL_SALDOCONTA
FROM VIEW_PLANOCONTAS(1, ' AND P.DS_CONTA CONTAINING ''NOME_BANCO'' ') PC
LEFT JOIN VIEW_PARMSALDO(PC.CD_EMPRESA, PC.CD_CONTA, NULL, 'admin') PS ON (1 = 1)
-- ESCAPE: ''I'' (2 aspas simples) = CORRETO. ''''I'''' (4 aspas) = ERRADO (causa erro -104)
LEFT JOIN EXTRATO_CAIXA(PS.CD_EMPRESA,
PRIMEIRODIAMES(CURRENT_DATE), CURRENT_DATE,
'N',
' AND MX.CD_EMPRESA = 1 AND PARMSALDO.CD_CONTA IN ('||PS.CD_CONTA||') AND COALESCE(PARMSALDO.TP_SALDO,''I'') <> ''I'' ',
' AND PARMSALDO.CD_CONTA IN ('||PS.CD_CONTA||')') E ON (1=1)
LEFT JOIN USUARIO U ON (U.CD_USUARIO = E.CD_USUARIO)
LEFT JOIN PESSOA P ON (P.CD_PESSOA = U.CD_PESSOA)
WHERE PS.ST_ATIVO = 'S'
AND E.DT_LANCAMENTO IS NOT NULL
ORDER BY E.DT_LANCAMENTO, E.NR_LANCCAIXA

Notas:

  • Substituir NOME_BANCO pelo nome da conta (ex: BANCO DO BRASIL, BRADESCO).
  • Datas: sem periodo especificado, usar mes atual (PRIMEIRODIAMES(CURRENT_DATE) a CURRENT_DATE).
  • VIEW_PLANOCONTAS localiza a conta por nome. VIEW_PARMSALDO valida permissoes e status ativo.

Erros Comuns (CRITICO)​

Escape de aspas nos parametros WHERE_MOVTO e WHERE_SALDO: Os parametros WHERE_MOVTO e WHERE_SALDO sao strings VARCHAR. Dentro delas, valores literais precisam de aspas simples duplicadas (''), NAO quadruplicadas ('''').

CorretoErrado
COALESCE(PARMSALDO.TP_SALDO,''I'') <> ''I''COALESCE(PARMSALDO.TP_SALDO,''''I'''') <> ''''I''''
''valor'' (2 aspas = escape nivel 1)''''valor'''' (4 aspas = causa erro -104)

Regra: Dentro do parametro VARCHAR de EXTRATO_CAIXA, usar APENAS '' (2 aspas simples) para escapar strings. O parametro ja é uma string de nivel 1 — nao ha nivel 2 de aninhamento.


Telas que usam esta tabela​