USP_REPORT_PLEDGEASOF
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ASOFDATE | date | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@POSTSTATUSCODEBITMAP | tinyint | IN | |
@ALLDETAILS | smallint | IN | |
@GROUPBY | tinyint | IN |
Definition
Copy
create procedure [dbo].[USP_REPORT_PLEDGEASOF]
(
@ASOFDATE date = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@POSTSTATUSCODEBITMAP tinyint = 4,
@ALLDETAILS smallint = 0,
@GROUPBY tinyint = 0
)
as
set nocount on
--Force the default values if null is specified (for BBMetal bug)
select @ALLDETAILS = isnull(@ALLDETAILS,0),
@GROUPBY = isnull(@GROUPBY,0),
@POSTSTATUSCODEBITMAP = isnull(@POSTSTATUSCODEBITMAP,4)
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID) ;
declare @SELECTEDCURRENCYID uniqueidentifier
select @SELECTEDCURRENCYID = BASECURRENCYID
from dbo.PDACCOUNTSYSTEM inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
declare @ISOCODE nvarchar(3);
declare @SYMBOLDISPLAYSETTINGCODE tinyint;
declare @CURRENCYSYMBOL nvarchar(5);
select
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE,
@ISOCODE = ISO4217,
@SYMBOLDISPLAYSETTINGCODE = SYMBOLDISPLAYSETTINGCODE,
@CURRENCYSYMBOL = CURRENCYSYMBOL
from
dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID);
declare @USERGRANTEDTRANSACTIONPAGE bit = 1;
declare @USERGRANTEDDESIGNATIONPAGE bit = 0;
if @ISADMIN = 1
begin
set @USERGRANTEDTRANSACTIONPAGE = 1;
set @USERGRANTEDDESIGNATIONPAGE = 1;
end
else
begin
select @USERGRANTEDTRANSACTIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'd00e6c42-2434-4d85-8a04-2323ca6bb2e7')
select @USERGRANTEDDESIGNATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '4EADC264-0A44-4DF5-8C8C-D89A1C48746C');
end
declare @DesignationNames table (DesignationID uniqueidentifier primary key, DesignationName varchar(255))
insert into @DesignationNames (DesignationID, DesignationName)
select V1.DESIGNATIONID, CASE
WHEN (dl5.NAME is not null) THEN isnull(dl1.NAME, '<Unspecified>') + ' \ ' + isnull(dl2.NAME, '<Unspecified>') + ' \ ' + isnull(dl3.NAME, '<Unspecified>') + ' \ ' + isnull(dl4.NAME, '<Unspecified>') + ' \ ' + dl5.NAME
WHEN (dl4.NAME is not null) THEN isnull(dl1.NAME, '<Unspecified>') + ' \ ' + isnull(dl2.NAME, '<Unspecified>') + ' \ ' + isnull(dl3.NAME, '<Unspecified>') + ' \ ' + dl4.NAME
WHEN (dl3.NAME is not null) THEN isnull(dl1.NAME, '<Unspecified>') + ' \ ' + isnull(dl2.NAME, '<Unspecified>') + ' \ ' + dl3.NAME
WHEN (dl2.NAME is not null) THEN isnull(dl1.NAME, '<Unspecified>') + ' \ ' + dl2.NAME
ELSE dl1.NAME
END
from
(select distinct REVENUESPLIT_EXT.DESIGNATIONID
from dbo.FINANCIALTRANSACTIONLINEITEM inner join REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join DBO.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
where FINANCIALTRANSACTION.TYPECODE in (0, 1, 20)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
and FINANCIALTRANSACTIONLINEITEM.POSTDATE <= @ASOFDATE) V1
inner join dbo.DESIGNATION on V1.DESIGNATIONID = DESIGNATION.ID
inner join dbo.DESIGNATIONLEVEL dl1 on DESIGNATION.DESIGNATIONLEVEL1ID = dl1.id
left join dbo.DESIGNATIONLEVEL dl2 on DESIGNATION.DESIGNATIONLEVEL2ID = dl2.id
left join dbo.DESIGNATIONLEVEL dl3 on DESIGNATION.DESIGNATIONLEVEL3ID = dl3.id
left join dbo.DESIGNATIONLEVEL dl4 on DESIGNATION.DESIGNATIONLEVEL4ID = dl4.id
left join dbo.DESIGNATIONLEVEL dl5 on DESIGNATION.DESIGNATIONLEVEL5ID = dl5.id
create table #tempPledges (PledgeID uniqueidentifier,ConstituentID uniqueidentifier, DesignationID uniqueidentifier, PledgeDate date, UserDefinedID varchar(50), PledgeAmount money, PostDate date, PRIMARY KEY (PledgeID, DesignationID) )
insert into #tempPledges (PledgeID, ConstituentID, DesignationID, PledgeDate, UserDefinedID, PledgeAmount, PostDate)
select V1.FINANCIALTRANSACTIONID, V1.CONSTITUENTID, V1.DESIGNATIONID, convert(date,V1.DATE), V1.USERDEFINEDID, sum(V1.BASEAMOUNT), min(V1.POSTDATE) as POSTDATE
from
(select FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID, FINANCIALTRANSACTION.DATE, FINANCIALTRANSACTIONLINEITEM.POSTDATE, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT, REVENUESPLIT_EXT.DESIGNATIONID,
dense_rank() over (partition by FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID order by isnull(FINANCIALTRANSACTIONLINEITEMADJUSTMENT.DATEADDED, '1900-01-01') desc) as rownum,
isnull(FINANCIALTRANSACTIONLINEITEMADJUSTMENT.CONSTITUENTID, FINANCIALTRANSACTION.CONSTITUENTID) as CONSTITUENTID, isnull(nullif(FINANCIALTRANSACTION.USERDEFINEDID,''), FINANCIALTRANSACTION.CALCULATEDUSERDEFINEDID) as USERDEFINEDID,
FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE
from dbo.FINANCIALTRANSACTION inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = FINANCIALTRANSACTIONLINEITEMADJUSTMENT.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
and FINANCIALTRANSACTION.TYPECODE = 1
and FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and FINANCIALTRANSACTION.POSTSTATUSCODE = 2
and FINANCIALTRANSACTIONLINEITEM.POSTDATE <= @AsOfDate
and (FINANCIALTRANSACTION.DELETEDON is null
or exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID and POSTSTATUSCODE = 1 and TYPECODE = 1)
)
) V1
where rownum = 1
group by V1.FINANCIALTRANSACTIONID, V1.DESIGNATIONID, V1.DATE, V1.CONSTITUENTID, V1.UserDefinedID
--**********Get the latest adjustment that would have been valid on @AsOfDate for payments to pledges in #tempPledges********************
create table #tempAdjustmentsAsOf (PaymentID uniqueidentifier PRIMARY KEY, AdjustmentID uniqueidentifier)
insert into #tempAdjustmentsAsOf (PaymentID, AdjustmentID)
select distinct V2.PaymentID, V2.AdjustmentID
from
(select V1.PaymentID, FinancialTransactionLineItemAdjustment.ID as AdjustmentID, Dense_Rank() over (Partition by v1.PaymentID order by FinancialTransactionLineItemAdjustment.DateAdded desc) as RowNum
from
(select distinct PaymentFTLI.FinancialTransactionID as PaymentID
from #tempPledges inner join dbo.FinancialTransactionLineItem as PledgeFTLI on #tempPledges.PledgeID = PledgeFTLI.FinancialTransactionID
inner join dbo.FinancialTransactionLineItem as PaymentFTLI on PledgeFTLI.ID = PaymentFTLI.SourceLineItemID
where PaymentFTLI.PostStatusCode = 2
and PaymentFTLI.PostDate <= @AsOfDate) as V1
inner join FinancialTransactionLineItem on V1.PaymentID = FinancialTransactionLineItem.FinancialTransactionID
inner join FinancialTransactionLineItemAdjustment on FinancialTransactionLineItem.FinancialTransactionLineItemAdjustmentID = FinancialTransactionLineItemAdjustment.ID
left join FinancialTransactionLineItem ReversedLineItem on ReversedLineItem.ID = FinancialTransactionLineItem.ReversedLineItemID
where FinancialTransactionLineItem.PostDate <= @AsOfDate
and FinancialTransactionLineItem.PostStatusCode = 2
and FinancialTransactionLineItemAdjustment.Date < dateadd(d,1,@AsOfDate)
and FinancialTransactionLineItem.typecode != 7 -- ignore gift fee
and (ReversedLineItem.TYPECODE is null or ReversedLineItem.TYPECODE != 7 ) -- ignore gift fee
) as V2
where RowNum = 1
create table #tempPayments (PledgeID uniqueidentifier, DesignationID uniqueidentifier, PaymentAmount money, PRIMARY KEY (PledgeID, DesignationID) )
insert into #tempPayments (PledgeID, DesignationID, PaymentAmount)
select V3.ID as PledgeID, V3.DesignationID, sum(BASEAMOUNT)
from
(select FTPledge.ID, REVENUESPLIT_EXT.DESIGNATIONID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join #tempAdjustmentsAsOf
on (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = #tempAdjustmentsAsOf.PaymentID and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = #tempAdjustmentsAsOf.AdjustmentID)
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = FINANCIALTRANSACTIONLINEITEMADJUSTMENT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLIPledge on FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID = FTLIPledge.ID
inner join dbo.FINANCIALTRANSACTION as FTPledge on FTLIPledge.FINANCIALTRANSACTIONID = FTPledge.ID
where FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
and FINANCIALTRANSACTION.TYPECODE = 0
and FTPledge.TYPECODE = 1
and FTPledge.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE <= @AsOfDate
and (FINANCIALTRANSACTION.DELETEDON is null
or exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID and POSTSTATUSCODE = 1 and TYPECODE = 1)
)
union all
select FTPledge.ID, REVENUESPLIT_EXT.DESIGNATIONID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = FINANCIALTRANSACTIONLINEITEMADJUSTMENT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLIPledge on FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID = FTLIPledge.ID
inner join dbo.FINANCIALTRANSACTION as FTPledge on FTLIPledge.FINANCIALTRANSACTIONID = FTPledge.ID
where FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
and FINANCIALTRANSACTION.TYPECODE = 0
and FTPledge.TYPECODE = 1
and FTPledge.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE <= @AsOfDate
and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null
and (FINANCIALTRANSACTION.DELETEDON is null
or exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID and POSTSTATUSCODE = 1 and TYPECODE = 1)
)) as V3
group by V3.ID, V3.DesignationID
create table #tempWriteOffs (PledgeID uniqueidentifier, DesignationID uniqueidentifier, WriteOffAmount money, PRIMARY KEY (PledgeID, DesignationID) )
insert into #tempWriteOffs (PledgeID, DesignationID, WriteOffAmount)
select V4.ID as PledgeID, V4.DesignationID, sum(BASEAMOUNT)
from
(select FTPledge.ID, REVENUESPLIT_EXT.DESIGNATIONID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
dense_rank() over (partition by FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID order by isnull(FINANCIALTRANSACTIONLINEITEMADJUSTMENT.DATEADDED,'1900-01-01') desc) as rownum
from dbo.FINANCIALTRANSACTION inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = FINANCIALTRANSACTIONLINEITEMADJUSTMENT.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION as FTPledge on FINANCIALTRANSACTION.PARENTID = FTPledge.ID
where FINANCIALTRANSACTION.TYPECODE = 20
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
and FTPLEDGE.TYPECODE = 1
and FTPledge.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE <= @AsOfDate
and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
and (FINANCIALTRANSACTION.DELETEDON is null
or exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID and POSTSTATUSCODE = 1 and TYPECODE = 1)
)
) V4
where V4.rownum = 1
group by V4.ID, V4.DesignationID
if @ALLDETAILS = 1 and @GROUPBY = 0
select CONSTITUENT,
'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + convert(nvarchar(36),CONSTITUENTID) CONSTITUENTLINK,
DESIGNATIONNAME,
case when @USERGRANTEDDESIGNATIONPAGE = 1 then 'http://www.blackbaud.com/DESIGNATIONID?DESIGNATIONID=' + convert(nvarchar(36),DESIGNATIONID) else convert(nvarchar(90),null) end DESIGNATIONLINK,
PLEDGEDATE,
POSTDATE,
USERDEFINEDID,
case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + convert(nvarchar(36),PLEDGEID) else convert(nvarchar(81),null) end PLEDGELINK,
PLEDGEAMOUNT,
WRITEOFFAMOUNT,
PAYMENTAMOUNT,
@ISOCODE PLEDGEISOCURRENCYCODE,
@CURRENCYSYMBOL PLEDGECURRENCYSYMBOL,
@SYMBOLDISPLAYSETTINGCODE PLEDGECURRENCYSYMBOLDISPLAYSETTINGCODE,
@DECIMALDIGITS PLEDGEDECIMALDIGITS,
0 as HASNOTPOSTEDTRANSACTIONS,
ROWTYPE
from
(select case CONSTITUENT.ISORGANIZATION when 1 then CONSTITUENT.KEYNAME else CONSTITUENT.KEYNAME+isnull(','+nullif(CONSTITUENT.FIRSTNAME,''),'') end + char(13) + ' / ' + CONSTITUENT.LOOKUPID as CONSTITUENT,
t1.DESIGNATIONNAME,
#tempPledges.PLEDGEDATE,
#tempPledges.POSTDATE,
#tempPledges.USERDEFINEDID,
V1.PLEDGEAMOUNT,
V1.WRITEOFFAMOUNT,
V1.PAYMENTAMOUNT,
V1.PLEDGEAMOUNT - V1.WRITEOFFAMOUNT - V1.PAYMENTAMOUNT as BALANCE,
V1.ROWTYPE,
case ROWTYPE when 7 then 1 else 0 end as SORT1,
case ROWTYPE when 0 then 0 else 1 end as SORT2,
#tempPledges.PLEDGEID,
V1.CONSTITUENTID,
V1.DESIGNATIONID
from
(select #tempPledges.PLEDGEID, #tempPledges.CONSTITUENTID, #tempPledges.DESIGNATIONID,
sum(#tempPledges.PLEDGEAMOUNT) as PLEDGEAMOUNT, isnull(sum(#tempPayments.PAYMENTAMOUNT),0.0) as PAYMENTAMOUNT, isnull(sum(#tempWriteOffs.WRITEOFFAMOUNT),0.0) as WRITEOFFAMOUNT,
grouping_id(#tempPledges.CONSTITUENTID, #tempPledges.DESIGNATIONID, #tempPledges.PLEDGEID) as RowType
from #tempPledges left join #tempPayments on #tempPledges.PLEDGEID = #tempPayments.PLEDGEID and #tempPledges.DESIGNATIONID = #tempPayments.DESIGNATIONID
left join #tempWriteOffs on #tempPledges.PLEDGEID = #tempWriteOffs.PLEDGEID and #tempPledges.DESIGNATIONID = #tempWriteOffs.DESIGNATIONID
where #tempPledges.PLEDGEAMOUNT - isnull(#tempPayments.PAYMENTAMOUNT,0.0) - isnull(#tempWriteOffs.WRITEOFFAMOUNT,0.0) > 0
and
( --constituent security
@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, #tempPledges.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1
)
and exists
-- Site security filter
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(#tempPledges.PLEDGEID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '65359276-0c0f-44fa-8b79-e1f2d1cce0c2', REVSITES.SITEID)
)
group by grouping sets
(
(constituentid, #tempPledges.DESIGNATIONID, #tempPledges.PLEDGEID),
(constituentid),
()
)
) V1
left join #tempPledges on V1.PledgeID = #tempPledges.PledgeID and V1.DesignationID = #tempPledges.DesignationID
left join dbo.CONSTITUENT on V1.CONSTITUENTID = CONSTITUENT.ID
left join @DesignationNames t1 on V1.DESIGNATIONID = t1.DESIGNATIONID) V2
order by SORT1, CONSTITUENT, SORT2, V2.DESIGNATIONNAME, POSTDATE, USERDEFINEDID
if @ALLDETAILS = 1 and @GROUPBY = 1
select CONSTITUENT,
'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + convert(nvarchar(36),CONSTITUENTID) CONSTITUENTLINK,
DESIGNATIONNAME,
case when @USERGRANTEDDESIGNATIONPAGE = 1 then 'http://www.blackbaud.com/DESIGNATIONID?DESIGNATIONID=' + convert(nvarchar(36),DESIGNATIONID) else convert(nvarchar(90),null) end DESIGNATIONLINK,
PLEDGEDATE,
POSTDATE,
USERDEFINEDID,
case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + convert(nvarchar(36),PLEDGEID) else convert(nvarchar(81),null) end PLEDGELINK,
PLEDGEAMOUNT,
WRITEOFFAMOUNT,
PAYMENTAMOUNT,
@ISOCODE PLEDGEISOCURRENCYCODE,
@CURRENCYSYMBOL PLEDGECURRENCYSYMBOL,
@SYMBOLDISPLAYSETTINGCODE PLEDGECURRENCYSYMBOLDISPLAYSETTINGCODE,
@DECIMALDIGITS PLEDGEDECIMALDIGITS,
0 as HASNOTPOSTEDTRANSACTIONS,
ROWTYPE
from
(select case CONSTITUENT.ISORGANIZATION when 1 then CONSTITUENT.KEYNAME else CONSTITUENT.KEYNAME+isnull(','+nullif(CONSTITUENT.FIRSTNAME,''),'') end + char(13) + ' / ' + CONSTITUENT.LOOKUPID as CONSTITUENT,
t1.DESIGNATIONNAME,
#tempPledges.PLEDGEDATE,
#tempPledges.POSTDATE,
#tempPledges.USERDEFINEDID,
V1.PLEDGEAMOUNT,
V1.WRITEOFFAMOUNT,
V1.PAYMENTAMOUNT,
V1.PLEDGEAMOUNT - V1.WRITEOFFAMOUNT - V1.PAYMENTAMOUNT as BALANCE,
V1.ROWTYPE,
case ROWTYPE when 7 then 1 else 0 end as SORT1,
case ROWTYPE when 0 then 0 else 1 end as SORT2,
#tempPledges.PLEDGEID,
V1.CONSTITUENTID,
V1.DESIGNATIONID
from
(select #tempPledges.PLEDGEID, #tempPledges.CONSTITUENTID, #tempPledges.DESIGNATIONID,
sum(#tempPledges.PLEDGEAMOUNT) as PLEDGEAMOUNT, isnull(sum(#tempPayments.PAYMENTAMOUNT),0.0) as PAYMENTAMOUNT, isnull(sum(#tempWriteOffs.WRITEOFFAMOUNT),0.0) as WRITEOFFAMOUNT,
grouping_id(#tempPledges.DESIGNATIONID, #tempPledges.CONSTITUENTID, #tempPledges.PLEDGEID) as RowType
from #tempPledges left join #tempPayments on #tempPledges.PLEDGEID = #tempPayments.PLEDGEID and #tempPledges.DESIGNATIONID = #tempPayments.DESIGNATIONID
left join #tempWriteOffs on #tempPledges.PLEDGEID = #tempWriteOffs.PLEDGEID and #tempPledges.DESIGNATIONID = #tempWriteOffs.DESIGNATIONID
where #tempPledges.PLEDGEAMOUNT - isnull(#tempPayments.PAYMENTAMOUNT,0.0) - isnull(#tempWriteOffs.WRITEOFFAMOUNT,0.0) > 0
and
( --constituent security
@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, #tempPledges.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1
)
and exists
-- Site security filter
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(#tempPledges.PLEDGEID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '65359276-0c0f-44fa-8b79-e1f2d1cce0c2', REVSITES.SITEID)
)
group by grouping sets
(
(#tempPledges.DESIGNATIONID, constituentid, #tempPledges.PLEDGEID),
(#tempPledges.DESIGNATIONID),
()
)
) V1
left join #tempPledges on V1.PledgeID = #tempPledges.PledgeID and V1.DesignationID = #tempPledges.DesignationID
left join dbo.CONSTITUENT on V1.CONSTITUENTID = CONSTITUENT.ID
left join @DesignationNames t1 on V1.DESIGNATIONID = t1.DESIGNATIONID) V2
order by SORT1, V2.DESIGNATIONNAME, SORT2, CONSTITUENT, POSTDATE, USERDEFINEDID
if @ALLDETAILS = 0 and @GROUPBY = 0
select CONSTITUENT,
'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + convert(nvarchar(36),CONSTITUENTID) CONSTITUENTLINK,
DESIGNATIONNAME,
convert(nvarchar(90),null) as DESIGNATIONLINK,
PLEDGEDATE,
POSTDATE,
USERDEFINEDID,
convert(nvarchar(81),null) as PLEDGELINK,
PLEDGEAMOUNT,
WRITEOFFAMOUNT,
PAYMENTAMOUNT,
@ISOCODE PLEDGEISOCURRENCYCODE,
@CURRENCYSYMBOL PLEDGECURRENCYSYMBOL,
@SYMBOLDISPLAYSETTINGCODE PLEDGECURRENCYSYMBOLDISPLAYSETTINGCODE,
@DECIMALDIGITS PLEDGEDECIMALDIGITS,
0 as HASNOTPOSTEDTRANSACTIONS,
case ROWTYPE when 1 then 7 else 3 end AS ROWTYPE
from
(select case CONSTITUENT.ISORGANIZATION when 1 then CONSTITUENT.KEYNAME else CONSTITUENT.KEYNAME+isnull(','+nullif(CONSTITUENT.FIRSTNAME,''),'') end + char(13) + ' / ' + CONSTITUENT.LOOKUPID as CONSTITUENT,
convert(nvarchar(512),null) as DESIGNATIONNAME,
convert(date,null) as PLEDGEDATE,
convert(date,null) as POSTDATE,
convert(nvarchar(100),null) as USERDEFINEDID,
V1.PLEDGEAMOUNT,
V1.WRITEOFFAMOUNT,
V1.PAYMENTAMOUNT,
V1.PLEDGEAMOUNT - V1.WRITEOFFAMOUNT - V1.PAYMENTAMOUNT as BALANCE,
V1.ROWTYPE,
V1.CONSTITUENTID
from
(select #tempPledges.CONSTITUENTID,
sum(#tempPledges.PLEDGEAMOUNT) as PLEDGEAMOUNT, isnull(sum(#tempPayments.PAYMENTAMOUNT),0.0) as PAYMENTAMOUNT, isnull(sum(#tempWriteOffs.WRITEOFFAMOUNT),0.0) as WRITEOFFAMOUNT,
grouping_id(#tempPledges.CONSTITUENTID) as RowType
from #tempPledges left join #tempPayments on #tempPledges.PLEDGEID = #tempPayments.PLEDGEID and #tempPledges.DESIGNATIONID = #tempPayments.DESIGNATIONID
left join #tempWriteOffs on #tempPledges.PLEDGEID = #tempWriteOffs.PLEDGEID and #tempPledges.DESIGNATIONID = #tempWriteOffs.DESIGNATIONID
where #tempPledges.PLEDGEAMOUNT - isnull(#tempPayments.PAYMENTAMOUNT,0.0) - isnull(#tempWriteOffs.WRITEOFFAMOUNT,0.0) > 0
and
( --constituent security
@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, #tempPledges.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1
)
and exists
-- Site security filter
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(#tempPledges.PLEDGEID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '65359276-0c0f-44fa-8b79-e1f2d1cce0c2', REVSITES.SITEID)
)
group by grouping sets
(
(constituentid),
()
)
) V1
left join dbo.CONSTITUENT on V1.CONSTITUENTID = CONSTITUENT.ID) V2
order by ROWTYPE, CONSTITUENT
if @ALLDETAILS = 0 and @GROUPBY = 1
select CONSTITUENT,
convert(nvarchar(90),null) as CONSTITUENTLINK,
DESIGNATIONNAME,
case when @USERGRANTEDDESIGNATIONPAGE = 1 then 'http://www.blackbaud.com/DESIGNATIONID?DESIGNATIONID=' + convert(nvarchar(36),DESIGNATIONID) else null end DESIGNATIONLINK,
PLEDGEDATE,
POSTDATE,
USERDEFINEDID,
convert(nvarchar(81),null) as PLEDGELINK,
PLEDGEAMOUNT,
WRITEOFFAMOUNT,
PAYMENTAMOUNT,
@ISOCODE PLEDGEISOCURRENCYCODE,
@CURRENCYSYMBOL PLEDGECURRENCYSYMBOL,
@SYMBOLDISPLAYSETTINGCODE PLEDGECURRENCYSYMBOLDISPLAYSETTINGCODE,
@DECIMALDIGITS PLEDGEDECIMALDIGITS,
0 as HASNOTPOSTEDTRANSACTIONS,
case ROWTYPE when 1 then 7 else 3 end as ROWTYPE
from
(select convert(nvarchar(255),null) as CONSTITUENT,
t1.DESIGNATIONNAME,
convert(date,null) as PLEDGEDATE,
convert(date,null) as POSTDATE,
convert(nvarchar(100),null) as USERDEFINEDID,
V1.PLEDGEAMOUNT,
V1.WRITEOFFAMOUNT,
V1.PAYMENTAMOUNT,
V1.PLEDGEAMOUNT - V1.WRITEOFFAMOUNT - V1.PAYMENTAMOUNT as BALANCE,
V1.ROWTYPE,
V1.DESIGNATIONID
from
(select #tempPledges.DESIGNATIONID,
sum(#tempPledges.PLEDGEAMOUNT) as PLEDGEAMOUNT, isnull(sum(#tempPayments.PAYMENTAMOUNT),0.0) as PAYMENTAMOUNT, isnull(sum(#tempWriteOffs.WRITEOFFAMOUNT),0.0) as WRITEOFFAMOUNT,
grouping_id(#tempPledges.DESIGNATIONID) as RowType
from #tempPledges left join #tempPayments on #tempPledges.PLEDGEID = #tempPayments.PLEDGEID and #tempPledges.DESIGNATIONID = #tempPayments.DESIGNATIONID
left join #tempWriteOffs on #tempPledges.PLEDGEID = #tempWriteOffs.PLEDGEID and #tempPledges.DESIGNATIONID = #tempWriteOffs.DESIGNATIONID
where #tempPledges.PLEDGEAMOUNT - isnull(#tempPayments.PAYMENTAMOUNT,0.0) - isnull(#tempWriteOffs.WRITEOFFAMOUNT,0.0) > 0
and
( --constituent security
@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, #tempPledges.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1
)
and exists
-- Site security filter
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(#tempPledges.PLEDGEID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, '65359276-0c0f-44fa-8b79-e1f2d1cce0c2', REVSITES.SITEID)
)
group by grouping sets
(
(#tempPledges.DESIGNATIONID),
()
)
) V1
left join @DesignationNames t1 on V1.DESIGNATIONID = t1.DESIGNATIONID) V2
order by V2.ROWTYPE, V2.DESIGNATIONNAME
drop table #tempPledges
drop table #tempPayments
drop table #tempWriteOffs
drop table #tempAdjustmentsAsOf