USP_SIMPLEDATALIST_REVENUEBATCHCONSTITUENTCOMMITMENTS
This simple datalist returns the commitments for a given constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID1 | uniqueidentifier | IN | Constituent |
@CONSTITUENTLOOKUPID | uniqueidentifier | IN | Constituent |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@PAYINGPENDINGREVENUEID | uniqueidentifier | IN | Pending revenue ID |
@COMMITMENTID | nvarchar(60) | IN | Commitment ID |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | PDACCOUNTSYSTEM |
@BATCHREVENUEROWID | uniqueidentifier | IN | Revenue batch row ID |
Definition
Copy
CREATE procedure dbo.USP_SIMPLEDATALIST_REVENUEBATCHCONSTITUENTCOMMITMENTS
(
@CONSTITUENTID1 uniqueidentifier = null,
@CONSTITUENTLOOKUPID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@PAYINGPENDINGREVENUEID uniqueidentifier = null,
@COMMITMENTID nvarchar(60) = null,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@BATCHREVENUEROWID uniqueidentifier = null
)
as
set nocount on;
if @PDACCOUNTSYSTEMID is null
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID);
-- Fall back to the system default if the above doesn't work
if @PDACCOUNTSYSTEMID is null
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B';
--If the constituent pays on another constituents commitments we need to get the
--ID of the other constituent so we can get their commitment information
declare @CONSTITUENTID uniqueidentifier;
declare @PAYERID uniqueidentifier;
declare @SINGLEAPPLICATIONID uniqueidentifier = null;
set @PAYERID = coalesce(@CONSTITUENTID1, @CONSTITUENTLOOKUPID);
if len(@COMMITMENTID) >= 39
begin
set @CONSTITUENTID = dbo.UFN_REVENUEBATCH_GETCONSTITUENTFOROTHERCOMMITEMENT(@COMMITMENTID)
if @CONSTITUENTID is null
set @CONSTITUENTID = coalesce(@CONSTITUENTID1, @CONSTITUENTLOOKUPID);
select @SINGLEAPPLICATIONID = SINGLEAPPLICATIONID
from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(@COMMITMENTID)
end
else
begin
set @CONSTITUENTID = coalesce(@CONSTITUENTID1, @CONSTITUENTLOOKUPID);
end
declare @retval as table
(
VALUE nvarchar(60),
LABEL nvarchar(255),
SEQUENCE tinyint
);
declare @CONSTITIDS as table
(
ID uniqueidentifier
);
declare @SITES table (SITEID uniqueidentifier);
if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists(
select SYSTEMROLEAPPUSER.ID
from dbo.SYSTEMROLEAPPUSER
where SYSTEMROLEAPPUSER.APPUSERID = @CURRENTAPPUSERID and SYSTEMROLEAPPUSER.SECURITYMODECODE = 0
)
begin
insert into @SITES(SITEID)
values(null);
insert into @SITES(SITEID)
select SITE.ID from dbo.SITE;
end
else
begin
if exists(select 1 from dbo.SYSTEMROLEAPPUSER where APPUSERID = @CURRENTAPPUSERID and SECURITYMODECODE = 1)
begin
insert into @SITES(SITEID)
values(null);
end
insert into @SITES(SITEID)
select distinct SITEID
from dbo.SITEPERMISSION
where SITEPERMISSION.APPUSERID = @CURRENTAPPUSERID;
end
declare @CURRENTDATE datetime;
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
declare @HOUSEHOLDSCANBEDONORS bit;
set @HOUSEHOLDSCANBEDONORS = dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS();
declare @HOUSEHOLDID uniqueidentifier;
select top(1)
@HOUSEHOLDID = GROUPMEMBER.GROUPID
from dbo.GROUPMEMBER
left join dbo.GROUPDATA on GROUPDATA.ID = GROUPMEMBER.GROUPID
where GROUPMEMBER.MEMBERID = @CONSTITUENTID
and GROUPDATA.GROUPTYPECODE = 0
and dbo.UFN_GROUPMEMBER_ISCURRENTMEMBER(GROUPMEMBER.ID) = 1
and @HOUSEHOLDSCANBEDONORS = 1;
declare @BASECONSTITUENTID uniqueidentifier
select
@BASECONSTITUENTID =
case
when dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
then case
when @HOUSEHOLDSCANBEDONORS = 1
then @CONSTITUENTID
else null
end
else @CONSTITUENTID
end
-- include (1) the constituent, (2) the household a constituent is a member of, (3) members of that household, (4) members of the constituent if it is a household
insert into @CONSTITIDS(ID) (
select @HOUSEHOLDID as ID
where @HOUSEHOLDID is not null
union all
select @BASECONSTITUENTID as ID
where @BASECONSTITUENTID is not null
union all
select
GROUPMEMBER.MEMBERID as ID
from dbo.GROUPMEMBER
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
(GROUPMEMBER.GROUPID = @HOUSEHOLDID
or GROUPMEMBER.GROUPID = @CONSTITUENTID
)
and (
(GROUPMEMBERDATERANGE.DATEFROM is null
and (GROUPMEMBERDATERANGE.DATETO is null
or GROUPMEMBERDATERANGE.DATETO > @CURRENTDATE
)
)
or (GROUPMEMBERDATERANGE.DATETO is null
and (GROUPMEMBERDATERANGE.DATEFROM is null
or GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATE
)
)
or (GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATE
and GROUPMEMBERDATERANGE.DATETO > @CURRENTDATE
)
)
)
/*
The VALUE column holds a string that contains a coded application type as an integer.
Those application types are:
0 - Not an application (Donation, Other, Unapplied matching gift payment, etc.)
1 - Sponsorship
2 - Membership
3 - Order/Reservation
4 - Recurring gift
5 - Pledge
6 - Planned gift
7 - Event registration
8 - Matching gift claim
9 - Grant award
10 - Donor challenge
These are also defined by the ApplicationInfo class in RevenueBatchHelper.vb.
*/
-- 1. Sponsorships
insert into @retval(VALUE, LABEL, SEQUENCE)
select
cast(REVENUE.ID as varchar(36)) + ':1:' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20)),
'Sponsorship recurring gift: '
+ (
select top 1
coalesce(
(select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=S.SPONSORSHIPOPPORTUNITYID),
(select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = S.SPONSORSHIPOPPORTUNITYID)
) SPONSORSHIPOPPORTUNITY
from REVENUESPLIT SP
inner join SPONSORSHIP S on S.REVENUESPLITID = SP.ID
inner join SPONSORSHIPOPPORTUNITY SO on SO.ID = S.SPONSORSHIPOPPORTUNITYID
where SP.REVENUEID = REVENUE.ID
)
+ ' for ' + CONSTITUENT_NF.NAME + ' '
+ convert(varchar(10), REVENUESCHEDULE.NEXTTRANSACTIONDATE, 101)
+ coalesce(
' - ' + (
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
),
''
)
+ ' - ' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID),
1
from dbo.FINANCIALTRANSACTION as REVENUE
inner join @CONSTITIDS C on C.ID = REVENUE.CONSTITUENTID
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
where REVENUE.TYPECODE = 2 and REVENUE.DELETEDON is null
and REVENUESCHEDULE.STATUSCODE in (0,5)
and REVENUESCHEDULE.ISPENDING = 0
and REVENUE.TRANSACTIONAMOUNT > 0
and exists(select 'x' from dbo.REVENUESPLIT where REVENUEID = REVENUE.ID and TYPECODE = 9)
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists (
select 1 from @SITES S
left outer join dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) SITE on SITE.SITEID = S.SITEID
where S.SITEID=SITE.SITEID or (S.SITEID is null and SITE.SITEID is null)
)
)
-- 2. Memberships
declare @CONSTITUENTMEMBERSHIP table
(
MEMBERSHIPID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
ISDROPPED bit,
ISPRIMARY bit
)
insert into @CONSTITUENTMEMBERSHIP (MEMBERSHIPID, CONSTITUENTID, ISDROPPED, ISPRIMARY)
select
MEMBERSHIPID,
C.ID,
ISDROPPED,
ISPRIMARY
from @CONSTITIDS C
inner join dbo.MEMBER on C.ID = MEMBER.CONSTITUENTID
insert into @retval(VALUE, LABEL, SEQUENCE)
select
cast(MEMBERSHIP.ID as varchar(36)) + ':2:' + cast(cast(MEMBERSHIPLEVELTERM.AMOUNT as money) as varchar(20)),
dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - '
+ dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID) + ' for '
+ CONSTITUENT_NF.NAME + coalesce(' ' + convert(varchar(10), MEMBERSHIP.EXPIRATIONDATE, 101), '')
+ ' - ' + cast(cast(MEMBERSHIPLEVELTERM.AMOUNT as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(MEMBERSHIPPROGRAM.BASECURRENCYID),
2
from @CONSTITUENTMEMBERSHIP as CONSTITUENTMEMBERSHIP
inner join dbo.MEMBERSHIP on CONSTITUENTMEMBERSHIP.MEMBERSHIPID = MEMBERSHIP.ID
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENTMEMBERSHIP.CONSTITUENTID) CONSTITUENT_NF
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
where
--MEMBER.ISDROPPED = 0 and
(CONSTITUENTMEMBERSHIP.ISPRIMARY = 1 or MEMBERSHIP.SENDRENEWALCODE <> 1)
--and (
-- (MEMBERSHIP.STATUSCODE = 0
-- and @CURRENTDATE >= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALBEFOREEXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE)
-- and @CURRENTDATE <= dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALAFTEREXPIRATIONDATE(MEMBERSHIP.MEMBERSHIPLEVELID, MEMBERSHIP.EXPIRATIONDATE)
-- )
-- or (MEMBERSHIP.STATUSCODE = 0 and MEMBERSHIP.EXPIRATIONDATE < @CURRENTDATE)
-- or (MEMBERSHIP.STATUSCODE = 2 or MEMBERSHIP.STATUSCODE = 1)
--)
and (
dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists (
select 1
from @SITES S
where SITEID=dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID)
or (SITEID is null and dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID) is null)
)
)
insert into @retval(VALUE, LABEL, SEQUENCE)
-- 3. Order/Reservation, 5. Pledge, 6. Planned gift, 8. Matching gift claim, 9. Grant award, 10 Donor challenge
select
cast(REVENUE.ID as varchar(36)) + ':'
+ case REVENUE.TYPECODE
when 5 then '3'
when 1 then '5'
when 4 then '6'
when 3 then '8'
when 6 then '9'
when 8 then '10'
end
+ ':' + coalesce(cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID) as money) as varchar(20)),'0.00'),
case REVENUE.TYPECODE
when 5 then 'Order for ' + CONSTITUENT_NF.NAME + ' '
when 1 then 'Pledge for ' + CONSTITUENT_NF.NAME + ' '
when 4 then 'Planned gift for ' + CONSTITUENT_NF.NAME + ' '
when 3 then 'Matching gift claim for ' + CONSTITUENT_NF.NAME + ' - '
+(
select
C1_NF.NAME
from dbo.REVENUEMATCHINGGIFT MG1
inner join dbo.REVENUE R1 on R1.ID = MG1.MGSOURCEREVENUEID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(R1.CONSTITUENTID) C1_NF
where MG1.ID = REVENUE.ID
) + ' '
when 6 then 'Grant award from ' + CONSTITUENT_NF.NAME + ' '
when 8 then 'Donor challenge claim from ' + CONSTITUENT_NF.NAME + ' '
end
+ convert(varchar(10), INSTALLMENT.DATE, 101)
+ coalesce(
' - '
+ cast(
(
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
) as nvarchar(50)
),
'')
+ ' - ' + coalesce(cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID) as money) as varchar(20)),'0.00')
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID),
case REVENUE.TYPECODE
when 5 then 3
when 1 then 5
when 4 then 6
when 3 then 8
when 6 then 9
when 8 then 10
end
from dbo.FINANCIALTRANSACTION as REVENUE
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
-- Including the predicate "INSTALLMENT.REVENUEID = REVENUE.ID" in the join even though UFN_REVENUE_GETNEXTINSTALLMENT
-- already includes that since without that join the estimated number of rows is wrong, resulting in an extremely poor plan.
inner join dbo.INSTALLMENT
on INSTALLMENT.REVENUEID = REVENUE.ID
and (INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID)
--Bug 148137 AdiSa - 5/9/11 - Include paid off commitment by selecting the correct installment if the next installment function returns nothing.
or (dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID) is null and
INSTALLMENT.ID= (select top 1 ID
from dbo.INSTALLMENT
where INSTALLMENT.REVENUEID = @SINGLEAPPLICATIONID
order by INSTALLMENT.SEQUENCE desc)
)
)
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
left join dbo.REVENUEMATCHINGGIFT on REVENUE.ID = REVENUEMATCHINGGIFT.ID
where (dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0
--Bug 133370 - AdamBu - 1/10/11 - Include paid off commitment if it is what this revenue was applied to.
or REVENUE.ID = @SINGLEAPPLICATIONID
)
and REVENUE.TYPECODE in (1,3,4,5,6,8) -- Pledge, Matching gift claim, Planned gift, Order, Grant award, Donor challenge claim
and REVENUE.DELETEDON is NULL
and REVENUESCHEDULE.ISPENDING = 0
and REVENUE.TYPECODE <> 2
and (REVENUEMATCHINGGIFT.ISACTIVE = 1 or REVENUE.TYPECODE <> 3)
and REVENUE.CONSTITUENTID in (select ID from @CONSTITIDS)
and ((REVENUE.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID) or (dbo.UFN_VALID_BASICGL_INSTALLED() = 0) or REVENUE.TYPECODE in (3,8)) -- MGC and Donor Challenge
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists
(
select 1
from @SITES S
left outer join dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) SITE on SITE.SITEID = S.SITEID
where S.SITEID=SITE.SITEID or (S.SITEID is null and SITE.SITEID is null)
)
)
insert into @retval(VALUE, LABEL, SEQUENCE)
-- 8 (again). Subsidiary matching gift claims (JamesWill WI76028 2011-02-01)
select
cast(REVENUE.ID as varchar(36)) + ':8'
+ ':' + coalesce(cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID) as money) as varchar(20)),'0.00'),
'Matching gift claim for ' + CONSTITUENT_NF.NAME + ' - '
+(
select
C1_NF.NAME
from dbo.REVENUEMATCHINGGIFT MG1
inner join dbo.REVENUE R1 on R1.ID = MG1.MGSOURCEREVENUEID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(R1.CONSTITUENTID) C1_NF
where MG1.ID = REVENUE.ID
) + ' '
+ convert(varchar(10), INSTALLMENT.DATE, 101)
+ coalesce(
' - '
+ cast(
(
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
) as nvarchar(50)
),
'')
+ ' - ' + coalesce(cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID) as money) as varchar(20)),'0.00')
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID),
8
from dbo.FINANCIALTRANSACTION as REVENUE
inner join dbo.ORGANIZATIONDATA on ORGANIZATIONDATA.ID = REVENUE.CONSTITUENTID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
-- Including the predicate "INSTALLMENT.REVENUEID = REVENUE.ID" in the join even though UFN_REVENUE_GETNEXTINSTALLMENT
-- already includes that since without that join the estimated number of rows is wrong, resulting in an extremely poor plan.
inner join dbo.INSTALLMENT
on INSTALLMENT.REVENUEID = REVENUE.ID
and (INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID)
--Bug 133370 - AdamBu - 1/10/11 - Include paid off commitment if it is what this revenue was applied to.
or INSTALLMENT.REVENUEID = @SINGLEAPPLICATIONID
)
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
left join dbo.REVENUEMATCHINGGIFT on REVENUE.ID = REVENUEMATCHINGGIFT.ID
left join dbo.PDACCOUNTSYSTEMFORREVENUE PDAS on REVENUE.ID = PDAS.ID
where (dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0
--Bug 133370 - AdamBu - 1/10/11 - Include paid off commitment if it is what this revenue was applied to.
or REVENUE.ID = @SINGLEAPPLICATIONID
)
and REVENUE.TYPECODE = 3 -- Matching gift claim
and REVENUESCHEDULE.ISPENDING = 0
and REVENUE.TYPECODE <> 2
and (REVENUEMATCHINGGIFT.ISACTIVE = 1 or REVENUE.TYPECODE <> 3)
and ORGANIZATIONDATA.PARENTCORPID in (select ID from @CONSTITIDS)
and ((PDAS.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID) or (dbo.UFN_VALID_BASICGL_INSTALLED() = 0) or REVENUE.TYPECODE = 3)
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists
(
select 1
from @SITES S
left outer join dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) SITE on SITE.SITEID = S.SITEID
where S.SITEID=SITE.SITEID or (S.SITEID is null and SITE.SITEID is null)
)
)
-- 4. Recurring gift
insert into @retval(VALUE, LABEL, SEQUENCE)
select
cast(REVENUE.ID as varchar(36)) + ':4:' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20)),
case when exists(select 'x' from dbo.REVENUESPLIT where REVENUEID = REVENUE.ID and TYPECODE = 17)
then 'Sponsorship recurring additional gift for ' else 'Recurring gift for ' end
+ CONSTITUENT_NF.NAME + ' '
+ convert(varchar(10), REVENUESCHEDULE.NEXTTRANSACTIONDATE, 101)
+ coalesce(
' - ' + (
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
),
'')
+ ' - ' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID),
4
from dbo.REVENUE
inner join @CONSTITIDS C on C.ID = REVENUE.CONSTITUENTID
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
where REVENUE.TRANSACTIONTYPECODE = 2
and REVENUESCHEDULE.STATUSCODE in (0,5)
and REVENUESCHEDULE.ISPENDING = 0
and REVENUE.AMOUNT > 0
and not exists(select 'x' from dbo.REVENUESPLIT where REVENUEID = REVENUE.ID and TYPECODE = 9)
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists
(
select 1
from @SITES S
left outer join dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) SITE on SITE.SITEID = S.SITEID
where S.SITEID=SITE.SITEID or (S.SITEID is null and SITE.SITEID is null)
)
)
-- 7. Event registration
insert into @retval(VALUE, LABEL, SEQUENCE)
select
cast(REGISTRANT.ID as varchar(36)) + ':7:' + cast(cast(REGISTRANTBALANCE.BALANCEINCURRENCY as money) as varchar(20)),
[EVENT].NAME
+ ' registration for ' + CONSTITUENT_NF.NAME
+ ' ' + convert(varchar(10), [EVENT].STARTDATE, 101)
+ ' - ' + cast(cast(REGISTRANTBALANCE.BALANCEINCURRENCY as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(EVENT.BASECURRENCYID),
7
from dbo.REGISTRANT
inner join @CONSTITIDS C on C.ID = REGISTRANT.CONSTITUENTID
cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) CONSTITUENT_NF
inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
cross apply dbo.UFN_EVENTREGISTRANT_GETBALANCEINCURRENCY_BULK([EVENT].BASECURRENCYID) REGISTRANTBALANCE
where
REGISTRANT.ID = REGISTRANTBALANCE.ID and
(
REGISTRANTBALANCE.BALANCEINCURRENCY > 0
--Bug 133370 - AdamBu - 1/10/11 - Include paid off commitment if it is what this revenue was applied to.
or REGISTRANT.ID = @SINGLEAPPLICATIONID
)
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists
(
select 1
from @SITES S
left outer join dbo.UFN_SITEID_MAPFROM_REGISTRANTID(REGISTRANT.ID) SITE on SITE.SITEID = S.SITEID
where S.SITEID=SITE.SITEID or (S.SITEID is null and SITE.SITEID is null)
)
)
if @PAYINGPENDINGREVENUEID is not null
begin
--If this batch row is paying a pending transaction, insert it into the list
insert into @retval(VALUE, LABEL, SEQUENCE)
select
case REVENUE.TRANSACTIONTYPECODE
when 2
then cast(REVENUE.ID as varchar(36)) + ':4:' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20))
when 1
then cast(REVENUE.ID as varchar(36)) + ':5:' + cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID) as money) as varchar(20))
else ''
end,
case REVENUE.TRANSACTIONTYPECODE
when 2
then
'Recurring gift for ' + CONSTITUENT_NF.NAME
+ ' ' + convert(varchar(10), REVENUESCHEDULE.NEXTTRANSACTIONDATE , 101)
+ coalesce(
' - '
+ (
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
),
'')
+ ' - ' + cast(cast(REVENUE.TRANSACTIONAMOUNT as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID)
when 1
then
'Pledge for ' + CONSTITUENT_NF.NAME + ' ' + convert(varchar(10), INSTALLMENT.DATE, 101)
+ coalesce(
' - '
+ (
select top 1 dbo.UDA_BUILDLIST(DESIGNATION.USERID) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
where REVENUESPLIT.REVENUEID = REVENUE.ID
),
'')
+ ' - ' + cast(cast(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID)as money) as varchar(20))
+ ' ' + dbo.UFN_CURRENCY_GETISO(REVENUE.TRANSACTIONCURRENCYID)
else ''
end,
case REVENUE.TRANSACTIONTYPECODE
when 2 then 4
when 1 then 5
else 99
end
from dbo.REVENUE
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
left join dbo.INSTALLMENT on REVENUE.TRANSACTIONTYPECODE = 1 and INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID)
where @PAYINGPENDINGREVENUEID is not null
and REVENUE.ID = @PAYINGPENDINGREVENUEID;
end
insert into @retval(VALUE, LABEL, SEQUENCE)
values('0:0', 'Donation', 20)
insert into @retval(VALUE, LABEL, SEQUENCE)
values('0:1', 'Other', 21)
insert into @retval(VALUE, LABEL, SEQUENCE)
values('0:2', 'Unapplied matching gift payment', 22)
--if the payer is an active sponsor, add 'Sponsorship additional donation'
if exists(select 1
from dbo.CONSTITUENT
where CONSTITUENT.ID = @PAYERID
and exists (select 1 from dbo.REVENUESPLIT
inner join dbo.SPONSORSHIP on SPONSORSHIP.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
where REVENUE.CONSTITUENTID = CONSTITUENT.ID
and SPONSORSHIP.STATUSCODE in (0,1) -- Pending, Active
and REVENUE.TRANSACTIONTYPECODE = 2 -- Sponsorships use the Recurring gift type
))
insert into @retval(VALUE, LABEL, SEQUENCE)
values('0:3', 'Sponsorship additional donation', 23);
if @BATCHREVENUEROWID is not null
begin
declare @APPLICATIONINFO nvarchar(60);
select top 1 @APPLICATIONINFO = APPLICATIONINFO from dbo.BATCHREVENUE where ID = @BATCHREVENUEROWID;
if @APPLICATIONINFO is not null
begin
declare @DESCRIPTION nvarchar(255) = dbo.UFN_BATCHREVENUECONSTITUENTCOMMITMENTS_GETDESCRIPTION(@APPLICATIONINFO);
if (not exists (select VALUE from @retval where SUBSTRING(VALUE,1,32) = SUBSTRING(@APPLICATIONINFO,1,32))) and (@DESCRIPTION is not null and @DESCRIPTION <> '' )
insert into @retval(VALUE, LABEL, SEQUENCE)
values(@APPLICATIONINFO, @DESCRIPTION, 0)
end
end
select VALUE, LABEL
from @retval
order by SEQUENCE