UPDATE OR INSERT INTO TBPARAMETRO (TABELA, CODIGO, DESCRICAO, VALOR, OBSERVACAO, GRUPO)
                           VALUES ('SISTEMA', 'QTD_DIAS_AGP_PROGRAMADO', 'QTD DIAS AGRUPAMENTO PROGRAMADO', '0', 'QUANTIDADE DE DIAS PARA SUBTRAIR NA PREVISÃO DE FATURAMENTO PARA PEDIDOS PROGRAMADOS', 'WEB12400')
                         MATCHING (TABELA, CODIGO);

COMMIT WORK;


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,
    MINUTOS_PRODUTIVOS integer)
as
begin

    if(PROGRAMADO = '0')then
    begin
        for
            SELECT
                  A.ID,
                  A.GP_ID,
                  A.MINUTOS_PRODUTIVOS
             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,
            :MINUTOS_PRODUTIVOS
        do begin
            suspend;
        end
    end else
    begin
       FOR
            SELECT
                  A.ID,
                  A.GP_ID,
                  A.MINUTOS_PRODUTIVOS
             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          <= DATEADD(DAY, CAST(COALESCE(FN_PARAMETRO('SISTEMA.QTD_DIAS_AGP_PROGRAMADO'),0) AS INTEGER) * -1, :DATA_CLIENTE)
            ORDER BY A.DATA_INICIAL DESC, A.ID
        INTO
            :AGRUPAMENTO_ID,
            :GP_ID,
            :MINUTOS_PRODUTIVOS
        DO BEGIN
            SUSPEND;
        END
    end

end;