USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONPLEDGEDETAIL
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | nvarchar(73) | IN | |
@DATALOADED | bit | INOUT | |
@PLEDGEID | uniqueidentifier | INOUT | |
@GIVENANONYMOUSLY | bit | INOUT | |
@TOTALPLEDGEAMOUNT | money | INOUT | |
@TOTALSPLITS | int | INOUT | |
@BASECURRENCYID | uniqueidentifier | INOUT | |
@TRANSACTIONTYPE | nvarchar(100) | INOUT | |
@FREQUENCYCODE | tinyint | INOUT | |
@STARTON | date | INOUT | |
@ENDON | date | INOUT | |
@NUMBEROFINSTALLMENTS | int | INOUT | |
@TOTALAPPLIEDTOTHISPURPOSE | money | INOUT | |
@THISPURPOSESPLITS | xml | INOUT | |
@TOTALAPPLIEDTOOTHERPURPOSES | money | INOUT | |
@OTHERPURPOSESPLITS | xml | INOUT | |
@PAYMENTSTOTAL | money | INOUT | |
@PAYMENTS | xml | INOUT | |
@WRITEOFFSTOTAL | money | INOUT | |
@WRITEOFFS | xml | INOUT | |
@TRANSACTIONCURRENCYID | uniqueidentifier | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONPLEDGEDETAIL (
@ID nvarchar(73)
,@DATALOADED bit = 0 output
,@PLEDGEID uniqueidentifier = null output
,@GIVENANONYMOUSLY bit = null output
,@TOTALPLEDGEAMOUNT money = null output
,@TOTALSPLITS int = null output
,@BASECURRENCYID uniqueidentifier = null output
,@TRANSACTIONTYPE nvarchar(100) = null output
,@FREQUENCYCODE tinyint = null output
,@STARTON date = null output
,@ENDON date = null output
,@NUMBEROFINSTALLMENTS int = null output
,@TOTALAPPLIEDTOTHISPURPOSE money = null output
,@THISPURPOSESPLITS xml = null output
,@TOTALAPPLIEDTOOTHERPURPOSES money = null output
,@OTHERPURPOSESPLITS xml = null output
,@PAYMENTSTOTAL money = null output
,@PAYMENTS xml = null output
,@WRITEOFFSTOTAL money = null output
,@WRITEOFFS xml = null output
,@TRANSACTIONCURRENCYID uniqueidentifier = null output
)
as
begin
set nocount on;
set @DATALOADED = 0;
declare @PURPOSEID uniqueidentifier = null;
select @PLEDGEID = cast(substring(@ID, 0, 37) as uniqueidentifier)
select @PURPOSEID = cast(substring(@ID, 38, 36) as uniqueidentifier)
select top 1 @DATALOADED = 1
,@TOTALPLEDGEAMOUNT = FT.TRANSACTIONAMOUNT
,@BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
,@FREQUENCYCODE = REVENUESCHEDULE.FREQUENCYCODE
,@STARTON = REVENUESCHEDULE.STARTDATE
,@ENDON = REVENUESCHEDULE.ENDDATE
,@TRANSACTIONTYPE = FT.TYPE
,@GIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY
,@NUMBEROFINSTALLMENTS = REVENUESCHEDULE.NUMBEROFINSTALLMENTS
,@TRANSACTIONCURRENCYID = FT.TRANSACTIONCURRENCYID
from dbo.FINANCIALTRANSACTION FT
inner join dbo.REVENUE_EXT on FT.ID = REVENUE_EXT.ID
inner join dbo.REVENUESCHEDULE on FT.ID = REVENUESCHEDULE.ID
left join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = FT.PDACCOUNTSYSTEMID
left join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
where FT.ID = @PLEDGEID
select @STARTON = MIN(INSTALLMENT.[DATE])
,@ENDON = MAX(INSTALLMENT.[DATE])
from dbo.INSTALLMENT
where INSTALLMENT.REVENUEID = @PLEDGEID;
declare @designationttable table (
ID uniqueidentifier
,USERID nvarchar(512)
,AMOUNT money
,CURRENCYID uniqueidentifier
,THISPURPOSE bit
);
insert into @designationttable (
ID
,USERID
,AMOUNT
,CURRENCYID
,THISPURPOSE
)
select SPLITAPPLICATIONINFO.DESIGNATIONID
,[USERID]=case when PLEDGE.TYPECODE=15 then isnull(D.USERID,'None (Earned income)') else D.USERID end
,PLEDGELINEITEM.TRANSACTIONAMOUNT
,@TRANSACTIONCURRENCYID
,THISPURPOSE = case
when @PURPOSEID in (
D.DESIGNATIONLEVEL1ID
,D.DESIGNATIONLEVEL2ID
,D.DESIGNATIONLEVEL3ID
,D.DESIGNATIONLEVEL4ID
,D.DESIGNATIONLEVEL5ID
)
then 1
else 0
end
from dbo.FINANCIALTRANSACTION PLEDGE with (readuncommitted)
inner join dbo.FINANCIALTRANSACTIONLINEITEM PLEDGELINEITEM with (readuncommitted) on PLEDGE.ID = PLEDGELINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO with (readuncommitted) on PLEDGELINEITEM.ID = SPLITAPPLICATIONINFO.ID
left join dbo.DESIGNATION D on SPLITAPPLICATIONINFO.DESIGNATIONID = D.ID --left joining because membership installment plans don't necessarily have designations
where PLEDGE.ID = @PLEDGEID
and (
PLEDGE.DELETEDON is null
and PLEDGELINEITEM.DELETEDON is null
);
select @TOTALSPLITS = COUNT(distinct ID)
from @designationttable
select @TOTALAPPLIEDTOTHISPURPOSE = sum(case
when THISPURPOSE = 1
then AMOUNT
else 0
end)
,@TOTALAPPLIEDTOOTHERPURPOSES = sum(case
when THISPURPOSE = 0
then AMOUNT
else 0
end)
from @designationttable;
set @THISPURPOSESPLITS = (
select top 6 [ID] = D.ID
,[AMOUNT] = SUM(D.AMOUNT)
,[DESIGNATION] = D.USERID
,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
from @designationttable D
where THISPURPOSE = 1
group by D.ID
,D.USERID
order by [AMOUNT] DESC, D.USERID
for xml raw('ITEM')
,type
,elements
,root('THISPURPOSESPLITS')
,binary BASE64
)
set @THISPURPOSESPLITS = isnull(@THISPURPOSESPLITS, '<THISPURPOSESPLITS></THISPURPOSESPLITS>')
set @OTHERPURPOSESPLITS = (
select top 6 [ID] = D.ID
,[AMOUNT] = SUM(D.AMOUNT)
,[DESIGNATION] = D.USERID
,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
from @designationttable D
where THISPURPOSE = 0
group by D.ID
,D.USERID
order by [AMOUNT] DESC, D.USERID
for xml raw('ITEM')
,type
,elements
,root('OTHERPURPOSESPLITS')
,binary BASE64
)
set @OTHERPURPOSESPLITS = isnull(@OTHERPURPOSESPLITS, '<OTHERPURPOSESPLITS></OTHERPURPOSESPLITS>');
with ISP_CTE
as (
select ISP.PAYMENTID
,SUM(ISP.AMOUNT) AMOUNT
from dbo.INSTALLMENTSPLITPAYMENT ISP
where ISP.PLEDGEID = @PLEDGEID
group by ISP.PAYMENTID
)
select @PAYMENTSTOTAL = sum(AMOUNT)
from dbo.FINANCIALTRANSACTION PAYMENT with (readuncommitted)
inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT with (readuncommitted) on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join ISP_CTE ISP with (readuncommitted) on PAYMENTSPLIT.ID = ISP.PAYMENTID
inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO with (readuncommitted) on PAYMENTSPLIT.ID = SPLITAPPLICATIONINFO.ID
inner join dbo.DESIGNATION D on SPLITAPPLICATIONINFO.DESIGNATIONID = D.ID
where (
PAYMENT.DELETEDON is null
and PAYMENTSPLIT.DELETEDON is null
)
and PAYMENT.TYPECODE = 0
and (
D.DESIGNATIONLEVEL1ID = @PURPOSEID
or D.DESIGNATIONLEVEL2ID = @PURPOSEID
or D.DESIGNATIONLEVEL3ID = @PURPOSEID
or D.DESIGNATIONLEVEL4ID = @PURPOSEID
or D.DESIGNATIONLEVEL5ID = @PURPOSEID
);
with ISP_CTE
as (
select ISP.PAYMENTID
,SUM(ISP.AMOUNT) AMOUNT
from dbo.INSTALLMENTSPLITPAYMENT ISP
where ISP.PLEDGEID = @PLEDGEID
group by ISP.PAYMENTID
)
select @PAYMENTS = (
select top 6 [PAYMENTID] = PAYMENT.ID
,[DATE] = cast(PAYMENT.date as datetime)
,[GIVENANONYMOUSLY] = REVENUE_EXT.GIVENANONYMOUSLY
,[AMOUNT] = SUM(ISP.AMOUNT) --SUM(PAYMENTSPLIT.TRANSACTIONAMOUNT)
,[DESIGNATION] = dbo.UDA_BUILDLIST(distinct D.USERID)
,[BASECURRENCYID] = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID --PAYMENT.TRANSACTIONCURRENCYID
from dbo.FINANCIALTRANSACTION PAYMENT with (readuncommitted)
inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT with (readuncommitted) on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join ISP_CTE ISP with (readuncommitted) on PAYMENTSPLIT.ID = ISP.PAYMENTID
inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO with (readuncommitted) on PAYMENTSPLIT.ID = SPLITAPPLICATIONINFO.ID
inner join dbo.DESIGNATION D on SPLITAPPLICATIONINFO.DESIGNATIONID = D.ID
inner join dbo.REVENUE_EXT on PAYMENT.ID = REVENUE_EXT.ID
left join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = PAYMENT.PDACCOUNTSYSTEMID
left join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
where (
PAYMENT.DELETEDON is null
and PAYMENTSPLIT.DELETEDON is null
)
and PAYMENT.TYPECODE = 0
and (
D.DESIGNATIONLEVEL1ID = @PURPOSEID
or D.DESIGNATIONLEVEL2ID = @PURPOSEID
or D.DESIGNATIONLEVEL3ID = @PURPOSEID
or D.DESIGNATIONLEVEL4ID = @PURPOSEID
or D.DESIGNATIONLEVEL5ID = @PURPOSEID
)
group by PAYMENT.ID
,cast(PAYMENT.date as datetime)
,REVENUE_EXT.GIVENANONYMOUSLY
,isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
--,PAYMENT.TRANSACTIONCURRENCYID
order by [DATE] desc
for xml raw('ITEM')
,type
,elements
,root('PAYMENTS')
,binary BASE64
)
set @PAYMENTS = isnull(@PAYMENTS, '<PAYMENTS></PAYMENTS>');
with ISCTE
as (
select ISPLIT.REVENUESPLITID
,ISWO.WRITEOFFID
,ISPLIT.DESIGNATIONID
,SUM(ISWO.TRANSACTIONAMOUNT) AMOUNT
from dbo.INSTALLMENTSPLITWRITEOFF ISWO with (readuncommitted)
inner join dbo.INSTALLMENTSPLIT ISPLIT with (readuncommitted) on ISWO.INSTALLMENTSPLITID = ISPLIT.ID
inner join dbo.DESIGNATION D with (readuncommitted) on ISPLIT.DESIGNATIONID = D.ID
where ISPLIT.PLEDGEID = @PLEDGEID
and (
D.DESIGNATIONLEVEL1ID = @PURPOSEID
or D.DESIGNATIONLEVEL2ID = @PURPOSEID
or D.DESIGNATIONLEVEL3ID = @PURPOSEID
or D.DESIGNATIONLEVEL4ID = @PURPOSEID
or D.DESIGNATIONLEVEL5ID = @PURPOSEID
)
group by ISPLIT.REVENUESPLITID
,ISWO.WRITEOFFID
,ISPLIT.DESIGNATIONID
)
select @WRITEOFFSTOTAL = sum(ISCTE.AMOUNT)
from ISCTE with (readuncommitted)
inner join dbo.FINANCIALTRANSACTION WRITEOFF with (readuncommitted) on ISCTE.WRITEOFFID = WRITEOFF.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTLINEITEM on ISCTE.REVENUESPLITID = COMMITMENTLINEITEM.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFLINEITEM with (readuncommitted) on WRITEOFF.ID = WRITEOFFLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT WRITEOFFAPPINFO with (readuncommitted) on WRITEOFFLINEITEM.ID = WRITEOFFAPPINFO.ID
and ISCTE.DESIGNATIONID = WRITEOFFAPPINFO.DESIGNATIONID
where (
WRITEOFF.DELETEDON is null
and WRITEOFFLINEITEM.DELETEDON is null
and COMMITMENTLINEITEM.DELETEDON is null
)
and WRITEOFF.TYPECODE = 20;
with ISCTE
as (
select ISPLIT.REVENUESPLITID
,ISWO.WRITEOFFID
,D.USERID
,D.ID DESIGNATIONID
,SUM(ISWO.TRANSACTIONAMOUNT) AMOUNT
from dbo.INSTALLMENTSPLITWRITEOFF ISWO with (readuncommitted)
inner join dbo.INSTALLMENTSPLIT ISPLIT with (readuncommitted) on ISWO.INSTALLMENTSPLITID = ISPLIT.ID
inner join dbo.DESIGNATION D with (readuncommitted) on ISPLIT.DESIGNATIONID = D.ID
where ISPLIT.PLEDGEID = @PLEDGEID
and (
D.DESIGNATIONLEVEL1ID = @PURPOSEID
or D.DESIGNATIONLEVEL2ID = @PURPOSEID
or D.DESIGNATIONLEVEL3ID = @PURPOSEID
or D.DESIGNATIONLEVEL4ID = @PURPOSEID
or D.DESIGNATIONLEVEL5ID = @PURPOSEID
)
group by ISPLIT.REVENUESPLITID
,ISWO.WRITEOFFID
,D.USERID
,D.ID
)
select @WRITEOFFS = (
select top 6 [ID] = WRITEOFF.ID
,[DATE] = cast(WRITEOFF.[DATE] as datetime)
,[AMOUNT] = sum(ISCTE.AMOUNT)
,[DESIGNATION] = dbo.UDA_BUILDLIST(ISCTE.USERID)
,[BASECURRENCYID] = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
from ISCTE with (readuncommitted)
inner join dbo.FINANCIALTRANSACTION WRITEOFF with (readuncommitted) on ISCTE.WRITEOFFID = WRITEOFF.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTLINEITEM on ISCTE.REVENUESPLITID = COMMITMENTLINEITEM.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFLINEITEM with (readuncommitted) on WRITEOFF.ID = WRITEOFFLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT WRITEOFFAPPINFO with (readuncommitted) on WRITEOFFLINEITEM.ID = WRITEOFFAPPINFO.ID
and ISCTE.DESIGNATIONID = WRITEOFFAPPINFO.DESIGNATIONID
left join dbo.REVENUE_EXT on WRITEOFF.ID = REVENUE_EXT.ID
left join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = WRITEOFF.PDACCOUNTSYSTEMID
left join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
where (
WRITEOFF.DELETEDON is null
and WRITEOFFLINEITEM.DELETEDON is null
and COMMITMENTLINEITEM.DELETEDON is null
)
and WRITEOFF.TYPECODE = 20
group by WRITEOFF.ID
,cast(WRITEOFF.[DATE] as datetime)
,isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
order by [DATE] desc
for xml raw('ITEM')
,type
,elements
,root('WRITEOFFS')
,binary BASE64
)
set @WRITEOFFS = isnull(@WRITEOFFS, '<WRITEOFFS></WRITEOFFS>')
return 0;
end