ALTER TABLE TBCATALOGO_PRODUTO
	ADD TIPO_CATALOGO INTEGER     DEFAULT 1,
    ADD COR_BASE1     VARCHAR(10) DEFAULT '#020024',
    ADD COR_BASE2     VARCHAR(10) DEFAULT '#090979',
    ADD COR_BASE3     VARCHAR(10) DEFAULT '#00d4ff',
    ADD COR_CARD      VARCHAR(10) DEFAULT '#09097900',
    ADD COR_TEXTO     VARCHAR(10) DEFAULT '#ffffff';

/******************************************************************************/

COMMENT ON COLUMN TBCATALOGO_PRODUTO.TIPO_CATALOGO IS
'1 - SIMPLIFICADO;
2 - DETALHADO;';

/******************************************************************************/
/******************************************************************************/

UPDATE TBCATALOGO_PRODUTO
    SET TIPO_CATALOGO = 1,
        COR_BASE1     = '#020024',
        COR_BASE2     = '#090979',
        COR_BASE3     = '#00d4ff',
        COR_CARD      = '#09097900',
        COR_TEXTO     = '#ffffff'
    WHERE ORIGEM = '12461';

/******************************************************************************/
/******************************************************************************/

CREATE INDEX ITBCATALOGO_PRODUTO_17 ON TBCATALOGO_PRODUTO (TIPO_CATALOGO);

