USP_REPORT_REVENUEANNUALSTATEMENT_GROUPGIFTSUM
Returns group name, revenue amount, and receipt amount for each group that the constituent is currently a member of.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@INCLUDEGROUPS | bit | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN |
Definition
Copy
CREATE procedure [dbo].[USP_REPORT_REVENUEANNUALSTATEMENT_GROUPGIFTSUM]
(
@CONSTITUENTID uniqueidentifier,
@INCLUDEGROUPS bit,
@STARTDATE datetime = null,
@ENDDATE datetime = null
)
as
set nocount on
if @INCLUDEGROUPS = 1
begin
declare @CURRENTDATEEARLIESTTIME datetime;
set @CURRENTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(getdate())
declare @STARTDATEEARLIESTTIME datetime
set @STARTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)
declare @ENDDATEEARLIESTTIME datetime
set @ENDDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@ENDDATE)
declare @BASICPROGRAMSINSTALLED bit = 0;
if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('BB1C17BC-9E0B-4683-B490-EE40D511FA05') = 1
set @BASICPROGRAMSINSTALLED = 1;
if @BASICPROGRAMSINSTALLED = 1
with REVENUE_CTE as
(
select
case c.ISORGANIZATION when 1 then
case c.KEYNAMEPREFIX when '' then c.KEYNAME else c.KEYNAMEPREFIX + ' ' + c.KEYNAME end
else
case c.ISGROUP when 1 then
case c.DISPLAYNAME when '' then c.KEYNAME else c.DISPLAYNAME end
else
case c.FIRSTNAME when '' then '' else c.FIRSTNAME + ' ' end
+
case c.MIDDLENAME when '' then '' else LEFT(c.MIDDLENAME,1) + '. ' end
+
c.KEYNAME
end
end as NAME,
coalesce(sum(R.TRANSACTIONAMOUNT), 0) as REVENUEAMOUNT,
coalesce(sum(REVENUE_EXT.RECEIPTAMOUNT), 0) as RECEIPTAMOUNT,
CURRENCY.ISO4217 [ISOCURRENCYCODE],
CURRENCY.CURRENCYSYMBOL,
CURRENCY.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCY.DECIMALDIGITS,
[R].[ID]
from dbo.GROUPMEMBER GM
inner join dbo.CONSTITUENT C with (nolock) on GM.GROUPID = C.ID
inner join dbo.FINANCIALTRANSACTION R with (nolock) on R.CONSTITUENTID = C.ID
inner join dbo.REVENUE_EXT on R.ID = REVENUE_EXT.ID
left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
left join dbo.CURRENCY on R.TRANSACTIONCURRENCYID = CURRENCY.ID
where
GM.MEMBERID = @CONSTITUENTID and
(@STARTDATEEARLIESTTIME is null or R.DATE >= @STARTDATEEARLIESTTIME) and
(@ENDDATEEARLIESTTIME is null or R.DATE <= @ENDDATEEARLIESTTIME) and
R.TYPECODE in (0,7) and
-- Verify user is currently a member of the group
((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIESTTIME)) or
(GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME)) or
(GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME and GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
and R.DELETEDON is null
group by C.ID, C.ISORGANIZATION, C.KEYNAMEPREFIX, C.KEYNAME, C.ISGROUP, C.DISPLAYNAME, C.FIRSTNAME, C.MIDDLENAME, CURRENCY.ISO4217, CURRENCY.CURRENCYSYMBOL, CURRENCY.SYMBOLDISPLAYSETTINGCODE, CURRENCY.DECIMALDIGITS, [R].[ID]
)
select
[NAME],
[REVENUEAMOUNT],
[RECEIPTAMOUNT],
[ISOCURRENCYCODE],
[CURRENCYSYMBOL],
[CURRENCYSYMBOLDISPLAYSETTINGCODE],
[DECIMALDIGITS]
from REVENUE_CTE
union all
select
case CONSTITUENT.ISORGANIZATION when 1 then
case CONSTITUENT.KEYNAMEPREFIX when '' then CONSTITUENT.KEYNAME else CONSTITUENT.KEYNAMEPREFIX + ' ' + CONSTITUENT.KEYNAME end
else
case CONSTITUENT.ISGROUP when 1 then
case CONSTITUENT.DISPLAYNAME when '' then CONSTITUENT.KEYNAME else CONSTITUENT.DISPLAYNAME end
else
case CONSTITUENT.FIRSTNAME when '' then '' else CONSTITUENT.FIRSTNAME + ' ' end
+
case CONSTITUENT.MIDDLENAME when '' then '' else LEFT(CONSTITUENT.MIDDLENAME,1) + '. ' end
+
CONSTITUENT.KEYNAME
end
end as NAME,
-1 * [CREDITPAYMENT].[AMOUNT] as [REVENUEAMOUNT],
-1 * dbo.UFN_CREDITPAYMENT_GETRECEIPTAMOUNT([CREDITPAYMENT].[ID]) as [RECEIPTAMOUNT],
[REVENUE].[ISOCURRENCYCODE],
[REVENUE].[CURRENCYSYMBOL],
[REVENUE].[CURRENCYSYMBOLDISPLAYSETTINGCODE],
[REVENUE].[DECIMALDIGITS]
from dbo.[CREDITPAYMENT]
inner join dbo.[FINANCIALTRANSACTION] on [CREDITPAYMENT].[CREDITID] = [FINANCIALTRANSACTION].[ID]
inner join dbo.[CREDIT_EXT] on FINANCIALTRANSACTION.ID = CREDIT_EXT.ID
left join dbo.[FINANCIALTRANSACTIONLINEITEM] on [CREDITPAYMENT].[REVENUESPLITID] = [FINANCIALTRANSACTIONLINEITEM].[ID] and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1 and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
inner join REVENUE_CTE [REVENUE] on ([REVENUE].[ID] = [CREDITPAYMENT].[REVENUEID] or [REVENUE].[ID] = [FINANCIALTRANSACTIONLINEITEM].[FINANCIALTRANSACTIONID])
left join dbo.CONSTITUENT on FINANCIALTRANSACTION.CONSTITUENTID = CONSTITUENT.ID
where FINANCIALTRANSACTION.DELETEDON is null
order by NAME
else
with REVENUE_CTE as
(
select
case c.ISORGANIZATION when 1 then
case c.KEYNAMEPREFIX when '' then c.KEYNAME else c.KEYNAMEPREFIX + ' ' + c.KEYNAME end
else
case c.ISGROUP when 1 then
case c.DISPLAYNAME when '' then c.KEYNAME else c.DISPLAYNAME end
else
case c.FIRSTNAME when '' then '' else c.FIRSTNAME + ' ' end
+
case c.MIDDLENAME when '' then '' else LEFT(c.MIDDLENAME,1) + '. ' end
+
c.KEYNAME
end
end as NAME,
coalesce(sum(R.TRANSACTIONAMOUNT), 0) as REVENUEAMOUNT,
coalesce(sum(REVENUE_EXT.RECEIPTAMOUNT), 0) as RECEIPTAMOUNT,
CURRENCY.ISO4217 [ISOCURRENCYCODE],
CURRENCY.CURRENCYSYMBOL,
CURRENCY.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCY.DECIMALDIGITS,
[R].[ID]
from dbo.GROUPMEMBER GM
inner join dbo.CONSTITUENT C with (nolock) on GM.GROUPID = C.ID
inner join dbo.FINANCIALTRANSACTION R with (nolock) on R.CONSTITUENTID = C.ID
inner join dbo.REVENUE_EXT on R.ID = REVENUE_EXT.ID
left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
left join dbo.CURRENCY on R.TRANSACTIONCURRENCYID = CURRENCY.ID
where
GM.MEMBERID = @CONSTITUENTID and
(@STARTDATEEARLIESTTIME is null or R.DATE >= @STARTDATEEARLIESTTIME) and
(@ENDDATEEARLIESTTIME is null or R.DATE <= @ENDDATEEARLIESTTIME) and
R.TYPECODE in (0,7) and
-- Verify user is currently a member of the group
((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIESTTIME)) or
(GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME)) or
(GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME and GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
and R.DELETEDON is null
group by C.ID, C.ISORGANIZATION, C.KEYNAMEPREFIX, C.KEYNAME, C.ISGROUP, C.DISPLAYNAME, C.FIRSTNAME, C.MIDDLENAME, CURRENCY.ISO4217, CURRENCY.CURRENCYSYMBOL, CURRENCY.SYMBOLDISPLAYSETTINGCODE, CURRENCY.DECIMALDIGITS, [R].[ID]
)
select
[NAME],
[REVENUEAMOUNT],
[RECEIPTAMOUNT],
[ISOCURRENCYCODE],
[CURRENCYSYMBOL],
[CURRENCYSYMBOLDISPLAYSETTINGCODE],
[DECIMALDIGITS]
from REVENUE_CTE
order by NAME
end