USP_KPI_DESIGNATIONLEVEL_REVENUETOTAL
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | money | INOUT | |
@DESIGNATIONLEVELID | uniqueidentifier | IN | |
@APPEALID | uniqueidentifier | IN | |
@BUSINESSUNITCODEID | uniqueidentifier | IN | |
@APPEALREPORTCODE1ID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ASOFDATE | datetime | IN | |
@ORGPOSITIONSSELECTIONID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_DESIGNATIONLEVEL_REVENUETOTAL
@VALUE money output,
@DESIGNATIONLEVELID uniqueidentifier,
@APPEALID uniqueidentifier = null,
@BUSINESSUNITCODEID uniqueidentifier = null,
@APPEALREPORTCODE1ID uniqueidentifier = null,
@STARTDATE datetime = null,
@ASOFDATE datetime,
@ORGPOSITIONSSELECTIONID uniqueidentifier = null,
@CURRENCYID uniqueidentifier = null
as
set nocount on;
declare @RECEIVED money;
declare @PLEDGEBALANCE money;
select @CURRENCYID = BASECURRENCYID
from dbo.DESIGNATIONLEVEL
where ID = @DESIGNATIONLEVELID;
if @ORGPOSITIONSSELECTIONID is null
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
(D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID)
)
select @RECEIVED =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT RDS
inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
left join dbo.APPEAL A on R.APPEALID = A.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RDS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE = 0;
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
(D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID)
)
select @PLEDGEBALANCE =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID,@CURRENCYID)), 0)
-
(
coalesce(( --Subtract payments of the above pledges
select coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYSPLIT.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT PAYSPLIT
inner join DESIGNATIONS_CTE PAYD on PAYSPLIT.DESIGNATIONID = PAYD.ID
inner join dbo.REVENUE PAY on PAY.ID = PAYSPLIT.REVENUEID
left join dbo.APPEAL PAYAPP on PAY.APPEALID = PAYAPP.ID
left join dbo.REVENUESPLITBUSINESSUNIT PAYRSB on PAYRSB.REVENUESPLITID = PAYSPLIT.ID and PAYRSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
PAYSPLIT.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
left join dbo.APPEAL A on R.APPEALID = A.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
inner join DESIGNATIONS_CTE RD on RS.DESIGNATIONID = RD.ID
WHERE (R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and R.TRANSACTIONTYPECODE <> 3) and
(PAY.DATE >= @STARTDATE or @STARTDATE is null) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE is null) and
(PAYAPP.ID = @APPEALID or @APPEALID is null) and
(PAYAPP.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(PAYRSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
), 0)
+
coalesce(( --Subtract Writeoffs of the above pledges
select sum(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WOS.ID,@CURRENCYID))
from dbo.WRITEOFFSPLIT WOS
inner join DESIGNATIONS_CTE WOSD on WOS.DESIGNATIONID = WOSD.ID
inner join dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
inner join dbo.REVENUE R on WO.REVENUEID = R.ID
left join dbo.APPEAL A on R.APPEALID = A.ID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
--(A.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
(@BUSINESSUNITCODEID in
(
select distinct
BUSINESSUNITCODEID
from dbo.REVENUESPLITBUSINESSUNIT
inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = REVENUESPLITBUSINESSUNIT.REVENUESPLITID
where REVENUESPLIT.REVENUEID = R.ID
) or
@BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE in (1,8)
), 0))
from dbo.REVENUESPLIT RDS
inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
left join dbo.APPEAL A on R.APPEALID = A.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RDS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE in (1,8);
end
else
begin
declare @IDS as table(ID uniqueidentifier);
insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, null;
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
(D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID)
)
select @RECEIVED =
coalesce (sum(dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY(RSOL.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT RDS
inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
inner join dbo.REVENUESOLICITOR RSOL on RDS.ID = RSOL.REVENUESPLITID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = RSOL.CONSTITUENTID and R.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, R.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
left join dbo.APPEAL A on R.APPEALID = A.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RDS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE = 0;
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
(D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID) or
(D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID)
)
select @PLEDGEBALANCE =
(coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID,@CURRENCYID)), 0)
-
(
coalesce(( --Subtract payments of the above pledges
select coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYSPLIT.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT PAYSPLIT
inner join DESIGNATIONS_CTE PAYD on PAYSPLIT.DESIGNATIONID = PAYD.ID
inner join dbo.REVENUE PAY on PAY.ID = PAYSPLIT.REVENUEID
inner join dbo.REVENUESOLICITOR RSOL on PAYSPLIT.ID = RSOL.REVENUESPLITID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = RSOL.CONSTITUENTID and PAY.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, PAY.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
left join dbo.APPEAL PAYAPP on PAY.APPEALID = PAYAPP.ID
left join dbo.REVENUESPLITBUSINESSUNIT PAYRSB on PAYRSB.REVENUESPLITID = PAYSPLIT.ID and PAYRSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
PAYSPLIT.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
left join dbo.APPEAL A on R.APPEALID = A.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
inner join DESIGNATIONS_CTE RD on RS.DESIGNATIONID = RD.ID
WHERE (R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE <> 3) and
(PAY.DATE >= @STARTDATE or @STARTDATE is null) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE is null) and
(PAYAPP.ID = @APPEALID or @APPEALID is null) and
(PAYAPP.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(PAYRSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
), 0)
+
coalesce(( --Subtract Writeoffs of the above pledges
select sum(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WOS.ID,@CURRENCYID))
from dbo.WRITEOFFSPLIT WOS
inner join DESIGNATIONS_CTE WOSD on WOS.DESIGNATIONID = WOSD.ID
inner join dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
inner join dbo.REVENUE R on WO.REVENUEID = R.ID
inner join dbo.REVENUESPLIT on R.ID = REVENUESPLIT.REVENUEID
inner join dbo.REVENUESOLICITOR RSOL on REVENUESPLIT.ID = RSOL.REVENUESPLITID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = RSOL.CONSTITUENTID and R.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, R.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
left join dbo.APPEAL A on R.APPEALID = A.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = REVENUESPLIT.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE in (1,8)
), 0) ))
from dbo.REVENUESPLIT RDS
inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
inner join dbo.REVENUESOLICITOR RSOL on RDS.ID = RSOL.REVENUESPLITID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = RSOL.CONSTITUENTID and R.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, R.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
left join dbo.APPEAL A on R.APPEALID = A.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSB on RSB.REVENUESPLITID = RDS.ID and RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(R.DATE >= @STARTDATE or @STARTDATE is null) and
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(A.ID = @APPEALID or @APPEALID is null) and
(A.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null) and
(RSB.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null) and
R.TRANSACTIONTYPECODE in (1,8);
end
set @VALUE = coalesce(@RECEIVED, 0) + coalesce(@PLEDGEBALANCE, 0);