ALTER TABLE TBPROGRAMACAO
    ADD OLD_TEMPO_REALIZADO NUMERIC(15,4) DEFAULT 0;
	
CREATE OR ALTER procedure spu_tempo_programacao_vinc (
    i_programacao_id integer)
as
declare variable contador bigint;
declare variable programacao_id integer;
declare variable remessa_id integer;
declare variable remessa_talao_id integer;
declare variable id integer;
declare variable vinculo_id integer;
declare variable tempo numeric(18,8);
declare variable tempo_previsto numeric(18,8);
declare variable quantidade numeric(18,8);
declare variable tempo_realizado numeric(18,8);
declare variable qtd_total numeric(18,8);
declare variable web char(1);
declare variable linha integer;
declare variable linhas integer;
begin

    tempo = coalesce((select first 1 iif(coalesce(r.tempo_realizado,0) > coalesce(r.OLD_TEMPO_REALIZADO,0), coalesce(r.tempo_realizado,0), coalesce(r.OLD_TEMPO_REALIZADO,0) ) from tbprogramacao r where r.id = :I_PROGRAMACAO_ID),0);

    --se talao esta vinculado a outros taloes ATUALIZA OS SITUACAO
    for
        select distinct
            quantidade,
            VINCULO_ID,
            PROGRAMACAO_ID,
            REMESSA_ID,
            REMESSA_TALAO_ID,
            ID,
            tempo_realizado,
            row_number() over() as LINHA,
            sum(1) over() LINHAS,
            sum(quantidade) over() QTD_TOTAL
        from(
            SELECT
                r.quantidade,
                v2.vinculo_id,
                r.id as PROGRAMACAO_ID,
                v2.REMESSA_ID,
                v2.TALAO_ID as REMESSA_TALAO_ID,
                t.id as ID,
                r.tempo,
                r.tempo_realizado
            from TBTALAO_VINCULO v1, TBTALAO_VINCULO v2, vwremessa_talao t, vwremessa_talao t2, tbprogramacao r, tbprogramacao r2
            where v1.remessa_id = t2.remessa_id
            and v1.talao_id = t2.remessa_talao_id
            and v2.vinculo_id = v1.vinculo_id
            and t.remessa_id = v2.remessa_id
            and t.remessa_talao_id = v2.talao_id
            and r.tabela_id = t.id
            and r2.id = :I_PROGRAMACAO_ID
            and t2.id = r2.tabela_id
            and r2.tipo = 'A'
            and r.tipo = 'A'
        )
    into    
        :quantidade,
        :VINCULO_ID,
        :PROGRAMACAO_ID,
        :REMESSA_ID,
        :REMESSA_TALAO_ID,
        :ID,
        :tempo_previsto,
        :LINHA,
        :LINHAS,
        :QTD_TOTAL
    do begin

        tempo_realizado = fn_calc_precision(tempo, fn_calc_precision(quantidade, QTD_TOTAL,'/') ,'*');
        update TBPROGRAMACAO h set h.tempo_realizado = :tempo_realizado, h.OLD_TEMPO_REALIZADO = :tempo where h.id = :PROGRAMACAO_ID;

    end



end;



