CREATE TRIGGER TTBSAC_DEFEITO_B01I FOR TBSAC_DEFEITO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.CODIGO is null) then
    new.CODIGO = gen_id(GTBSAC_DEFEITO,1);
end;

CREATE TRIGGER TTBSAC_DEFEITO_B02I FOR TBSAC_DEFEITO
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 (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBSAC_DEFEITO',NEW.CODIGO, HISTORICO);
    END
end;

CREATE TRIGGER TTBSAC_DEFEITO_B01U FOR TBSAC_DEFEITO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descricao do Defeito: '||OLD.CODIGO||', Alterada: '|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status do Defeito: '||OLD.CODIGO||', Alterado: '|| OLD.STATUS||'->'||NEW.STATUS;
    END

    IF ( OLD.SETOR <> NEW.SETOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' Setor do Defeito: '||OLD.CODIGO||', Alterado: '|| OLD.SETOR||'->'||NEW.SETOR;
    END

    IF ( OLD.FAMILIA_ID <> NEW.FAMILIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' Familia do Defeito: '||OLD.CODIGO||', Alterada: '|| OLD.FAMILIA_ID||'->'||NEW.FAMILIA_ID;
    END

    IF ( OLD.QUALIDADE <> NEW.QUALIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' Defeito de Qualidade no: '||OLD.CODIGO||', Alterado: '|| OLD.QUALIDADE||'->'||NEW.QUALIDADE;
    END

    IF ( OLD.ESTOQUE <> NEW.ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' Estoque de Estragado no: '||OLD.CODIGO||', Alterado: '|| OLD.ESTOQUE||'->'||NEW.ESTOQUE;
    END

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

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

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

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

    HISTORICO = '';

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

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