SELECT 

                100 as ORDEM,
                FN_LPAD((row_number() over (partition by P.ESTACAO ORDER BY P.DATAHORA_INICIO,TREMESSA_ID,TREMESSA_TALAO_ID)),4,0) as SEQUENCIAL,
                TID as ID,
                '' INFO_TALAO,
                (SELECT first 1  b.serie FROM TBFERRAMENTARIA B WHERE B.ID = P.FERRAMENTA_ID) as SERIE,
                FN_LPAD(P.FERRAMENTA_ID,4,0) as FERRAMENTA_ID,
                p.ENCERRADO as TALAO_ENCERRADO,
    
                COALESCE((SELECT FIRST 1 SITUACAO FROM TBFERRAMENTARIA x1
                        WHERE x1.ID = P.FERRAMENTA_ID
                        AND x1.GP_ID = P.GP_ID
                        AND x1.UP_ID = P.UP_ID
                        AND x1.ESTACAO = P.ESTACAO
                    ),'E') FERRAMENTA_SITUACAO_TALAO,
                
                 coalesce((select
                                list(j.descricao||': '||coalesce(q.observacao,''),',<br>') as DESC

                            from
                                TBREGISTRO_PARADA Q,
                                tbjustificativa J,
                                (select
                                    distinct v.acumulado,
                                    hh.remessa_id,
                                    hh.remessa_talao_id
                                from SPU_RASTREAMENTO_VINCULO2(p.REMESSA_ID,p.remessa_talao_id,TID,0) v, vwremessa_talao_detalhe hh
                                where v.acumulado > 0
                                and hh.id = v.acumulado

                                union

                                select
                                    distinct v.acumulado,
                                    hh.remessa_id,
                                    hh.remessa_talao_id
                                from vwremessa_talao y
                                left join SPU_RASTREAMENTO_VINCULO2(y.remessa_id,y.remessa_talao_id,y.id,0) v on (ACUMULADO > 0)
                                left join vwremessa_talao_detalhe hh on (hh.id = v.acumulado)
                                where v.acumulado > 0
                                and y.id = p.TALAO_EXTRA

                                ) kk

                            where Q.tabela = 'PRODUCAO'
                            and Q.vinculo_id = kk.remessa_id
                            and q.tabela_id  = kk.remessa_talao_id
                            and j.id = Q.status),'') as JUSTIFICATIVA_ORIGEM,

                coalesce((SELECT
                                    list(j.descricao||': '||coalesce(q.observacao,''),',<br>') as DESC from

                                TBREGISTRO_PARADA Q,
                                tbjustificativa J
                                where Q.tabela = 'INEFICIENCIA'
                                and Q.tabela_id = P.ID
                                and j.id = Q.status)

                        ,'') as JUSTIFICATIVA_INEFIC,

                P.DATAHORA_FIM, 
                P.DATAHORA_INICIO,
                0 as QTD_REQUISICAO,
                
                coalesce((select

                    list(ID||'|'||SETUP_ID||'|'||DATAHORA_INICIO||'|'||TEMPO||'|'||FIM,'#')

                from (select
                    n.ID,
                    n.SETUP_ID,
                    n.TALAO_ID,
                    n.DATAHORA_INICIO,
                    n.DATAHORA_FIM,
                    iif((n.datahora_fim - n.DATAHORA_INICIO) < 0, 0,trunc(coalesce((n.datahora_fim - n.DATAHORA_INICIO) * 86500000,0))) as TEMPO,
                    iif(n.datahora_fim is null,0,1) FIM

                from TBREGISTRO_SETUP n
                where n.talao_id = TID
                and n.requisicao = p.status_requisicao
                order by n.setup_id, n.id)),'0|0|0|0|1') as SETUP,

                COALESCE(

                    (SELECT FIRST 1 1
                     FROM TBPROGRAMACAO W

                    WHERE W.FERRAMENTA_ID = P.FERRAMENTA_ID
                      AND W.status < 3
                      and not (w.status = 1 and w.status_requisicao = 1)
                      AND W.ID <> P.ID
                      AND (P.DATAHORA_INICIO BETWEEN W.DATAHORA_INICIO AND W.DATAHORA_FIM
                       OR  P.DATAHORA_FIM    BETWEEN W.DATAHORA_INICIO AND W.DATAHORA_FIM
                       OR  W.DATAHORA_INICIO BETWEEN P.DATAHORA_INICIO AND P.DATAHORA_FIM
                       OR  W.DATAHORA_FIM    BETWEEN P.DATAHORA_INICIO AND P.DATAHORA_FIM )

                ),0) AS CONFLITO,

                COALESCE((select

                        mf.TM

                    from tbup_fluxo pf, TBMODELO_FLUXO_PRODUCAO mf
                    where pf.up_id   = p.UP_ID
                    and mf.fluxo_id  = pf.fluxo_id
                    and mf.modelo_id = TMODELO_ID
                    and mf.cor_id    = D.COR_CODIGO
                    and mf.tamanho   = TTAMANHO),0) as TEMPO_MAQUINA,
                
                p.PRODUTO_ID as TPRODUTO_ID,
                P.ID AS PROGRAMACAO_ID,
                P.FLAG_REPROGRAMADO,
                P.ESTACAO,
                P.ESTACAO OLD_ESTACAO,
                U.DESCRICAO,
                p.tREMESSA as REMESSA,
                P.tempo,
                p.REMESSA_ID as TREMESSA_ID,
                FN_LPAD(TREMESSA_TALAO_ID,4,'0') AS REMESSA_TALAO_ID,
                p.tMODELO_ID as MODELO_ID,
                TTAMANHO TAMANHO_POS,
                p.QUANTIDADE as TQUANTIDADE,
                P.TEMPO_SETUP_FERRAMENTA, 
                P.TEMPO_SETUP_AQUECIMENTO,
                P.TEMPO_SETUP_COR, 
                P.TEMPO_SETUP_APROVACAO,

                (P.TEMPO_SETUP_FERRAMENTA + P.TEMPO_SETUP_AQUECIMENTO + P.TEMPO_SETUP_COR + P.TEMPO_SETUP_APROVACAO) as SETUP_TOTAL,
                
                p.DATA_INICIADO,

                P.TEMPO_OPERACIONAL,
                D.COR_CODIGO,
                C.DESCRICAO AS COR_DESCRICAO,
                C.AMOSTRA AS COR_AMOSTRA,
                M.DESCRICAO AS MODELO_DESCRICAO,
                TAMANHO_GRADE(D.GRADE_CODIGO,TTAMANHO)AS TAMANHO,

                FORMATDATE((select first 1 k.data_producao from tbturno_producao k where k.turno_corrente = 1)) AS DATA_PRODUCAO,

                D.DESCRICAO AS PRODUTO,

                IIF(P.STATUS_REQUISICAO = 1, COALESCE((select
                        list(
                            REMESSA||'|'||
                            id||'|'||
                            QUANTIDADE
                        ,'#')
                        FROM(
                            SELECT
                                J.id,
                                j.QUANTIDADE,
                                coalesce((select
                                    coalesce(I.REMESSA,0)||'|'||
                                    coalesce(v.CONTROLE,0)||'|'||
                                    coalesce(v.SITUACAO,0)||'|'||
                                    coalesce(v.sobras,0)||'|'||
                                    coalesce(formatdatetime(v.hora_liberacao),0)||'|'||
                                    coalesce(formatdatetime(v.hora_producao),0)
                                   FROM
                                        TBREMESSA_ITEM_PROCESSADO v,
                                        TBREMESSA I
                                    WHERE v.REMESSA    = j.REMESSA_GERADA
                                        AND v.CONTROLE   = j.TALAO
                                        AND I.NUMERO     = j.REMESSA_GERADA
                                ),'0|0|0|0|0|0') AS REMESSA
                            
                            FROM TBREQUISICAO j
                            
                            WHERE j.REMESSA      = TREMESSA_ID
                                AND j.PRODUTO_ID = TPRODUTO_ID
                                AND j.TAMANHO    = TTAMANHO
                                AND j.GP_ID      = P.GP_ID
                                and j.STATUS     < 3

                        )),'0|0|0|0|0|0|0|0'),'0|0|0|0|0|0|0|0') AS REQUISICAO,

                COALESCE(P.STATUS_REQUISICAO,0) as STATUS_REQUISICAO,

                IIF(
                    iif( extract( WEEKDAY from current_date) = 6, RDATA + 1,
                    iif( extract( WEEKDAY from RDATA) = 5,RDATA+3,
                    iif( extract( WEEKDAY from RDATA) = 6,RDATA+2,RDATA+1)))
                < CURRENT_DATE,1,0) AS ATRASADO,

                IIF(
                    iif( extract( WEEKDAY from current_date) = 6, RDATA,
                    iif( extract( WEEKDAY from RDATA) = 5,RDATA+2,
                    iif( extract( WEEKDAY from RDATA) = 6,RDATA+1,RDATA)))
                < CURRENT_DATE,1,0) AS ATRASADO2,

                IIF(P.TEMPO_SETUP_FERRAMENTA > 0,'M','') AS TROCA_MATRIZ,
                IIF(RAMOSTRA > 0,'A','') AS TROCA_AMOSTRA,
                IIF(RTIPO = '2' AND RREQUISICAO = '0','V','') AS TROCA_VIP,
                IIF(P.status_requisicao = '1','R','') AS TROCA_REQUISICAO,
                IIF(P.STATUS = '1','P','') AS TROCA_PARADA,

                TRIM(IIF( RTIPO = '1' AND RREQUISICAO = '0', '1',
                IIF( RTIPO = '2' AND RREQUISICAO = '0', '2',
                IIF( RTIPO = '2' AND RREQUISICAO = '1', '3', '0')))) TIPO,
                
                TRIM(IIF( RTIPO = '1' AND RREQUISICAO = '0', 'NORMAL',
                IIF( RTIPO = '2' AND RREQUISICAO = '0', 'VIP',
                IIF( RTIPO = '2' AND RREQUISICAO = '1', 'REQUISIÇÃO', 'N/D')))) TIPO_DESCRICAO,

                p.TSTATUS as  STATUS,
                formatdatetime(THORA_PRODUCAO) AS DATAHORA_PRODUCAO,
                formatdatetime(THORA_LIBERACAO) AS DATAHORA_LIBERACAO,
                formatdate(RDATA)  AS DATA_REMESSA,

                TRIM(P.STATUS) PROGRAMACAO_STATUS,
                (CASE
                    P.STATUS
                WHEN '0' THEN 'NÃO INICIADO'
                WHEN '1' THEN 'PARADO'
                WHEN '2' THEN 'EM ANDAMENTO'
                WHEN '3' THEN 'FINALIZADO'
                WHEN '6' THEN 'ENCERRADO'
                ELSE 'INDEFINIDO' END) PROGRAMACAO_STATUS_DESCRICAO,
                
                p.DENSIDADE DENSIDADE,
                p.ESPESSURA ESPESSURA,

                coalesce((select max(DATA_A) - sum(SEGUNDOS) from

                    (select

                        ID,STATUS_A,DATA_A,STATUS_P,DATA_P,

                        coalesce(iif(STATUS_P is null,0,iif(STATUS_A > STATUS_P,0, DATA_P - DATA_A)),0) as SEGUNDOS

                    from
                    (
                        select
                            l.id,
                            l.status as STATUS_A,
                            l.datahora as DATA_A,
                            lead(l.status) over (order by l.id) as STATUS_P,
                            lead(l.datahora) over (order by l.id) as DATA_P,
                            sum(1) over (order by id desc) as LINHA
                        
                        from tbprogramacao_registro l
                        where l.programacao_id = P.ID
                        order by l.id
                    ) H)G),'0|0') as SEGUNDOS2,

                (select dateadd(minute,(O_TEMPO_FRACAO_MINUTO * -1),current_timestamp)||'#0'||HISTORICO from SPC_PROGRAMACAO_TEMPO_CORRIDO(p.ID,coalesce(P.REQUISICAO_ID,0))) as SEGUNDOS,

                coalesce(P.REQUISICAO_ID,0) as REQUISICAO_ID,

                COALESCE((SELECT FIRST 1 W.JUSTIFICATIVA_ID FROM TBPROGRAMACAO_REGISTRO W WHERE W.PROGRAMACAO_ID = P.ID ORDER BY W.ID DESC),0) AS STATUS_PARADA,
                COALESCE((SELECT FIRST 1 V.DESCRICAO||' EM '||FORMATDATETIME(W.DATAHORA) FROM TBPROGRAMACAO_REGISTRO W,TBJUSTIFICATIVA V WHERE W.PROGRAMACAO_ID = P.ID AND V.ID = W.JUSTIFICATIVA_ID ORDER BY W.ID DESC),'') AS DESCRICAO_PARADA,

                L.CODIGO ||' - '||L.DESCRICAO as LINHA_DESCRICAO,
                p.TALAO_EXTRA TALAO_EXTRA,
                iif(p.TALAO_EXTRA > 0,'+','') as LEGENDA_EXTRA,
                p.PERCENTUAL_EXTRA as PERCENTUAL_EXTRA,
                coalesce((select
                
                    coalesce(b.quantidade,0)||'#@#'||
                    coalesce(b.remessa_talao_id,0)||'#@#'||
                    coalesce(b.remessa_id,0)||'#@#'||
                    coalesce(b.status,0)||'#@#'||
                    coalesce(b.hora_producao,'')||'#@#'||
                    coalesce(b.hora_liberacao,'')
                
                from vwremessa_talao b where b.id = p.TALAO_EXTRA),'') as EXTRA,

                COALESCE((
                 SELECT SUM(S.QUANTIDADE - S.SALDO)
                 FROM TBREQUISICAO_SOBRA S
                 WHERE S.REMESSA = tREMESSA_ID
                   AND S.TALAO = tREMESSA_TALAO_ID
                   AND S.REQUISICAO_ID = 0), 0.0000) as APROVEITAMENTO_SOBRA,
                   
                COALESCE((SELECT SUM (D.QUANTIDADE) AS PERDAS FROM
                    TBDEFEITO_TRANSACAO_ITEM AS D, TBPRODUTO B
            
                    WHERE D.REMESSA = TREMESSA_ID
                    AND D.ESTEIRA_ID = P.GP_ID
                    AND B.CODIGO = D.PRODUTO_ID
                    AND B.COR_CODIGO = C.CODIGO
                    AND B.MODELO_CODIGO = M.CODIGO
                    AND D.TAMANHO = P.TAMANHO),0) AS DEFEITO_SKU

            FROM
                (
                    SELECT 
                    
                        p.*,
                        t.TALAO_EXTRA,
                        t.REMESSA_TALAO_ID,
                        r.REMESSA as tREMESSA,
                        t.REMESSA_TALAO_ID as tREMESSA_TALAO_ID,
                        T.REMESSA_ID as tREMESSA_ID,
                        t.PERCENTUAL_EXTRA,
                        T.STATUS as tSTATUS,
                        formatdatetime(T.HORA_PRODUCAO) AS DATAHORA_PRODUCAO,
                        formatdatetime(T.HORA_LIBERACAO) AS DATAHORA_LIBERACAO,
                        formatdate(R.DATA)  AS DATA_REMESSA,
                        T.DENSIDADE,
                        T.ESPESSURA,
                        T.PRODUTO_ID as tPRODUTO_ID,
                        T.TAMANHO as tTAMANHO,
                        t.ID  as TID,
                        T.MODELO_ID as tMODELO_ID,
                        R.DATA as RDATA  ,
                        R.AMOSTRA RAMOSTRA,
                        R.TIPO RTIPO,
                        R.REQUISICAO as rREQUISICAO,
                        T.HORA_PRODUCAO THORA_PRODUCAO,
                        T.HORA_LIBERACAO THORA_LIBERACAO

                    FROM
                        VWREMESSA_TALAO T,
                        TBPROGRAMACAO P,
                        VWREMESSA R
                    
                    WHERE P.TIPO     = 'A'
                    AND P.TABELA_ID  = T.ID
                    AND R.REMESSA_ID = T.REMESSA_ID
                    AND P.GP_ID      = :GP_ID
                    AND P.UP_ID      = :UP_ID
                    AND P.ESTACAO    IN (1,2,3,4)
                    AND R.data_disponibilidade <= current_date
                    AND P.STATUS  < 3
                    
                    
                    ORDER BY P.DATAHORA_INICIO,P.ESTACAO,T.REMESSA_ID,T.REMESSA_TALAO_ID
                ) p,

                TBSUB_UP U,
                TBPRODUTO D,
                TBCOR C,
                TBMODELO M,
                TBGRADE G,
                tbmodelo_linha l

            WHERE U.UP_ID = P.UP_ID
            AND U.ID = P.ESTACAO
            and L.CODIGO = D.linha_codigo

            AND D.CODIGO = p.TPRODUTO_ID

            AND C.CODIGO = D.COR_CODIGO
            AND M.CODIGO = p.TMODELO_ID
            AND G.CODIGO = D.GRADE_CODIGO