USP_DATAFORMTEMPLATE_VIEW_CREDITTRANSACTIONVIEW
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_CREDITTRANSACTIONVIEW
(
@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;
set @OTHERPAYMENTMETHODS = (
select
[ID],
[DESCRIPTION]
from dbo.[OTHERPAYMENTMETHODCODE]
for xml raw ('ITEM'), type, elements, root('OTHERPAYMENTMETHODS'), BINARY BASE64
);
select
@DATALOADED = 1,
@TOTAL = FT.BASEAMOUNT,
@TIMESTAMP = FT.TSLONG,
@CONSTITUENTID = FT.CONSTITUENTID,
@CONSTITUENTNAME = NF.NAME
from dbo.FINANCIALTRANSACTION as FT
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FT.CONSTITUENTID) as NF
where FT.ID = @ID and FT.DELETEDON is null;
declare @TOTALREFUND money;
select
@TOTALREFUND = isnull(sum((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS), 0)
from
dbo.FINANCIALTRANSACTION as FT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join
dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
where
LI.SOURCELINEITEMID in (
select ID
from dbo.FINANCIALTRANSACTIONLINEITEM
where FINANCIALTRANSACTIONID = @ID and DELETEDON is null and TYPECODE <> 1 -- Reversal
)
and FT.TYPECODE = 23; -- Refund
set @TOTAL -= @TOTALREFUND;
set @ITEMS = (
select
null as [SALESORDERITEMID],
0 as [INCLUDE],
0 as [QUANTITYREFUNDING],
1 as [QUANTITY],
case EXT.[APPLICATIONCODE]
when 5 then
case
when [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] = 10 then
dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION([OTHERPAYMENTMETHODCODEID])
else
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD] +
coalesce(', ' + dbo.UFN_CREDITTYPECODE_GETDESCRIPTION([CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]) + ' #' + [CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER], '') +
coalesce(' #' + [CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER], '')
end -- Membership
when 1 then NF.NAME + ' - ' + [EVENT].[NAME] -- Event registration
when 0 then (select NAME from dbo.DESIGNATION where ID = EXT.[DESIGNATIONID]) -- Donation
end as [DESCRIPTION],
LI.BASEAMOUNT as [PRICE],
0 as [FEES],
LI.BASEAMOUNT as [TOTAL],
0 as [REFUNDINGTOTAL],
0 as [DISCOUNTS],
0 as [DISCOUNTED],
case EXT.[APPLICATIONCODE]
when 5 then 1 -- Membership
when 1 then 1 -- Event registration
when 0 then 2 -- Donation
end as [TYPECODE],
null as [PROGRAMID],
0 as [GROUPTYPECODE],
null as [GROUPID]
from
dbo.FINANCIALTRANSACTION as FT
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join
dbo.REVENUESPLIT_EXT as EXT on EXT.ID = LI.ID
inner join
dbo.[REVENUEPAYMENTMETHOD] on [REVENUEPAYMENTMETHOD].[REVENUEID] = FT.ID
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.[EVENTREGISTRANTPAYMENT] on LI.[ID] = [EVENTREGISTRANTPAYMENT].[PAYMENTID]
left join
dbo.[REGISTRANT] on [EVENTREGISTRANTPAYMENT].[REGISTRANTID] = [REGISTRANT].[ID]
left join
dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
outer apply
dbo.UFN_CONSTITUENT_DISPLAYNAME(FT.CONSTITUENTID) as NF
where
FT.[ID] = @ID
and EXT.[APPLICATIONCODE] in (0,1,5)
and FT.DELETEDON is null
and LI.DELETEDON is null
and LI.TYPECODE <> 1 -- Reversal
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],
SALESORDERPAYMENT.PAYMENTID 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]
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.[REVENUEPAYMENTMETHOD] on [REVENUEPAYMENTMETHOD].[REVENUEID] = SALESORDERPAYMENT.PAYMENTID
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 SALESORDERPAYMENT.PAYMENTID = @ID
group by
SALESORDERPAYMENT.PAYMENTID,
[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],
FT.SEQUENCEGENERATORID as [SOURCENUMBER],
2 as [SOURCETYPE],
case
when REVENUE_EXT.BATCHNUMBER <> '' then
LI.BASEAMOUNT
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end as [REFUNDAMOUNT],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] as [PAYMENTTYPECODE],
null as [REVENUEID],
LI.[ID] as [REVENUESPLITID],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
sum(coalesce([CREDITPAYMENT].[AMOUNT], 0)) as [REFUNDS],
LI.[ID] as [PAYMENTGROUPID],
case
when REVENUE_EXT.BATCHNUMBER <> '' then
LI.BASEAMOUNT
else
[REVENUEPAYMENTMETHOD].[AMOUNT]
end as [PAYMENTGROUPMAXAMOUNT]
from dbo.FINANCIALTRANSACTION as FT
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = FT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join dbo.[REVENUEPAYMENTMETHOD] on FT.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] = LI.[ID]
where [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] <> 9 and FT.ID = @ID and LI.DELETEDON is null and LI.TYPECODE <> 1 -- Reversal
group by
LI.[ID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE],
[OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID],
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
[CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER],
[CHECKPAYMENTMETHODDETAIL].[CHECKNUMBER],
FT.SEQUENCEGENERATORID,
[REVENUEPAYMENTMETHOD].[AMOUNT],
[CREDITCARDPAYMENTMETHODDETAIL].[TRANSACTIONID],
REVENUE_EXT.BATCHNUMBER,
LI.BASEAMOUNT
)
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
where [REFUNDAMOUNT] - coalesce([REFUNDS], 0) > 0
order by [SOURCETYPE], [SOURCENUMBER]
for xml raw ('ITEM'), type, elements, root('PAYMENTS'), BINARY BASE64
);
return 0;