USP_DATALIST_BATCHTICKETPRINTJOBS

Parameters

Parameter Parameter Type Mode Description
@DATERANGETYPE tinyint IN
@FROMDATE date IN
@TODATE date IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_BATCHTICKETPRINTJOBS (
    @DATERANGETYPE tinyint = 5,  -- This week

    @FROMDATE date = null,
    @TODATE date = null
)
as
    set nocount on;

    -- Use the client's default timezone

    declare @CURRENTDATE date = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(getutcdate(), 1);
    declare @DAYOFWEEK int = datepart(weekday, @CURRENTDATE);

    -- Simple adjustment since our filter's day of week starts on Monday

    if @DAYOFWEEK = 1  -- Sunday

        set @DAYOFWEEK = 8;

    if @DATERANGETYPE = 2  -- Today

    begin
        set @FROMDATE = @CURRENTDATE;
        set @TODATE = @CURRENTDATE;
    end

    else if @DATERANGETYPE = 3  -- Yesterday

    begin
        set @FROMDATE = dateadd(day, -1, @CURRENTDATE);
        set @TODATE = @FROMDATE;
    end

    else if @DATERANGETYPE = 5  -- This week

    begin
        set @FROMDATE = dateadd(day, -(@DAYOFWEEK - 2), @CURRENTDATE);
        set @TODATE =  dateadd(day, 6, @FROMDATE);
    end

    else if @DATERANGETYPE = 11  -- Last week

    begin
        set @FROMDATE = dateadd(day, -(@DAYOFWEEK - 2) - 7, @CURRENTDATE);
        set @TODATE =  dateadd(day, 6, @FROMDATE);
    end

    else if @DATERANGETYPE = 6  -- This month

    begin
        set @FROMDATE = dateadd(month, datediff(month, 0, @CURRENTDATE), 0)
        set @TODATE = dateadd(day, -1, dateadd(month, 1, @FROMDATE));
    end

    else if @DATERANGETYPE = 12  -- Last month

    begin
        set @FROMDATE = dateadd(month, datediff(month, 0, @CURRENTDATE) - 1, 0)
        set @TODATE = dateadd(day, -1, dateadd(month, 1, @FROMDATE));
    end

    declare @FROMDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@FROMDATE, 0);
    declare @TODATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@TODATE, 0);

    select
        BATCHTICKETPRINTJOB.ID,
        convert(datetime, BATCHTICKETPRINTJOB.PRINTDATEWITHTIMEOFFSET) as PRINTDATE,
        (
            select count(*)
            from dbo.BATCHTICKETPRINTJOBTICKETLINK
            where BATCHTICKETPRINTJOBTICKETLINK.BATCHTICKETPRINTJOBID = BATCHTICKETPRINTJOB.ID
        ) as TICKETCOUNT,
        BATCHTICKETPRINTJOB.PRINTERNAME,
        APPUSER.DISPLAYNAME as APPUSERDISPLAYNAME
    from
        dbo.BATCHTICKETPRINTJOB
    left outer join
        dbo.APPUSER on APPUSER.ID = BATCHTICKETPRINTJOB.APPUSERID
    where
        (@FROMDATETIMEOFFSET is null or BATCHTICKETPRINTJOB.PRINTDATEWITHTIMEOFFSET >= @FROMDATETIMEOFFSET)
        and (@TODATETIMEOFFSET is null or BATCHTICKETPRINTJOB.PRINTDATEWITHTIMEOFFSET < dateadd(day, 1,@TODATETIMEOFFSET))
    order by
        PRINTDATE desc;

    return 0;