USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDER_TICKET
The save procedure used by the add dataform template "Daily Sales Order Item Ticket Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@EVENTID | uniqueidentifier | IN | Start time |
@PRICETYPECODEID | uniqueidentifier | IN | Price type |
@QUANTITY | int | IN | Quantity |
@FACEPRICE | money | IN | Ticket price |
@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. |
@CONSTITUENTID | uniqueidentifier | IN | Host |
@REGISTRANTS | xml | IN | Registrants |
@ISPREREGISTEREDEVENT | bit | IN | |
@MARKREGISTRANTSATTENDED | bit | IN | Mark registrants as attended |
@DAILYSALESPROGRAMBUTTONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDER_TICKET
(
@ID uniqueidentifier output,
@EVENTID uniqueidentifier = null,
@PRICETYPECODEID uniqueidentifier = null,
@QUANTITY integer = 1,
@FACEPRICE money = 0,
@SALESORDERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
--Preregistered events
@CURRENTAPPUSERID uniqueidentifier,
@CONSTITUENTID uniqueidentifier = null,
@REGISTRANTS xml = null,
@ISPREREGISTEREDEVENT bit = 0,
@MARKREGISTRANTSATTENDED bit = 0,
@DAILYSALESPROGRAMBUTTONID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
-- A shortcut to save data chunk transmission
if @DAILYSALESPROGRAMBUTTONID is not null
begin
select
@PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID,
@FACEPRICE = isnull(PROGRAMEVENTPRICE.FACEPRICE, PROGRAMPRICE.FACEPRICE)
--@FACEPRICE = FACEPRICE
from dbo.DAILYSALEITEMPROGRAM
inner join dbo.PROGRAMPRICE
on DAILYSALEITEMPROGRAM.PRICETYPECODEID = PROGRAMPRICE.PRICETYPECODEID
and DAILYSALEITEMPROGRAM.PROGRAMID = PROGRAMPRICE.PROGRAMID
left outer join dbo.PROGRAMEVENTPRICE
on PROGRAMEVENTPRICE.EVENTID = @EVENTID
and PROGRAMEVENTPRICE.PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID
where DAILYSALEITEMPROGRAM.ID = @DAILYSALESPROGRAMBUTTONID
end
if @ISPREREGISTEREDEVENT = 0
begin
declare @PRICETYPE nvarchar(100)
select @PRICETYPE = dbo.UFN_PRICETYPECODE_GETDESCRIPTION(@PRICETYPECODEID)
set @ID = dbo.UFN_SALESORDERITEM_GETEXISTINGIDFOREVENT(@SALESORDERID, @EVENTID, @PRICETYPECODEID);
if @ID is null begin
set @ID = newid();
end
declare @PRICETYPES xml = null;
set @PRICETYPES = (
select
@ID [SALESORDERITEMID],
@QUANTITY [QUANTITY],
@PRICETYPECODEID [PRICETYPECODEID],
@PRICETYPE [PRICETYPE],
@FACEPRICE [FACEPRICE]
for xml raw ('ITEM'), type, elements, root('PRICETYPES'), BINARY BASE64
)
end
begin try
exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;
if @ISPREREGISTEREDEVENT = 0
begin
exec dbo.USP_SALESORDERITEMTICKETS_ADD
@SALESORDERID,
@CHANGEAGENTID,
@CURRENTDATE,
@EVENTID,
@PRICETYPES
end
else
begin
if exists (
select 1
from dbo.[CONSTITUENT]
where
[ISGROUP] = 1 and
[ID] = @CONSTITUENTID
)
begin
raiserror('BBERR_HOST_INVALIDGROUPCONSTITUENT', 13, 1);
end
exec dbo.USP_SALESORDER_PREREGISTEREDPROGRAMEVENTTICKET_ADD
@SALESORDERID,
@CHANGEAGENTID,
@CURRENTAPPUSERID,
@EVENTID,
@CONSTITUENTID,
@REGISTRANTS,
@CURRENTDATE,
@MARKREGISTRANTSATTENDED;
--For daily sales, we want to return the ID of the top sales order item created for these tickets
select top 1 @ID = SALESORDERITEM.ID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET
on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
where
SALESORDERITEMTICKET.EVENTID = @EVENTID and
SALESORDERITEM.SALESORDERID = @SALESORDERID
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;