SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_kit_b02u for tbmodelo_kit
active before update position 0
AS
declare variable MODELO_DESCRICAO VARCHAR(500);
declare variable COR_ID INTEGER;
BEGIN
    :MODELO_DESCRICAO = '';
    
    IF(NEW.COR_ID <> OLD.COR_ID) THEN
    BEGIN
        FOR
            SELECT
                M.DESCRICAO
            FROM TBMODELO M
            WHERE M.CODIGO = NEW.MODELO_ID
        INTO
            :MODELO_DESCRICAO
        DO
        BEGIN
            IF(NEW.COR_ID = 0) THEN
            BEGIN
                :COR_ID = GEN_ID(GTBCOR,1);
                INSERT INTO TBCOR (DESCRICAO, CODIGO, TONALIDADE, STATUS, DESCRICAO_COMERCIAL, KIT, CLASSE, NIVEL_CONTAMINACAO) VALUES (NEW.DESCRICAO, :COR_ID, 0, 1, NEW.DESCRICAO, '1', 0, 0);
                INSERT INTO TBMODELO_COR (MODELO_ID, COR_ID, STATUS, STATUS_PRODUTO) VALUES (NEW.MODELO_ID, :COR_ID, '1', '1');
--                UPDATE TBPRODUTO SET DESCRICAO = :MODELO_DESCRICAO||(SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = :COR_ID), COR_CODIGO = :COR_ID WHERE MODELO_CODIGO = NEW.MODELO_ID AND COR_CODIGO = OLD.COR_ID;

                NEW.COR_ID = :COR_ID;
            END ELSE
            BEGIN
                UPDATE TBPRODUTO SET DESCRICAO = :MODELO_DESCRICAO||(SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE C.CODIGO = NEW.COR_ID), COR_CODIGO = NEW.COR_ID WHERE MODELO_CODIGO = NEW.MODELO_ID AND COR_CODIGO = OLD.COR_ID;
                UPDATE TBMODELO_COR SET COR_ID = NEW.COR_ID WHERE MODELO_ID = NEW.MODELO_ID AND COR_ID = OLD.COR_ID;
            END
        END
    END
END
^

SET TERM ; ^

