[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