USP_DATAFORMTEMPLATE_ADD_ORDERTICKETREPRINT

The save procedure used by the add dataform template "Order Ticket Reprint Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@TICKETS xml IN Select one or more tickets to reprint
@REPRINTREASONCODE uniqueidentifier IN Reason

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ORDERTICKETREPRINT
(
    @ID uniqueidentifier = null output,
    @CONTEXTID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @TICKETS xml = null,
    @REPRINTREASONCODE uniqueidentifier = 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()

begin try
    --238198 Occasionally, in hosting, we are seeing the same ticket (same TICKET.ID) appearing multiple times in the same print job (TICKETPRINTINFO.REPRINTJOB)
    --Making changes to prevent this
    declare @TICKETSTOPRINT table (
        TICKETID uniqueidentifier,
        EVENTDATE datetime null,
        EVENTTIME dbo.UDT_HOURMINUTE null,
        NAME nvarchar(255) null,
        BARCODE bigint null,
        HIDDENPRINTCOUNT integer null
    )
    insert into @TICKETSTOPRINT
    select 
        ID,
        EVENTDATE,
        EVENTTIME,
        NAME,
        BARCODE,
        HIDDENPRINTCOUNT
    from dbo.UFN_ORDER_GETTICKETSTOPRINT_FROMITEMLISTXML(@TICKETS)
    where [PRINT] = 1

    insert into dbo.TICKETPRINTINFO
    (
        ID,
        TICKETID,
        APPUSERID,
        TICKETREPRINTREASONCODEID,
        REPRINTJOB,
        ADDEDBYID,
        CHANGEDBYID,
        DATEADDED,
        DATECHANGED
    )
    select
        newid(),
        [TICKET].ID,
        @CURRENTAPPUSERID,
        case
            when [PRINTTICKETS].[HIDDENPRINTCOUNT] = 0 then
                null
            else
                @REPRINTREASONCODE
        end,
        @ID,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
    from dbo.TICKET
    inner join dbo.SALESORDERITEMTICKET with (nolock) on
        TICKET.SALESORDERITEMTICKETID = SALESORDERITEMTICKET.ID
    inner join dbo.SALESORDERITEM with (nolock) on
        SALESORDERITEMTICKET.ID = SALESORDERITEM.ID
    cross apply (
        --238198 
        select top 1
            EVENTDATE,
            EVENTTIME,
            NAME, 
            BARCODE,
            HIDDENPRINTCOUNT
        from @TICKETSTOPRINT [TICKETS]
        where [TICKETS].TICKETID = TICKET.ID
    ) [PRINTTICKETS]
    where 
        SALESORDERITEM.SALESORDERID = @CONTEXTID and
        --238198
        not exists(select 1 from dbo.TICKETPRINTINFO where TICKETID = TICKET.ID and REPRINTJOB = @ID)
    order by
        [PRINTTICKETS].EVENTDATE,
        [PRINTTICKETS].EVENTTIME,
        [PRINTTICKETS].NAME,
        [PRINTTICKETS].BARCODE
end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0