/******************************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_b01u for tbcatalogo_produto
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE NEW_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE OLD_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE NEW_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE OLD_CANAL_VENDAS VARCHAR(500);
DECLARE VARIABLE NEW_CANAL_VENDAS VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO_ESP VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO_ESP VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO_REC VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO_REC VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_ESTABELECIMENTO     = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = OLD.ESTABELECIMENTO_ID), '');
    NEW_ESTABELECIMENTO     = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = NEW.ESTABELECIMENTO_ID), '');
    OLD_TABELA_PRECO        = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = OLD.TABELA_PRECO_ID), '');
    NEW_TABELA_PRECO        = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = NEW.TABELA_PRECO_ID), '');
    OLD_LOCALIZACAO         = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = OLD.LOCALIZACAO_ID), '');
    NEW_LOCALIZACAO         = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = NEW.LOCALIZACAO_ID), '');
    OLD_CANAL_VENDAS        = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = OLD.CANAL_VENDAS_ID), '');
    NEW_CANAL_VENDAS        = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = NEW.CANAL_VENDAS_ID), '');
    OLD_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = OLD.TABELA_PRECO_ESP_ID), '');
    NEW_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = NEW.TABELA_PRECO_ESP_ID), '');
    OLD_TABELA_PRECO_REC    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = OLD.TABELA_PRECO_REC_ID), '');
    NEW_TABELA_PRECO_REC    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = NEW.TABELA_PRECO_REC_ID), '');

    IF (OLD.DESCRICAO IS DISTINCT FROM NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC:'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF (OLD.DATA_INICIAL IS DISTINCT FROM NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.INICIAL:'||FORMATDATE(OLD.DATA_INICIAL)||'->'||FORMATDATE(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_FIM IS DISTINCT FROM NEW.DATA_FIM) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.FINAL:'||FORMATDATE(OLD.DATA_FIM)||'->'||FORMATDATE(NEW.DATA_FIM);
    END

    IF (OLD.UTILIZADO IS DISTINCT FROM NEW.UTILIZADO) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS/UTIL:'||OLD.UTILIZADO||'->'||NEW.UTILIZADO;
    END

    IF (OLD.ESTABELECIMENTO_ID IS DISTINCT FROM NEW.ESTABELECIMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' ESTAB:'||OLD_ESTABELECIMENTO||'->'||NEW_ESTABELECIMENTO;
    END

    IF (OLD.LOCALIZACAO_ID IS DISTINCT FROM NEW.LOCALIZACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOCALIZACAO:'||OLD_LOCALIZACAO||'->'||NEW_LOCALIZACAO;
    END

    IF (OLD.TABELA_PRECO_ID IS DISTINCT FROM NEW.TABELA_PRECO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO:'||OLD_TABELA_PRECO||'->'||NEW_TABELA_PRECO;
    END

    IF (OLD.TABELA_PRECO_ESP_ID IS DISTINCT FROM NEW.TABELA_PRECO_ESP_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO ESP:'||OLD_TABELA_PRECO_ESP||'->'||NEW_TABELA_PRECO_ESP;
    END

    IF (OLD.TABELA_PRECO_REC_ID IS DISTINCT FROM NEW.TABELA_PRECO_REC_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO REC:'||OLD_TABELA_PRECO_REC||'->'||NEW_TABELA_PRECO_REC;
    END

    IF (OLD.CANAL_VENDAS_ID IS DISTINCT FROM NEW.CANAL_VENDAS_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' CANAL VENDAS:'||OLD_CANAL_VENDAS||'->'||NEW_CANAL_VENDAS;
    END

    IF (OLD.ESTOQUE IS DISTINCT FROM NEW.ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' DISP.ESTOQUE:'||OLD.ESTOQUE||'->'||NEW.ESTOQUE;
    END

    IF (OLD.VISUALIZACAO_GRADE IS DISTINCT FROM NEW.VISUALIZACAO_GRADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' GRADE TAM:'||OLD.VISUALIZACAO_GRADE||'->'||NEW.VISUALIZACAO_GRADE;
    END

    IF (OLD.VISUALIZACAO_COR IS DISTINCT FROM NEW.VISUALIZACAO_COR) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC.COR:'||OLD.VISUALIZACAO_COR||'->'||NEW.VISUALIZACAO_COR;
    END

    IF (OLD.ALOCAR IS DISTINCT FROM NEW.ALOCAR) THEN
    BEGIN
        HISTORICO = HISTORICO||' ALOCAR:'||OLD.ALOCAR||'->'||NEW.ALOCAR;
    END

    IF (OLD.HABILITA_ESTOQUE IS DISTINCT FROM NEW.HABILITA_ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.ESTOQUE:'||OLD.HABILITA_ESTOQUE||'->'||NEW.HABILITA_ESTOQUE;
    END

    IF (OLD.CONTATO_VENDEDOR IS DISTINCT FROM NEW.CONTATO_VENDEDOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' CONTATO:'||FN_MASK_V2(OLD.CONTATO_VENDEDOR, 'FONE')||'->'||FN_MASK_V2(NEW.CONTATO_VENDEDOR, 'FONE');
    END

    IF (OLD.PERFIL_PEDIDO IS DISTINCT FROM NEW.PERFIL_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERFIL PED:'||OLD.PERFIL_PEDIDO||'->'||NEW.PERFIL_PEDIDO;
    END

    IF (OLD.TIPO_CLIENTE IS DISTINCT FROM NEW.TIPO_CLIENTE) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO CLI:'||OLD.TIPO_CLIENTE||'->'||NEW.TIPO_CLIENTE;
    END

    IF (OLD.TIPO_PEDIDO IS DISTINCT FROM NEW.TIPO_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO PED:'||OLD.TIPO_PEDIDO||'->'||NEW.TIPO_PEDIDO;
    END

    IF (OLD.DESCRICAO_AGRUPAMENTO IS DISTINCT FROM NEW.DESCRICAO_AGRUPAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC.AGRUP:'||OLD.DESCRICAO_AGRUPAMENTO||'->'||NEW.DESCRICAO_AGRUPAMENTO;
    END

    IF (OLD.TIPO_GERACAO IS DISTINCT FROM NEW.TIPO_GERACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' GERACAO:'||OLD.TIPO_GERACAO||'->'||NEW.TIPO_GERACAO;
    END

    IF (OLD.TIPO_VINCULO_LOGIN IS DISTINCT FROM NEW.TIPO_VINCULO_LOGIN) THEN
    BEGIN
        HISTORICO = HISTORICO||' VINC.LOGIN:'||OLD.TIPO_VINCULO_LOGIN||'->'||NEW.TIPO_VINCULO_LOGIN;
    END

    IF (OLD.TIPO_ORDEM_MODELO IS DISTINCT FROM NEW.TIPO_ORDEM_MODELO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ORDEM MOD:'||OLD.TIPO_ORDEM_MODELO||'->'||NEW.TIPO_ORDEM_MODELO;
    END
	
	IF (OLD.VALOR_MINIMO_PEDIDO IS DISTINCT FROM NEW.VALOR_MINIMO_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' VR.PED.MIN:'||FN_FORMAT_NUMBER2(OLD.VALOR_MINIMO_PEDIDO, 2)||'->'||FN_FORMAT_NUMBER2(NEW.VALOR_MINIMO_PEDIDO, 2);
    END

    IF (OLD.TIPO_CATALOGO IS DISTINCT FROM NEW.TIPO_CATALOGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO CAT:'||OLD.TIPO_CATALOGO||'->'||NEW.TIPO_CATALOGO;
    END

    IF (OLD.COR_BASE1 IS DISTINCT FROM NEW.COR_BASE1) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR BASE1:'||OLD.COR_BASE1||'->'||NEW.COR_BASE1;
    END

    IF (OLD.COR_BASE2 IS DISTINCT FROM NEW.COR_BASE2) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR BASE2:'||OLD.COR_BASE2||'->'||NEW.COR_BASE2;
    END

    IF (OLD.COR_BASE3 IS DISTINCT FROM NEW.COR_BASE3) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR BASE3:'||OLD.COR_BASE3||'->'||NEW.COR_BASE3;
    END

    IF (OLD.COR_CARD IS DISTINCT FROM NEW.COR_CARD) THEN 
    BEGIN
        HISTORICO = HISTORICO||' COR CARD:'||OLD.COR_CARD||'->'||NEW.COR_CARD;
    END

    IF (OLD.COR_TEXTO IS DISTINCT FROM NEW.COR_TEXTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR TEXTO:'||OLD.COR_TEXTO||'->'||NEW.COR_TEXTO;
    END

    IF (OLD.LINK IS DISTINCT FROM NEW.LINK) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAMPO LINK ALTERADO!';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

/******************************************************************************/
/******************************************************************************/

