CREATE TRIGGER TTBGRADE_B03I FOR TBGRADE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GTBGRADE,1);
END;

CREATE OR ALTER TRIGGER TTBGRADE_B02I FOR TBGRADE
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro incluido';
    END

    IF ((SELECT char_length(A.DESCRICAO) FROM TBGRADE A WHERE A.DESCRICAO = NEW.DESCRICAO) > 0) then
    BEGIN
        EXCEPTION "..." 'Registro ja existente com os dados informados!, Descricao: '||NEW.DESCRICAO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRADE',NEW.CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBGRADE_B02U FOR TBGRADE
ACTIVE BEFORE UPDATE POSITION 0
AS

DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE STATUS_B VARCHAR(100);
DECLARE VARIABLE STATUS_A VARCHAR(100);

BEGIN

    HISTORICO = '';
    STATUS_B  = '';
    STATUS_A  = '';

    IF ( OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descricao no ID: '||OLD.CODIGO||', Alterado: '|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF ( OLD.T01 <> NEW.T01) THEN
    BEGIN
        HISTORICO = HISTORICO||' T01 no ID: '||OLD.CODIGO||', Alterado: '|| OLD.T01||'->'||NEW.T01;
    END

    IF ( OLD.T02 <> NEW.T02) THEN
    BEGIN
        HISTORICO = HISTORICO||' T02 no ID: '||OLD.CODIGO||', Alterado: '|| OLD.T02||'->'||NEW.T02;
    END

    IF ( OLD.T03 <> NEW.T03) THEN
    BEGIN
        HISTORICO = HISTORICO||' T03 no ID: '||OLD.CODIGO||', Alterado: '|| OLD.T03||'->'||NEW.T03;
    END

    IF ( OLD.T04 <> NEW.T04) THEN
    BEGIN
        HISTORICO = HISTORICO||' T04 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T04||'->'||NEW.T04;
    END

    IF ( OLD.T05 <> NEW.T05) THEN
    BEGIN
        HISTORICO = HISTORICO||' T05 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T05||'->'||NEW.T05;
    END

    IF ( OLD.T06 <> NEW.T06) THEN
    BEGIN
        HISTORICO = HISTORICO||' T06 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T06||'->'||NEW.T06;
    END

    IF ( OLD.T07 <> NEW.T07) THEN
    BEGIN
        HISTORICO = HISTORICO||' T07 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T07||'->'||NEW.T07;
    END

    IF ( OLD.T08 <> NEW.T08) THEN
    BEGIN
        HISTORICO = HISTORICO||' T08 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T08||'->'||NEW.T08;
    END

    IF ( OLD.T09 <> NEW.T09) THEN
    BEGIN
        HISTORICO = HISTORICO||' T09 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T09||'->'||NEW.T09;
    END

    IF ( OLD.T10 <> NEW.T10) THEN
    BEGIN
        HISTORICO = HISTORICO||' T10 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T10||'->'||NEW.T10;
    END

    IF ( OLD.T11 <> NEW.T11) THEN
    BEGIN
        HISTORICO = HISTORICO||' T11 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T11||'->'||NEW.T11;
    END

    IF ( OLD.T12 <> NEW.T12) THEN
    BEGIN
        HISTORICO = HISTORICO||' T12 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T12||'->'||NEW.T12;
    END

    IF ( OLD.T13 <> NEW.T13) THEN
    BEGIN
        HISTORICO = HISTORICO||' T13 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T13||'->'||NEW.T13;
    END

    IF ( OLD.T14 <> NEW.T14) THEN
    BEGIN
        HISTORICO = HISTORICO||' T14 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T14||'->'||NEW.T14;
    END

    IF ( OLD.T15 <> NEW.T15) THEN
    BEGIN
        HISTORICO = HISTORICO||' T15 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T15||'->'||NEW.T15;
    END

    IF ( OLD.T16 <> NEW.T16) THEN
    BEGIN
        HISTORICO = HISTORICO||' T16 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T16||'->'||NEW.T16;
    END

    IF ( OLD.T17 <> NEW.T17) THEN
    BEGIN
        HISTORICO = HISTORICO||' T17 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T17||'->'||NEW.T17;
    END

    IF ( OLD.T18 <> NEW.T18) THEN
    BEGIN
        HISTORICO = HISTORICO||' T18 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T18||'->'||NEW.T18;
    END

    IF ( OLD.T19 <> NEW.T19) THEN
    BEGIN
        HISTORICO = HISTORICO||' T19 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T19||'->'||NEW.T19;
    END

    IF ( OLD.T20 <> NEW.T20) THEN
    BEGIN
        HISTORICO = HISTORICO||' T20 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.T20||'->'||NEW.T20;
    END

    IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' STATUS no ID: '||OLD.CODIGO||', Status Inativado.';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' STATUS no ID: '||OLD.CODIGO||', Status Ativado.';
    END

    IF ( OLD.E01 <> NEW.E01) THEN
    BEGIN
        HISTORICO = HISTORICO||' E01 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E01||'->'||NEW.E01;
    END

    IF ( OLD.E02 <> NEW.E02) THEN
    BEGIN
        HISTORICO = HISTORICO||' E02 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E02||'->'||NEW.E02;
    END

    IF ( OLD.E03 <> NEW.E03) THEN
    BEGIN
        HISTORICO = HISTORICO||' E03 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E03||'->'||NEW.E03;
    END

    IF ( OLD.E04 <> NEW.E04) THEN
    BEGIN
        HISTORICO = HISTORICO||' E04 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E04||'->'||NEW.E04;
    END

    IF ( OLD.E05 <> NEW.E05) THEN
    BEGIN
        HISTORICO = HISTORICO||' E05 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E05||'->'||NEW.E05;
    END

    IF ( OLD.E06 <> NEW.E06) THEN
    BEGIN
        HISTORICO = HISTORICO||' E06 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E06||'->'||NEW.E06;
    END

    IF ( OLD.E07 <> NEW.E07) THEN
    BEGIN
        HISTORICO = HISTORICO||' E07 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E07||'->'||NEW.E07;
    END

    IF ( OLD.E08 <> NEW.E08) THEN
    BEGIN
        HISTORICO = HISTORICO||' E08 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E08||'->'||NEW.E08;
    END

    IF ( OLD.E09 <> NEW.E09) THEN
    BEGIN
        HISTORICO = HISTORICO||' E09 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E09||'->'||NEW.E09;
    END

    IF ( OLD.E10 <> NEW.E10) THEN
    BEGIN
        HISTORICO = HISTORICO||' E10 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E10||'->'||NEW.E10;
    END

    IF ( OLD.E11 <> NEW.E11) THEN
    BEGIN
        HISTORICO = HISTORICO||' E11 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E11||'->'||NEW.E11;
    END

    IF ( OLD.E12 <> NEW.E12) THEN
    BEGIN
        HISTORICO = HISTORICO||' E12 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E12||'->'||NEW.E12;
    END

    IF ( OLD.E13 <> NEW.E13) THEN
    BEGIN
        HISTORICO = HISTORICO||' E13 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E13||'->'||NEW.E13;
    END

    IF ( OLD.E14 <> NEW.E14) THEN
    BEGIN
        HISTORICO = HISTORICO||' E14 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E14||'->'||NEW.E14;
    END

    IF ( OLD.E15 <> NEW.E15) THEN
    BEGIN
        HISTORICO = HISTORICO||' E15 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E15||'->'||NEW.E15;
    END

    IF ( OLD.E16 <> NEW.E16) THEN
    BEGIN
        HISTORICO = HISTORICO||' E16 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E16||'->'||NEW.E16;
    END

    IF ( OLD.E17 <> NEW.E17) THEN
    BEGIN
        HISTORICO = HISTORICO||' E17 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E17||'->'||NEW.E17;
    END

    IF ( OLD.E18 <> NEW.E18) THEN
    BEGIN
        HISTORICO = HISTORICO||' E18 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E18||'->'||NEW.E18;
    END

    IF ( OLD.E19 <> NEW.E19) THEN
    BEGIN
        HISTORICO = HISTORICO||' E19 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E19||'->'||NEW.E19;
    END

    IF ( OLD.E20 <> NEW.E20) THEN
    BEGIN
        HISTORICO = HISTORICO||' E20 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.E20||'->'||NEW.E20;
    END

    IF ( OLD.USA01 <> NEW.USA01) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA01 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA01||'->'||NEW.USA01;
    END

    IF ( OLD.USA02 <> NEW.USA02) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA02 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA02||'->'||NEW.USA02;
    END

    IF ( OLD.USA03 <> NEW.USA03) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA03 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA03||'->'||NEW.USA03;
    END

    IF ( OLD.USA04 <> NEW.USA04) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA04 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA04||'->'||NEW.USA04;
    END

    IF ( OLD.USA05 <> NEW.USA05) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA05 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA05||'->'||NEW.USA05;
    END

    IF ( OLD.USA06 <> NEW.USA06) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA06 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA06||'->'||NEW.USA06;
    END

    IF ( OLD.USA07 <> NEW.USA07) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA07 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA07||'->'||NEW.USA07;
    END

    IF ( OLD.USA08 <> NEW.USA08) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA08 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA08||'->'||NEW.USA08;
    END

    IF ( OLD.USA09 <> NEW.USA09) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA09 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA09||'->'||NEW.USA09;
    END

    IF ( OLD.USA10 <> NEW.USA10) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA10 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA10||'->'||NEW.USA10;
    END

    IF ( OLD.USA11 <> NEW.USA11) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA11 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA11||'->'||NEW.USA11;
    END

    IF ( OLD.USA12 <> NEW.USA12) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA12 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA12||'->'||NEW.USA12;
    END

    IF ( OLD.USA13 <> NEW.USA13) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA13 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA13||'->'||NEW.USA13;
    END

    IF ( OLD.USA14 <> NEW.USA14) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA14 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA14||'->'||NEW.USA14;
    END

    IF ( OLD.USA15 <> NEW.USA15) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA15 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA15||'->'||NEW.USA15;
    END

    IF ( OLD.USA15 <> NEW.USA15) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA15 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA15||'->'||NEW.USA15;
    END

    IF ( OLD.USA16 <> NEW.USA16) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA16 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA16||'->'||NEW.USA16;
    END

    IF ( OLD.USA17 <> NEW.USA17) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA17 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA17||'->'||NEW.USA17;
    END

    IF ( OLD.USA18 <> NEW.USA18) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA18 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA18||'->'||NEW.USA18;
    END

    IF ( OLD.USA19 <> NEW.USA19) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA19 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA19||'->'||NEW.USA19;
    END

    IF ( OLD.USA20 <> NEW.USA20) THEN
    BEGIN
        HISTORICO = HISTORICO||' USA20 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.USA20||'->'||NEW.USA20;
    END

    IF ( OLD.EUR01 <> NEW.EUR01) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR01 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR01||'->'||NEW.EUR01;
    END

    IF ( OLD.EUR02 <> NEW.EUR02) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR02 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR02||'->'||NEW.EUR02;
    END

    IF ( OLD.EUR03 <> NEW.EUR03) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR03 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR03||'->'||NEW.EUR03;
    END

    IF ( OLD.EUR04 <> NEW.EUR04) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR04 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR04||'->'||NEW.EUR04;
    END

    IF ( OLD.EUR05 <> NEW.EUR05) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR05 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR05||'->'||NEW.EUR05;
    END

    IF ( OLD.EUR06 <> NEW.EUR06) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR06 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR06||'->'||NEW.EUR06;
    END

    IF ( OLD.EUR07 <> NEW.EUR07) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR07 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR07||'->'||NEW.EUR07;
    END

    IF ( OLD.EUR08 <> NEW.EUR08) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR08 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR08||'->'||NEW.EUR08;
    END

    IF ( OLD.EUR09 <> NEW.EUR09) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR09 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR09||'->'||NEW.EUR09;
    END

    IF ( OLD.EUR10 <> NEW.EUR10) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR10 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR10||'->'||NEW.EUR10;
    END

    IF ( OLD.EUR11 <> NEW.EUR11) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR11 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR11||'->'||NEW.EUR11;
    END

    IF ( OLD.EUR12 <> NEW.EUR12) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR12 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR12||'->'||NEW.EUR12;
    END

    IF ( OLD.EUR13 <> NEW.EUR13) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR13 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR13||'->'||NEW.EUR13;
    END

    IF ( OLD.EUR14 <> NEW.EUR14) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR14 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR14||'->'||NEW.EUR14;
    END

    IF ( OLD.EUR15 <> NEW.EUR15) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR15 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR15||'->'||NEW.EUR15;
    END

    IF ( OLD.EUR16 <> NEW.EUR16) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR16 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR16||'->'||NEW.EUR16;
    END

    IF ( OLD.EUR17 <> NEW.EUR17) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR17 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR17||'->'||NEW.EUR17;
    END

    IF ( OLD.EUR18 <> NEW.EUR18) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR18 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR18||'->'||NEW.EUR18;
    END

    IF ( OLD.EUR19 <> NEW.EUR19) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR19 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR19||'->'||NEW.EUR19;
    END

    IF ( OLD.EUR20 <> NEW.EUR20) THEN
    BEGIN
        HISTORICO = HISTORICO||' EUR20 no ID: '||OLD.CODIGO||', Alterada: '|| OLD.EUR20||'->'||NEW.EUR20;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRADE', NEW.CODIGO, HISTORICO);
    END

END;

CREATE TRIGGER TTBGRADE_B03D FOR TBGRADE
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro ID: '||old.CODIGO||', Excluido. ';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRADE',old.CODIGO, HISTORICO);
    END
END;
