VIEW_RFC030 — View
VIEW_RFC030 (Stored Procedure)
Chamada
SELECT DS_MES, VL_TOTAL, VL_INADIMPLENTE, PC_INADIMPLENCIA, VL_RECEBIDO
FROM VIEW_RFC030('WHERE CONTAS.ST_CONTAS IN (''T'', ''P'', ''L'')
AND CONTAS.CD_EMPRESA = 2
AND CONTAS.DT_VENCIMENTO >= ''08/01/2025''
AND CONTAS.DT_VENCIMENTO <= ''01/31/2026''
AND TIPOCONTA.TP_TIPOCONTA IN (''CR'', ''AF'', ''HR'', ''PR'', ''CT'')')
Parametro de Entrada
- DS_WHERE (VARCHAR(500)): clausula WHERE como string. DEVE comecar com a palavra
WHERE. Internamente a procedure ja faz JOIN com CONTAS e TIPOCONTA — referenciar essas tabelas SEM alias (usarCONTAS.coluna,TIPOCONTA.coluna). Strings internas usam aspas duplas escapadas (''valor'').
Colunas de Saida
- DS_MES (VARCHAR(60)): nome do mes por extenso + ano (ex: "Janeiro de 2026")
- VL_TOTAL (NUMERIC(15,2)): SUM(VL_DOCUMENTO) — total faturado no mes
- VL_INADIMPLENTE (NUMERIC(15,2)): SUM(VL_SALDO) — saldo pendente (nao pago)
- VL_RECEBIDO (NUMERIC(15,2)): VL_TOTAL - VL_INADIMPLENTE
- PC_INADIMPLENCIA (NUMERIC(15,2)): (VL_INADIMPLENTE / VL_TOTAL) * 100
Logica Interna
A procedure agrupa CONTAS por mes/ano de DT_VENCIMENTO. Para cada mes:
- VL_INADIMPLENTE = soma dos VL_SALDO (o que resta a pagar)
- VL_TOTAL = soma dos VL_DOCUMENTO (valor original dos titulos)
- Se VL_SALDO = 0 (titulo liquidado), nao contribui para inadimplencia
- Se VL_SALDO > 0 (titulo pendente total ou parcial), contribui
Filtros Recomendados no DS_WHERE
CONTAS.ST_CONTAS IN ('T','P','L')— inclui pendentes e liquidados para base completaCONTAS.CD_EMPRESA = N— filtro de empresaCONTAS.DT_VENCIMENTO >= ''MM/DD/YYYY''— inicio do periodoCONTAS.DT_VENCIMENTO <= ''MM/DD/YYYY''— fim do periodoTIPOCONTA.TP_TIPOCONTA IN ('CR','AF','HR','PR','CT')— contas a receber (todos os 5 tipos conforme FIN-REC-001)
Limitacoes
- NAO suporta JOINs extras no DS_WHERE (apenas condicoes WHERE)
- Procedures de seguranca (USUARIOEMPRESA, VIEW_TIPOCONTASUSUARIO, RETORNA_TIPOPESSOA_RESTRITA) NAO podem ser aplicadas
- Datas no WHERE devem ser literais no formato Firebird 'MM/DD/YYYY' com aspas escapadas
Quando Usar
- "Taxa de inadimplencia dos ultimos N meses"
- "Evolucao da inadimplencia mensal"
- "Percentual de inadimplencia por mes"
- Qualquer pergunta que peca breakdown MENSAL de inadimplencia
Comparacao entre meses (CRITICO — COPIAR EXATAMENTE)
UMA UNICA chamada retorna 1 linha por mes. Para comparar mes atual vs anterior, COPIE este SQL sem modificar a estrutura:
SELECT DS_MES, VL_TOTAL, VL_INADIMPLENTE, PC_INADIMPLENCIA, VL_RECEBIDO
FROM VIEW_RFC030('WHERE CONTAS.ST_CONTAS IN (''T'', ''P'', ''L'')
AND CONTAS.CD_EMPRESA = 1
AND CONTAS.DT_VENCIMENTO >= PRIMEIRODIAMES(DATEADD(MONTH, -1, CURRENT_DATE))
AND CONTAS.DT_VENCIMENTO <= ULTIMODIAMES(CURRENT_DATE)
AND TIPOCONTA.TP_TIPOCONTA IN (''CR'', ''AF'', ''HR'', ''PR'', ''CT'')')
ORDER BY DS_MES
Resultado: 2 linhas — "Fevereiro de 2026" e "Marco de 2026". DS_MES e VARCHAR — NUNCA usar EXTRACT, CAST ou JOIN sobre DS_MES.
Formato de DS_MES (exemplos reais):
- "Janeiro de 2026"
- "Fevereiro de 2026"
- "Março de 2026"
- NUNCA "1/2026", "01/2026", "Jan/2026" — o formato e SEMPRE nome completo + " de " + ano
Quando NAO Usar
- Inadimplencia por CLIENTE/PESSOA — usar query manual com GROUP BY CD_PESSOA
- Listagem detalhada de titulos inadimplentes — usar VIEW_RFC030ANALITICO
- Volume de pagamentos em atraso (cadeia de baixa) — usar CONTASHISTORICO + MOVTOPROCESSO + MOVTOCAIXA (metrica diferente de PC_INADIMPLENCIA)