SET TERM ^ ;

CREATE OR ALTER function DECIMALTOHEX (
    "INPUT" decimal(18,0))
returns varchar(16)
AS
declare variable HEX_VALUE varchar(16);
declare variable QUOTIENT decimal(18,0);
declare variable REMAINDER decimal(18,0);
declare variable HEX_DIGITS varchar(16) = '0123456789ABCDEF';
BEGIN
    
    IF ("INPUT" = 0) THEN
    BEGIN
        RETURN '0';
    END

    QUOTIENT  = "INPUT";
    HEX_VALUE = '';


    WHILE (QUOTIENT > 0) DO
    BEGIN
        
        REMAINDER = MOD(QUOTIENT, 16);
        HEX_VALUE = SUBSTRING(HEX_DIGITS FROM REMAINDER + 1 FOR 1) || HEX_VALUE;
        QUOTIENT  = QUOTIENT / 16;

    END


    RETURN HEX_VALUE;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER function TCOLORTOHEX (
    "INPUT" decimal(18,0))
returns varchar(10)
AS
declare variable R varchar(16);
declare variable G varchar(16);
declare variable B varchar(16);
BEGIN

    IF (FN_IS_EMPTY("INPUT") = '') THEN
    BEGIN
        RETURN '';
    END

    "INPUT" = REPLACE("INPUT", '$', '');

    R = BIN_AND("INPUT", 255);
    G = BIN_AND((BIN_SHR("INPUT", 8)), 255);
    B = BIN_AND((BIN_SHR("INPUT", 16)), 255);

    R = DECIMALTOHEX(R);
    G = DECIMALTOHEX(G);
    B = DECIMALTOHEX(B);

    R = IIF(R = '0' OR CHAR_LENGTH(R) = 1, '0'||R, R);
    G = IIF(G = '0' OR CHAR_LENGTH(G) = 1, '0'||G, G);
    B = IIF(B = '0' OR CHAR_LENGTH(B) = 1, '0'||B, B);

    RETURN '#'||R||G||B;
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SPU_CATALOGO_PRODUTO_IMPORT (
    ICATALOGO_PRODUTO_ID integer not null = 0)
as
declare variable VID integer;
declare variable VCATALOGO_PRODUTO_ID integer;
declare variable VSTATUS integer;
declare variable VMODELO_ID integer;
declare variable VMODELO_DESCRICAO varchar(200);
declare variable VCORES blob sub_type 1 segment size 80;
declare variable VPRODUTOS blob sub_type 1 segment size 80;
declare variable VTAMANHOS blob sub_type 1 segment size 80;
declare variable VPRECO_VENDA numeric(15,2);
declare variable VPRECO_RECOMENDADO numeric(15,2);
BEGIN


    FOR
        SELECT
            T.ID,
            T.CATALOGO_PRODUTO_ID,
            T.MODELO_ID,
            COALESCE((SELECT FIRST 1 M.DESCRICAO FROM TBMODELO M WHERE M.CODIGO = T.MODELO_ID), '') AS MODELO_DESCRICAO

        FROM TBCATALOGO_PRODUTO_IMPORT T
        INNER JOIN TBCATALOGO_PRODUTO A ON A.ID = T.CATALOGO_PRODUTO_ID
        WHERE T.ID > 0
        AND A.ORIGEM = '12461'

        AND IIF(COALESCE(:ICATALOGO_PRODUTO_ID, 0) > 0, T.CATALOGO_PRODUTO_ID = COALESCE(:ICATALOGO_PRODUTO_ID, 0), TRUE = TRUE)

    INTO
        :VID,
        :VCATALOGO_PRODUTO_ID,
        :VMODELO_ID,
        :VMODELO_DESCRICAO

    DO
    BEGIN
        
        :VCORES = '['||COALESCE((SELECT
                                    LIST(
                                        FN_TO_JSON_V2(
                                            FN_TO_PAR_JSON_V3('ID', C.COR_ID),
                                            FN_TO_PAR_JSON_V3('DESCRICAO', CC.DESCRICAO),
                                            FN_TO_PAR_JSON_V3('ABREVIADO', CC.ABREVIADO),
                                            FN_TO_PAR_JSON_V3('AMOSTRA', TCOLORTOHEX(CC.AMOSTRA)),
                                            FN_TO_PAR_JSON_V3('AMOSTRA_IMAGEM', CC.AMOSTRA_IMAGEM),
                                            FN_TO_PAR_JSON_V3('PRODUTO_ID', CP.CODIGO)
                                            )
                                        )
            
                                FROM TBMODELO_COR C
                                INNER JOIN TBCOR CC ON CC.CODIGO = C.COR_ID
                                INNER JOIN TBPRODUTO CP ON CP.MODELO_CODIGO = C.MODELO_ID AND CP.COR_CODIGO = CC.CODIGO
                                WHERE C.MODELO_ID = :VMODELO_ID
                                AND C.STATUS = '1'
                                AND CC.STATUS = '1'
                                AND CP.STATUS = '1'
                            ), '')||']';

        :VPRODUTOS = '['||COALESCE((SELECT
                                        LIST(
                                            FN_TO_JSON_V2(
                                                FN_TO_PAR_JSON_V3('ID', CP.CODIGO),
                                                FN_TO_PAR_JSON_V3('DESCRICAO', CP.DESCRICAO),
                                                FN_TO_PAR_JSON_V3('COR_ID', CC.CODIGO)
                                                )
                                            )

                                    FROM TBMODELO_COR C
                                    INNER JOIN TBCOR CC ON CC.CODIGO = C.COR_ID
                                    INNER JOIN TBPRODUTO CP ON CP.MODELO_CODIGO = C.MODELO_ID AND CP.COR_CODIGO = CC.CODIGO
                                    WHERE C.MODELO_ID = :VMODELO_ID
                                    AND C.STATUS = '1'
                                    AND CC.STATUS = '1'
                                    AND CP.STATUS = '1'
                            ), '')||']';

        :VTAMANHOS = '['||COALESCE((SELECT
                                        LIST(
                                            FN_TO_JSON_V2(
                                                FN_TO_PAR_JSON_V3('TAMANHO', TM.TAMANHO),
                                                FN_TO_PAR_JSON_V3('DESCRICAO', TM.DESCRICAO)
                                                )
                                            )

                                    FROM (
                                        SELECT
                                            1 AS TAMANHO,
                                            TG.T01 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T01 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            2 AS TAMANHO,
                                            TG.T02 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T02 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            3 AS TAMANHO,
                                            TG.T03 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T03 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            4 AS TAMANHO,
                                            TG.T04 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T04 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            5 AS TAMANHO,
                                            TG.T05 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T05 = '1'
                                        
                                        UNION ALL

                                        SELECT
                                            6 AS TAMANHO,
                                            TG.T06 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T06 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            7 AS TAMANHO,
                                            TG.T07 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T07 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            8 AS TAMANHO,
                                            TG.T08 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T08 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            9 AS TAMANHO,
                                            TG.T09 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T09 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            10 AS TAMANHO,
                                            TG.T10 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T10 = '1'
                                        
                                        UNION ALL

                                        SELECT
                                            11 AS TAMANHO,
                                            TG.T11 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T11 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            12 AS TAMANHO,
                                            TG.T12 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T12 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            13 AS TAMANHO,
                                            TG.T13 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T13 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            14 AS TAMANHO,
                                            TG.T14 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T14 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            15 AS TAMANHO,
                                            TG.T15 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T15 = '1'
                                        
                                        UNION ALL

                                        SELECT
                                            16 AS TAMANHO,
                                            TG.T16 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T16 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            17 AS TAMANHO,
                                            TG.T17 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T17 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            18 AS TAMANHO,
                                            TG.T18 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T18 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            19 AS TAMANHO,
                                            TG.T19 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T19 = '1'
                                        
                                        UNION ALL
                                        
                                        SELECT
                                            20 AS TAMANHO,
                                            TG.T20 AS DESCRICAO
                                        
                                        FROM TBMODELO TT
                                        INNER JOIN TBGRADE TG ON TG.CODIGO = TT.GRADE_CODIGO
                                        WHERE TT.CODIGO = :VMODELO_ID
                                        AND TT.T20 = '1'
                                    ) TM
                            ), '')||']';


        /**********************************************************************/

        :VPRECO_VENDA = COALESCE((SELECT FIRST 1
                                        IIF(XY.PERCENTUAL_BASE > 0.00, ROUND(((CAST(XY.PERCENTUAL_BASE AS DOUBLE PRECISION) / 100.00) * CAST(COALESCE(XY2.PRECO_VENDA, 0) AS DOUBLE PRECISION)), XY.DECIMAIS_BASE), COALESCE(XY2.PRECO_VENDA, 0))
            
                                    FROM (
                                        SELECT
                                            IIF(COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1, COALESCE(TP.PERCENTUAL_BASE, 0.00), 0.00) AS PERCENTUAL_BASE,
                                            COALESCE(TP.DECIMAIS_BASE, 2) AS DECIMAIS_BASE,
                                            IIF(COALESCE(TP.TABELA_PRECO_ID_BASE, 0) > 0 AND COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1, COALESCE(TP.TABELA_PRECO_ID_BASE, 0), COALESCE(CPD.TABELA_PRECO_ID, 0)) AS TAB_PRECO_ID_F,
                            
                                            IIF(COALESCE(TP.TABELA_PRECO_ID_BASE, 0) > 0 AND COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1,
                                                COALESCE((SELECT FIRST 1
                                                    Y.ID
                                                FROM TBTABELA_PRECO Y2
                                                INNER JOIN TBMODELO_PRECO Y ON Y.TABELA_ID = Y2.ID
                                                WHERE Y2.ID = COALESCE(TP.TABELA_PRECO_ID_BASE, 0) AND Y.MODELO_CODIGO = :VMODELO_ID), 0),
                                                COALESCE((SELECT FIRST 1
                                                    Y.ID
                                                FROM TBTABELA_PRECO Y2
                                                INNER JOIN TBMODELO_PRECO Y ON Y.TABELA_ID = Y2.ID
                                                WHERE Y2.ID = CPD.TABELA_PRECO_ID AND Y.MODELO_CODIGO = :VMODELO_ID), 0)
                                                ) AS MODELO_PRECO_ID
                            
                                        FROM TBCATALOGO_PRODUTO CPD, TBTABELA_PRECO TP
                                        WHERE CPD.TABELA_PRECO_ID = TP.ID
                                        AND CPD.ID = :VCATALOGO_PRODUTO_ID
                                        AND CPD.ORIGEM = '12461'
                                    ) XY
                                    LEFT JOIN TBMODELO_PRECO XY2 ON XY2.ID = XY.MODELO_PRECO_ID AND XY2.TABELA_ID = XY.TAB_PRECO_ID_F
                                    WHERE XY.MODELO_PRECO_ID > 0
                            ), 0);

        :VPRECO_RECOMENDADO = COALESCE((SELECT FIRST 1
                                        IIF(XY.PERCENTUAL_BASE > 0.00, ROUND(((CAST(XY.PERCENTUAL_BASE AS DOUBLE PRECISION) / 100.00) * CAST(COALESCE(XY2.PRECO_VENDA, 0) AS DOUBLE PRECISION)), XY.DECIMAIS_BASE), COALESCE(XY2.PRECO_VENDA, 0))
            
                                    FROM (
                                        SELECT
                                            IIF(COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1, COALESCE(TP.PERCENTUAL_BASE, 0.00), 0.00) AS PERCENTUAL_BASE,
                                            COALESCE(TP.DECIMAIS_BASE, 2) AS DECIMAIS_BASE,
                                            IIF(COALESCE(TP.TABELA_PRECO_ID_BASE, 0) > 0 AND COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1, COALESCE(TP.TABELA_PRECO_ID_BASE, 0), COALESCE(CPD.TABELA_PRECO_REC_ID, 0)) AS TAB_PRECO_ID_F,
                            
                                            IIF(COALESCE(TP.TABELA_PRECO_ID_BASE, 0) > 0 AND COALESCE(TP.ORIGEM_PRECO_BASE, 0) = 1,
                                                COALESCE((SELECT FIRST 1
                                                    Y.ID
                                                FROM TBTABELA_PRECO Y2
                                                INNER JOIN TBMODELO_PRECO Y ON Y.TABELA_ID = Y2.ID
                                                WHERE Y2.ID = COALESCE(TP.TABELA_PRECO_ID_BASE, 0) AND Y.MODELO_CODIGO = :VMODELO_ID), 0),
                                                COALESCE((SELECT FIRST 1
                                                    Y.ID
                                                FROM TBTABELA_PRECO Y2
                                                INNER JOIN TBMODELO_PRECO Y ON Y.TABELA_ID = Y2.ID
                                                WHERE Y2.ID = CPD.TABELA_PRECO_REC_ID AND Y.MODELO_CODIGO = :VMODELO_ID), 0)
                                                ) AS MODELO_PRECO_ID
                            
                                        FROM TBCATALOGO_PRODUTO CPD, TBTABELA_PRECO TP
                                        WHERE CPD.TABELA_PRECO_REC_ID = TP.ID
                                        AND CPD.ID = :VCATALOGO_PRODUTO_ID
                                        AND CPD.ORIGEM = '12461'
                                    ) XY
                                    LEFT JOIN TBMODELO_PRECO XY2 ON XY2.ID = XY.MODELO_PRECO_ID AND XY2.TABELA_ID = XY.TAB_PRECO_ID_F
                                    WHERE XY.MODELO_PRECO_ID > 0
                            ), 0);

        /**********************************************************************/

        :VSTATUS = 1;
        IF (:VPRECO_VENDA <= 0) THEN
        BEGIN

            :VSTATUS = 0;

            EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', :VCATALOGO_PRODUTO_ID, ('MODELO '||FN_LPAD(:VMODELO_ID, 6, '0')||' INATIVADO VIA AUTOMACAO (NENHUM PRECO ENCONTRADO)'));

        END ELSE
        IF (:VCORES = '[]') THEN
        BEGIN

            :VSTATUS = 0;

            EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', :VCATALOGO_PRODUTO_ID, ('MODELO '||FN_LPAD(:VMODELO_ID, 6, '0')||' INATIVADO VIA AUTOMACAO (NENHUMA COR ENCONTRADA)'));

        END ELSE
        IF (:VTAMANHOS = '[]') THEN
        BEGIN

            :VSTATUS = 0;

            EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', :VCATALOGO_PRODUTO_ID, ('MODELO '||FN_LPAD(:VMODELO_ID, 6, '0')||' INATIVADO VIA AUTOMACAO (NENHUM TAMANHO ENCONTRADO)'));

        END


        UPDATE TBCATALOGO_PRODUTO_IMPORT
            SET MODELO_DESCRICAO = :VMODELO_DESCRICAO,
                CORES = :VCORES,
                PRODUTOS = :VPRODUTOS,
                TAMANHOS = :VTAMANHOS,
                PRECO_VENDA = :VPRECO_VENDA,
                PRECO_RECOMENDADO = :VPRECO_RECOMENDADO,
                STATUS = :VSTATUS

            WHERE ID = :VID
            AND CATALOGO_PRODUTO_ID = :VCATALOGO_PRODUTO_ID;
         
    END
