[firebase-br] RES: URGENTE!!! Poderiam analisar esta trigger ???
Ton
hevertonc em hotmail.com
Qua Fev 1 10:49:34 -03 2006
Certo... O q vc quer? Q problema está ocorrendo?
Ton
Analista de Sistemas
DotCom Informática
"A informação não é um produto,
mas sim a matéria prima." (Ton)
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Anderson Sauthier
Enviada em: quarta-feira, 1 de fevereiro de 2006 09:47
Para: Firebase
Assunto: [firebase-br] URGENTE!!! Poderiam analisar esta trigger ???
esta é a trigger do MOVFIN, cada lançamento feito ou deletado é atualizada a
tabela de saldo do MOVFIN, SLDMOVCTAFIN
Desde já agradeço.
AS
DECLARE VARIABLE SLDANT NUMERIC(9,2);
DECLARE VARIABLE DATA_ANT DATE;
DECLARE VARIABLE DATA_ATU DATE;
DECLARE VARIABLE DEBCRE CHAR(1);
begin
IF (INSERTING) THEN
BEGIN
/* DEBITO OU CREDITO */
SELECT TIPO
FROM DEBCRE
WHERE EMPRESAID = NEW.EMPRESAID AND
DEBCREID = NEW.DEBCREID
INTO :DEBCRE;
/* VE SE JA ESTA CADADTRADO A DATA ATUAL NO SLDMOV */
SELECT DATA
FROM SLDMOVCTAFIN
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA = NEW.DATA
INTO :DATA_ATU;
IF (:DATA_ATU IS NULL) THEN
BEGIN
/* SALDO ANTERIOR */
SELECT MAX(DATA)
FROM SLDMOVCTAFIN
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA < NEW.DATA
INTO :DATA_ANT;
IF (:DATA_ANT IS NULL) THEN
SLDANT = 0.00;
ELSE
BEGIN
SELECT SLDATU
FROM SLDMOVCTAFIN
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA = :DATA_ANT
INTO :SLDANT;
END
IF (:DEBCRE = 'C') THEN
BEGIN
INSERT INTO SLDMOVCTAFIN
VALUES (NEW.EMPRESAID, NEW.CTAFINID, NEW.DATA,
:SLDANT, NEW.VALORTOTAL, 0.00, :SLDANT +
NEW.VALORTOTAL);
END
ELSE
BEGIN
INSERT INTO SLDMOVCTAFIN
VALUES (NEW.EMPRESAID, NEW.CTAFINID, NEW.DATA,
:SLDANT, 0.00, NEW.VALORTOTAL, :SLDANT -
NEW.VALORTOTAL);
END
END
ELSE
BEGIN
IF (:DEBCRE = 'C') THEN
BEGIN
UPDATE SLDMOVCTAFIN
SET CREDITO = CREDITO + NEW.VALORTOTAL
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA = NEW.DATA;
END
ELSE
BEGIN
UPDATE SLDMOVCTAFIN
SET DEBITO = DEBITO + NEW.VALORTOTAL
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA = NEW.DATA;
END
UPDATE SLDMOVCTAFIN
SET SLDATU = SLDANT + CREDITO - DEBITO
WHERE EMPRESAID = NEW.EMPRESAID AND
CTAFINID = NEW.CTAFINID AND
DATA = NEW.DATA;
END
END
IF (DELETING) THEN
BEGIN
/* DEBITO OU CREDITO */
SELECT TIPO
FROM DEBCRE
WHERE EMPRESAID = OLD.EMPRESAID AND
DEBCREID = OLD.DEBCREID
INTO :DEBCRE;
IF (:DEBCRE = 'C') THEN
BEGIN
UPDATE SLDMOVCTAFIN
SET CREDITO = CREDITO - OLD.VALORTOTAL
WHERE EMPRESAID = OLD.EMPRESAID AND
CTAFINID = OLD.CTAFINID AND
DATA = OLD.DATA;
END
ELSE
BEGIN
UPDATE SLDMOVCTAFIN
SET DEBITO = DEBITO - OLD.VALORTOTAL
WHERE EMPRESAID = OLD.EMPRESAID AND
CTAFINID = OLD.CTAFINID AND
DATA = OLD.DATA;
END
UPDATE SLDMOVCTAFIN
SET SLDATU = SLDANT + CREDITO - DEBITO
WHERE EMPRESAID = OLD.EMPRESAID AND
CTAFINID = OLD.CTAFINID AND
DATA = OLD.DATA;
END
END
---------------------------------
Yahoo! doce lar. Faça do Yahoo! sua homepage.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista