UFN_REGISTRANT_GETDATEANDPAYMENTMETHODLISTS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REGISTRANTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REGISTRANT_GETDATEANDPAYMENTMETHODLISTS
(
@REGISTRANTID uniqueidentifier
)
returns @RESULTS table (DATELIST nvarchar(max), PAYMENTMETHODLIST nvarchar(max), SALESMETHODLIST nvarchar(max), APPUSERLIST nvarchar(max))
as
begin
declare @DATELIST nvarchar(max) = null;
declare @METHODLIST nvarchar(max) = null;
declare @APPUSERLIST nvarchar(max) = null;
declare @SALESMETHODLIST nvarchar(max) = null;
declare @SEPERATER nchar(2) = N', ';
select
@APPUSERLIST = dbo.UDA_BUILDLISTWITHDELIMITER(distinct APPUSER.DISPLAYNAME, @SEPERATER),
@SALESMETHODLIST = dbo.UDA_BUILDLISTWITHDELIMITER(distinct isnull(SALESORDER.SALESMETHODTYPE, N'Back office'), @SEPERATER)
from
dbo.EVENTREGISTRANTPAYMENT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM on EVENTREGISTRANTPAYMENT.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
inner join
dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
left outer join
dbo.SALESORDER on FINANCIALTRANSACTION.ID = SALESORDER.REVENUEID
left outer join
dbo.APPUSER on SALESORDER.APPUSERID = APPUSER.ID
where
EVENTREGISTRANTPAYMENT.REGISTRANTID = @REGISTRANTID;
-- Back office event registrations
select
@METHODLIST = coalesce(@METHODLIST, '') +
coalesce(
case
when @METHODLIST like '%' +
case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
when 10 then OTHERPAYMENTMETHODCODE.DESCRIPTION
else REVENUEPAYMENTMETHOD.PAYMENTMETHOD
end + '%' then null
else case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
when 10 then OTHERPAYMENTMETHODCODE.DESCRIPTION
else REVENUEPAYMENTMETHOD.PAYMENTMETHOD
end
end + @SEPERATER, ''
)
from
dbo.EVENTREGISTRANTPAYMENT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
inner join
dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
inner join
dbo.REVENUEPAYMENTMETHOD on FT.ID = REVENUEPAYMENTMETHOD.REVENUEID
left outer join
dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
left outer join
dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODE.ID
where
EVENTREGISTRANTPAYMENT.REGISTRANTID = @REGISTRANTID
and REVENUEPAYMENTMETHOD.AMOUNT > 0
and FT.DELETEDON is null
and LI.DELETEDON is null
and LI.TYPECODE <> 1 -- Reversal
order by
FT.DATE;
-- Front office event registrations
select
@METHODLIST = coalesce(@METHODLIST, '') +
coalesce(
case
when @METHODLIST like '%' +
case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
when 10 then OTHERPAYMENTMETHODCODE.DESCRIPTION
else REVENUEPAYMENTMETHOD.PAYMENTMETHOD
end + '%' then null
else case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
when 10 then OTHERPAYMENTMETHODCODE.DESCRIPTION
else REVENUEPAYMENTMETHOD.PAYMENTMETHOD
end
end + @SEPERATER, ''
)
from
dbo.SALESORDER
inner join
dbo.SALESORDERITEM on SALESORDER.ID = SALESORDERITEM.SALESORDERID
inner join
dbo.SALESORDERITEMEVENTREGISTRATION on SALESORDERITEM.ID = SALESORDERITEMEVENTREGISTRATION.ID
inner join
dbo.SALESORDERPAYMENT on SALESORDER.ID = SALESORDERPAYMENT.SALESORDERID
inner join
dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
left outer join
dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
left outer join
dbo.OTHERPAYMENTMETHODCODE on OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODE.ID
where
SALESORDERITEMEVENTREGISTRATION.REGISTRANTID = @REGISTRANTID
order by
SALESORDER.TRANSACTIONDATE;
if (@METHODLIST like '%' + @SEPERATER)
set @METHODLIST = substring(@METHODLIST, 0, len(@METHODLIST));
select
@DATELIST = coalesce(@DATELIST, '') +
coalesce(
case
when @DATELIST like '%' + convert(nvarchar, cast(FT.DATE as datetime)) + '%' then null
else convert(nvarchar, cast(FT.DATE as datetime))
end + @SEPERATER, ''
)
from
dbo.EVENTREGISTRANTPAYMENT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
inner join
dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
where
EVENTREGISTRANTPAYMENT.REGISTRANTID = @REGISTRANTID
group by
FT.ID, FT.DATE
order by
FT.DATE;
if (@DATELIST like '%' + @SEPERATER)
set @DATELIST = substring(@DATELIST, 0, len(@DATELIST));
insert into @RESULTS (DATELIST, PAYMENTMETHODLIST, SALESMETHODLIST, APPUSERLIST) values (@DATELIST, @METHODLIST, @SALESMETHODLIST, @APPUSERLIST);
return;
end