USP_DATAFORMTEMPLATE_EDIT_PREREGISTEREDPROGRAMEVENTTICKET_PRELOAD
The load procedure used by the edit dataform template "Preregistered Program Event Ticket Edit Data Form"
Parameters
| Parameter | Parameter Type | Mode | Description |
|---|---|---|---|
| @ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
| @DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
| @TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
| @SALESORDERID | uniqueidentifier | INOUT | |
| @CONSTITUENTID | uniqueidentifier | INOUT | Host |
| @SALESMETHODTYPECODE | tinyint | INOUT | |
| @REGISTRANTS | xml | INOUT | Registrants |
| @EVENTID | uniqueidentifier | INOUT | |
| @OCCURSTODAY | bit | INOUT | |
| @MARKREGISTRANTSATTENDED | bit | INOUT | Mark registrants as attended |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PREREGISTEREDPROGRAMEVENTTICKET_PRELOAD
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@TSLONG bigint = 0 output,
@SALESORDERID uniqueidentifier = null output,
@CONSTITUENTID uniqueidentifier = null output,
@SALESMETHODTYPECODE tinyint = null output,
@REGISTRANTS xml = null output,
@EVENTID uniqueidentifier = null output,
@OCCURSTODAY bit = null output,
@MARKREGISTRANTSATTENDED bit = null output
)
as
set nocount on;
set @DATALOADED = 0;
set @TSLONG = 0;
select
@SALESMETHODTYPECODE = SALESORDER.SALESMETHODTYPECODE,
@SALESORDERID = SALESORDER.ID,
@EVENTID = SALESORDERITEMTICKET.EVENTID,
@TSLONG = SALESORDERITEM.TSLONG,
@DATALOADED = 1
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET
on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDER
on SALESORDERITEM.SALESORDERID = SALESORDER.ID
where SALESORDERITEM.ID = @ID;
if @DATALOADED = 1
begin
--7/18/11: Constituent is the host of the registrants -- no longer the patron on the order
declare @HOSTREGISTRANTID uniqueidentifier
select top 1 @HOSTREGISTRANTID = coalesce([REGISTRANT].[GUESTOFREGISTRANTID], [REGISTRANT].[ID])
from dbo.[REGISTRANT]
inner join dbo.[SALESORDERITEMTICKETREGISTRANT]
on [REGISTRANT].[ID] = [SALESORDERITEMTICKETREGISTRANT].[REGISTRANTID]
inner join dbo.[SALESORDERITEMTICKET]
on [SALESORDERITEMTICKETREGISTRANT].[SALESORDERITEMTICKETID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[SALESORDERITEM]
on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEM].[ID]
cross apply (
select case
when [REGISTRANT].[GUESTOFREGISTRANTID] is null then 1
else 0
end as [VALUE]
) [ISHOST]
where
[SALESORDERITEM].[SALESORDERID] = @SALESORDERID and
[SALESORDERITEMTICKET].[EVENTID] = @EVENTID
order by [ISHOST].[VALUE] asc
select @CONSTITUENTID = [CONSTITUENTID]
from dbo.[REGISTRANT]
where [ID] = @HOSTREGISTRANTID
set @REGISTRANTS = (
select
REGISTRANT.ID,
SALESORDERITEMTICKET.PRICETYPECODEID,
REGISTRANT.CONSTITUENTID,
REGISTRANT.NOTES,
(
select
REGISTRANTPREFERENCE.ID,
REGISTRANTPREFERENCE.EVENTPREFERENCEID,
EVENTPREFERENCE.EVENTPREFERENCEGROUPID
from dbo.REGISTRANTPREFERENCE
inner join dbo.EVENTPREFERENCE
on REGISTRANTPREFERENCE.EVENTPREFERENCEID = EVENTPREFERENCE.ID
where
REGISTRANTPREFERENCE.REGISTRANTID = REGISTRANT.ID
for xml raw('ITEM'), type, elements, root('PREFERENCES'), binary base64
)
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET
on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
left join dbo.SALESORDERITEMTICKETREGISTRANT
on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETREGISTRANT.SALESORDERITEMTICKETID
left join dbo.REGISTRANT
on
SALESORDERITEMTICKETREGISTRANT.REGISTRANTID = REGISTRANT.ID and
REGISTRANT.WILLNOTATTEND = 0
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and
SALESORDERITEMTICKET.EVENTID = @EVENTID
for xml raw('ITEM'), type, elements, root('REGISTRANTS'), binary base64
)
set @OCCURSTODAY = dbo.UFN_EVENT_OCCURSTODAY(@EVENTID)
if @OCCURSTODAY = 1
begin
-- If all of the registrants are marked as attended default checkbox to be checked
if not exists
(
select
1
from dbo.REGISTRANT
inner join dbo.SALESORDERITEMTICKETREGISTRANT
on REGISTRANT.ID = SALESORDERITEMTICKETREGISTRANT.REGISTRANTID
inner join dbo.SALESORDERITEMTICKET
on SALESORDERITEMTICKETREGISTRANT.SALESORDERITEMTICKETID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEM
on SALESORDERITEMTICKET.ID = SALESORDERITEM.ID
where
SALESORDERITEM.SALESORDERID = @SALESORDERID and
SALESORDERITEMTICKET.EVENTID = @EVENTID and
REGISTRANT.WILLNOTATTEND = 0 and
REGISTRANT.ATTENDED = 0
)
set @MARKREGISTRANTSATTENDED = 1
else
set @MARKREGISTRANTSATTENDED = 0
end
else
set @MARKREGISTRANTSATTENDED = 0
end
return 0;