SET TERM ^ ;

CREATE OR ALTER procedure SPC_MODELO_CONSUMO_RELATORIO (
    MODELO_ID integer not null)
returns (
    MODELO_CODIGO integer,
    MODELO_DESC varchar(100),
    COR_ID integer,
    PRODUTO_ID integer,
    PRODUTO_COR_ID integer,
    TAM integer,
    SETOR_ID integer,
    MODELO_ORIGEM integer,
    PRODUTO_ORIGEM integer,
    TAM_ORIGEM integer,
    MODELO_DESTINO integer,
    PRODUTO_DESTINO integer,
    TAM_DESTINO integer,
    MATRIZ_ID integer,
    VALOR_BASE numeric(15,8),
    NIVEL integer,
    FLAG char(10),
    CONSUMO_QUANTIDADE_T01 numeric(15,8),
    CONSUMO_QUANTIDADE_T02 numeric(15,8),
    CONSUMO_QUANTIDADE_T03 numeric(15,8),
    CONSUMO_QUANTIDADE_T04 numeric(15,8),
    CONSUMO_QUANTIDADE_T05 numeric(15,8),
    CONSUMO_QUANTIDADE_T06 numeric(15,8),
    CONSUMO_QUANTIDADE_T07 numeric(15,8),
    CONSUMO_QUANTIDADE_T08 numeric(15,8),
    CONSUMO_QUANTIDADE_T09 numeric(15,8),
    CONSUMO_QUANTIDADE_T10 numeric(15,8),
    CONSUMO_QUANTIDADE_T11 numeric(15,8),
    CONSUMO_QUANTIDADE_T12 numeric(15,8),
    CONSUMO_QUANTIDADE_T13 numeric(15,8),
    CONSUMO_QUANTIDADE_T14 numeric(15,8),
    CONSUMO_QUANTIDADE_T15 numeric(15,8),
    CONSUMO_QUANTIDADE_T16 numeric(15,8),
    CONSUMO_QUANTIDADE_T17 numeric(15,8),
    CONSUMO_QUANTIDADE_T18 numeric(15,8),
    CONSUMO_QUANTIDADE_T19 numeric(15,8),
    CONSUMO_QUANTIDADE_T20 numeric(15,8),
    CONSUMO_QUANTIDADE numeric(15,8),
    OBSERVACAO varchar(200),
    FATOR_CONVERSAO numeric(15,8),
    PERCENTUAL_CONSUMO integer,
    ALOCACAO char(10),
    FATOR_MATRIZ numeric(15,4),
    HABILITA_GERAR_CONSUMO char(10),
    ROTULO varchar(50),
    ID integer,
    QTD_REG bigint,
    INC_GRUPO_PRODUTO char(10),
    GRUPO_PRODUTO_ID integer,
    AGRUPAMENTO_ID integer,
    PECA_CONJUNTO integer,
    TIPO integer,
    DESC_PRODUTO2 varchar(200),
    DESC_PRODUTO_UM2 varchar(250),
    NIVEL2 integer,
    UNIDADEMEDIDA_SIGLA varchar(10),
    GRADE_CODIGO integer,
    PRODUTO_COR integer,
    PRODUTO_FAMILIA integer,
    DESCRICAO_ORIGINAL_PRODUTO varchar(200),
    PRODUTO_STATUS char(10),
    MODELO_PRODUTO integer,
    FAMILIA_PRODUTO integer,
    FAMILIA_ALTERNATIVA_CODIGO integer,
    COR_PRODUTO_ORIGEM integer,
    DESCRICAO_ORIGINAL_PRODUTO2 varchar(200),
    LINHA_PRODUTO integer,
    PRODUTO_DESCRICAO varchar(200),
    DESC_PRODUTO varchar(200),
    PRODUTO_ORIGEM_DESCRICAO varchar(200),
    MODELO_ORIGEM_DESCRICAO varchar(200),
    MODELO_DESTINO_DESCRICAO varchar(200),
    PRODUTO_DESTINO_DESCRICAO varchar(200),
    COR_DESCRICAO varchar(200),
    COR_DESCRICAO2 varchar(200),
    SETOR_DESCRICAO varchar(200),
    DESC_UP varchar(200),
    MATRIZ_DESCRICAO varchar(200),
    STATUS char(10),
    DESC_TAM varchar(200),
    PESO numeric(15,4),
    DESC_MATRIZ varchar(200),
    GRADE_MODELO integer,
    GRADE_MODELO_ID integer,
    FAMILIA_ID integer,
    DESC_FAMILIA_ID varchar(50),
    FAMILIA_DESC varchar(200),
    DESC_FAMILIA varchar(200),
    DESC_GRUPO_PRODUTO_ID varchar(50),
    GRUPO_PRODUTO_DESC varchar(200),
    GRUPO_PRODUTO_GRADE_ID integer,
    GRUPO_PRODUTO_UM varchar(10),
    DESC_GRUPO_PRODUTO varchar(200))
