USP_DATAFORMTEMPLATE_VIEW_CREDITEVENTREGISTRATIONVIEW
The load procedure used by the view dataform template "Credit Event Registration Refund View"
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. |
@ITEMS | xml | INOUT | ITEMS |
@TOTAL | money | INOUT | Order total |
@PAYMENTS | xml | INOUT | PAYMENTS |
@OTHERPAYMENTMETHODS | xml | INOUT | OTHERPAYMENTMETHODS |
@TRANSACTIONID | uniqueidentifier | INOUT | TRANSACTIONID |
@TIMESTAMP | bigint | INOUT | TIMESTAMP |
@CONSTITUENTID | uniqueidentifier | INOUT | |
@CONSTITUENTNAME | nvarchar(154) | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CREDITEVENTREGISTRATIONVIEW
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ITEMS xml = null output,
@TOTAL money = null output,
@PAYMENTS xml = null output,
@OTHERPAYMENTMETHODS xml = null output,
@TRANSACTIONID uniqueidentifier = null output,
@TIMESTAMP bigint = null output,
@CONSTITUENTID uniqueidentifier = null output,
@CONSTITUENTNAME nvarchar(154) = null output
)
as
set nocount on;
set @DATALOADED = 0;
set @TRANSACTIONID = @ID
--Error if the registration has been fully refunded already
if (
dbo.UFN_REGISTRANT_CALCULATETOTALPAID(@ID) <= 0 and
exists(select 1 from dbo.[CREDITITEMEVENTREGISTRATION] where [REGISTRANTID] = @ID)
)
begin
raiserror('The selected event registration has previously been refunded in full.', 13, 1);
return 0;
end
set @OTHERPAYMENTMETHODS = (
select
[ID],
[DESCRIPTION]
from dbo.[OTHERPAYMENTMETHODCODE]
for xml raw ('ITEM'), type, elements, root('OTHERPAYMENTMETHODS'), BINARY BASE64
);
select
@TOTAL = sum(LI.BASEAMOUNT)
from
dbo.[REGISTRANT]
inner join
dbo.[EVENTREGISTRANTPAYMENT] on [EVENTREGISTRANTPAYMENT].[REGISTRANTID] = [REGISTRANT].[ID]
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
where
[REGISTRANT].[ID] = @ID
and LI.DELETEDON is null
and LI.TYPECODE <> 1 -- Reversal
declare @TOTALREFUND money;
select @TOTALREFUND = isnull(sum((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS), 0)
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.[CREDITITEMEVENTREGISTRATION] on LI.[ID] = [CREDITITEMEVENTREGISTRATION].[ID]
where [REGISTRANTID] = @ID;
set @TOTAL -= @TOTALREFUND;
set @ITEMS = (
select
null as [SALESORDERITEMID],
0 as [INCLUDE],
0 as [QUANTITYREFUNDING],
1 as [QUANTITY],
NF.NAME + ' - ' + [EVENT].[NAME]
as [DESCRIPTION],
@TOTAL as [PRICE],
0 as [FEES],
@TOTAL as [TOTAL],
0 as [REFUNDINGTOTAL],
0 as [DISCOUNTS],
0 as [DISCOUNTED],
1 as [TYPECODE],
null as [PROGRAMID],
1 as [GROUPTYPECODE],
[REGISTRANT].[ID] as [GROUPID],
case
when exists(
select *
from dbo.EVENTREGISTRANTPAYMENT
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
inner join dbo.REVENUESPLIT_EXT as EXT on EXT.ID = LI.ID
left outer join dbo.SALESORDERITEMEVENTREGISTRATION on SALESORDERITEMEVENTREGISTRATION.REGISTRANTID = EVENTREGISTRANTPAYMENT.REGISTRANTID
where
EVENTREGISTRANTPAYMENT.REGISTRANTID = @ID
and EXT.APPLICATIONCODE = 1 -- Event registration
and EXT.TYPECODE = 0 -- Gift
and SALESORDERITEMEVENTREGISTRATION.ID is null
and LI.DELETEDON is null
and LI.TYPECODE <> 1 -- Reversal
)
then 1
else 0
end as HASDESIGNATIONS
from dbo.[REGISTRANT]
inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) as NF
where [REGISTRANT].[ID] = @ID
for xml raw ('ITEM'), type, elements, root('ITEMS'), BINARY BASE64
);
with PAYMENTS_CTE as (
--payments made on an order
select
0 as INCLUDE,
case
when [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] = 10 then
dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION([OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID])
else
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD] +
coalesce(', ' + dbo.UFN_CREDITTYPECODE_GETDESCRIPTION([CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]) + ' #' + [CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER], '') +
coalesce(' #' + [CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER], '')
end [DESCRIPTION],
null as [DISPLAYSOURCE],
[SALESORDER].[SEQUENCEID] as [SOURCENUMBER],
0 as [SOURCETYPE],
case
when [SALESORDERPAYMENT].[AMOUNT] < [SALESORDERITEM].[TOTAL] then
[SALESORDERPAYMENT].[AMOUNT]
else
[SALESORDERITEM].[TOTAL]
end [REFUNDAMOUNT],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] as [PAYMENTTYPECODE],
[FINANCIALTRANSACTION].[ID] as [REVENUEID],
null as [REVENUESPLITID],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
sum(coalesce((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS, 0)) as [REFUNDS],
[SALESORDERITEM].[ID] as [PAYMENTGROUPID],
[SALESORDERITEM].[PRICE] as [PAYMENTGROUPMAXAMOUNT],
cast([FINANCIALTRANSACTION].[DATE] as datetime) as [PAYMENTDATE]
from dbo.[SALESORDERITEMEVENTREGISTRATION]
inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
inner join dbo.[SALESORDER] on [SALESORDERITEM].[SALESORDERID] = [SALESORDER].[ID]
inner join dbo.[SALESORDERPAYMENT] on [SALESORDERITEM].[SALESORDERID] = [SALESORDERPAYMENT].[SALESORDERID]
inner join dbo.[FINANCIALTRANSACTION] on [SALESORDERPAYMENT].[PAYMENTID] = [FINANCIALTRANSACTION].[ID]
inner join dbo.[REVENUEPAYMENTMETHOD] on [FINANCIALTRANSACTION].[ID] = [REVENUEPAYMENTMETHOD].[REVENUEID]
left join dbo.[CREDITCARDPAYMENTMETHODDETAIL] on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left join dbo.[OTHERPAYMENTMETHODDETAIL] on [OTHERPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left join dbo.[CHECKPAYMENTMETHODDETAIL] on [CHECKPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left outer join dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = [SALESORDERITEM].[ID]
left outer join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EXT.ID
where [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = @ID
group by
[FINANCIALTRANSACTION].[ID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE],
[OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER],
[CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER],
[SALESORDER].[SEQUENCEID],
[SALESORDERPAYMENT].[AMOUNT],
[SALESORDERITEM].[TOTAL],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
[SALESORDERITEM].[ID],
[SALESORDERITEM].[PRICE],
[FINANCIALTRANSACTION].[DATE]
union all
--payments made outside an order
select
0 as INCLUDE,
case
when [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] = 10 then
dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION([OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID])
else
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD] +
coalesce(', ' + dbo.UFN_CREDITTYPECODE_GETDESCRIPTION([CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]) + ' #' + [CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER], '') +
coalesce(' #' + [CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER], '')
end [DESCRIPTION],
null as [DISPLAYSOURCE],
[FINANCIALTRANSACTION].[SEQUENCEGENERATORID] as [SOURCENUMBER],
2 as [SOURCETYPE],
case
when [REVENUE_EXT].[BATCHNUMBER] is not null then
[FINANCIALTRANSACTIONLINEITEM].[BASEAMOUNT]
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end [REFUNDAMOUNT],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] as [PAYMENTTYPECODE],
null as [REVENUEID],
[FINANCIALTRANSACTIONLINEITEM].[ID] as [REVENUESPLITID],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
sum(coalesce([CREDITPAYMENT].[AMOUNT], 0)) as [REFUNDS],
[FINANCIALTRANSACTIONLINEITEM].[ID] as [PAYMENTGROUPID],
case
when [REVENUE_EXT].[BATCHNUMBER] is not null then
[FINANCIALTRANSACTIONLINEITEM].[BASEAMOUNT]
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end [PAYMENTGROUPMAXAMOUNT],
cast([FINANCIALTRANSACTION].[DATE] as datetime) as [PAYMENTDATE]
from dbo.[REGISTRANT]
inner join dbo.[EVENTREGISTRANTPAYMENT] on [EVENTREGISTRANTPAYMENT].[REGISTRANTID] = [REGISTRANT].[ID]
inner join dbo.[FINANCIALTRANSACTIONLINEITEM] on [EVENTREGISTRANTPAYMENT].[PAYMENTID] = [FINANCIALTRANSACTIONLINEITEM].[ID]
inner join dbo.[FINANCIALTRANSACTION] on [FINANCIALTRANSACTIONLINEITEM].[FINANCIALTRANSACTIONID] = [FINANCIALTRANSACTION].[ID]
left join dbo.[REVENUE_EXT] on [FINANCIALTRANSACTION].[ID] = [REVENUE_EXT].[ID]
inner join dbo.[REVENUEPAYMENTMETHOD] on [FINANCIALTRANSACTION].[ID] = [REVENUEPAYMENTMETHOD].[REVENUEID]
left join dbo.[CREDITCARDPAYMENTMETHODDETAIL] on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left join dbo.[OTHERPAYMENTMETHODDETAIL] on [OTHERPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left join dbo.[CHECKPAYMENTMETHODDETAIL] on [CHECKPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
left join dbo.[CREDITPAYMENT] on [CREDITPAYMENT].[REVENUESPLITID] = [FINANCIALTRANSACTIONLINEITEM].[ID]
where [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] <> 9 and
[REGISTRANT].ID = @ID
group by
[FINANCIALTRANSACTIONLINEITEM].[ID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE],
[OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER],
[CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER],
[FINANCIALTRANSACTION].[SEQUENCEGENERATORID],
[REVENUEPAYMENTMETHOD].[AMOUNT],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
[REVENUE_EXT].[BATCHNUMBER],
[FINANCIALTRANSACTIONLINEITEM].[BASEAMOUNT],
[FINANCIALTRANSACTION].[DATE]
)
select @PAYMENTS = (
select
[INCLUDE],
[DESCRIPTION],
'$' + cast(cast([REFUNDAMOUNT] as money) as nvarchar(20)) + ' ' + [DESCRIPTION] as [DISPLAYDESCRIPTION],
[DISPLAYSOURCE],
[SOURCENUMBER],
[SOURCETYPE],
[REFUNDAMOUNT] - coalesce([REFUNDS], 0) as [AMOUNTPAID],
[PAYMENTTYPECODE],
[REVENUEID],
[REVENUESPLITID],
[TRANSACTIONID],
[PAYMENTGROUPID],
[PAYMENTGROUPMAXAMOUNT],
[PAYMENTDATE]
from PAYMENTS_CTE
where [REFUNDAMOUNT] - coalesce([REFUNDS], 0) > 0
order by [SOURCETYPE], [SOURCENUMBER]
for xml raw ('ITEM'), type, elements, root('PAYMENTS'), BINARY BASE64
);
select
@TIMESTAMP = REGISTRANT.TSLONG,
@CONSTITUENTID = REGISTRANT.CONSTITUENTID,
@CONSTITUENTNAME = dbo.UFN_CONSTITUENT_BUILDNAME(REGISTRANT.CONSTITUENTID)
from
dbo.REGISTRANT
where
REGISTRANT.ID = @ID;
set @DATALOADED = 1;
return 0;