select
    CUSTO,
    CONTAS,
    VALOR_PERC * (COMISSAO + TRIBUTOS + FRETE) as TRIBUTOS,
    (CUSTO + CONTAS + (VALOR_PERC * PERCENTUAL_GASTO)) as VALOR_VENDA,
    (VALOR_PERC * MARGEM_CONTRIBUICAO) as VL_MARGEM,
    (VALOR_PERC * PERCENTUAL_IR_G) as VL_IR
from(
    select
        CUSTO,
        PERC_CUSTO,
        PERCENTUAL_GASTO,
        CONTAS,
        COMISSAO,
        TRIBUTOS,
        FRETE,
        MARGEM_CONTRIBUICAO,
        PERCENTUAL_IR,
        PERCENTUAL_IR_G,
        fn_calc_precision(CUSTO+CONTAS,PERC_CUSTO,'/') as VALOR_PERC
    from(
        select
            CUSTO,
            PERC_CUSTO,
            PERCENTUAL_GASTO,
            CONTAS,
            COMISSAO,
            TRIBUTOS,
            FRETE,
            MARGEM_CONTRIBUICAO,
            PERCENTUAL_IR,
            PERCENTUAL_IR_G
        from(
            select
                /*TPS,
                TPO,
                C,
                CO,
                CS,
                CIP,
                CIA,
                PERDA, */
        
                C+CO+CS+CIP+CIA +((C+CO+CS) * PERDA) as CUSTO,
                100 - PERCENTUAL_GASTO as PERC_CUSTO,
                PERCENTUAL_GASTO,
                (DESPESA_MINUTO * TPO) + (DESPESA_MINUTO * (TPS / FATOR_SETUP)) CONTAS,
        
                COMISSAO,
                TRIBUTOS,
                FRETE,
                MARGEM_CONTRIBUICAO,
                PERCENTUAL_IR,
                PERCENTUAL_IR_G
            
                /*
                DESPESA_MINUTO,
                GP_ID,
                PERFIL_UP,
                FATOR_SETUP,
                PERCENTUAL_IR,
                TRIBUTOS,
                FRETE,
                COMISSAO,
                QUANTIDADE,
                MARGEM_CONTRIBUICAO,
                MINUTOS,
                FATURAMENTO_FAMILIA,
                CONTAS,
                PERCENTUAL_CONTAS
                */
            from(
                select distinct
                    h.ts as TPS,
                    h."TO" as TPO,
                    (H.C  + H.coip + (H.csip/iif(x.FATOR_SETUP > 1, x.FATOR_SETUP , x.Quantidade)) + h.coia + (H.csia/iif(x.FATOR_SETUP > 1, x.FATOR_SETUP , x.Quantidade)) + H.CO + (H.CS / iif(x.FATOR_SETUP > 1, x.FATOR_SETUP , x.Quantidade))) as C,
                    H.CMO as CO,
                    (H.CMS  / x.Quantidade) as CS,
                    H.CMOIP + (H.CSMOIP /x.Quantidade) as CIP,
                    H.CMOIA + (H.CSMOIA /x.Quantidade) as CIA,
                    H.PERDA,
                
                    cast((X.CONTAS * X.FATURAMENTO_FAMILIA) / iif(X.MINUTOS > 0, X.MINUTOS, 1) as numeric(18,8)) as DESPESA_MINUTO,
                    (COMISSAO + TRIBUTOS + FRETE + MARGEM_CONTRIBUICAO + fn_calc_precision((MARGEM_CONTRIBUICAO * PERCENTUAL_IR),(100 - PERCENTUAL_IR),'/')) as PERCENTUAL_GASTO,
                    fn_calc_precision((MARGEM_CONTRIBUICAO * PERCENTUAL_IR),(100 - PERCENTUAL_IR),'/') as PERCENTUAL_IR_G,
                    x.*
                from tbcusto_produto H, tbproduto p,
                (
                    select
                        A.*,
                        B.*,
                        D.*,
                        cast(:Quantidade as integer) as Quantidade,
                        cast(:margem_contribuicao as integer) as margem_contribuicao,
                        coalesce((
                            SELECT
                                MINUTOS / 12
                            from
                                spc_minutos_disponiveis2(:FAMILIA_ID,A.GP_ID,A.PERFIL_UP,c.MES0,c.ANO0,c.MES,c.ANO)
                        ),0) as MINUTOS,
                        coalesce((
                            select
                                (FAMILIA / TOTAL) as FATURAMENTO_FAMILIA
                            from (select
                                sum(iif(f.familia_id = cast(:FAMILIA_ID as integer), f.faturamento, 0)) FAMILIA,
                                sum(f.faturamento) as TOTAL
                            from tbfamilia_faturamento f where f.data between C.DATA_DESPESA1 and C.DATA_DESPESA2)
                        ),0) as FATURAMENTO_FAMILIA,
                        coalesce((
                            select
                                sum(kk.valor) / 12
                            from(
                                select
                                    d.valor
                                from tbdespesa_historico d
                                where d.data between C.DATA_DESPESA1 and C.DATA_DESPESA2
                                and d.conta <> ''
                                and d.grupo_rateamento = 1
                            ) kk
                        ),0) as CONTAS,
                        coalesce(fn_parametro('TBMODELO_LINHA.PERCENTUAL_CONTAS',(select first 1 m.linha_codigo from tbmodelo m where m.codigo = :MODELO_ID)),100) as PERCENTUAL_CONTAS
                    from (
                        SELECT
                            first 1
                            c.GP_ID,
                            c.PERFIL_UP,
                            c.fator_setup
                        from TBREGRA_CALCULO_CUSTO c
                        where c.familia_id = :FAMILIA_ID
                    ) as A,
                    (
                        select first 1
                            PERCENTUAL_IR
                        from TBCUSTO_INCENTIVO v where v.PERCENTUAL = 0
                    ) as B,
                    (
                        select
                
                            cast(:ANO as integer) as ANO,
                            cast(:MES as integer) as MES,
                            extract(month from dateadd(month,-11,fn_start_of_month('01.'||:MES||'.'||:ANO))) as MES0,
                            extract(year  from dateadd(month,-11,fn_start_of_month('01.'||:MES||'.'||:ANO))) as ANO0,
                            dateadd(month,-11,fn_start_of_month_2('01.'||:MES||'.'||:ANO)) as DATA_DESPESA1,
                            fn_end_of_month_2('01.'||:MES||'.'||:ANO) as DATA_DESPESA2
                
                        from RDB$DATABASE
                    ) as C,
                    (
                        select
                            sum(iif(comissao = 1               , percentual,0)) as COMISSAO,
                            sum(iif(frete = 0 and comissao = 0 , percentual,0)) as TRIBUTOS,
                            sum(iif(frete = 1                  , percentual,0)) as FRETE
                        from(
                            select
                                FRETE,
                                COMISSAO,
                                iif(y.usar_fator = 1,(y.fator/y.avos) * PERCENTUAL,PERCENTUAL) as PERCENTUAL
                            from TBCUSTO_PADRAO_ITEM y
                            where y.padrao_id = :MERCADO
                        )
                    ) as D
                ) X
                where H.ano = 2022
                and H.mes = 1
                and p.codigo = H.produto_id
                and p.modelo_codigo = 578
                and p.cor_codigo = 21
                and H.tamanho = 6

            )
        )
    )
)