USP_KPI_REVENUE_APPEALAMOUNTTOTAL
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | money | INOUT | |
@DESIGNATIONID | uniqueidentifier | IN | |
@APPEALID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@SELECTIONID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_REVENUE_APPEALAMOUNTTOTAL
@VALUE money output,
@DESIGNATIONID uniqueidentifier = null,
@APPEALID uniqueidentifier,
@ASOFDATE datetime,
@SELECTIONID uniqueidentifier = null,
@CURRENCYID uniqueidentifier = null
as
set nocount on;
declare @RECEIVED money;
declare @PLEDGEBALANCE money;
declare @DL1ID uniqueidentifier;
declare @DL2ID uniqueidentifier;
declare @DL3ID uniqueidentifier;
declare @DL4ID uniqueidentifier;
declare @DL5ID uniqueidentifier;
select @DL1ID = DESIGNATIONLEVEL1ID,
@DL2ID = DESIGNATIONLEVEL2ID,
@DL3ID = DESIGNATIONLEVEL3ID,
@DL4ID = DESIGNATIONLEVEL4ID,
@DL5ID = DESIGNATIONLEVEL5ID
from dbo.DESIGNATION
where ID = @DESIGNATIONID;
--if the designation id is null, this procedure returns the revenue records that apply to an appeal
--else it joins the revenue split table with a table(DESIGNATIONS_CTE) that contains the designation ids
--for the input designation and its children designations
if @SELECTIONID is null
begin
if @DESIGNATIONID is null
begin
select @RECEIVED =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT RDS
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE = 0;
end
else
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DL1ID and
(D.DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null) and
(D.DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null) and
(D.DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null) and
(D.DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
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
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE = 0;
end
if @DESIGNATIONID is null
begin
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 dbo.REVENUE PAY on PAY.ID = PAYSPLIT.REVENUEID
where
PAY.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
WHERE (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE 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 dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
inner join dbo.REVENUE R on WO.REVENUEID = R.ID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1)
), 0))
from dbo.REVENUESPLIT RDS
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1);
end
else
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DL1ID and
(D.DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null) and
(D.DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null) and
(D.DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null) and
(D.DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
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
where
PAY.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
inner join DESIGNATIONS_CTE RD on RS.DESIGNATIONID = RD.ID
WHERE (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE 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
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1)
), 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
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1);
end
end
else
begin
if @DESIGNATIONID is null
begin
select @RECEIVED =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(RDS.ID,@CURRENCYID)), 0)
from dbo.REVENUESPLIT RDS
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE = 0;
end
else
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DL1ID and
(D.DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null) and
(D.DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null) and
(D.DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null) and
(D.DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
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
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE = 0;
end;
if @DESIGNATIONID is null
begin
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 dbo.REVENUE PAY on PAY.ID = PAYSPLIT.REVENUEID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = PAYSPLIT.REVENUEID
where
PAY.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RS.REVENUEID
WHERE (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE 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 dbo.WRITEOFF WO on WOS.WRITEOFFID = WO.ID
inner join dbo.REVENUE R on WO.REVENUEID = R.ID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = R.ID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1)
), 0))
from dbo.REVENUESPLIT RDS
inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1);
end
else
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION D
where D.DESIGNATIONLEVEL1ID = @DL1ID and
(D.DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null) and
(D.DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null) and
(D.DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null) and
(D.DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
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 UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = PAYSPLIT.REVENUEID
where
PAY.ID IN
(SELECT IP.PAYMENTID
FROM dbo.INSTALLMENTPAYMENT IP
inner join dbo.REVENUE R on IP.PLEDGEID = R.ID
inner join dbo.REVENUESPLIT RS on R.ID = RS.REVENUEID
inner join UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RS.REVENUEID
inner join DESIGNATIONS_CTE RD on RS.DESIGNATIONID = RD.ID
WHERE (R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
(PAY.DATE <= @ASOFDATE or @ASOFDATE 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 UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = R.ID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1)
), 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 UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) as IDSET_36515C01F49C49F785B773BCB3C6A6C7 on IDSET_36515C01F49C49F785B773BCB3C6A6C7.ID = RDS.REVENUEID
where
(R.DATE <= @ASOFDATE or @ASOFDATE is null) and
(R.APPEALID = @APPEALID) and
R.TRANSACTIONTYPECODE in (1);
end
end
set @VALUE = @RECEIVED + @PLEDGEBALANCE;