USP_DATAFORMTEMPLATE_ADD_DOCUMENTANDTICKETPRINT
The save procedure used by the add dataform template "Document And Ticket Print Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@SALESORDERID | 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. |
@DOCUMENTS | xml | IN | Select one or more tickets or sales documents to print |
@REPRINTREASONCODE | uniqueidentifier | IN | Reason |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DOCUMENTANDTICKETPRINT
(
@ID uniqueidentifier = null output,
@SALESORDERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@DOCUMENTS 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 = 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_DOCUMENT_GETSALESDOCUMENTSANDTICKETSTOPRINT_FROMITEMLISTXML(@DOCUMENTS)
where
[TOPRINT] = 1 and
TYPECODE = 0
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 = @SALESORDERID 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
-- handle inserting the data
insert into dbo.DOCUMENTPRINTINGHISTORY
(
ID,
SALESORDERID,
TYPECODE,
APPUSERID,
REPRINTJOBID,
CREDITCARDPAYMENTMETHODDETAILID,
CREDITID,
CREDITPAYMENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
@SALESORDERID,
TYPECODE,
@CURRENTAPPUSERID,
@ID,
case
when TYPECODE = 2 then
CREDITCARDPAYMENTMETHODDETAILID
else
null
end as CREDITCARDPAYMENTMETHODDETAILID,
case
when TYPECODE = 5 or TYPECODE = 6 then
CREDITID
else
null
end as CREDITID,
case
when TYPECODE = 6 then
CREDITPAYMENTID
else
null
end as CREDITPAYMENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.UFN_DOCUMENT_GETSALESDOCUMENTSANDTICKETSTOPRINT_FROMITEMLISTXML(@DOCUMENTS)
where TOPRINT = 1 and
TYPECODE > 0
order by
TYPECODE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;