END
^

SET TERM ; ^

/******************************************************************************/
/******************************************************************************/

INSERT INTO TBSQL (DESCRICAO, SQL)
    VALUES ('ATUALIZAR MODELOS DOS CATALOGOS DE VENDA DA 12461', 'EXECUTE PROCEDURE SPU_CATALOGO_PRODUTO_IMPORT(0);');


INSERT INTO TBAGENDAMENTO_SQL (DESCRICAO, TIPO, HORAINICIO, HORAFIM, INTERVALO, SQL_ID, STATUS, SEG, TER, QUA, QUI, SEX, SAB, DOM, DIA, REPETIVEL)
    VALUES ('ATUALIZAR MODELOS DOS CATALOGOS DE VENDA DA 12461', 'D', '06:30:00', '07:30:00', 0, COALESCE((SELECT FIRST 1 X.ID FROM TBSQL X WHERE X.DESCRICAO = 'ATUALIZAR MODELOS DOS CATALOGOS DE VENDA DA 12461'), 0), 1, 1, 1, 1, 1, 1, 1, 1, 0, 0);

/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


CREATE GENERATOR GTBCATALOGO_PRODUTO_ENTREGA;

CREATE TABLE TBCATALOGO_PRODUTO_ENTREGA (
    ID                   INTEGER NOT NULL,
    CATALOGO_PRODUTO_ID  INTEGER,
    UF                   VARCHAR(2),
    CIDADE_ID            INTEGER,
    VALOR_TAXA           NUMERIC(15,2),
    OBSERVACAO           VARCHAR(500),
    TIPO_FRETE           INTEGER,
    TRANSPORTADORA_ID    INTEGER
);




