USP_DATAFORMTEMPLATE_ADD_REPRINTBATCHTICKETPRINTJOB

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@BATCHTICKETPRINTJOBID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@WORKSTATIONMACHINENAME nvarchar(255) IN
@PRINTERNAME nvarchar(255) IN
@TICKETREPRINTREASONCODEID uniqueidentifier IN
@DOCUMENTID uniqueidentifier IN
@SELECTEDTICKETS xml IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REPRINTBATCHTICKETPRINTJOB (
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @BATCHTICKETPRINTJOBID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier,
    @WORKSTATIONMACHINENAME nvarchar(255),
    @PRINTERNAME nvarchar(255),
    @TICKETREPRINTREASONCODEID uniqueidentifier,
    @DOCUMENTID uniqueidentifier = null,
    @SELECTEDTICKETS xml = null
)
as
    set nocount on;

    if @ID is null
        set @ID = newid();

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    declare @CURRENTDATE datetime;
    set @CURRENTDATE = getdate();

    declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(getutcdate(), 1);
    declare @WORKSTATIONID uniqueidentifier;
    declare @DELIVERYMETHODID uniqueidentifier;
    declare @GROUPBYCODE tinyint;

    set @WORKSTATIONID = dbo.UFN_WORKSTATION_GETIDBYMACHINENAME(@WORKSTATIONMACHINENAME);

    select
        @DELIVERYMETHODID = DELIVERYMETHODID,
        @GROUPBYCODE = GROUPBYCODE
    from
        dbo.BATCHTICKETPRINTJOB
    where
        ID = @BATCHTICKETPRINTJOBID;

    declare @SELECTEDTICKETSTABLE dbo.UDT_GENERICID;

    declare @TICKETSTOPRINT table (
        TICKETPRINTINFOID uniqueidentifier,
        TICKETID uniqueidentifier,
        CURRENTTICKETNUMBER int
    );

    insert into @SELECTEDTICKETSTABLE (ID)
    select T.ticket.value('(TICKETPRINTINFOID)[1]', 'uniqueidentifier') from @SELECTEDTICKETS.nodes('SELECTEDTICKETS/ITEM') as T(ticket);

    if @@rowcount > 0
    begin
        insert into @TICKETSTOPRINT (
            TICKETPRINTINFOID,
            TICKETID,
            CURRENTTICKETNUMBER
        )
        select
            newid(),
            TICKET.ID,
            TICKETPRINTINFO.SEQUENCEID
        from
            @SELECTEDTICKETSTABLE as SELECTEDTICKETSTABLE
        inner join
            dbo.TICKETPRINTINFO on TICKETPRINTINFO.ID = SELECTEDTICKETSTABLE.ID
        inner join
            dbo.TICKET on TICKET.ID = TICKETPRINTINFO.TICKETID
        where
            TICKET.STATUSCODE in (0,1);  -- Active, Reserved
    end

    else
    begin
        insert into @TICKETSTOPRINT (
            TICKETPRINTINFOID,
            TICKETID,
            CURRENTTICKETNUMBER
        )
        select
            newid(),
            TICKET.ID,
            TICKETPRINTINFO.SEQUENCEID
        from
            dbo.BATCHTICKETPRINTJOBTICKETLINK
        inner join
            dbo.TICKETPRINTINFO on TICKETPRINTINFO.ID = BATCHTICKETPRINTJOBTICKETLINK.ID
        inner join
            dbo.TICKET on TICKET.ID = TICKETPRINTINFO.TICKETID
        where
            BATCHTICKETPRINTJOBTICKETLINK.BATCHTICKETPRINTJOBID = @BATCHTICKETPRINTJOBID
            and TICKET.STATUSCODE in (0,1)  -- Active, Reserved
            and TICKET.PROGRAMID in (
                select PROGRAMDOCUMENT.PROGRAMID
                from dbo.PROGRAMDOCUMENT
                inner join dbo.DOCUMENT on DOCUMENT.ID = PROGRAMDOCUMENT.DOCUMENTID
                where DOCUMENT.ISACTIVE = 1
            );
    end

    begin try
        if not exists (select top 1 1 from @TICKETSTOPRINT)
            raiserror('BBERR_NOTICKETSTOPRINT', 13, 1);

        insert into dbo.BATCHTICKETPRINTJOB (
            ID,
            APPUSERID,
            PRINTERNAME,
            PRINTDATEWITHTIMEOFFSET,
            DELIVERYMETHODID,
            DOCUMENTID,
            GROUPBYCODE,
            ADDEDBYID,
            CHANGEDBYID,
            DATEADDED,
            DATECHANGED
        )
        values (
            @ID,
            @CURRENTAPPUSERID,
            @PRINTERNAME,
            @CURRENTDATETIMEOFFSET,
            @DELIVERYMETHODID,
            @DOCUMENTID,
            @GROUPBYCODE,
            @CHANGEAGENTID,
            @CHANGEAGENTID,
            @CURRENTDATE,
            @CURRENTDATE
        );

        insert into dbo.TICKETPRINTINFO (
            ID,
            TICKETID,
            APPUSERID,
            WORKSTATIONID,
            PRINTDATEWITHTIMEOFFSET,
            TICKETREPRINTREASONCODEID,
            ADDEDBYID,
            CHANGEDBYID,
            DATEADDED,
            DATECHANGED
        )
        select
            TICKETPRINTINFOID,
            TICKETID,
            @CURRENTAPPUSERID,
            @WORKSTATIONID,
            @CURRENTDATETIMEOFFSET,
            @TICKETREPRINTREASONCODEID,
            @CHANGEAGENTID,
            @CHANGEAGENTID,
            @CURRENTDATE,
            @CURRENTDATE
        from
            @TICKETSTOPRINT
        order by
            CURRENTTICKETNUMBER;  -- Keeps the tickets printed in the same order as they were in the first batch

        insert into dbo.BATCHTICKETPRINTJOBTICKETLINK (
            ID,
            BATCHTICKETPRINTJOBID,
            ADDEDBYID,
            CHANGEDBYID,
            DATEADDED,
            DATECHANGED
        )
        select
            TICKETPRINTINFOID,
            @ID,
            @CHANGEAGENTID,
            @CHANGEAGENTID,
            @CURRENTDATE,
            @CURRENTDATE
        from
            @TICKETSTOPRINT;
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;