SET TERM ^ ;

Create or Alter Procedure SPC_CUSTO_MODELO (
    MODELO integer,
    COR integer,
    TAMANHO integer)
Returns (
    VALOR_CUSTO numeric(15,5))
as
BEGIN

FOR SELECT
        SUM(VALOR_CUSTO)
        FROM (
                SELECT
                FN_CALC_PRECISION(PROJECAO,COALESCE(CUSTO,0.00000),'*') AS VALOR_CUSTO
                FROM (
                        SELECT
                        PRODUTO_ID,
                        TAMANHO,
                        PROJECAO,
                        FN_CALC_PRECISION(
                        FN_CALC_PRECISION(
                        FN_CALC_PRECISION(
                        FN_CALC_PRECISION(
                        FN_CALC_PRECISION(CUSTO_MEDIO,(COALESCE(IMPOSTO_CUSTO,0.0000)/100.00+1),'*'),
                                         (COALESCE(ICMS,0.0000)/100.00+1),'*'),
                                         (COALESCE(IPI,0.0000)/100.00+1),'*'),
                                         (COALESCE(FRETE,0.0000)/100.00+1),'*'),
                                         (COALESCE(FINANCEIRO,0.0000)/100.00+1),'*') AS CUSTO

                        FROM (
                                SELECT
                                 PRODUTO_ID,
                                 TAMANHO,
                                 PROJECAO,
                                 IIF(TAMANHO= 0, PC.CUSTOUNITARIO_MEDIO,
                                 IIF(TAMANHO= 1, IIF(PC.T01>0,PC.T01,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 2, IIF(PC.T02>0,PC.T02,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 3, IIF(PC.T03>0,PC.T03,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 4, IIF(PC.T04>0,PC.T04,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 5, IIF(PC.T05>0,PC.T05,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 6, IIF(PC.T06>0,PC.T06,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 7, IIF(PC.T07>0,PC.T07,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 8, IIF(PC.T08>0,PC.T08,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO= 9, IIF(PC.T09>0,PC.T09,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=10, IIF(PC.T10>0,PC.T10,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=11, IIF(PC.T11>0,PC.T11,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=12, IIF(PC.T12>0,PC.T12,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=13, IIF(PC.T13>0,PC.T13,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=14, IIF(PC.T14>0,PC.T14,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=15, IIF(PC.T15>0,PC.T15,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=16, IIF(PC.T16>0,PC.T16,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=17, IIF(PC.T17>0,PC.T17,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=18, IIF(PC.T18>0,PC.T18,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=19, IIF(PC.T19>0,PC.T19,PC.CUSTOUNITARIO_MEDIO),
                                 IIF(TAMANHO=20, IIF(PC.T20>0,PC.T20,PC.CUSTOUNITARIO_MEDIO),0.0000))))))))))))))))))))) CUSTO_MEDIO,
                                 PC.IMPOSTO_CUSTO,
                                 PC.ICMS,
                                 PC.IPI,
                                 PC.FRETE,
                                 PC.FINANCEIRO
                                
                                FROM (
                                   SELECT B.ID,
                                          B.CONSUMO_PRODUTO_CODIGO AS PRODUTO_ID,
                                          B.TAM AS TAMANHO,
                                          CAST((
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 0) AND (B.CONSUMO_QUANTIDADE     > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 1) AND (B.CONSUMO_QUANTIDADE_T01 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 2) AND (B.CONSUMO_QUANTIDADE_T02 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 3) AND (B.CONSUMO_QUANTIDADE_T03 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 4) AND (B.CONSUMO_QUANTIDADE_T04 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 5) AND (B.CONSUMO_QUANTIDADE_T05 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 6) AND (B.CONSUMO_QUANTIDADE_T06 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 7) AND (B.CONSUMO_QUANTIDADE_T07 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 8) AND (B.CONSUMO_QUANTIDADE_T08 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 9) AND (B.CONSUMO_QUANTIDADE_T09 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=10) AND (B.CONSUMO_QUANTIDADE_T10 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=11) AND (B.CONSUMO_QUANTIDADE_T11 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T11/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=12) AND (B.CONSUMO_QUANTIDADE_T12 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T12/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=13) AND (B.CONSUMO_QUANTIDADE_T13 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T13/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=14) AND (B.CONSUMO_QUANTIDADE_T14 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T14/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=15) AND (B.CONSUMO_QUANTIDADE_T15 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T15/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=16) AND (B.CONSUMO_QUANTIDADE_T16 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T16/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=17) AND (B.CONSUMO_QUANTIDADE_T17 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T17/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=18) AND (B.CONSUMO_QUANTIDADE_T18 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T18/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=19) AND (B.CONSUMO_QUANTIDADE_T19 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T19/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=20) AND (B.CONSUMO_QUANTIDADE_T20 > 0) THEN CAST( (CAST((B.CONSUMO_QUANTIDADE_T20/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END)) AS NUMERIC(15,4))  PROJECAO
                                        
                                         FROM TBMODELO_CONSUMO B, TBMODELO M
                                        WHERE  M.CODIGO = B.MODELO_CODIGO
                                          AND (M.CODIGO = :MODELO or M.MODELO_PAI = :MODELO)
                                        
                                        UNION
                                        
                                   SELECT B.ID,
                                          B.PRODUTO_ID AS PRODUTO_ID,
                                          B.TAM AS TAMANHO,
                                          CAST((
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 0) AND (B.QUANTIDADE > 0) THEN CAST( (CAST((B.QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 1) AND (B.T01 > 0) THEN CAST( (CAST((B.T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 2) AND (B.T02 > 0) THEN CAST( (CAST((B.T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 3) AND (B.T03 > 0) THEN CAST( (CAST((B.T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 4) AND (B.T04 > 0) THEN CAST( (CAST((B.T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 5) AND (B.T05 > 0) THEN CAST( (CAST((B.T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 6) AND (B.T06 > 0) THEN CAST( (CAST((B.T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 7) AND (B.T07 > 0) THEN CAST( (CAST((B.T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 8) AND (B.T08 > 0) THEN CAST( (CAST((B.T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)= 9) AND (B.T09 > 0) THEN CAST( (CAST((B.T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=10) AND (B.T10 > 0) THEN CAST( (CAST((B.T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=11) AND (B.T11 > 0) THEN CAST( (CAST((B.T11/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=12) AND (B.T12 > 0) THEN CAST( (CAST((B.T12/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=13) AND (B.T13 > 0) THEN CAST( (CAST((B.T13/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=14) AND (B.T14 > 0) THEN CAST( (CAST((B.T14/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=15) AND (B.T15 > 0) THEN CAST( (CAST((B.T15/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=16) AND (B.T16 > 0) THEN CAST( (CAST((B.T16/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=17) AND (B.T17 > 0) THEN CAST( (CAST((B.T17/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=18) AND (B.T18 > 0) THEN CAST( (CAST((B.T18/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=19) AND (B.T19 > 0) THEN CAST( (CAST((B.T19/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END) +
                                         (CASE WHEN (CAST(:TAMANHO AS INTEGER)=20) AND (B.T20 > 0) THEN CAST( (CAST((B.T20/B.FATOR_CONVERSAO)AS NUMERIC(15,8))) AS NUMERIC(15,4)) ELSE 0 END)) AS NUMERIC(15,4)) PROJECAO
                                        
                                         FROM TBMODELO_CONSUMO_COR B, TBMODELO M
                                        WHERE M.CODIGO  = B.MODELO_ID
                                          AND B.COR_ID  = :COR
                                          AND (M.CODIGO = :MODELO or M.MODELO_PAI = :MODELO)
                                    ) X LEFT JOIN TBPRODUTO_CONTABIL PC ON PC.PRODUTO_CODIGO = X.PRODUTO_ID
                               -- WHERE PROJECAO > 0
                             )
                      )
               )
INTO :VALOR_CUSTO
DO BEGIN
     SUSPEND;
   END

END

^


CREATE OR ALTER VIEW VW_CONSUMO_MODELO (
    ID,
    MODELO_ID,
    COR_ID,
    TAMANHO,
    PRODUTO_ID,
    PRODUTO_TAMANHO,
    CONSUMO
    )
AS
    SELECT
     ID,
     MODELO_ID,
     COR_ID,
     TAMANHO,
     PRODUTO_ID,
     PRODUTO_TAMANHO,
     CONSUMO
    FROM (
       SELECT B.ID,
              B.MODELO_CODIGO AS MODELO_ID,
              0 COR_ID,
              S.TAMANHO AS TAMANHO,
              B.CONSUMO_PRODUTO_CODIGO AS PRODUTO_ID,
              B.TAM AS PRODUTO_TAMANHO,
              IIF(S.TAMANHO = 0, CAST((B.CONSUMO_QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 1, CAST((B.CONSUMO_QUANTIDADE_T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 2, CAST((B.CONSUMO_QUANTIDADE_T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 3, CAST((B.CONSUMO_QUANTIDADE_T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 4, CAST((B.CONSUMO_QUANTIDADE_T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 5, CAST((B.CONSUMO_QUANTIDADE_T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 6, CAST((B.CONSUMO_QUANTIDADE_T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 7, CAST((B.CONSUMO_QUANTIDADE_T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 8, CAST((B.CONSUMO_QUANTIDADE_T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 9, CAST((B.CONSUMO_QUANTIDADE_T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =10, CAST((B.CONSUMO_QUANTIDADE_T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =11, CAST((B.CONSUMO_QUANTIDADE_T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =12, CAST((B.CONSUMO_QUANTIDADE_T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =13, CAST((B.CONSUMO_QUANTIDADE_T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =14, CAST((B.CONSUMO_QUANTIDADE_T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =15, CAST((B.CONSUMO_QUANTIDADE_T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =16, CAST((B.CONSUMO_QUANTIDADE_T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =17, CAST((B.CONSUMO_QUANTIDADE_T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =18, CAST((B.CONSUMO_QUANTIDADE_T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =19, CAST((B.CONSUMO_QUANTIDADE_T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =20, CAST((B.CONSUMO_QUANTIDADE_T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              0.00000000))))))))))))))))))))) CONSUMO
             FROM TBMODELO_CONSUMO B, TBGRADE_SEQ S

            UNION
            
       SELECT B.ID,
              B.MODELO_ID,
              B.COR_ID,
              S.TAMANHO AS TAMANHO,
              B.PRODUTO_ID,
              B.TAM AS PRODUTO_TAMANHO,
              IIF(S.TAMANHO = 0, CAST((B.QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 1, CAST((B.T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 2, CAST((B.T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 3, CAST((B.T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 4, CAST((B.T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 5, CAST((B.T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 6, CAST((B.T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 7, CAST((B.T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 8, CAST((B.T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 9, CAST((B.T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =10, CAST((B.T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =11, CAST((B.T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =12, CAST((B.T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =13, CAST((B.T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =14, CAST((B.T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =15, CAST((B.T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =16, CAST((B.T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =17, CAST((B.T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =18, CAST((B.T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =19, CAST((B.T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =20, CAST((B.T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              0.00000000))))))))))))))))))))) CONSUMO
             FROM TBMODELO_CONSUMO_COR B, TBGRADE_SEQ S

            UNION

       SELECT B.ID,
              M.MODELO_PAI AS MODELO_ID,
              0 COR_ID,
              S.TAMANHO AS TAMANHO,
              B.CONSUMO_PRODUTO_CODIGO AS PRODUTO_ID,
              B.TAM AS PRODUTO_TAMANHO,
              IIF(S.TAMANHO = 0, CAST((B.CONSUMO_QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 1, CAST((B.CONSUMO_QUANTIDADE_T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 2, CAST((B.CONSUMO_QUANTIDADE_T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 3, CAST((B.CONSUMO_QUANTIDADE_T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 4, CAST((B.CONSUMO_QUANTIDADE_T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 5, CAST((B.CONSUMO_QUANTIDADE_T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 6, CAST((B.CONSUMO_QUANTIDADE_T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 7, CAST((B.CONSUMO_QUANTIDADE_T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 8, CAST((B.CONSUMO_QUANTIDADE_T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 9, CAST((B.CONSUMO_QUANTIDADE_T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =10, CAST((B.CONSUMO_QUANTIDADE_T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =11, CAST((B.CONSUMO_QUANTIDADE_T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =12, CAST((B.CONSUMO_QUANTIDADE_T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =13, CAST((B.CONSUMO_QUANTIDADE_T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =14, CAST((B.CONSUMO_QUANTIDADE_T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =15, CAST((B.CONSUMO_QUANTIDADE_T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =16, CAST((B.CONSUMO_QUANTIDADE_T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =17, CAST((B.CONSUMO_QUANTIDADE_T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =18, CAST((B.CONSUMO_QUANTIDADE_T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =19, CAST((B.CONSUMO_QUANTIDADE_T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =20, CAST((B.CONSUMO_QUANTIDADE_T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              0.00000000))))))))))))))))))))) CONSUMO
             FROM TBMODELO_CONSUMO B, TBMODELO M, TBGRADE_SEQ S
             WHERE M.CODIGO = B.MODELO_CODIGO
               AND M.MODELO_PAI > 0

            UNION
            
       SELECT B.ID,
              M.MODELO_PAI AS MODELO_ID,
              B.COR_ID,
              S.TAMANHO AS TAMANHO,
              B.PRODUTO_ID,
              B.TAM AS PRODUTO_TAMANHO,
              IIF(S.TAMANHO = 0, CAST((B.QUANTIDADE    /B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 1, CAST((B.T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 2, CAST((B.T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 3, CAST((B.T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 4, CAST((B.T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 5, CAST((B.T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 6, CAST((B.T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 7, CAST((B.T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 8, CAST((B.T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO = 9, CAST((B.T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =10, CAST((B.T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =11, CAST((B.T01/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =12, CAST((B.T02/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =13, CAST((B.T03/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =14, CAST((B.T04/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =15, CAST((B.T05/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =16, CAST((B.T06/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =17, CAST((B.T07/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =18, CAST((B.T08/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =19, CAST((B.T09/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              IIF(S.TAMANHO =20, CAST((B.T10/B.FATOR_CONVERSAO)AS NUMERIC(15,8)),
              0.00000000))))))))))))))))))))) CONSUMO
             FROM TBMODELO_CONSUMO_COR B, TBMODELO M, TBGRADE_SEQ S
             WHERE M.CODIGO = B.MODELO_ID
               AND M.MODELO_PAI > 0
          )
      WHERE CONSUMO > 0.00000000

^

SET TERM ; ^