CREATE OR ALTER trigger ttbmodelo_b13u for tbmodelo
active before update position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(7000);
BEGIN
  IF (OLD.FAMILIA_CODIGO <> NEW.FAMILIA_CODIGO) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.FAMILIA_CODIGO = NEW.FAMILIA_CODIGO
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' FAM.PRD:'||OLD.FAMILIA_CODIGO||'->'||NEW.FAMILIA_CODIGO;

    END

    IF (OLD.FAMILIA_ALTERNATIVA <> NEW.FAMILIA_ALTERNATIVA) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.FAMILIA_ALTERNATIVA = NEW.FAMILIA_ALTERNATIVA
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

           :HISTORICO = :HISTORICO||' FAM.ALT:'||OLD.FAMILIA_ALTERNATIVA||'->'||NEW.FAMILIA_ALTERNATIVA;
    END

    IF (OLD.LINHA_CODIGO <> NEW.LINHA_CODIGO) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.LINHA_CODIGO = NEW.LINHA_CODIGO
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

    END

    IF (OLD.GRADE_CODIGO <> NEW.GRADE_CODIGO) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.GRADE_CODIGO = NEW.GRADE_CODIGO
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' GRADE:'||OLD.GRADE_CODIGO||'->'||NEW.GRADE_CODIGO;
    END

    IF (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.TIPOPRODUTO_CODIGO = NEW.TIPOPRODUTO_CODIGO
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' TIPO:'||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
    END

    IF (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.UNIDADEMEDIDA_SIGLA = NEW.UNIDADEMEDIDA_SIGLA
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' TIPO:'||OLD.UNIDADEMEDIDA_SIGLA||'->'||NEW.UNIDADEMEDIDA_SIGLA;
    END

    IF (COALESCE(OLD.NCM_CODIGO, '') <> COALESCE(NEW.NCM_CODIGO, '') AND CHAR_LENGTH(NEW.NCM_CODIGO) = 8) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.NCM_CODIGO = NEW.NCM_CODIGO
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' NCM:'||OLD.NCM_CODIGO||'->'||NEW.NCM_CODIGO;

    END

    IF (OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        UPDATE TBPRODUTO P
            SET P.STATUS = NEW.STATUS
            WHERE P.MODELO_CODIGO = OLD.CODIGO;

            :HISTORICO = :HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
    END
END;
