USP_DATALIST_COMMITMENTSFOREVENT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@KEYNAME | nvarchar(200) | IN | |
@FIRSTNAME | nvarchar(200) | IN | |
@DATEFROM | date | IN | |
@DATETO | date | IN | |
@TYPECODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_COMMITMENTSFOREVENT
(
@EVENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@KEYNAME nvarchar(200) = null,
@FIRSTNAME nvarchar(200) = null,
@DATEFROM date = null,
@DATETO date = null,
@TYPECODE tinyint = null
)
as
set nocount on;
declare @RETURNTABLE as table(
ID uniqueidentifier,
APPLICATIONTYPE nvarchar(30),
DESCRIPTION nvarchar(700),
RECOGNITION nvarchar(160),
DATE datetime,
AMOUNT money,
APPLICATIONTYPECODE tinyint,
BALANCE money,
PAID money
)
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @PDACCOUNTSYSTEMID uniqueidentifier = null;
set @KEYNAME = coalesce(@KEYNAME, '') + '%'
set @FIRSTNAME = coalesce(@FIRSTNAME, '') + '%'
if dbo.UFN_VALID_BASICGL_INSTALLED() != 0
begin
declare @NUMBEROFACCOUNTSYSTEMSFORUSER smallint
set @NUMBEROFACCOUNTSYSTEMSFORUSER = dbo.UFN_PDACCOUNTSYSTEM_GETNUMBEROFSYSTEMSFORUSER(@CURRENTAPPUSERID)
if @NUMBEROFACCOUNTSYSTEMSFORUSER = 1
select @PDACCOUNTSYSTEMID = T1.ID from dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) as T1
else
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
end
if @PDACCOUNTSYSTEMID is null or @PDACCOUNTSYSTEMID = '00000000-0000-0000-0000-000000000000'
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
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 @CURRENTDATE datetime;
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
--Pledge = 2
if isnull(@TYPECODE,1) = 1
begin
insert into @RETURNTABLE (ID, APPLICATIONTYPE, DESCRIPTION, RECOGNITION, DATE, AMOUNT, APPLICATIONTYPECODE, BALANCE, PAID)
select
REV.ID, REV.TYPE,
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(100)) + ' pledge'
+ case when VBAL.BALANCE <> REV.TRANSACTIONAMOUNT then ' (' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast((REV.TRANSACTIONAMOUNT - VBAL.BALANCE) as nvarchar(20)) + ' received)' else '' end + ' from ' + NF.NAME,
EM.NAME, REV.DATE, REV.TRANSACTIONAMOUNT, 2, VBAL.BALANCE, (REV.TRANSACTIONAMOUNT - VBAL.BALANCE)
from dbo.FINANCIALTRANSACTION (nolock) REV
join dbo.REVENUE_EXT (nolock) REVX on REV.ID = REVX.ID
join dbo.EVENT (nolock) E on E.APPEALID = REVX.APPEALID and E.ID = @EVENTID
join dbo.FINANCIALTRANSACTIONLINEITEM (nolock) RS on RS.FINANCIALTRANSACTIONID = REV.ID
inner join dbo.REVENUESCHEDULE (nolock)on REVENUESCHEDULE.ID = REV.ID
left join dbo.REVENUERECOGNITION RR (nolock) on RR.REVENUESPLITID = RS.ID
left join dbo.CONSTITUENT EM (NOLOCK) ON EM.ID = RR.CONSTITUENTID
left join dbo.PDACCOUNTSYSTEMFORREVENUE (nolock) on REV.ID = PDACCOUNTSYSTEMFORREVENUE.ID
left join V_QUERY_REVENUE_PLEDGEBALANCE (nolock) VBAL on VBAL.ID = REV.ID
left join dbo.CONSTITUENT NF (NOLOCK) ON NF.ID = REV.CONSTITUENTID
left join dbo.INSTALLMENT (nolock) NEXTINSTALLMENT on NEXTINSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REV.ID)
left join dbo.CURRENCY (nolock) on CURRENCY.ID = REV.TRANSACTIONCURRENCYID
where REV.TYPECODE = 1
and VBAL.BALANCE > 0
and (PDACCOUNTSYSTEMFORREVENUE.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID or dbo.UFN_VALID_BASICGL_INSTALLED() = 0)
and (@DATEFROM is null or REV.[DATE] >= @DATEFROM )
and (@DATETO is null or REV.[DATE] <= @DATETO)
and (EM.FIRSTNAME like @FIRSTNAME or NF.FIRSTNAME like @FIRSTNAME)
and (EM.KEYNAME like @KEYNAME or NF.KEYNAME like @KEYNAME)
end
--Recurring Gift = 3
if isnull(@TYPECODE,2) = 2
begin
insert into @RETURNTABLE (ID, APPLICATIONTYPE, DESCRIPTION, RECOGNITION, DATE, AMOUNT, APPLICATIONTYPECODE, BALANCE, PAID)
select
REV.ID, REV.TYPE,
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(100)) + ' recurring gift ' + ' from ' + NF.NAME,
EM.NAME, REV.DATE, REV.TRANSACTIONAMOUNT, 3, REV.TRANSACTIONAMOUNT as BALANCE, 0 as PAID
from dbo.FINANCIALTRANSACTION (nolock) REV
join dbo.REVENUE_EXT (nolock) REVX on REV.ID = REVX.ID
join dbo.EVENT (nolock) E on E.APPEALID = REVX.APPEALID and E.ID = @EVENTID
join dbo.FINANCIALTRANSACTIONLINEITEM (nolock) RS on RS.FINANCIALTRANSACTIONID = REV.ID
inner join dbo.REVENUESCHEDULE (nolock) RSH on REV.ID = RSH.ID
left join dbo.REVENUERECOGNITION RR (nolock) on RR.REVENUESPLITID = RS.ID
left join dbo.CURRENCY on CURRENCY.ID = REV.TRANSACTIONCURRENCYID
left join dbo.CONSTITUENT EM (NOLOCK) ON EM.ID = RR.CONSTITUENTID
left join dbo.CONSTITUENT NF (NOLOCK) ON NF.ID = REV.CONSTITUENTID
where REV.TYPECODE = 2
and RSH.STATUSCODE = 0 --Active
and RSH.ISPENDING = 0 --Isn't pending
and REV.TRANSACTIONAMOUNT > 0 --Has Value???
and dbo.UFN_RECURRINGGIFT_ISMEMBERSHIP(REV.ID) = 0
and (@DATEFROM is null or REV.[DATE] >= @DATEFROM )
and (@DATETO is null or REV.[DATE] <= @DATETO)
and (EM.FIRSTNAME like @FIRSTNAME or NF.FIRSTNAME like @FIRSTNAME)
and (EM.KEYNAME like @KEYNAME or NF.KEYNAME like @KEYNAME)
end
--Matching gift claim = 7
if isnull(@TYPECODE,3) = 3
begin
insert into @RETURNTABLE (ID, APPLICATIONTYPE, DESCRIPTION, RECOGNITION, DATE, AMOUNT, APPLICATIONTYPECODE, BALANCE, PAID)
select
REV.ID,
REV.TYPE,
case when EM.NAME is null then
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(15)) + ' matching gift claim for '
+ case when BALANCE <> REV.TRANSACTIONAMOUNT then '(' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast(PAID as nvarchar(15)) + ' received) ' else '' end
+ NF.NAME + ' from ' + REVENUEWITHBALANCE.fromName
else
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(15)) + ' matching gift claim for ' +
case when BALANCE <> REV.TRANSACTIONAMOUNT then '(' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast(PAID as nvarchar(15)) + ' received) ' else '' end
+ NF.NAME + ' from ' + REVENUEWITHBALANCE.fromName + ' to ' + EM.NAME
END,
NF.NAME, REV.DATE, REV.TRANSACTIONAMOUNT, 7, BALANCE, (REV.TRANSACTIONAMOUNT - BALANCE)
from
(
select ID, TYPECODE, PAID, cast(TRANSACTIONAMOUNT - coalesce(PAID, 0) as money) as BALANCE, fromName, FIRSTNAME, KEYNAME
from
(
select
FINANCIALTRANSACTION.ID,
FINANCIALTRANSACTION.TYPECODE,
FINANCIALTRANSACTION.TRANSACTIONAMOUNT,
(
select sum(INSTALLMENTSPLITPAYMENT.AMOUNT)
from dbo.INSTALLMENTSPLITPAYMENT
where INSTALLMENTSPLITPAYMENT.PLEDGEID = FINANCIALTRANSACTION.ID
) as PAID,
fromNF.NAME as fromName,
fromNF.KEYNAME,
fromNF.FIRSTNAME
from dbo.FINANCIALTRANSACTION (nolock)
inner join dbo.REVENUEMATCHINGGIFT (nolock) on FINANCIALTRANSACTION.ID = REVENUEMATCHINGGIFT.ID
inner join dbo.FINANCIALTRANSACTION fromR (nolock) on fromR.ID = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
join dbo.CONSTITUENT (nolock) fromNF on fromNF.ID = fromR.CONSTITUENTID
where REVENUEMATCHINGGIFT.ISACTIVE = 1 --Check if status for Revenue matching gift is Active
) as T
) as REVENUEWITHBALANCE
inner join dbo.FINANCIALTRANSACTION REV (nolock) on REV.ID = REVENUEWITHBALANCE.ID
inner join dbo.REVENUE_EXT REVX (nolock) on REVX.ID = REV.ID
inner join dbo.EVENT E (nolock) on E.APPEALID = REVX.APPEALID and E.ID = @EVENTID
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS (nolock) on RS.FINANCIALTRANSACTIONID = REV.ID
left join dbo.REVENUERECOGNITION RR (nolock) on RR.REVENUESPLITID = RS.ID
left join dbo.CONSTITUENT EM (NOLOCK) ON EM.ID = RR.CONSTITUENTID
left join dbo.CONSTITUENT NF (NOLOCK) ON NF.ID = REV.CONSTITUENTID
left join dbo.CURRENCY (nolock) on CURRENCY.ID = REV.TRANSACTIONCURRENCYID
where REVENUEWITHBALANCE.TYPECODE = 3
and REVENUEWITHBALANCE.BALANCE > 0
and (@DATEFROM is null or REV.[DATE] >= @DATEFROM )
and (@DATETO is null or REV.[DATE] <= @DATETO)
and (EM.FIRSTNAME like @FIRSTNAME or NF.FIRSTNAME like @FIRSTNAME or REVENUEWITHBALANCE.FIRSTNAME like @FIRSTNAME)
and (EM.KEYNAME like @KEYNAME or NF.KEYNAME like @KEYNAME or REVENUEWITHBALANCE.KEYNAME like @KEYNAME)
end
--Pending gift = 17
if isnull(@TYPECODE,9) = 9
begin
insert into @RETURNTABLE (ID, APPLICATIONTYPE, DESCRIPTION, RECOGNITION, DATE, AMOUNT, APPLICATIONTYPECODE, BALANCE, PAID)
select
REV.ID,
REV.TYPE,
case when RPM.PAYMENTMETHODCODE is null or RPM.PAYMENTMETHODCODE = 9 THEN
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(100)) + ' pending gift '
+ case when VBAL.BALANCE <> REV.TRANSACTIONAMOUNT then '(' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast((REV.TRANSACTIONAMOUNT - VBAL.BALANCE) as nvarchar(15)) + ' received) ' else '' end
+ ' from ' + NF.NAME
else
case when len(coalesce(CPM.CHECKNUMBER, REVENUEOFFLINEDONATION.CHECKNUMBER, '')) > 0 then
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(100)) + ' pending gift '
+ case when VBAL.BALANCE <> REV.TRANSACTIONAMOUNT then '(' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast((REV.TRANSACTIONAMOUNT - VBAL.BALANCE) as nvarchar(15)) + ' received) ' else '' end
+ ' from ' + NF.NAME + ' (' + RPM.PAYMENTMETHOD + ' #' + coalesce(CPM.CHECKNUMBER, REVENUEOFFLINEDONATION.CHECKNUMBER, '') + ')'
else
coalesce(CURRENCY.CURRENCYSYMBOL, '$') + CAST(REV.TRANSACTIONAMOUNT as nvarchar(100)) + ' pending gift '
+ case when VBAL.BALANCE <> REV.TRANSACTIONAMOUNT then '(' + coalesce(CURRENCY.CURRENCYSYMBOL, '$') + cast((REV.TRANSACTIONAMOUNT - VBAL.BALANCE) as nvarchar(15)) + ' received) ' else '' end
+ ' from ' + NF.NAME + ' (' + RPM.PAYMENTMETHOD + ')'
end
end as DESCRIPTION,
EM.NAME, REV.DATE, REV.TRANSACTIONAMOUNT, 17, VBAL.BALANCE, (REV.TRANSACTIONAMOUNT - VBAL.BALANCE)
from dbo.FINANCIALTRANSACTION REV (nolock)
inner join dbo.REVENUE_EXT REVX (nolock) on REVX.ID = REV.ID
inner join dbo.EVENT E (nolock) on E.APPEALID = REVX.APPEALID and E.ID = @EVENTID
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS (nolock) on RS.FINANCIALTRANSACTIONID = REV.ID
left join dbo.REVENUEPAYMENTMETHOD RPM With (NOLOCK) on RPM.REVENUEID = REV.ID
left join dbo.CHECKPAYMENTMETHODDETAIL CPM with (nolock) on CPM.ID = RPM.ID
left join dbo.REVENUEOFFLINEDONATION (nolock) on REVENUEOFFLINEDONATION.ID = REV.ID
left join dbo.CONSTITUENT NF (NOLOCK) ON NF.ID = REV.CONSTITUENTID
left join dbo.REVENUERECOGNITION RR (nolock) on RR.REVENUESPLITID = RS.ID
left join dbo.CONSTITUENT EM (NOLOCK) ON EM.ID = RR.CONSTITUENTID
left join V_QUERY_REVENUE_PLEDGEBALANCE VBAL on VBAL.ID = [REV].ID
left join dbo.CURRENCY (nolock) on CURRENCY.ID = REV.TRANSACTIONCURRENCYID
where [REV].TYPECODE = 9
and VBAL.BALANCE > 0
and (@DATEFROM is null or REV.[DATE] >= @DATEFROM )
and (@DATETO is null or REV.[DATE] <= @DATETO)
and (EM.FIRSTNAME like @FIRSTNAME or NF.FIRSTNAME like @FIRSTNAME)
and (EM.KEYNAME like @KEYNAME or NF.KEYNAME like @KEYNAME)
end
select ID, APPLICATIONTYPE, DESCRIPTION, RECOGNITION, DATE, AMOUNT, APPLICATIONTYPECODE, BALANCE, PAID
from @RETURNTABLE
where
exists(--Check site security
select 1
from dbo.UFN_SITEID_MAPFROM_REVENUEID(ID) as SITE
where (@ISADMIN = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SITE].[SITEID] or (SITEID is null and [SITE].[SITEID] is null)))
)
order by RECOGNITION