UFN_MEMBER_CHANNELPLEDGEDBYAPPEAL
Creates a table of appeals, their descriptions, and the associated pledge information
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_MEMBER_CHANNELPLEDGEDBYAPPEAL
(@STARTDATE datetime, @ENDDATE datetime)
returns @REVENUEINFO table
(
APPEALID uniqueidentifier NOT NULL,
CHANNELID uniqueidentifier NOT NULL,
TOTALPLEDGED money NOT NULL,
PLEDGESPAID money NOT NULL,
PLEDGESWRITTENOFF money NOT NULL
)
as
begin
select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
@ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
insert into @REVENUEINFO
select coalesce(PLEDGED.APPEALID,PAID.APPEALID, WRITEOFF.APPEALID) APPEALID,
coalesce(PLEDGED.CHANNELID,PAID.CHANNELID, WRITEOFF.CHANNELID) CHANNELID,
coalesce(TOTALPLEDGED, 0) TOTALPLEDGED,
coalesce(PLEDGESPAID, 0) PLEDGESPAID,
coalesce(PLEDGESWRITTENOFF, 0) PLEDGESWRITTENOFF
from
(select r.APPEALID, coalesce(r.CHANNELCODEID, '00000000-0000-0000-0000-000000000000') CHANNELID,
coalesce(sum(r.AMOUNT),0) TOTALPLEDGED
from dbo.REVENUE r
inner join dbo.REVENUESPLIT rs on r.ID=rs.REVENUEID
inner join dbo.APPEAL a on a.ID = r.APPEALID
inner join dbo.MEMBER on r.CONSTITUENTID = MEMBER.CONSTITUENTID
inner join dbo.MEMBERSHIP on MEMBERSHIP.MEMBERSHIPPROGRAMID = A.MEMBERSHIPPROGRAMID
where (r.APPEALID is not null) and r.TRANSACTIONTYPECODE=1 and
((r.DATE >= @STARTDATE) or @STARTDATE is null) and
((r.DATE <= @ENDDATE)or @ENDDATE is null) and
(MEMBER.MEMBERSHIPID = MEMBERSHIP.ID) and
(A.MEMBERSHIPPROGRAMID is not null)
group by r.CHANNELCODEID, R.APPEALID) PLEDGED
full outer join
(select payrev.APPEALID, coalesce(payrev.CHANNELCODEID, '00000000-0000-0000-0000-000000000000') CHANNELID, coalesce(sum(payrevspl.AMOUNT), 0) PLEDGESPAID
from dbo.REVENUESPLIT payrevspl
inner join dbo.REVENUE payrev on payrevspl.REVENUEID = payrev.ID
where
payrevspl.ID in (
select ip.PAYMENTID
from dbo.INSTALLMENTPAYMENT ip
inner join dbo.REVENUE pledgerev on ip.PLEDGEID = pledgerev.ID
inner join dbo.REVENUESPLIT pledgerevspl on pledgerev.ID = pledgerevspl.REVENUEID
inner join dbo.APPEAL a on a.ID = payrev.APPEALID
inner join dbo.MEMBER on PLEDGErev.CONSTITUENTID = MEMBER.CONSTITUENTID
inner join dbo.MEMBERSHIP on MEMBERSHIP.MEMBERSHIPPROGRAMID = A.MEMBERSHIPPROGRAMID
where (pledgerev.DATE >= @STARTDATE or @STARTDATE is null) and
(MEMBER.MEMBERSHIPID = MEMBERSHIP.ID) and
(pledgerev.DATE <= @ENDDATE or @ENDDATE is null) and
pledgerev.APPEALID=payrev.APPEALID) and
(payrev.APPEALID=payrev.APPEALID) and
(payrev.DATE >= @STARTDATE or @STARTDATE is null) and
(payrev.DATE <= @ENDDATE or @ENDDATE is null)
group by payrev.CHANNELCODEID, payrev.APPEALID ) PAID
on PLEDGED.APPEALID = PAID.APPEALID and PLEDGED.CHANNELID = PAID.CHANNELID
full outer join
(select worev.APPEALID, coalesce(worev.CHANNELCODEID, '00000000-0000-0000-0000-000000000000') CHANNELID, coalesce(sum(wos.AMOUNT),0) PLEDGESWRITTENOFF
from dbo.WRITEOFFSPLIT wos
inner join dbo.WRITEOFF wo on wos.WRITEOFFID = wo.ID
inner join dbo.REVENUE worev on wo.REVENUEID = worev.ID
inner join dbo.APPEAL a on a.ID = worev.APPEALID
inner join dbo.MEMBER on worev.CONSTITUENTID = MEMBER.CONSTITUENTID
inner join dbo.MEMBERSHIP on MEMBERSHIP.MEMBERSHIPPROGRAMID = A.MEMBERSHIPPROGRAMID
where
(worev.DATE >= @STARTDATE or @STARTDATE is null) and
(worev.DATE <= @ENDDATE or @ENDDATE is null) and
(worev.APPEALID=worev.APPEALID)and
MEMBER.MEMBERSHIPID = MEMBERSHIP.id
group by worev.CHANNELCODEID, worev.APPEALID) WRITEOFF
on PLEDGED.APPEALID = WRITEOFF.APPEALID and PLEDGED.CHANNELID = WRITEOFF.CHANNELID
return;
end