RES: [firebase-br] Ajuda SP
Michelle - House
michelle em housesoft.com.br
Sex Abr 15 17:52:44 -03 2005
Obrigada Josauro pela ajuda.
Estou refazendo a sp, e agora está dando certo.
-----Mensagem original-----
De: lista-bounces em firebase.com.br
[mailto:lista-bounces em firebase.com.br]Em nome de Josauro S.J.
Enviada em: sexta-feira, 15 de abril de 2005 11:30
Para: FireBase
Assunto: Re: [firebase-br] Ajuda SP
Michelle segue uma procedure que faz algo parecido com o que voce quer,
apartir dessa voce pode pegar ideias para o seu sistema, (esta é especifica
para a estrutura que montei para nosso sistema financeiro.)
CREATE PROCEDURE SP_RELATORIO_CENTRO_CUSTO (
CONCILIADO CHAR(1),
CONTA_INICIAL VARCHAR(13),
CONTA_FINAL VARCHAR(13),
DATA_INICIAL DATE,
DATA_FINAL DATE,
DATA_COMPETENCIA_INICIAL DATE,
DATA_COMPETENCIA_FINAL DATE)
RETURNS (
TOTAL_CREDITO NUMERIC(18,2),
TOTAL_DEBITO NUMERIC(18,2),
TOTAL NUMERIC(18,2),
SINTETICO_ANALITICO CHAR(1),
TITULO VARCHAR(40),
CONTA VARCHAR(13))
AS
DECLARE VARIABLE OPERACAO SMALLINT;
DECLARE VARIABLE VALOR NUMERIC(18,2);
DECLARE VARIABLE DATA_COMPENSACAO DATE;
DECLARE VARIABLE CENTRO_CUSTO NUMERIC(18,0);
DECLARE VARIABLE CONTA_CENTRO_CUSTO VARCHAR(13);
DECLARE VARIABLE MVV_CODIGO NUMERIC(18,0);
DECLARE VARIABLE DATA DATE;
DECLARE VARIABLE LAN_CODIGO NUMERIC(18,0);
DECLARE VARIABLE CCS_CODIGO NUMERIC(18,0);
begin
/* Procedure Text */
FOR
select c.ccs_conta,
c.ccs_titulo,
c.ccs_sintetico_analitico,
c.ccs_codigo
from centro_custo c
where (c.ccs_conta >= :CONTA_INICIAL AND
c.ccs_conta <= :CONTA_FINAL) OR
(:CONTA_INICIAL = '' AND
:CONTA_FINAL = '')
order by c.ccs_conta
INTO :CONTA,:TITULO,:SINTETICO_ANALITICO,:CCS_CODIGO
DO BEGIN
TOTAL = 0;
TOTAL_DEBITO = 0;
TOTAL_CREDITO = 0;
if (SINTETICO_ANALITICO = 'A')
then BEGIN
FOR
SELECT L.LCS_VALOR,
L.LCS_OPERACAO,
L.lcs_MOVIMENTO_VALOR,
L.lcs_LANCAMENTO
FROM VW_lancamento_classes L
WHERE L.centro_custo LIKE (:CONTA||'%') and
((L.centro_custo >= :CONTA_INICIAL AND
L.centro_custo <= :CONTA_FINAL) OR
(:CONTA_INICIAL = '' AND
:CONTA_FINAL = ''))
INTO VALOR, :OPERACAO, :MVV_CODIGO, :LAN_CODIGO
DO BEGIN
SELECT MVV_DATA_COMPENSACAO, MVV_DATA_VENCIMENTO FROM
MOVIMENTO_VALOR
WHERE MVV_CODIGO = :MVV_CODIGO
INTO :DATA_COMPENSACAO, :DATA;
/* SELECT LAN_DATA FROM LANCAMENTO
WHERE LAN_CODIGO = :LAN_CODIGO
INTO :DATA;*/
if (((CONCILIADO = 'T') OR
((CONCILIADO = 'S') AND (DATA_COMPENSACAO IS NOT NULL) AND
(DATA_COMPENSACAO >= DATA_INICIAL) AND (DATA_COMPENSACAO <= DATA_FINAL)) OR
((CONCILIADO = 'N') AND (DATA_COMPENSACAO IS NULL))) and
((DATA >= DATA_COMPETENCIA_INICIAL) AND (DATA <=
DATA_COMPETENCIA_FINAL)))
then begin
TOTAL = TOTAL + (VALOR*OPERACAO);
if (OPERACAO = -1)
then TOTAL_DEBITO = TOTAL_DEBITO + (VALOR*OPERACAO);
ELSE
if (OPERACAO = 1)
then TOTAL_CREDITO = TOTAL_CREDITO + (VALOR*OPERACAO);
end
END
END
ELSE BEGIN
FOR
SELECT LCS_VALOR, LCS_OPERACAO, LCS_MOVIMENTO_VALOR,
LCS_CENTRO_CUSTO, LCS_LANCAMENTO
FROM lancamento_classes
WHERE LCS_CENTRO_CUSTO = :CCS_CODIGO
INTO :VALOR,:OPERACAO,:MVV_CODIGO,:CENTRO_CUSTO, :LAN_CODIGO
DO BEGIN
SELECT MVV_DATA_COMPENSACAO, MVV_DATA_VENCIMENTO FROM
MOVIMENTO_VALOR
WHERE MVV_CODIGO = :MVV_CODIGO
INTO :DATA_COMPENSACAO, :DATA;
SELECT CCS_CONTA FROM CENTRO_CUSTO
WHERE CCS_CODIGO = :CENTRO_CUSTO
INTO :CONTA_CENTRO_CUSTO;
/* SELECT LAN_DATA FROM LANCAMENTO
WHERE LAN_CODIGO = :LAN_CODIGO
INTO :DATA;*/
if (((CONCILIADO = 'T') OR
((CONCILIADO = 'S') AND (DATA_COMPENSACAO IS NOT NULL) AND
(DATA_COMPENSACAO >= DATA_INICIAL) AND (DATA_COMPENSACAO <= DATA_FINAL)) OR
((CONCILIADO = 'N') AND (DATA_COMPENSACAO IS NULL))) AND
(((CONTA_INICIAL = '') AND (CONTA_FINAL = '')) OR
((CONTA_CENTRO_CUSTO >= CONTA_INICIAL) AND (CONTA_CENTRO_CUSTO
<= CONTA_FINAL))) AND
((DATA >= DATA_COMPETENCIA_INICIAL) AND (DATA <=
DATA_COMPETENCIA_FINAL)))
then begin
TOTAL = TOTAL + (OPERACAO*VALOR);
if (OPERACAO = -1)
then TOTAL_DEBITO = TOTAL_DEBITO + (OPERACAO*VALOR);
ELSE
if (OPERACAO = 1)
then TOTAL_CREDITO = TOTAL_CREDITO + (OPERACAO*VALOR);
end
END
END
if ((TOTAL <> 0) OR
(TOTAL_DEBITO <> 0) OR
(TOTAL_CREDITO <> 0))
then suspend;
END
end
Josauro S.J.
Diretor
josauro em casasoft.inf.br
Mais detalhes sobre a lista de discussão lista