/******************************************************************************/
/****                             Primary keys                             ****/
/******************************************************************************/

ALTER TABLE TBCATALOGO_PRODUTO_ENTREGA ADD CONSTRAINT PK_TBCATALOGO_PRODUTO_ENTREGA PRIMARY KEY (ID);


/******************************************************************************/
/****                               Indices                                ****/
/******************************************************************************/

CREATE INDEX ITBCATALOGO_PRODUTO_ENTREGA_01 ON TBCATALOGO_PRODUTO_ENTREGA (CATALOGO_PRODUTO_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_ENTREGA_02 ON TBCATALOGO_PRODUTO_ENTREGA (UF);
CREATE INDEX ITBCATALOGO_PRODUTO_ENTREGA_03 ON TBCATALOGO_PRODUTO_ENTREGA (CIDADE_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_ENTREGA_04 ON TBCATALOGO_PRODUTO_ENTREGA (TIPO_FRETE);
CREATE INDEX ITBCATALOGO_PRODUTO_ENTREGA_05 ON TBCATALOGO_PRODUTO_ENTREGA (TRANSPORTADORA_ID);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/



SET TERM ^ ;



/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: TTBCATALOGO_PROD_ENTREGA_B01D */
CREATE OR ALTER TRIGGER TTBCATALOGO_PROD_ENTREGA_B01D FOR TBCATALOGO_PRODUTO_ENTREGA
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE OLD_CIDADE VARCHAR(500);
BEGIN

    :HISTORICO = '';

    :OLD_CIDADE = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCIDADE A WHERE A.ID = OLD.CIDADE_ID), '');

    IF (OLD.ID > 0) THEN
    BEGIN
        :HISTORICO = :HISTORICO||'TAXA DE R$'||FN_FORMAT_NUMBER2(OLD.VALOR_TAXA, 2)||' PARA '||:OLD_CIDADE||'('||OLD.UF||') EXCLUIDA';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, :HISTORICO);
    END
