SET TERM ^ ;

CREATE OR ALTER procedure SPC_AGRUPAMENTO_DATA (
    ESTABELECIMENTO_ID integer,
    PROGRAMADO varchar(1),
    DATA_PRODUCAO date,
    VDATA_PRODUCAO date,
    DATA_CLIENTE date,
    DATA_EMISSAO date)
returns (
    AGRUPAMENTO_ID integer,
    GP_ID integer)
as
begin

    if(PROGRAMADO = '0')then
    begin
        for
            SELECT A.ID,
                  A.GP_ID
             FROM TBAGRUPAMENTO A
            WHERE A.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
              AND A.SIMULACAO = '0'
              AND A.STATUS = '1'
              AND ((A.DATA_INICIAL <= :DATA_PRODUCAO AND A.DATA_FINAL >= :DATA_PRODUCAO) OR (A.DATA_FINAL   >= :VDATA_PRODUCAO))
            ORDER BY A.DATA_INICIAL, A.ID
        into
            :AGRUPAMENTO_ID,
            :GP_ID
        do begin
            suspend;
        end
    end else
    begin
       for
            SELECT A.ID,
                  A.GP_ID
             FROM TBAGRUPAMENTO A
            WHERE A.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
              AND A.SIMULACAO = '0'
              AND A.STATUS = '1'
              AND A.DATA_INICIAL >= :DATA_EMISSAO
              AND A.DATA_FINAL   <= :DATA_CLIENTE - 14
            ORDER BY A.DATA_INICIAL desc, A.ID
        into
            :AGRUPAMENTO_ID,
            :GP_ID
        do begin
            suspend;
        end
    end

end
^

SET TERM ; ^

