SET TERM ^ ;

CREATE OR ALTER procedure SPU_MODELO_COR_TAMANHO_FLUXO (
    MODELO_ID integer,
    COR_ID integer,
    TAMANHO integer)
returns (
    FLUXO_ID integer,
    ORDEM integer,
    TEMPO numeric(15,4),
    PECA integer,
    IMPRIMIR integer)
as
declare variable ENCONTRADO integer;
BEGIN

    ENCONTRADO = 0;

    for
        select
            f.fluxo_id,
            f.ordem,
            coalesce(f.tempo,0) as tempo,
            coalesce(F.PECA,0) PECA,
            coalesce(f.IMPRIMIR,0) as IMPRIMIR
        from tbmodelo_fluxo_producao f
        where f.modelo_id = :modelo_id
        and f.cor_id = :COR_ID
        and f.tamanho = :TAMANHO
        and f.tempo > 0
    into :FLUXO_ID, :ORDEM, :tempo, :PECA, :IMPRIMIR
    do begin
       ENCONTRADO = 1;
       suspend;
    end

    if(ENCONTRADO = 0)then
    begin
        for
            select
                f.fluxo_id,
                f.ordem,
                coalesce(f.tempo,0) as tempo,
                coalesce(F.PECA,0) PECA,
                coalesce(f.IMPRIMIR,0) as IMPRIMIR
            from tbmodelo_fluxo_producao f
            where f.modelo_id = :modelo_id
            and f.cor_id = :COR_ID
            and f.tempo > 0
        into :FLUXO_ID, :ORDEM, :tempo, :PECA, :IMPRIMIR
        do begin
           ENCONTRADO = 1;
           suspend;
        end
    end

    if(ENCONTRADO = 0)then
    begin
        for
            select
                f.fluxo_id,
                f.ordem,
                coalesce(f.tempo,0) as tempo,
                coalesce(F.PECA,0) PECA,
                coalesce(f.IMPRIMIR,0) as IMPRIMIR
            from tbmodelo_fluxo_producao f
            where f.modelo_id = :modelo_id
            and f.tamanho = :TAMANHO
            and f.cor_id = 0
            and f.tempo > 0
        into :FLUXO_ID, :ORDEM, :tempo, :PECA, :IMPRIMIR
        do begin
           ENCONTRADO = 1;
           suspend;
        end
    end

    if(ENCONTRADO = 0)then
    begin
        for
            select  
                f.fluxo_id,
                f.ordem,
                coalesce(f.tempo,0) as tempo,
                coalesce(F.PECA,0) PECA,
                coalesce(f.IMPRIMIR,0) as IMPRIMIR
            from tbmodelo_fluxo_producao f
            where f.modelo_id = :modelo_id
            and f.tamanho = 0
            and f.cor_id = 0
            and f.tempo > 0
        into :FLUXO_ID, :ORDEM, :tempo, :PECA, :IMPRIMIR
        do begin
           ENCONTRADO = 1;
           suspend;
        end
    end

END
^

SET TERM ; ^