END
^


/* Trigger: TTBCATALOGO_PROD_ENTREGA_B01I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PROD_ENTREGA_B01I FOR TBCATALOGO_PRODUTO_ENTREGA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    IF (NEW.ID IS NULL) THEN
        NEW.ID = GEN_ID(GTBCATALOGO_PRODUTO_ENTREGA, 1);
END
^


/* Trigger: TTBCATALOGO_PROD_ENTREGA_B01IU */
CREATE OR ALTER TRIGGER TTBCATALOGO_PROD_ENTREGA_B01IU FOR TBCATALOGO_PRODUTO_ENTREGA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE PROD_ENTREGA_ID INTEGER;
BEGIN

    IF (INSERTING) THEN
    BEGIN

        :PROD_ENTREGA_ID = COALESCE((SELECT FIRST 1
                                        T.ID

                                    FROM TBCATALOGO_PRODUTO_ENTREGA T
                                    WHERE T.CATALOGO_PRODUTO_ID = NEW.CATALOGO_PRODUTO_ID
                                    AND T.TIPO_FRETE = NEW.TIPO_FRETE
                                    AND T.UF = NEW.UF
                                    AND T.CIDADE_ID = NEW.CIDADE_ID
                                    AND T.TRANSPORTADORA_ID = NEW.TRANSPORTADORA_ID), 0);

        IF (:PROD_ENTREGA_ID > 0) THEN
        BEGIN
            EXCEPTION "..." 'JÁ EXISTE UM REGISTRO COM A MESMA COMBINAÇÃO DE DADOS INFORMADOS. INCLUSÃO NÃO AUTORIZADA!';
        END

    END ELSE
    IF (UPDATING) THEN
    BEGIN

        :PROD_ENTREGA_ID = COALESCE((SELECT FIRST 1
                                        T.ID

                                    FROM TBCATALOGO_PRODUTO_ENTREGA T
                                    WHERE T.CATALOGO_PRODUTO_ID = NEW.CATALOGO_PRODUTO_ID
                                    AND T.ID <> NEW.ID
                                    AND T.TIPO_FRETE = NEW.TIPO_FRETE
                                    AND T.UF = NEW.UF
                                    AND T.CIDADE_ID = NEW.CIDADE_ID
                                    AND T.TRANSPORTADORA_ID = NEW.TRANSPORTADORA_ID), 0);

        IF (:PROD_ENTREGA_ID > 0) THEN
        BEGIN
            EXCEPTION "..." 'JÁ EXISTE UM REGISTRO COM A MESMA COMBINAÇÃO DE DADOS INFORMADOS. ALTERAÇÃO NÃO AUTORIZADA!';
        END

    END

