Trigger Não Atualiza Dados

Firebird

20/09/2005

Tenho duas tabelas, uma de Nota Fiscal, outra de Itens da Nota Fiscal. Na tabela de Itens da Nota Fiscal criei uma trigger para atualizar os totais da tabela de Nota Fiscal. O problema é que dois campos (VALORICMS, BASCALICMS) estão sendo zerados, não importando o valor que possuíam antes, quando o Item da Nota possui o campo ICMS com valor zero. Eis a trigger:

SET TERM ^ ;

CREATE TRIGGER TGCALCNOTA FOR ITNOTAFISCAL
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE BASECALC DOUBLE PRECISION;
DECLARE VARIABLE VRICMS DOUBLE PRECISION;
BEGIN
  /*SE O PRODUTO POSSUIR ALÍQUOTA DE ICMS, ATUALIZA BASECALC*/
  /*E O VALOR DE ICMS*/
  IF (NEW.ICMS > 0) THEN
    BEGIN
      BASECALC=NEW.VALORTOTAL;
      VRICMS=UDF_ROUNDDEC((NEW.VALORTOTAL*NEW.ICMS)/100,2);
    END
  IF (VRICMS IS NULL)  THEN VRICMS=0;
  IF (BASECALC IS NULL)THEN BASECALC=0;

  /*VALORTOTAL=VALORTOTAL+NEW.VALORTOTAL;
  VALORICMS=VALORICMS+VRICMS;
  BASCALICMS=BASCALICMS+BASECALC;*/

  /*ATUALIZA O VALOR TOTAL, O VALOR DO ICMS E A BASECALICMS*/
  UPDATE NOTAFISCAL N
  SET N.VALORTOTAL=UDF_ROUNDDEC(N.VALORTOTAL+NEW.VALORTOTAL,2),
      N.VALORICMS=UDF_ROUNDDEC (N.VALORICMS+:VRICMS,2),
      N.BASCALICMS=UDF_ROUNDDEC(N.BASCALICMS+:BASECALC,2)
 WHERE N.NUMERONOTA=NEW.NUMERONOTA;
END
^

SET TERM ; ^


Será que eu esqueci de alguma coisa?


Mordred

Mordred

Curtidas 0

Respostas

Mordred

Mordred

20/09/2005

Correção: os registros estavam não estavam entrando com valor=0 na tabela master. Estavam entrando com valor NULO. Por isso não atualizava o resultado corretamente.


GOSTEI 0
POSTAR