as
BEGIN
    
    FOR
        SELECT
            X.MODELO_CODIGO,
            X.MODELO_DESC,
            X.COR_ID,
            X.PRODUTO_ID,
            X.PRODUTO_COR_ID,
            X.TAM,
            X.SETOR_ID,
            X.MODELO_ORIGEM,
            X.PRODUTO_ORIGEM,
            X.TAM_ORIGEM,
            X.MODELO_DESTINO,
            X.PRODUTO_DESTINO,
            X.TAM_DESTINO,
            X.MATRIZ_ID,
            X.VALOR_BASE,
            X.NIVEL,
            X.FLAG,
            X.CONSUMO_QUANTIDADE_T01,
            X.CONSUMO_QUANTIDADE_T02,
            X.CONSUMO_QUANTIDADE_T03,
            X.CONSUMO_QUANTIDADE_T04,
            X.CONSUMO_QUANTIDADE_T05,
            X.CONSUMO_QUANTIDADE_T06,
            X.CONSUMO_QUANTIDADE_T07,
            X.CONSUMO_QUANTIDADE_T08,
            X.CONSUMO_QUANTIDADE_T09,
            X.CONSUMO_QUANTIDADE_T10,
            X.CONSUMO_QUANTIDADE_T11,
            X.CONSUMO_QUANTIDADE_T12,
            X.CONSUMO_QUANTIDADE_T13,
            X.CONSUMO_QUANTIDADE_T14,
            X.CONSUMO_QUANTIDADE_T15,
            X.CONSUMO_QUANTIDADE_T16,
            X.CONSUMO_QUANTIDADE_T17,
            X.CONSUMO_QUANTIDADE_T18,
            X.CONSUMO_QUANTIDADE_T19,
            X.CONSUMO_QUANTIDADE_T20,
            X.CONSUMO_QUANTIDADE,
            X.OBSERVACAO,
            X.FATOR_CONVERSAO,
            X.PERCENTUAL_CONSUMO,
            X.ALOCACAO,
            X.FATOR_MATRIZ,
            X.HABILITA_GERAR_CONSUMO,
            X.ROTULO,
            X.ID,
            X.QTD_REG,
            X.INC_GRUPO_PRODUTO,
            X.GRUPO_PRODUTO_ID,
            X.AGRUPAMENTO_ID,
            X.PECA_CONJUNTO,
            X.TIPO,
        
            IIF(X.INC_GRUPO_PRODUTO = '1', '*GRUPO: '||FN_LPAD(L.ID, 7, '0')||' - '||L.DESCRICAO, IIF(X.INC_GRUPO_PRODUTO = '2', '*'||FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO, FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO)) AS DESC_PRODUTO2,
            IIF(X.INC_GRUPO_PRODUTO = '1', '*GRUPO: '||FN_LPAD(L.ID, 7, '0')||' - '||L.DESCRICAO||' / '||L.UNIDADEMEDIDA_SIGLA, IIF(X.INC_GRUPO_PRODUTO = '2', '*'||FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO||' / '||G.UNIDADEMEDIDA_SIGLA, FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO||' / '||G.UNIDADEMEDIDA_SIGLA)) AS DESC_PRODUTO_UM2,
            X.NIVEL AS NIVEL2,
        
            G.UNIDADEMEDIDA_SIGLA,   
            G.GRADE_CODIGO,
            G.COR_CODIGO AS PRODUTO_COR,
            G.FAMILIA_CODIGO AS PRODUTO_FAMILIA,
            G.DESCRICAO AS DESCRICAO_ORIGINAL_PRODUTO,
            G.STATUS AS PRODUTO_STATUS,
            G.MODELO_CODIGO AS MODELO_PRODUTO,
            G.FAMILIA_CODIGO AS FAMILIA_PRODUTO,
            G.FAMILIA_ALTERNATIVA AS FAMILIA_ALTERNATIVA_CODIGO,
            COALESCE(G.COR_CODIGO, 0) AS COR_PRODUTO_ORIGEM,
        
            IIF(X.INC_GRUPO_PRODUTO = '1', '*GRUPO: '||L.DESCRICAO, IIF(X.INC_GRUPO_PRODUTO = '2', '*'||G.DESCRICAO, G.DESCRICAO)) AS DESCRICAO_ORIGINAL_PRODUTO2,
        
            COALESCE(I.CODIGO, 0) AS LINHA_PRODUTO,
        
            FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO||' / '||G.UNIDADEMEDIDA_SIGLA AS PRODUTO_DESCRICAO,
            FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO AS DESC_PRODUTO,
        
            IIF(X.PRODUTO_ORIGEM > 0, (SELECT FIRST 1 FN_LPAD(P.CODIGO, 7, '0')||' - '||P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = X.PRODUTO_ORIGEM), FN_LPAD(X.PRODUTO_ID, 7, '0')||' - '||G.DESCRICAO) AS PRODUTO_ORIGEM_DESCRICAO,
        
            (SELECT FIRST 1 FN_LPAD(X.MODELO_ORIGEM, 6, '0')||' - '||Y.DESCRICAO FROM TBMODELO Y WHERE Y.CODIGO = X.MODELO_ORIGEM) AS MODELO_ORIGEM_DESCRICAO,
            COALESCE((SELECT FIRST 1 FN_LPAD(X.MODELO_DESTINO, 6, '0')||' - '||Y.DESCRICAO FROM TBMODELO Y WHERE Y.CODIGO = X.MODELO_DESTINO), '') AS MODELO_DESTINO_DESCRICAO,
            COALESCE((SELECT FIRST 1 FN_LPAD(X.PRODUTO_DESTINO, 7, '0')||' - '||Y.DESCRICAO FROM TBPRODUTO Y WHERE Y.CODIGO = X.PRODUTO_DESTINO), '') AS PRODUTO_DESTINO_DESCRICAO,
        
            COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO FROM TBCOR C WHERE X.COR_ID = C.CODIGO), '') AS COR_DESCRICAO,
            IIF(X.INC_GRUPO_PRODUTO = '1', ' VÁRIAS', COALESCE((SELECT FIRST 1 C.DESCRICAO FROM TBCOR C WHERE X.COR_ID = C.CODIGO), ' TODAS')) AS COR_DESCRICAO2,
            (SELECT FIRST 1 Y.DESCRICAO FROM TBSETOR Y WHERE X.SETOR_ID = Y.CODIGO) AS SETOR_DESCRICAO,
            (SELECT FIRST 1 FN_LPAD(Z.ID, 4, '0')||' - '||Z.DESCRICAO FROM TBUP Z WHERE Z.ID = X.SETOR_ID) AS DESC_UP,
            (SELECT FIRST 1 Y.DESCRICAO FROM TBMATRIZ Y WHERE Y.CODIGO = X.MATRIZ_ID) AS MATRIZ_DESCRICAO,
            COALESCE((SELECT FIRST 1 Y.STATUS FROM TBCOR Y WHERE Y.CODIGO = X.COR_ID), '1') AS STATUS,
            IIF(((X.INC_GRUPO_PRODUTO = '1') OR (X.INC_GRUPO_PRODUTO = '2')), '', (SELECT FIRST 1 Y.TAMANHO_DESCRICAO FROM (SELECT TAMANHO, TAMANHO_DESCRICAO FROM SP_GRADE_MODELO(X.PRODUTO_ID)) Y WHERE Y.TAMANHO = X.TAM)) AS DESC_TAM,
            (SELECT FIRST 1 CAST(Y.PESOLIQUIDO AS NUMERIC(15,4)) FROM TBPRODUTO_FICHA Y WHERE X.PRODUTO_ID = Y.PRODUTO_CODIGO) AS PESO,
            FN_LPAD(X.MATRIZ_ID, 4, '0')||' - '||(SELECT FIRST 1 Y.DESCRICAO FROM TBMATRIZ Y WHERE Y.CODIGO = X.MATRIZ_ID) AS DESC_MATRIZ,
        
            COALESCE((SELECT FIRST 1 Y.GRADE_CODIGO FROM TBMODELO Y WHERE Y.CODIGO = G.MODELO_CODIGO), 0) AS GRADE_MODELO,
            COALESCE((SELECT FIRST 1 Y.GRADE_CODIGO FROM TBMODELO Y WHERE Y.CODIGO = G.MODELO_CODIGO), 0) AS GRADE_MODELO_ID,
        
            IIF(X.GRUPO_PRODUTO_ID > 0, L.FAMILIA_ID, G.FAMILIA_CODIGO) AS FAMILIA_ID,
            IIF(X.GRUPO_PRODUTO_ID > 0, (SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0') FROM TBFAMILIA D WHERE D.CODIGO = L.FAMILIA_ID), (SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0') FROM TBFAMILIA D WHERE D.CODIGO = G.FAMILIA_CODIGO)) AS DESC_FAMILIA_ID,
            IIF(X.GRUPO_PRODUTO_ID > 0, (SELECT FIRST 1 D.DESCRICAO FROM TBFAMILIA D WHERE D.CODIGO = L.FAMILIA_ID), (SELECT FIRST 1 D.DESCRICAO FROM TBFAMILIA D WHERE D.CODIGO = G.FAMILIA_CODIGO)) AS FAMILIA_DESC,
            IIF(X.GRUPO_PRODUTO_ID > 0, (SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0')||' - '||D.DESCRICAO FROM TBFAMILIA D WHERE D.CODIGO = L.FAMILIA_ID), (SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0')||' - '||D.DESCRICAO FROM TBFAMILIA D WHERE D.CODIGO = G.FAMILIA_CODIGO)) AS DESC_FAMILIA,
        
            FN_LPAD(L.ID, 7, '0') AS DESC_GRUPO_PRODUTO_ID,
            L.DESCRICAO AS GRUPO_PRODUTO_DESC,
            L.GRADE_ID AS GRUPO_PRODUTO_GRADE_ID,
            L.UNIDADEMEDIDA_SIGLA AS GRUPO_PRODUTO_UM,
            FN_LPAD(L.ID, 7, '0')||' - '||L.DESCRICAO AS DESC_GRUPO_PRODUTO
        
        FROM (
            SELECT
                T.MODELO_CODIGO,
                T.MODELO_DESC,
                T.COR_ID,
                T.PRODUTO_ID,
                T.PRODUTO_COR_ID,
                T.TAM,
                T.SETOR_ID,
                T.MODELO_ORIGEM,
                T.PRODUTO_ORIGEM,
                T.TAM_ORIGEM,
                T.MODELO_DESTINO,
                T.PRODUTO_DESTINO,
                T.TAM_DESTINO,
                T.MATRIZ_ID,
                T.VALOR_BASE,
                T.NIVEL,
                T.FLAG,
                T.CONSUMO_QUANTIDADE_T01,
                T.CONSUMO_QUANTIDADE_T02,
                T.CONSUMO_QUANTIDADE_T03,
                T.CONSUMO_QUANTIDADE_T04,
                T.CONSUMO_QUANTIDADE_T05,
                T.CONSUMO_QUANTIDADE_T06,
                T.CONSUMO_QUANTIDADE_T07,
                T.CONSUMO_QUANTIDADE_T08,
                T.CONSUMO_QUANTIDADE_T09,
                T.CONSUMO_QUANTIDADE_T10,
                T.CONSUMO_QUANTIDADE_T11,
                T.CONSUMO_QUANTIDADE_T12,
                T.CONSUMO_QUANTIDADE_T13,
                T.CONSUMO_QUANTIDADE_T14,
                T.CONSUMO_QUANTIDADE_T15,
                T.CONSUMO_QUANTIDADE_T16,
                T.CONSUMO_QUANTIDADE_T17,
                T.CONSUMO_QUANTIDADE_T18,
                T.CONSUMO_QUANTIDADE_T19,
                T.CONSUMO_QUANTIDADE_T20,
                T.CONSUMO_QUANTIDADE,
                T.OBSERVACAO,
                T.FATOR_CONVERSAO,
                T.PERCENTUAL_CONSUMO,
                T.ALOCACAO,
                T.FATOR_MATRIZ,
                T.HABILITA_GERAR_CONSUMO,
                FN_IS_EMPTY(T.ROTULO) AS ROTULO,
                T.ID,
                1 AS QTD_REG,
                T.INC_GRUPO_PRODUTO,
                T.GRUPO_PRODUTO_ID,
                T.AGRUPAMENTO_ID,
                T.PECA_CONJUNTO,
                T.TIPO
            
            FROM (
                SELECT
                    A.CODIGO AS MODELO_CODIGO,
                    A.DESCRICAO AS MODELO_DESC,
                
                    0 AS COR_ID,
                    C.CONSUMO_PRODUTO_CODIGO AS PRODUTO_ID,
                    B.COR_CODIGO AS PRODUTO_COR_ID,
                    C.TAM, 
                    C.SETOR_CODIGO AS SETOR_ID,
                    C.MODELO_ORIGEM, 
                    C.PRODUTO_ORIGEM, 
                    C.TAM_ORIGEM, 
                    C.MODELO_DESTINO, 
                    C.PRODUTO_DESTINO, 
                    C.TAM_DESTINO,
                    COALESCE(C.MATRIZ_ID, 0) AS MATRIZ_ID,
                    CAST(COALESCE(C.VALOR_BASE, 0) AS NUMERIC(15,8)) AS VALOR_BASE,
                    C.NIVEL,
                    C.FLAG,
                    CAST(C.CONSUMO_QUANTIDADE_T01 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T01, 
                    CAST(C.CONSUMO_QUANTIDADE_T02 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T02, 
                    CAST(C.CONSUMO_QUANTIDADE_T03 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T03, 
                    CAST(C.CONSUMO_QUANTIDADE_T04 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T04, 
                    CAST(C.CONSUMO_QUANTIDADE_T05 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T05, 
                    CAST(C.CONSUMO_QUANTIDADE_T06 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T06, 
                    CAST(C.CONSUMO_QUANTIDADE_T07 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T07, 
                    CAST(C.CONSUMO_QUANTIDADE_T08 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T08, 
                    CAST(C.CONSUMO_QUANTIDADE_T09 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T09, 
                    CAST(C.CONSUMO_QUANTIDADE_T10 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T10, 
                    CAST(C.CONSUMO_QUANTIDADE_T11 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T11, 
                    CAST(C.CONSUMO_QUANTIDADE_T12 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T12, 
                    CAST(C.CONSUMO_QUANTIDADE_T13 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T13, 
                    CAST(C.CONSUMO_QUANTIDADE_T14 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T14, 
                    CAST(C.CONSUMO_QUANTIDADE_T15 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T15, 
                    CAST(C.CONSUMO_QUANTIDADE_T16 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T16, 
                    CAST(C.CONSUMO_QUANTIDADE_T17 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T17, 
                    CAST(C.CONSUMO_QUANTIDADE_T18 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T18, 
                    CAST(C.CONSUMO_QUANTIDADE_T19 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T19, 
                    CAST(C.CONSUMO_QUANTIDADE_T20 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T20, 
                    CAST(C.CONSUMO_QUANTIDADE AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE, 
                    FN_IS_EMPTY(C.OBSERVACAO) AS OBSERVACAO,
                    CAST(C.FATOR_CONVERSAO AS NUMERIC(15,4)) AS FATOR_CONVERSAO,
                    C.PERCENTUAL_CONSUMO, 
                    C.ALOCACAO,
                    CAST(0 AS NUMERIC(15,4)) AS FATOR_MATRIZ,
                    C.HABILITA_GERAR_CONSUMO, 
                    FN_IS_EMPTY(C.ROTULO) AS ROTULO,
                    C.ID,
                    COALESCE(C.INC_GRUPO_PRODUTO, 0) AS INC_GRUPO_PRODUTO,
                    COALESCE(C.GRUPO_PRODUTO_ID, 0) AS GRUPO_PRODUTO_ID,
                    C.AGRUPAMENTO_ID,
                    C.PECA_CONJUNTO,
                
                    IIF(COALESCE(C.GRUPO_PRODUTO_ID, 0) > 0, 03, 01) AS TIPO
                
                FROM TBMODELO_CONSUMO C
                INNER JOIN TBMODELO A ON A.CODIGO = C.MODELO_CODIGO
                LEFT JOIN TBPRODUTO B ON B.CODIGO = C.CONSUMO_PRODUTO_CODIGO
                LEFT JOIN TBCOR E ON E.CODIGO = B.COR_CODIGO
                WHERE C.MODELO_CODIGO = :MODELO_ID
                
                UNION
                
                SELECT
                    A.CODIGO AS MODELO_CODIGO,
                    A.DESCRICAO AS MODELO_DESC,
                
                    CC.COR_ID, 
                    CC.PRODUTO_ID,
                    B.COR_CODIGO AS PRODUTO_COR_ID,
                    CC.TAM, 
                    CC.SETOR_ID, 
                    CC.MODELO_ORIGEM, 
                    CC.PRODUTO_ORIGEM, 
                    CC.TAM_ORIGEM, 
                    CC.MODELO_DESTINO, 
                    CC.PRODUTO_DESTINO, 
                    CC.TAM_DESTINO, 
                    COALESCE(CC.MATRIZ_ID, 0) AS MATRIZ_ID,
                    CAST(COALESCE(CC.VALOR_BASE, 0) AS NUMERIC(15,8)) AS VALOR_BASE,
                    CC.NIVEL, 
                    CC.FLAG,
                    CAST(CC.T01 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T01, 
                    CAST(CC.T02 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T02, 
                    CAST(CC.T03 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T03, 
                    CAST(CC.T04 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T04, 
                    CAST(CC.T05 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T05, 
                    CAST(CC.T06 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T06, 
                    CAST(CC.T07 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T07, 
                    CAST(CC.T08 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T08, 
                    CAST(CC.T09 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T09, 
                    CAST(CC.T10 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T10, 
                    CAST(CC.T11 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T11, 
                    CAST(CC.T12 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T12, 
                    CAST(CC.T13 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T13, 
                    CAST(CC.T14 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T14, 
                    CAST(CC.T15 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T15, 
                    CAST(CC.T16 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T16, 
                    CAST(CC.T17 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T17, 
                    CAST(CC.T18 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T18, 
                    CAST(CC.T19 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T19, 
                    CAST(CC.T20 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T20, 
                    CAST(CC.QUANTIDADE AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE,
                    FN_IS_EMPTY(CC.OBSERVACAO) AS OBSERVACAO,
                    CAST(CC.FATOR_CONVERSAO AS NUMERIC(15,4)) AS FATOR_CONVERSAO, 
                    CC.PERCENTUAL_CONSUMO, 
                    CC.ALOCACAO, 
                    CAST(CC.FATOR_MATRIZ AS NUMERIC(15,4)) AS FATOR_MATRIZ, 
                    CC.HABILITA_GERAR_CONSUMO, 
                    FN_IS_EMPTY('') AS ROTULO,
                    CC.ID, 
                    COALESCE(CC.INC_GRUPO_PRODUTO, 0) AS INC_GRUPO_PRODUTO,
                    COALESCE(CC.GRUPO_PRODUTO_ID, 0) AS GRUPO_PRODUTO_ID,
                    CC.AGRUPAMENTO_ID,
                    CC.PECA_CONJUNTO,
                
                    IIF(COALESCE(CC.GRUPO_PRODUTO_ID, 0) > 0, 04, 02) AS TIPO
                
                FROM TBMODELO_CONSUMO_COR CC
                INNER JOIN TBMODELO A ON A.CODIGO = CC.MODELO_ID
                LEFT JOIN TBPRODUTO B ON B.CODIGO = CC.PRODUTO_ID
                LEFT JOIN TBCOR D ON D.CODIGO = CC.COR_ID
                LEFT JOIN TBCOR E ON E.CODIGO = B.COR_CODIGO
                WHERE CC.MODELO_ID = :MODELO_ID
            
            ) T
            WHERE T.TIPO IN (1,2)
            
            UNION
            
            SELECT
                T.MODELO_CODIGO,
                T.MODELO_DESC,
            
                CAST(FN_ARRAY2(T.LIST_COR_ID, 1, '|') AS INTEGER) AS COR_ID,
                CAST(FN_ARRAY2(T.LIST_PRODUTO_ID, 1, '|') AS INTEGER) AS PRODUTO_ID,
                CAST(FN_ARRAY2(T.LIST_PRODUTO_COR_ID, 1, '|') AS INTEGER) AS PRODUTO_COR_ID,
                CAST(FN_ARRAY2(T.LIST_TAM, 1, '|') AS INTEGER) AS TAM,
                CAST(FN_ARRAY2(T.LIST_SETOR_ID, 1, '|') AS INTEGER) AS SETOR_ID,
                CAST(FN_ARRAY2(T.LIST_MODELO_ORIGEM, 1, '|') AS INTEGER) AS MODELO_ORIGEM,
                CAST(FN_ARRAY2(T.LIST_PRODUTO_ORIGEM, 1, '|') AS INTEGER) AS PRODUTO_ORIGEM,
                CAST(FN_ARRAY2(T.LIST_TAM_ORIGEM, 1, '|') AS INTEGER) AS TAM_ORIGEM,
                CAST(FN_ARRAY2(T.LIST_MODELO_DESTINO, 1, '|') AS INTEGER) AS MODELO_DESTINO,
                CAST(FN_ARRAY2(T.LIST_PRODUTO_DESTINO, 1, '|') AS INTEGER) AS PRODUTO_DESTINO,
                CAST(FN_ARRAY2(T.LIST_TAM_DESTINO, 1, '|') AS INTEGER) AS TAM_DESTINO,
                CAST(FN_ARRAY2(T.LIST_MATRIZ_ID, 1, '|') AS INTEGER) AS MATRIZ_ID,
                CAST(FN_ARRAY2(T.LIST_VALOR_BASE, 1, '|') AS NUMERIC(15,8)) AS VALOR_BASE,
                FN_ARRAY2(T.LIST_NIVEL, 1, '|') AS NIVEL,
                FN_ARRAY2(T.LIST_FLAG, 1, '|') AS FLAG,
            
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T01, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T01,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T02, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T02,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T03, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T03,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T04, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T04,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T05, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T05,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T06, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T06,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T07, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T07,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T08, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T08,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T09, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T09,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T10, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T10,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T11, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T11,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T12, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T12,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T13, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T13,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T14, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T14,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T15, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T15,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T16, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T16,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T17, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T17,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T18, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T18,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T19, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T19,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE_T20, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T20,
                CAST(FN_CALC_PRECISION_V2(T.SUM_CONSUMO_QUANTIDADE, T.QTD_REG, '/') AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE,
            
                FN_ARRAY2(T.LIST_OBSERVACAO, 1, '|') AS OBSERVACAO,
                CAST(FN_ARRAY2(T.LIST_FATOR_CONVERSAO, 1, '|') AS NUMERIC(15,4)) AS FATOR_CONVERSAO,
                CAST(FN_ARRAY2(T.LIST_PERCENTUAL_CONSUMO, 1, '|') AS INTEGER) AS PERCENTUAL_CONSUMO,
                FN_ARRAY2(T.LIST_ALOCACAO, 1, '|') AS ALOCACAO,
                CAST(FN_ARRAY2(T.LIST_FATOR_MATRIZ, 1, '|') AS NUMERIC(15,4)) AS FATOR_MATRIZ,
                FN_ARRAY2(T.LIST_HABILITA_GERAR_CONSUMO, 1, '|') AS HABILITA_GERAR_CONSUMO,
                FN_IS_EMPTY(FN_ARRAY2(T.LIST_ROTULO, 1, '|')) AS ROTULO,
                CAST(FN_ARRAY2(T.LIST_ID, 1, '|') AS INTEGER) AS ID,
                T.QTD_REG,
                FN_ARRAY2(T.LIST_INC_GRUPO_PRODUTO, 1, '|') AS INC_GRUPO_PRODUTO,
            
                T.GRUPO_PRODUTO_ID,
                T.AGRUPAMENTO_ID,
                T.PECA_CONJUNTO,
                T.TIPO
            
            FROM (
                SELECT
                    T.MODELO_CODIGO,
                    T.MODELO_DESC,
                    LIST(T.COR_ID, '|') AS LIST_COR_ID,
                    LIST(T.PRODUTO_ID, '|') AS LIST_PRODUTO_ID,
                    LIST(T.PRODUTO_COR_ID, '|') AS LIST_PRODUTO_COR_ID,
                    LIST(T.TAM, '|') AS LIST_TAM,
                    LIST(T.SETOR_ID, '|') AS LIST_SETOR_ID,
                    LIST(T.MODELO_ORIGEM, '|') AS LIST_MODELO_ORIGEM,
                    LIST(T.PRODUTO_ORIGEM, '|') AS LIST_PRODUTO_ORIGEM,
                    LIST(T.TAM_ORIGEM, '|') AS LIST_TAM_ORIGEM,
                    LIST(T.MODELO_DESTINO, '|') AS LIST_MODELO_DESTINO,
                    LIST(T.PRODUTO_DESTINO, '|') AS LIST_PRODUTO_DESTINO,
                    LIST(T.TAM_DESTINO, '|') AS LIST_TAM_DESTINO,
                    LIST(T.MATRIZ_ID, '|') AS LIST_MATRIZ_ID,
                    LIST(T.VALOR_BASE, '|') AS LIST_VALOR_BASE,
                    LIST(T.NIVEL, '|') AS LIST_NIVEL,
                    LIST(T.FLAG, '|') AS LIST_FLAG,
                    SUM(T.CONSUMO_QUANTIDADE_T01) AS SUM_CONSUMO_QUANTIDADE_T01,
                    SUM(T.CONSUMO_QUANTIDADE_T02) AS SUM_CONSUMO_QUANTIDADE_T02,
                    SUM(T.CONSUMO_QUANTIDADE_T03) AS SUM_CONSUMO_QUANTIDADE_T03,
                    SUM(T.CONSUMO_QUANTIDADE_T04) AS SUM_CONSUMO_QUANTIDADE_T04,
                    SUM(T.CONSUMO_QUANTIDADE_T05) AS SUM_CONSUMO_QUANTIDADE_T05,
                    SUM(T.CONSUMO_QUANTIDADE_T06) AS SUM_CONSUMO_QUANTIDADE_T06,
                    SUM(T.CONSUMO_QUANTIDADE_T07) AS SUM_CONSUMO_QUANTIDADE_T07,
                    SUM(T.CONSUMO_QUANTIDADE_T08) AS SUM_CONSUMO_QUANTIDADE_T08,
                    SUM(T.CONSUMO_QUANTIDADE_T09) AS SUM_CONSUMO_QUANTIDADE_T09,
                    SUM(T.CONSUMO_QUANTIDADE_T10) AS SUM_CONSUMO_QUANTIDADE_T10,
                    SUM(T.CONSUMO_QUANTIDADE_T11) AS SUM_CONSUMO_QUANTIDADE_T11,
                    SUM(T.CONSUMO_QUANTIDADE_T12) AS SUM_CONSUMO_QUANTIDADE_T12,
                    SUM(T.CONSUMO_QUANTIDADE_T13) AS SUM_CONSUMO_QUANTIDADE_T13,
                    SUM(T.CONSUMO_QUANTIDADE_T14) AS SUM_CONSUMO_QUANTIDADE_T14,
                    SUM(T.CONSUMO_QUANTIDADE_T15) AS SUM_CONSUMO_QUANTIDADE_T15,
                    SUM(T.CONSUMO_QUANTIDADE_T16) AS SUM_CONSUMO_QUANTIDADE_T16,
                    SUM(T.CONSUMO_QUANTIDADE_T17) AS SUM_CONSUMO_QUANTIDADE_T17,
                    SUM(T.CONSUMO_QUANTIDADE_T18) AS SUM_CONSUMO_QUANTIDADE_T18,
                    SUM(T.CONSUMO_QUANTIDADE_T19) AS SUM_CONSUMO_QUANTIDADE_T19,
                    SUM(T.CONSUMO_QUANTIDADE_T20) AS SUM_CONSUMO_QUANTIDADE_T20,
                    SUM(T.CONSUMO_QUANTIDADE) AS SUM_CONSUMO_QUANTIDADE,
                    LIST(T.OBSERVACAO, '|') AS LIST_OBSERVACAO,
                    LIST(T.FATOR_CONVERSAO, '|') AS LIST_FATOR_CONVERSAO,
                    LIST(T.PERCENTUAL_CONSUMO, '|') AS LIST_PERCENTUAL_CONSUMO,
                    LIST(T.ALOCACAO, '|') AS LIST_ALOCACAO,
                    LIST(T.FATOR_MATRIZ, '|') AS LIST_FATOR_MATRIZ,
                    LIST(T.HABILITA_GERAR_CONSUMO, '|') AS LIST_HABILITA_GERAR_CONSUMO,
                    LIST(T.ROTULO, '|') AS LIST_ROTULO,
                    LIST(T.ID, '|') AS LIST_ID,
                    COUNT(DISTINCT T.COR_ID) AS QTD_REG,
                    LIST(T.INC_GRUPO_PRODUTO, '|') AS LIST_INC_GRUPO_PRODUTO,
                    T.GRUPO_PRODUTO_ID,
                    T.AGRUPAMENTO_ID,
                    T.PECA_CONJUNTO,
                    T.TIPO    
                
                FROM (
                    SELECT
                        A.CODIGO AS MODELO_CODIGO,
                        A.DESCRICAO AS MODELO_DESC,
                    
                        0 AS COR_ID,
                        C.CONSUMO_PRODUTO_CODIGO AS PRODUTO_ID,
                        B.COR_CODIGO AS PRODUTO_COR_ID,
                        C.TAM, 
                        C.SETOR_CODIGO AS SETOR_ID,
                        C.MODELO_ORIGEM, 
                        C.PRODUTO_ORIGEM, 
                        C.TAM_ORIGEM, 
                        C.MODELO_DESTINO, 
                        C.PRODUTO_DESTINO, 
                        C.TAM_DESTINO,
                        COALESCE(C.MATRIZ_ID, 0) AS MATRIZ_ID,
                        CAST(COALESCE(C.VALOR_BASE, 0) AS NUMERIC(15,8)) AS VALOR_BASE,
                        C.NIVEL,
                        C.FLAG,
                        CAST(C.CONSUMO_QUANTIDADE_T01 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T01, 
                        CAST(C.CONSUMO_QUANTIDADE_T02 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T02, 
                        CAST(C.CONSUMO_QUANTIDADE_T03 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T03, 
                        CAST(C.CONSUMO_QUANTIDADE_T04 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T04, 
                        CAST(C.CONSUMO_QUANTIDADE_T05 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T05, 
                        CAST(C.CONSUMO_QUANTIDADE_T06 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T06, 
                        CAST(C.CONSUMO_QUANTIDADE_T07 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T07, 
                        CAST(C.CONSUMO_QUANTIDADE_T08 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T08, 
                        CAST(C.CONSUMO_QUANTIDADE_T09 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T09, 
                        CAST(C.CONSUMO_QUANTIDADE_T10 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T10, 
                        CAST(C.CONSUMO_QUANTIDADE_T11 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T11, 
                        CAST(C.CONSUMO_QUANTIDADE_T12 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T12, 
                        CAST(C.CONSUMO_QUANTIDADE_T13 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T13, 
                        CAST(C.CONSUMO_QUANTIDADE_T14 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T14, 
                        CAST(C.CONSUMO_QUANTIDADE_T15 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T15, 
                        CAST(C.CONSUMO_QUANTIDADE_T16 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T16, 
                        CAST(C.CONSUMO_QUANTIDADE_T17 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T17, 
                        CAST(C.CONSUMO_QUANTIDADE_T18 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T18, 
                        CAST(C.CONSUMO_QUANTIDADE_T19 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T19, 
                        CAST(C.CONSUMO_QUANTIDADE_T20 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T20, 
                        CAST(C.CONSUMO_QUANTIDADE AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE, 
                        FN_IS_EMPTY(C.OBSERVACAO) AS OBSERVACAO,
                        CAST(C.FATOR_CONVERSAO AS NUMERIC(15,4)) AS FATOR_CONVERSAO,
                        C.PERCENTUAL_CONSUMO, 
                        C.ALOCACAO,
                        CAST(0 AS NUMERIC(15,4)) AS FATOR_MATRIZ,
                        C.HABILITA_GERAR_CONSUMO, 
                        FN_IS_EMPTY(C.ROTULO) AS ROTULO,
                        C.ID,
                        COALESCE(C.INC_GRUPO_PRODUTO, 0) AS INC_GRUPO_PRODUTO,
                        COALESCE(C.GRUPO_PRODUTO_ID, 0) AS GRUPO_PRODUTO_ID,
                        C.AGRUPAMENTO_ID,
                        C.PECA_CONJUNTO,
                    
                        IIF(COALESCE(C.GRUPO_PRODUTO_ID, 0) > 0, 03, 01) AS TIPO
                    
                    FROM TBMODELO_CONSUMO C
                    INNER JOIN TBMODELO A ON A.CODIGO = C.MODELO_CODIGO
                    LEFT JOIN TBPRODUTO B ON B.CODIGO = C.CONSUMO_PRODUTO_CODIGO
                    LEFT JOIN TBCOR E ON E.CODIGO = B.COR_CODIGO
                    WHERE C.MODELO_CODIGO = :MODELO_ID
                    
                    UNION
                    
                    SELECT
                        A.CODIGO AS MODELO_CODIGO,
                        A.DESCRICAO AS MODELO_DESC,
                    
                        CC.COR_ID, 
                        CC.PRODUTO_ID,
                        B.COR_CODIGO AS PRODUTO_COR_ID,
                        CC.TAM, 
                        CC.SETOR_ID, 
                        CC.MODELO_ORIGEM, 
                        CC.PRODUTO_ORIGEM, 
                        CC.TAM_ORIGEM, 
                        CC.MODELO_DESTINO, 
                        CC.PRODUTO_DESTINO, 
                        CC.TAM_DESTINO, 
                        COALESCE(CC.MATRIZ_ID, 0) AS MATRIZ_ID,
                        CAST(COALESCE(CC.VALOR_BASE, 0) AS NUMERIC(15,8)) AS VALOR_BASE,
                        CC.NIVEL, 
                        CC.FLAG,
                        CAST(CC.T01 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T01, 
                        CAST(CC.T02 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T02, 
                        CAST(CC.T03 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T03, 
                        CAST(CC.T04 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T04, 
                        CAST(CC.T05 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T05, 
                        CAST(CC.T06 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T06, 
                        CAST(CC.T07 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T07, 
                        CAST(CC.T08 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T08, 
                        CAST(CC.T09 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T09, 
                        CAST(CC.T10 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T10, 
                        CAST(CC.T11 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T11, 
                        CAST(CC.T12 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T12, 
                        CAST(CC.T13 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T13, 
                        CAST(CC.T14 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T14, 
                        CAST(CC.T15 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T15, 
                        CAST(CC.T16 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T16, 
                        CAST(CC.T17 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T17, 
                        CAST(CC.T18 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T18, 
                        CAST(CC.T19 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T19, 
                        CAST(CC.T20 AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE_T20, 
                        CAST(CC.QUANTIDADE AS NUMERIC(15,8)) AS CONSUMO_QUANTIDADE,
                        FN_IS_EMPTY(CC.OBSERVACAO) AS OBSERVACAO,
                        CAST(CC.FATOR_CONVERSAO AS NUMERIC(15,4)) AS FATOR_CONVERSAO, 
                        CC.PERCENTUAL_CONSUMO, 
                        CC.ALOCACAO, 
                        CAST(CC.FATOR_MATRIZ AS NUMERIC(15,4)) AS FATOR_MATRIZ, 
                        CC.HABILITA_GERAR_CONSUMO, 
                        FN_IS_EMPTY('') AS ROTULO,
                        CC.ID, 
                        COALESCE(CC.INC_GRUPO_PRODUTO, 0) AS INC_GRUPO_PRODUTO,
                        COALESCE(CC.GRUPO_PRODUTO_ID, 0) AS GRUPO_PRODUTO_ID,
                        CC.AGRUPAMENTO_ID,
                        CC.PECA_CONJUNTO,
                    
                        IIF(COALESCE(CC.GRUPO_PRODUTO_ID, 0) > 0, 04, 02) AS TIPO
                    
                    FROM TBMODELO_CONSUMO_COR CC
                    INNER JOIN TBMODELO A ON A.CODIGO = CC.MODELO_ID
                    LEFT JOIN TBPRODUTO B ON B.CODIGO = CC.PRODUTO_ID
                    LEFT JOIN TBCOR D ON D.CODIGO = CC.COR_ID
                    LEFT JOIN TBCOR E ON E.CODIGO = B.COR_CODIGO
                    WHERE CC.MODELO_ID = :MODELO_ID
                
                ) T
                WHERE T.TIPO IN (3,4)
                
                GROUP BY 
                    T.MODELO_CODIGO,
                    T.MODELO_DESC,
                    T.GRUPO_PRODUTO_ID,
                    T.AGRUPAMENTO_ID,
                    T.TIPO,
                    T.PECA_CONJUNTO
            
            ) T
        ) X
        INNER JOIN TBPRODUTO G ON G.CODIGO = X.PRODUTO_ID
        LEFT JOIN TBMODELO H ON H.CODIGO = G.MODELO_CODIGO
        LEFT JOIN TBMODELO_LINHA I ON I.CODIGO = H.LINHA_CODIGO
        LEFT JOIN TBFAMILIA J ON J.CODIGO = G.FAMILIA_CODIGO
        LEFT JOIN TBFAMILIA K ON K.CODIGO = G.FAMILIA_ALTERNATIVA
        LEFT JOIN TBGRUPO_PRODUTO L ON L.ID = X.GRUPO_PRODUTO_ID
        WHERE X.ID > 0

    INTO
        :MODELO_CODIGO,
        :MODELO_DESC,
        :COR_ID,
        :PRODUTO_ID,
        :PRODUTO_COR_ID,
        :TAM,
        :SETOR_ID,
        :MODELO_ORIGEM,
        :PRODUTO_ORIGEM,
        :TAM_ORIGEM,
        :MODELO_DESTINO,
        :PRODUTO_DESTINO,
        :TAM_DESTINO,
        :MATRIZ_ID,
        :VALOR_BASE,
        :NIVEL,
        :FLAG,
        :CONSUMO_QUANTIDADE_T01,
        :CONSUMO_QUANTIDADE_T02,
        :CONSUMO_QUANTIDADE_T03,
        :CONSUMO_QUANTIDADE_T04,
        :CONSUMO_QUANTIDADE_T05,
        :CONSUMO_QUANTIDADE_T06,
        :CONSUMO_QUANTIDADE_T07,
        :CONSUMO_QUANTIDADE_T08,
        :CONSUMO_QUANTIDADE_T09,
        :CONSUMO_QUANTIDADE_T10,
        :CONSUMO_QUANTIDADE_T11,
        :CONSUMO_QUANTIDADE_T12,
        :CONSUMO_QUANTIDADE_T13,
        :CONSUMO_QUANTIDADE_T14,
        :CONSUMO_QUANTIDADE_T15,
        :CONSUMO_QUANTIDADE_T16,
        :CONSUMO_QUANTIDADE_T17,
        :CONSUMO_QUANTIDADE_T18,
        :CONSUMO_QUANTIDADE_T19,
        :CONSUMO_QUANTIDADE_T20,
        :CONSUMO_QUANTIDADE,
        :OBSERVACAO,
        :FATOR_CONVERSAO,
        :PERCENTUAL_CONSUMO,
        :ALOCACAO,
        :FATOR_MATRIZ,
        :HABILITA_GERAR_CONSUMO,
        :ROTULO,
        :ID,
        :QTD_REG,
        :INC_GRUPO_PRODUTO,
        :GRUPO_PRODUTO_ID,
        :AGRUPAMENTO_ID,
        :PECA_CONJUNTO,
        :TIPO,
        :DESC_PRODUTO2,
        :DESC_PRODUTO_UM2,
        :NIVEL2,
        :UNIDADEMEDIDA_SIGLA,
        :GRADE_CODIGO,
        :PRODUTO_COR,
        :PRODUTO_FAMILIA,
        :DESCRICAO_ORIGINAL_PRODUTO,
        :PRODUTO_STATUS,
        :MODELO_PRODUTO,
        :FAMILIA_PRODUTO,
        :FAMILIA_ALTERNATIVA_CODIGO,
        :COR_PRODUTO_ORIGEM,
        :DESCRICAO_ORIGINAL_PRODUTO2,
        :LINHA_PRODUTO,
        :PRODUTO_DESCRICAO,
        :DESC_PRODUTO,
        :PRODUTO_ORIGEM_DESCRICAO,
        :MODELO_ORIGEM_DESCRICAO,
        :MODELO_DESTINO_DESCRICAO,
        :PRODUTO_DESTINO_DESCRICAO,
        :COR_DESCRICAO,
        :COR_DESCRICAO2,
        :SETOR_DESCRICAO,
        :DESC_UP,
        :MATRIZ_DESCRICAO,
        :STATUS,
        :DESC_TAM,
        :PESO,
        :DESC_MATRIZ,
        :GRADE_MODELO,
        :GRADE_MODELO_ID,
        :FAMILIA_ID,
        :DESC_FAMILIA_ID,
        :FAMILIA_DESC,
        :DESC_FAMILIA,
        :DESC_GRUPO_PRODUTO_ID,
        :GRUPO_PRODUTO_DESC,
        :GRUPO_PRODUTO_GRADE_ID,
        :GRUPO_PRODUTO_UM,
        :DESC_GRUPO_PRODUTO

    DO BEGIN

        SUSPEND;
    END
END
^

SET TERM ; ^