END
^


/* Trigger: TTBCATALOGO_PROD_ENTREGA_B01U */
CREATE OR ALTER TRIGGER TTBCATALOGO_PROD_ENTREGA_B01U FOR TBCATALOGO_PRODUTO_ENTREGA
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_CIDADE VARCHAR(500);
DECLARE VARIABLE NEW_CIDADE VARCHAR(500);
DECLARE VARIABLE OLD_TRANSPORTADORA VARCHAR(500);
DECLARE VARIABLE NEW_TRANSPORTADORA VARCHAR(500);
BEGIN

    :HISTORICO = '';

    :OLD_CIDADE = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCIDADE A WHERE A.ID = OLD.CIDADE_ID), '');
    :NEW_CIDADE = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCIDADE A WHERE A.ID = NEW.CIDADE_ID), '');
    :OLD_TRANSPORTADORA = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 4, '0')||' - '||b.RAZAOSOCIAL FROM TBTRANSPORTADORA B WHERE B.CODIGO = OLD.TRANSPORTADORA_ID), '');
    :NEW_TRANSPORTADORA = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 4, '0')||' - '||b.RAZAOSOCIAL FROM TBTRANSPORTADORA B WHERE B.CODIGO = NEW.TRANSPORTADORA_ID), '');

    IF (OLD.UF IS DISTINCT FROM NEW.UF) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' UF:'||OLD.UF||'->'||NEW.UF;
    END

    IF (OLD.CIDADE_ID IS DISTINCT FROM NEW.CIDADE_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' CIDADE:'||:OLD_CIDADE||'->'||:NEW_CIDADE;
    END

    IF (OLD.TIPO_FRETE IS DISTINCT FROM NEW.TIPO_FRETE) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' FRETE:'||OLD.TIPO_FRETE||'->'||NEW.TIPO_FRETE;
    END

    IF (OLD.TRANSPORTADORA_ID IS DISTINCT FROM NEW.TRANSPORTADORA_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' TRANPORTADORA:'||OLD_TRANSPORTADORA||'->'||NEW_TRANSPORTADORA;
    END

    IF (OLD.VALOR_TAXA IS DISTINCT FROM NEW.VALOR_TAXA) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' VL.TAXA:'||FN_FORMAT_NUMBER2(OLD.VALOR_TAXA, 2)||'->'||FN_FORMAT_NUMBER2(NEW.VALOR_TAXA, 2);
    END

    IF (OLD.OBSERVACAO IS DISTINCT FROM NEW.OBSERVACAO) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' OBSERVACOES ALTERADAS!';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        :HISTORICO = 'TAXA DE R$'||FN_FORMAT_NUMBER2(NEW.VALOR_TAXA, 2)||' PARA '||:NEW_CIDADE||'('||NEW.UF||') ALTERADA:'||:HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, FN_ELIPSE(:HISTORICO, 500));
    END
END
^


/* Trigger: TTBCATALOGO_PROD_ENTREGA_B02I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PROD_ENTREGA_B02I FOR TBCATALOGO_PRODUTO_ENTREGA
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE NEW_CIDADE VARCHAR(500);
BEGIN

    :HISTORICO = '';

    :NEW_CIDADE = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCIDADE A WHERE A.ID = NEW.CIDADE_ID), '');

    IF (NEW.ID > 0) THEN
    BEGIN
        :HISTORICO = :HISTORICO||'TAXA DE R$'||FN_FORMAT_NUMBER2(NEW.VALOR_TAXA, 2)||' PARA '||:NEW_CIDADE||'('||NEW.UF||') INCLUIDA';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', NEW.CATALOGO_PRODUTO_ID, :HISTORICO);
    END
END
^

SET TERM ; ^
