UFN_GETUNPAIDPATRONEVENTREGISTRATIONS
Returns information regarding unpaid event registrations.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@SALESORDERID | uniqueidentifier | IN | |
@EVENTID | uniqueidentifier | IN | |
@FILTERZEROBALANCE | bit | IN |
Definition
Copy
CREATE function dbo.UFN_GETUNPAIDPATRONEVENTREGISTRATIONS
(
@CONSTITUENTID uniqueidentifier = null,
@SALESORDERID uniqueidentifier = null,
@EVENTID uniqueidentifier = null,
@FILTERZEROBALANCE bit = 1
)
returns @REGISTRATIONS table (
[REGISTRANTID] uniqueidentifier,
[REGISTRANTNAME] nvarchar(100),
[BALANCE] money,
[EVENTNAME] nvarchar(100),
[EVENTDATE] datetime,
[EVENTALLOWSDESIGNATIONSONFEES] bit
)
begin
--The user could have selected multiple events in which to register
--(if event selected was within a main event)
--Determine those other events
declare @REGISTRANTEVENTS table ([EVENTID] uniqueidentifier)
if @EVENTID is not null begin
insert @REGISTRANTEVENTS ([EVENTID])
values(@EVENTID)
insert @REGISTRANTEVENTS
select [EVENT].[ID]
from (select [ID], [MAINEVENTID] from dbo.[EVENT] where [ID] = @EVENTID) as [REGISTRANTEVENT]
inner join dbo.[EVENT]
on [REGISTRANTEVENT].[MAINEVENTID] = [EVENT].[MAINEVENTID] or
[REGISTRANTEVENT].[MAINEVENTID] = [EVENT].[ID] or
[REGISTRANTEVENT].[ID] = [EVENT].[MAINEVENTID];
end
--CONSTITUENTID might be a group, and we'll need to return its members' registrations
declare @CONSTITUENTS table (
ID uniqueidentifier
)
if @CONSTITUENTID is not null begin
insert into @CONSTITUENTS (ID)
values (@CONSTITUENTID)
if (select [ISGROUP] from dbo.[CONSTITUENT] where [ID] = @CONSTITUENTID) = 1 begin
insert into @CONSTITUENTS
select [MEMBERID]
from dbo.[GROUPMEMBER]
where [GROUPID] = @CONSTITUENTID;
end
end
insert into @REGISTRATIONS
select distinct
[REGISTRATIONS].[REGISTRANTID] as [REGISTRANTID],
[REGISTRATIONS].[REGISTRANTNAME] as [REGISTRANTNAME],
[REGISTRATIONS].[BALANCE] as [BALANCE],
[REGISTRATIONS].[EVENTNAME] as [EVENTNAME],
[REGISTRATIONS].[EVENTDATE] as [EVENTDATE],
[REGISTRATIONS].[EVENTALLOWSDESIGNATIONSONFEES] as [EVENTALLOWSDESIGNATIONSONFEES]
from (
select
[REGISTRANT].[ID] as [REGISTRANTID],
NF.NAME as [REGISTRANTNAME],
[EVENT].[NAME] as [EVENTNAME],
[EVENT].[STARTDATE] as [EVENTDATE],
dbo.UFN_EVENTREGISTRANT_GETBALANCE([REGISTRANT].[ID]) as [BALANCE],
case
when [EVENT].[DESIGNATIONSONFEES] = 1
and exists (select * from dbo.REGISTRANTDESIGNATION where REGISTRANTID = [REGISTRANT].ID)
then 1
else 0
end as EVENTALLOWSDESIGNATIONSONFEES
from dbo.[REGISTRANT]
inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
left outer join dbo.[SALESORDERITEMEVENTREGISTRATION] SOIER on SOIER.REGISTRANTID = REGISTRANT.ID
left outer join dbo.[SALESORDERITEM] SOI on SOI.ID = SOIER.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) as NF
where
EVENT.PROGRAMID is null and
[REGISTRANT].[GUESTOFREGISTRANTID] is null and
[REGISTRANT].[ISCANCELLED] = 0 and
(
@CONSTITUENTID is null
or REGISTRANT.CONSTITUENTID in (select ID from @CONSTITUENTS)
or REGISTRANT.ID in ( --CONSTITUENTID is the guest in the registration
select [REG].[GUESTOFREGISTRANTID]
from dbo.[REGISTRANT] as [REG]
inner join @CONSTITUENTS [CONSTITUENTS]
on [REG].[CONSTITUENTID] = [CONSTITUENTS].[ID]
)
) and
( --Registration is for the EVENT
@EVENTID is null or
[EVENT].[ID] in (select [EVENTID] from @REGISTRANTEVENTS)
)
and (@SALESORDERID is null or SOI.SALESORDERID = @SALESORDERID)
) as [REGISTRATIONS]
where
(
@FILTERZEROBALANCE = 0 or
(@FILTERZEROBALANCE = 1 and [REGISTRATIONS].[BALANCE] > 0)
)
option (recompile);
return;
end