USP_DATAFORMTEMPLATE_VIEW_CREDITDONATIONVIEW
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@ITEMS | xml | INOUT | |
@TOTAL | money | INOUT | |
@PAYMENTS | xml | INOUT | |
@OTHERPAYMENTMETHODS | xml | INOUT | |
@TRANSACTIONID | uniqueidentifier | INOUT | |
@TIMESTAMP | bigint | INOUT | |
@CONSTITUENTID | uniqueidentifier | INOUT | |
@CONSTITUENTNAME | nvarchar(154) | INOUT |
Definition
Copy
create procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CREDITDONATIONVIEW
(
@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;
select
@OTHERPAYMENTMETHODS =
(select
[ID],
[DESCRIPTION]
from dbo.[OTHERPAYMENTMETHODCODE]
for xml raw ('ITEM'), type, elements, root('OTHERPAYMENTMETHODS'), BINARY BASE64)
select
@TOTAL = sum(coalesce(REVENUESPLIT.AMOUNT, 0))
from
dbo.REVENUESPLIT
where
REVENUESPLIT.ID = @ID;
declare @TOTALREFUND money;
select
@TOTALREFUND = sum(coalesce([CREDITITEM].[TOTAL], 0))
from
dbo.[CREDITITEM]
where
[CREDITITEM].[REVENUESPLITID] = @ID
set @TOTAL = @TOTAL - coalesce(@TOTALREFUND, 0)
select
@ITEMS =
(select
null as [SALESORDERITEMID],
0 as [INCLUDE],
0 as [QUANTITYREFUNDING],
1 as [QUANTITY],
(select NAME from dbo.DESIGNATION where ID = [REVENUESPLIT].[DESIGNATIONID]) as [DESCRIPTION],
@TOTAL as [PRICE],
0 as [FEES],
@TOTAL as [TOTAL],
0 as [REFUNDINGTOTAL],
0 as [DISCOUNTS],
0 as [DISCOUNTED],
2 as [TYPECODE],
null as [PROGRAMID],
0 as [GROUPTYPECODE],
null as [GROUPID]
from dbo.[REVENUE]
inner join dbo.[REVENUESPLIT] on [REVENUE].[ID] = [REVENUESPLIT].[REVENUEID]
where [REVENUESPLIT].[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],
[REVENUE].[ID] as [REVENUEID],
null as [REVENUESPLITID],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
sum(coalesce([CREDITITEM].[TOTAL], 0)) as [REFUNDS],
[SALESORDERITEM].[ID] as [PAYMENTGROUPID],
[SALESORDERITEM].[PRICE] as [PAYMENTGROUPMAXAMOUNT]
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.[REVENUE] on [SALESORDERPAYMENT].[PAYMENTID] = [REVENUE].[ID]
inner join dbo.[REVENUESPLIT] on [REVENUE].[ID] = [REVENUESPLIT].[REVENUEID]
inner join dbo.[REVENUEPAYMENTMETHOD] on [REVENUE].[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.[CREDITITEM] on [CREDITITEM].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
where [REVENUESPLIT].[ID] = @ID
group by
[REVENUE].[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]
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],
[REVENUE].[SEQUENCEID] as [SOURCENUMBER],
2 as [SOURCETYPE],
case
when [REVENUE].[BATCHNUMBER] is not null then
[REVENUESPLIT].[AMOUNT]
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end [REFUNDAMOUNT],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] as [PAYMENTTYPECODE],
null as [REVENUEID],
[REVENUESPLIT].[ID] as [REVENUESPLITID],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
sum(coalesce([CREDITPAYMENT].[AMOUNT], 0)) as [REFUNDS],
[REVENUESPLIT].[ID] as [PAYMENTGROUPID],
case
when [REVENUE].[BATCHNUMBER] is not null then
[REVENUESPLIT].[AMOUNT]
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end [PAYMENTGROUPMAXAMOUNT]
from dbo.[REVENUE]
inner join dbo.[REVENUESPLIT] on [REVENUE].[ID] = [REVENUESPLIT].[REVENUEID]
inner join dbo.[REVENUEPAYMENTMETHOD] on [REVENUE].[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] = [REVENUESPLIT].[ID]
where [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] <> 9 and
[REVENUESPLIT].[ID] = @ID
group by
[REVENUESPLIT].[ID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE],
[OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER],
[CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER],
[REVENUE].[SEQUENCEID],
[REVENUEPAYMENTMETHOD].[AMOUNT],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
[REVENUE].[BATCHNUMBER],
[REVENUESPLIT].[AMOUNT])
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]
from PAYMENTS_CTE PARAMETERS
where [REFUNDAMOUNT] - coalesce([REFUNDS], 0) > 0
order by [SOURCETYPE], [SOURCENUMBER]
for xml raw ('ITEM'), type, elements, root('PAYMENTS'), BINARY BASE64)
select
@TIMESTAMP = [TSLONG]
from
dbo.[REVENUESPLIT]
where
[ID] = @TRANSACTIONID;
select
@CONSTITUENTID = REVENUE.CONSTITUENTID,
@CONSTITUENTNAME = dbo.UFN_CONSTITUENT_BUILDNAME(REVENUE.CONSTITUENTID)
from
dbo.REVENUE
inner join
dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
where
REVENUESPLIT.ID = @ID;
set @DATALOADED = 1;
return 0;