SELECT
                    Z.GRUPO,
                    DATA AS REMESSA_DATA,
                    Z.UP_ID,
                    Z.UP_DESCRICAO,
                    Z.CAPACIDADE_DISPONIVEL,
                    IIF(z.UM_ALTERNATIVA <> '', z.UM_ALTERNATIVA, z.UM) UM,
                    
                    /* PROGRAMADO */
                    COALESCE(Z.CARGA_PROGRAMADA,0) as CARGA_PROGRAMADA,
                    COALESCE(Z.QUANTIDADE_TALAO_PROGRAMADA,0) as QUANTIDADE_TALAO_PROGRAMADA,
                    COALESCE(Z.QUANTIDADE_CARGA_PROGRAMADA,0) as QUANTIDADE_CARGA_PROGRAMADA,
                    COALESCE(Z.QTD_TALAO_UTILIZ_PROGRAMADA,0) as QTD_TALAO_UTILIZ_PROGRAMADA,
                    COALESCE(Z.QTD_CARGA_UTILIZ_PROGRAMADA,0) as QTD_CARGA_UTILIZ_PROGRAMADA,
                    COALESCE(Z.QUANTIDADE_PARES_PROGRAMADA,0) as QUANTIDADE_PARES_PROGRAMADA,
                    
                    /* PRODUZIDO */
                    COALESCE(Z.CARGA_UTILIZADA,0) as CARGA_UTILIZADA,
                    COALESCE(Z.QUANTIDADE_TALAO_UTILIZADA,0) as QUANTIDADE_TALAO_UTILIZADA,
                    COALESCE(Z.QUANTIDADE_CARGA_UTILIZADA,0) as QUANTIDADE_CARGA_UTILIZADA,
                    COALESCE(Z.CARGA_PROG_UTILIZ,0) as CARGA_PROG_UTILIZ,
                    COALESCE(Z.QUANTIDADE_CARGA_PROG_UTILIZ,0) as QUANTIDADE_CARGA_PROG_UTILIZ,
                    COALESCE(Z.QUANTIDADE_PARES_UTILIZADA,0) as QUANTIDADE_PARES_UTILIZADA,

                    /* PRODUZIDO REQ*/
                    COALESCE(Z.CARGA_UTIL_REQ,0) as CARGA_UTIL_REQ,
                    COALESCE(Z.QUANTIDADE_TALAO_UTIL_REQ,0) as QUANTIDADE_TALAO_UTIL_REQ,
                    COALESCE(Z.QUANTIDADE_CARGA_UTIL_REQ,0) as QUANTIDADE_CARGA_UTIL_REQ,
                    COALESCE(Z.CARGA_PROG_UTIL_REQ,0) as CARGA_PROG_UTIL_REQ,
                    COALESCE(Z.QUANTIDADE_CARGA_PROG_UTIL_REQ,0) as QUANTIDADE_CARGA_PROG_UTIL_REQ,
                    COALESCE(Z.QUANTIDADE_PARES_REQ,0) as QUANTIDADE_PARES_REQ,

                    /* PENDENTE */
                    iif(z.GRUPO = 'B', 0, (COALESCE(Z.CARGA_PROGRAMADA, 0) - COALESCE(Z.CARGA_UTILIZ_PROGRAMADA, 0))) as CARGA_PENDENTE,
                    iif(z.GRUPO = 'B', 0, (COALESCE(Z.QUANTIDADE_TALAO_PROGRAMADA, 0) - COALESCE(Z.QTD_TALAO_UTILIZ_PROGRAMADA, 0))) as QUANTIDADE_TALAO_PENDENTE,
                    iif(z.GRUPO = 'B', 0, (COALESCE(Z.QUANTIDADE_CARGA_PROGRAMADA, 0) - COALESCE(Z.QTD_CARGA_UTILIZ_PROGRAMADA, 0))) as QUANTIDADE_CARGA_PENDENTE,
                    iif(z.GRUPO = 'B', 0, (COALESCE(Z.QUANTIDADE_PARES_PENDENTE  , 0) - 0                                         )) as QUANTIDADE_PARES_PENDENTE,
                    
                    /*PERCENTUAIS*/
                    iif(z.GRUPO = 'B', 0  , (Z.CARGA_PROGRAMADA * 100) / NULLIF(Z.CAPACIDADE_DISPONIVEL, 0)) as PERC_CARGA_PROGRAMADA,
                    iif(z.GRUPO = 'B', 0  , (Z.CARGA_UTILIZADA  * 100) / NULLIF(Z.CARGA_PROGRAMADA     , 0)) as PERC_CARGA_UTILIZADA,
                    iif(z.GRUPO = 'B', 100, (Z.CARGA_UTILIZADA  * 100) / NULLIF(Z.CAPACIDADE_DISPONIVEL, 0)) as PERC_APROVEITAMENTO,
                    
                    --EFICIENCIA = ((QTD.PROD. / MIN.PROD.) / (QTD.PROJ. / MIN.PROJ.)) * 100
                    COALESCE(
                    ((CAST(Z.QUANTIDADE_CARGA_UTILIZADA / NULLIF(Z.CARGA_UTILIZADA, 0) AS DOUBLE PRECISION))
                    /
                    (CAST(Z.QUANTIDADE_CARGA_PROG_UTILIZ / NULLIF(Z.CARGA_PROG_UTILIZ, 0) AS DOUBLE PRECISION)))
                    * 100
                    , 0) EFICIENCIA
                
                from(
                    select
                
                        GRUPO,
                        GP_ID,
                        GP_DESCRICAO,
                        UP_ID,
                        UP_DESCRICAO,
                        PERFIL_ID,
                        PERFIL_DESCRICAO,
                        DATA,
                        CAPACIDADE_DISPONIVEL,
                        REMESSAS,
                    
                        coalesce(fn_array(s.PROGRAMADA,1,'|'),'') as UM,
                        coalesce(fn_array(s.PROGRAMADA,2,'|'),'') as UM_ALTERNATIVA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,3,'|'),0 ) AS NUMERIC(15,0)) as QUANTIDADE_TALAO_PROGRAMADA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,4,'|'),0 ) AS NUMERIC(15,0)) as QTD_TALAO_UTILIZ_PROGRAMADA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,5,'|'),0 ) AS NUMERIC(15,2)) as QUANTIDADE_CARGA_PROGRAMADA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,6,'|'),0 ) AS NUMERIC(15,2)) as QTD_CARGA_UTILIZ_PROGRAMADA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,7,'|'),0 ) AS NUMERIC(15,2)) as CARGA_PROGRAMADA,
                        CAST(coalesce(fn_array(s.PROGRAMADA,8,'|'),0 ) AS NUMERIC(15,2)) as CARGA_UTILIZ_PROGRAMADA,
                    
                        /* PRODUZIDO */
                        CAST(SUBSTRING(s.PRODUZIDO FROM 1  FOR 12) AS NUMERIC(15,4)) CARGA_UTILIZADA,
                        CAST(SUBSTRING(s.PRODUZIDO FROM 14 FOR  5) AS INTEGER)       QUANTIDADE_TALAO_UTILIZADA,
                        CAST(SUBSTRING(s.PRODUZIDO FROM 20 FOR 12) AS NUMERIC(10,5)) QUANTIDADE_CARGA_UTILIZADA,
                        CAST(SUBSTRING(s.PRODUZIDO FROM 33 FOR 12) AS NUMERIC(15,4)) CARGA_PROG_UTILIZ,
                        CAST(SUBSTRING(s.PRODUZIDO FROM 46 FOR 12) AS NUMERIC(10,5)) QUANTIDADE_CARGA_PROG_UTILIZ,

                        /* PRODUZIDO REQ*/
                        CAST(SUBSTRING(s.PRODUZIDO_REQ FROM 1  FOR 12) AS NUMERIC(15,4)) CARGA_UTIL_REQ,
                        CAST(SUBSTRING(s.PRODUZIDO_REQ FROM 14 FOR  5) AS INTEGER)       QUANTIDADE_TALAO_UTIL_REQ,
                        CAST(SUBSTRING(s.PRODUZIDO_REQ FROM 20 FOR 12) AS NUMERIC(10,5)) QUANTIDADE_CARGA_UTIL_REQ,
                        CAST(SUBSTRING(s.PRODUZIDO_REQ FROM 33 FOR 12) AS NUMERIC(15,4)) CARGA_PROG_UTIL_REQ,
                        CAST(SUBSTRING(s.PRODUZIDO_REQ FROM 46 FOR 12) AS NUMERIC(10,5)) QUANTIDADE_CARGA_PROG_UTIL_REQ,
                    
                        /* PENDENTE */
                        coalesce(CAST(SUBSTRING(iif(trim(s.QUANTIDADE_PARES) = '', '       0.000000000000       0.000000000000       0.000000000000       0.000000000000       0.000000000000', s.QUANTIDADE_PARES) FROM 64 FOR 21) AS NUMERIC(10,5)),0 ) QUANTIDADE_PARES_PROGRAMADA,
                        coalesce(CAST(SUBSTRING(iif(trim(s.QUANTIDADE_PARES) = '', '       0.000000000000       0.000000000000       0.000000000000       0.000000000000       0.000000000000', s.QUANTIDADE_PARES) FROM 22 FOR 21) AS NUMERIC(10,5)),0 ) QUANTIDADE_PARES_UTILIZADA,
                        coalesce(CAST(SUBSTRING(iif(trim(s.QUANTIDADE_PARES) = '', '       0.000000000000       0.000000000000       0.000000000000       0.000000000000       0.000000000000', s.QUANTIDADE_PARES) FROM 43 FOR 21) AS NUMERIC(10,5)),0 ) QUANTIDADE_PARES_PENDENTE,
                        coalesce(CAST(SUBSTRING(iif(trim(s.QUANTIDADE_PARES) = '', '       0.000000000000       0.000000000000       0.000000000000       0.000000000000       0.000000000000', s.QUANTIDADE_PARES) FROM 85 FOR 21) AS NUMERIC(10,5)),0 ) QUANTIDADE_PARES_REQ
                    from(
                        select
                
                            'A' grupo,
                            g.id as gp_id,
                            g.descricao gp_descricao,
                            t.id as up_id,
                            t.descricao as UP_DESCRICAO,
                            p.id as PERFIL_ID,
                            p.descricao_completa as PERFIL_DESCRICAO,
                            d.DATA_INICIAL as DATA,

                            /* PRODUZIDO */
                            COALESCE(
                                (SELECT FN_LPAD(COALESCE(SUM(P4.TEMPO_REALIZADO),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COUNT(T6.ID),5,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(
                                            (SELECT SUM(IIF(D1.QUANTIDADE_ALTERN_PRODUCAO > 0, D1.QUANTIDADE_ALTERN_PRODUCAO, D1.QUANTIDADE_PRODUCAO))
                                                FROM VWREMESSA_TALAO_DETALHE D1
                                                WHERE D1.REMESSA_ID = T6.REMESSA_ID AND D1.REMESSA_TALAO_ID = T6.REMESSA_TALAO_ID)
                                        ),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(P4.TEMPO),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(IIF(T6.QUANTIDADE_ALTERNATIVA > 0, T6.QUANTIDADE_ALTERNATIVA, CAST(T6.QUANTIDADE AS NUMERIC(15,4)))),'0000000.0000'),12,'0')
                        
                                    FROM VWREMESSA_TALAO T6, TBPROGRAMACAO P4, vwremessa r
                                    WHERE P4.TABELA_ID   = T6.ID
                                    AND P4.TIPO          = 'A'
                                    AND P4.GP_ID         = T6.GP_ID
                                    and r.remessa_id     = t6.remessa_id
                                    and r.requisicao     = '1'
                                    AND T6.GP_ID         = g.ID
                                    AND T6.UP_ID         = t.ID
                    
                                    AND T6.DATA_PRODUCAO = d.DATA_INICIAL

                                    
                    
                            ),'00000|0000000.0000|0000000.0000|0000000.0000') PRODUZIDO_REQ,
                    
                            /* PRODUZIDO */
                            COALESCE(
                                (SELECT FN_LPAD(COALESCE(SUM(P4.TEMPO_REALIZADO),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COUNT(T6.ID),5,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(
                                            (SELECT SUM(IIF(D1.QUANTIDADE_ALTERN_PRODUCAO > 0, D1.QUANTIDADE_ALTERN_PRODUCAO, D1.QUANTIDADE_PRODUCAO))
                                                FROM VWREMESSA_TALAO_DETALHE D1
                                                WHERE D1.REMESSA_ID = T6.REMESSA_ID AND D1.REMESSA_TALAO_ID = T6.REMESSA_TALAO_ID)
                                        ),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(P4.TEMPO),'0000000.0000'),12,'0')||'|'||
                                        FN_LPAD(COALESCE(SUM(IIF(T6.QUANTIDADE_ALTERNATIVA > 0, T6.QUANTIDADE_ALTERNATIVA, CAST(T6.QUANTIDADE AS NUMERIC(15,4)))),'0000000.0000'),12,'0')
                        
                                    FROM VWREMESSA_TALAO T6, TBPROGRAMACAO P4
                                    WHERE P4.TABELA_ID   = T6.ID
                                    AND P4.TIPO          = 'A'
                                    AND P4.GP_ID         = T6.GP_ID
                    
                                    --AND (P4.ESTACAO      = T6.ESTACAO or T6.ESTACAO = 0)
                    
                                    AND T6.GP_ID         = g.ID
                                    AND T6.UP_ID         = t.ID
                    
                                    AND T6.DATA_PRODUCAO = d.DATA_INICIAL

                                    
                    
                            ),'00000|0000000.0000|0000000.0000|0000000.0000') PRODUZIDO,
                    
                            (
                                SELECT
                                    F3.UNIDADEMEDIDA_SIGLA||'|'||
                                    F3.UNIDADEMEDIDA_ALTERNATIVO|| '|'||
                            
                                    /* PROGRAMADO */
                                    sum(IIF(T3.ID>0,1,0))||'|'||
                                    sum(IIF(T3.STATUS='2',1,0))||'|'||
                                    sum(IIF(T3.QUANTIDADE_ALTERNATIVA > 0, T3.QUANTIDADE_ALTERNATIVA, T3.QUANTIDADE))||'|'||
                                    sum(IIF(T3.STATUS = '2',IIF(T3.QUANTIDADE_ALTERNATIVA > 0, T3.QUANTIDADE_ALTERNATIVA, T3.QUANTIDADE),0))||'|'||
                                    sum(P3.TEMPO)||'|'||
                                    sum(IIF(T3.STATUS='2',P3.TEMPO,0))||''
                            
                                FROM VWREMESSA_TALAO T3, VWREMESSA R3, TBFAMILIA F3, TBPROGRAMACAO P3
                            
                                WHERE R3.REMESSA_ID   = T3.REMESSA_ID
                                AND F3.CODIGO       = R3.FAMILIA_ID
                                AND P3.TABELA_ID    = T3.ID
                                AND P3.GP_ID        = T3.GP_ID
                                AND P3.UP_ID        = T3.UP_ID
                                AND (P3.ESTACAO     = T3.ESTACAO OR T3.ESTACAO = 0)
                            
                                AND R3.ESTABELECIMENTO_ID = :ESTABELECIMENTO2
                                AND T3.GP_ID              = g.id
                                and T3.up_id              = t.id
                                AND r3.data               = d.DATA_INICIAL
                    
                                group by F3.UNIDADEMEDIDA_SIGLA, F3.UNIDADEMEDIDA_ALTERNATIVO
                    
                            ) as PROGRAMADA,
                    
                            /* PARES */
                            (SELECT
                                --PARES PRODUZIDOS POR DATA DE REMESSA
                                (FN_LPAD(SUM(L.PARES_PROD_DATA_REM), 21)||
                                --PARES PRODUZIDOS POR DATA DE PRODUCAO
                                FN_LPAD(SUM(L.PARES_PROD_DATA_PROD), 21)||
                                --PARES PENDENTES POR DATA DE REMESSA
                                FN_LPAD(SUM(L.PARES_PENDENTE_DATA_REM), 21)||
                                --PARES PROGRAMADOS POR DATA DE REMESSA
                                FN_LPAD(SUM(L.PARES_PROGRAM_DATA_REM), 21)||
                                --PARES PRODUZIDOS POR DATA DE PRODUCAO (REQ)
                                FN_LPAD(SUM(L.PARES_PROD_DATA_PROD_REQ), 21))
                    
                                FROM
                                    (SELECT
                                        --PARES PRODUZIDOS POR DATA DE REMESSA
                                        IIF(K.DATA_REMESSA = d.DATA_INICIAL AND K.STATUS = '2',
                                            COALESCE(
                                                IIF(K.QUANTIDADE_CONSUMO = K.QUANTIDADE_VINCULO,K.QUANTIDADE_ORIGEM,
                                                    ((K.QUANTIDADE_ORIGEM * K.QUANTIDADE_VINCULO)/K.QUANTIDADE_CONSUMO))
                                            , 0)
                                        , 0) PARES_PROD_DATA_REM,
                    
                                        --PARES PRODUZIDOS POR DATA DE PRODUCAO
                                        IIF(K.DATA_PRODUCAO = d.DATA_INICIAL  AND K.STATUS = '2',
                                            COALESCE(
                                                IIF(K.QUANTIDADE_CONSUMO = K.QUANTIDADE_VINCULO,K.QUANTIDADE_ORIGEM,
                                                    ((K.QUANTIDADE_ORIGEM * K.QUANTIDADE_VINCULO)/K.QUANTIDADE_CONSUMO))
                                            , 0)
                                        , 0) PARES_PROD_DATA_PROD,

                                        --PARES PRODUZIDOS POR DATA DE PRODUCAO REQ
                                        IIF(K.DATA_PRODUCAO = d.DATA_INICIAL  AND K.STATUS = '2' AND K.REQUISICAO = '1',
                                            COALESCE(
                                                IIF(K.QUANTIDADE_CONSUMO = K.QUANTIDADE_VINCULO,K.QUANTIDADE_ORIGEM,
                                                    ((K.QUANTIDADE_ORIGEM * K.QUANTIDADE_VINCULO)/K.QUANTIDADE_CONSUMO))
                                            , 0)
                                        , 0) PARES_PROD_DATA_PROD_REQ,
                    
                                        --PARES PENDENTES POR DATA DE REMESSA
                                        IIF(K.DATA_REMESSA = d.DATA_INICIAL AND K.STATUS = '1',
                                            COALESCE(
                                                IIF(K.QUANTIDADE_CONSUMO = K.QUANTIDADE_VINCULO,K.QUANTIDADE_ORIGEM,
                                                    ((K.QUANTIDADE_ORIGEM * K.QUANTIDADE_VINCULO)/K.QUANTIDADE_CONSUMO))
                                            , 0)
                                        , 0) PARES_PENDENTE_DATA_REM,
                    
                                        --PARES PROGRAMADOS POR DATA DE REMESSA
                                        IIF(K.DATA_REMESSA = d.DATA_INICIAL,
                                            COALESCE(
                                                IIF(K.QUANTIDADE_CONSUMO = K.QUANTIDADE_VINCULO,K.QUANTIDADE_ORIGEM,
                                                    ((K.QUANTIDADE_ORIGEM * K.QUANTIDADE_VINCULO)/K.QUANTIDADE_CONSUMO))
                                            , 0)
                                        , 0) PARES_PROGRAM_DATA_REM
                    
                                        FROM (
                    
                                            SELECT
                                                C1.QUANTIDADE_ORIGINAL QUANTIDADE_ORIGEM,
                                                IIF(COALESCE(C1.QUANTIDADE_NECES,0) > 0,C1.QUANTIDADE_NECES, C1.QUANTIDADE) QUANTIDADE_CONSUMO,
                                                V1.QUANTIDADE QUANTIDADE_VINCULO,
                                                R2.DATA DATA_REMESSA,
                                                T4.DATA_PRODUCAO,
                                                T4.TURNO,
                                                T4.STATUS,
                                                r2.REQUISICAO
                    
                                                FROM VWREMESSA_TALAO T4
                                                INNER JOIN TBREMESSA_CONSUMO_VINCULO V1 ON  V1.REMESSA_ID = T4.REMESSA_ID AND V1.REMESSA_TALAO_ID = T4.REMESSA_TALAO_ID
                                                INNER JOIN VWREMESSA_CONSUMO C1 ON C1.ID = V1.CONSUMO_ID and (C1.remessa_talao_id <= 6000 or C1.remessa_talao_id >= 9000)
                                                INNER JOIN VWREMESSA R2 ON R2.REMESSA_ID = T4.REMESSA_ID
                    
                                                WHERE T4.GP_ID   = g.ID
                                                AND T4.UP_ID     = t.ID
                    
                                                and (
                                                    (R2.DATA = d.DATA_INICIAL AND T4.STATUS = '2')
                                                    or
                                                    (T4.DATA_PRODUCAO = d.DATA_INICIAL  AND T4.STATUS = '2')
                                                    or
                                                    (R2.DATA = d.DATA_INICIAL AND T4.STATUS = '1')
                                                    or
                                                    (R2.DATA = d.DATA_INICIAL)
                                                )
                    
                                        ) K
                                    ) L
                    
                            ) QUANTIDADE_PARES,
                    
                            (SELECT FIRST 1 COALESCE(CA.MINUTOS,0) FROM TBCALENDARIO_UP CA WHERE CA.GP_ID = g.id AND CA.UP_ID = t.id AND CA.DATA = d.DATA_INICIAL) CAPACIDADE_DISPONIVEL,
                    
                            coalesce((select
                                    count(rr.remessa_id)
                                FROM VWREMESSA_TALAO Tt, VWREMESSA Rr, TBFAMILIA Ff, TBPROGRAMACAO P2
                            
                                WHERE 
                                    1=1
                                AND Rr.REMESSA_ID = Tt.REMESSA_ID
                                AND Ff.CODIGO     = Rr.FAMILIA_ID
                            
                                AND P2.TABELA_ID    = Tt.ID
                                AND P2.GP_ID        = Tt.GP_ID
                                AND (P2.ESTACAO     = Tt.ESTACAO OR Tt.ESTACAO = 0)
                            
                                AND Rr.ESTABELECIMENTO_ID = :ESTABELECIMENTO1
                                AND Tt.GP_ID              = g.id
                                and rr.data               = d.DATA_INICIAL
                    
                                ),0) as REMESSAS
                    
                        from tbgp g,
                            tbgp_up u,
                            tbup t,
                            (select ANO,MES,SEMANA,DATA_INICIAL,DATA_FINAL from sp_data(:DATA1, :DATA2)) d,
                            tbperfil p
                        
                        where g.id = u.gp_id
                        and t.id = u.up_id
                        and t.perfil = p.id
                        and p.tabela = 'UP'
                    
                        AND g.ID  IN (533)
                        
                        /*@ESTACAO*/
                        /*@PERIODO*/
                        AND p.ID = 'U'

                        order by d.DATA_INICIAL, g.descricao, t.descricao
                    ) s
                ) Z
                
                where (QUANTIDADE_TALAO_PROGRAMADA > 0 or QUANTIDADE_TALAO_UTILIZADA > 0)