USP_KPI_DESIGNATION_REVENUETOTAL
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | money | INOUT | |
@DESIGNATIONID | 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_DESIGNATION_REVENUETOTAL
(
@VALUE money output,
@DESIGNATIONID 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;
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,
@CURRENCYID = BASECURRENCYID
from dbo.DESIGNATION
where ID = @DESIGNATIONID;
if @ORGPOSITIONSSELECTIONID is null
begin
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION
where DESIGNATIONLEVEL1ID = @DL1ID
and (DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null)
and (DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null)
and (DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null)
and (DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
select @RECEIVED = coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID,@CURRENCYID)), 0)
from dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT
inner join dbo.REVENUESPLIT_EXT PAYMENTSPLIT_EXT on PAYMENTSPLIT_EXT.ID = PAYMENTSPLIT.ID
inner join DESIGNATIONS_CTE PAYMENTSPLITDESIGNATION on PAYMENTSPLITDESIGNATION.ID = PAYMENTSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION PAYMENT on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT PAYMENT_EXT on PAYMENT_EXT.ID = PAYMENT.ID
left join dbo.APPEAL on APPEAL.ID = PAYMENT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = PAYMENTSPLIT.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(PAYMENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (PAYMENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and PAYMENT.TYPECODE = 0;
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION
where DESIGNATIONLEVEL1ID = @DL1ID
and (DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null)
and (DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null)
and (DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null)
and (DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
select @PLEDGEBALANCE =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FTLI.ID,@CURRENCYID)), 0)
- (
coalesce(( --Subtract payments of the above pledges
select coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID,@CURRENCYID)), 0)
from dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT
inner join dbo.REVENUESPLIT_EXT PAYMENTSPLIT_EXT on PAYMENTSPLIT_EXT.ID = PAYMENTSPLIT.ID
inner join DESIGNATIONS_CTE PAYMENTSPLITDESIGNATION on PAYMENTSPLITDESIGNATION.ID = PAYMENTSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION PAYMENT on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT PAYMENT_EXT on PAYMENT_EXT.ID = PAYMENT.ID
left join dbo.APPEAL PAYMENTAPPEAL on PAYMENTAPPEAL.ID = PAYMENT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT PAYMENTRSBU on PAYMENTRSBU.REVENUESPLITID = PAYMENTSPLIT.ID and PAYMENTRSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
PAYMENTSPLIT.ID in (
select INSTALLMENTPAYMENT.PAYMENTID
from dbo.INSTALLMENTPAYMENT
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = INSTALLMENTPAYMENT.PLEDGEID
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = REVENUESPLIT_EXT.DESIGNATIONID
left join dbo.APPEAL on APPEAL.ID = REVENUE_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where (FINANCIALTRANSACTION.[DATE] >= @STARTDATE or @STARTDATE is null)
and (FINANCIALTRANSACTION.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and FINANCIALTRANSACTION.TYPECODE <> 3 -- Matching gift claim
)
and (PAYMENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (PAYMENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (PAYMENTAPPEAL.ID = @APPEALID or @APPEALID is null)
and (PAYMENTAPPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (PAYMENTRSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
), 0)
+
coalesce(( --Subtract Writeoffs of the above pledges
select sum(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID,@CURRENCYID))
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.REVENUESPLIT_EXT WRITEOFFSPLIT_EXT on WRITEOFFSPLIT_EXT.ID = WRITEOFFSPLIT.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = WRITEOFFSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFF.ID = WRITEOFFSPLIT.FINANCIALTRANSACTIONID
inner join dbo.FINANCIALTRANSACTION WRITEOFFPARENT on WRITEOFFPARENT.ID = WRITEOFF.PARENTID
inner join dbo.REVENUE_EXT WRITEOFFPARENT_EXT on WRITEOFFPARENT_EXT.ID = WRITEOFFPARENT.ID
left join dbo.APPEAL on APPEAL.ID = WRITEOFFPARENT_EXT.APPEALID
where
WRITEOFF.TYPECODE = 20 -- Writeoff
and WRITEOFFSPLIT.DELETEDON is null
and (WRITEOFFPARENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (WRITEOFFPARENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
--and (APPEAL.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and (
@BUSINESSUNITCODEID in (
select
distinct BUSINESSUNITCODEID
from dbo.REVENUESPLITBUSINESSUNIT RSBU
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = RSBU.REVENUESPLITID
where FTLI.FINANCIALTRANSACTIONID = WRITEOFFPARENT.ID
)
or @BUSINESSUNITCODEID is null
)
and WRITEOFFPARENT.TYPECODE in (1,8) -- Pledge, Donor challenge claim
), 0))
from dbo.FINANCIALTRANSACTIONLINEITEM FTLI
inner join dbo.REVENUESPLIT_EXT FTLI_EXT on FTLI_EXT.ID = FTLI.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = FTLI_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT FT_EXT on FT_EXT.ID = FT.ID
left join dbo.APPEAL on APPEAL.ID = FT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = FTLI.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(FT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (FT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and FT.TYPECODE in (1,8); -- Pledge, Donor challenge claim
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
where DESIGNATIONLEVEL1ID = @DL1ID
and (DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null)
and (DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null)
and (DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null)
and (DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
select @RECEIVED = coalesce(sum(dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY(REVENUESOLICITOR.ID,@CURRENCYID)), 0)
from dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT
inner join dbo.REVENUESPLIT_EXT PAYMENTSPLIT_EXT on PAYMENTSPLIT_EXT.ID = PAYMENTSPLIT.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = PAYMENTSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION PAYMENT on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT PAYMENT_EXT on PAYMENT_EXT.ID = PAYMENT.ID
inner join dbo.REVENUESOLICITOR on REVENUESOLICITOR.REVENUESPLITID = PAYMENTSPLIT.ID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = REVENUESOLICITOR.CONSTITUENTID and PAYMENT.[DATE] between OPH.DATEFROM and coalesce(OPH.DATETO, PAYMENT.[DATE])
inner join @IDS as SELECTION on SELECTION.ID = OPH.ID
left join dbo.APPEAL on APPEAL.ID = PAYMENT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = PAYMENTSPLIT.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(PAYMENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (PAYMENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and PAYMENT.TYPECODE = 0;
with DESIGNATIONS_CTE as (
select ID
from dbo.DESIGNATION
where DESIGNATIONLEVEL1ID = @DL1ID
and (DESIGNATIONLEVEL2ID = @DL2ID or @DL2ID is null)
and (DESIGNATIONLEVEL3ID = @DL3ID or @DL3ID is null)
and (DESIGNATIONLEVEL4ID = @DL4ID or @DL4ID is null)
and (DESIGNATIONLEVEL5ID = @DL5ID or @DL5ID is null)
)
--Calculate Pledge Balance as Pledge Balance * percent Solicitor is responsible for
select @PLEDGEBALANCE =
coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FTLI.ID,@CURRENCYID)), 0)
- (
coalesce(( --Subtract payments of the above pledges
select coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID,@CURRENCYID)), 0)
from dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT
inner join dbo.REVENUESPLIT_EXT PAYMENTSPLIT_EXT on PAYMENTSPLIT_EXT.ID = PAYMENTSPLIT.ID
inner join DESIGNATIONS_CTE PAYMENTSPLITDESIGNATION on PAYMENTSPLITDESIGNATION.ID = PAYMENTSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION PAYMENT on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT PAYMENT_EXT on PAYMENT_EXT.ID = PAYMENT.ID
inner join dbo.REVENUESOLICITOR on REVENUESOLICITOR.REVENUESPLITID = PAYMENTSPLIT.ID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = REVENUESOLICITOR.CONSTITUENTID and PAYMENT.[DATE] between OPH.DATEFROM and coalesce(OPH.DATETO, PAYMENT.[DATE])
inner join @IDS as SELECTION on SELECTION.ID = OPH.ID
left join dbo.APPEAL PAYMENTAPPEAL on PAYMENTAPPEAL.ID = PAYMENT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT PAYMENTRSBU on PAYMENTRSBU.REVENUESPLITID = PAYMENTSPLIT.ID and PAYMENTRSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
PAYMENTSPLIT.ID in (
select INSTALLMENTPAYMENT.PAYMENTID
from dbo.INSTALLMENTPAYMENT
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = INSTALLMENTPAYMENT.PLEDGEID
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = REVENUESPLIT_EXT.DESIGNATIONID
left join dbo.APPEAL on APPEAL.ID = REVENUE_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(FINANCIALTRANSACTION.[DATE] >= @STARTDATE or @STARTDATE is null)
and (FINANCIALTRANSACTION.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and FINANCIALTRANSACTION.TYPECODE <> 3 -- Matching gift claim
)
and (PAYMENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (PAYMENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (PAYMENTAPPEAL.ID = @APPEALID or @APPEALID is null)
and (PAYMENTAPPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (PAYMENTRSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
), 0)
+
coalesce(( --Subtract Writeoffs of the above pledges
select sum(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID,@CURRENCYID))
from dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT
inner join dbo.REVENUESPLIT_EXT WRITEOFFSPLIT_EXT on WRITEOFFSPLIT_EXT.ID = WRITEOFFSPLIT.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = WRITEOFFSPLIT_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION WRITEOFF on WRITEOFF.ID = WRITEOFFSPLIT.FINANCIALTRANSACTIONID
inner join dbo.FINANCIALTRANSACTION WRITEOFFPARENT on WRITEOFFPARENT.ID = WRITEOFF.PARENTID
inner join dbo.REVENUE_EXT WRITEOFFPARENT_EXT on WRITEOFFPARENT_EXT.ID = WRITEOFFPARENT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFPARENTSPLIT on WRITEOFFPARENTSPLIT.FINANCIALTRANSACTIONID = WRITEOFFPARENT.ID
inner join dbo.REVENUESOLICITOR on REVENUESOLICITOR.REVENUESPLITID = WRITEOFFPARENTSPLIT.ID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = REVENUESOLICITOR.CONSTITUENTID and WRITEOFFPARENT.[DATE] between OPH.DATEFROM and coalesce(OPH.DATETO, WRITEOFFPARENT.[DATE])
inner join @IDS as SELECTION on SELECTION.ID = OPH.ID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = WRITEOFFPARENTSPLIT.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
left join dbo.APPEAL on APPEAL.ID = WRITEOFFPARENT_EXT.APPEALID
where
WRITEOFF.TYPECODE = 20 -- Writeoff
and WRITEOFFSPLIT.DELETEDON is null
and (WRITEOFFPARENT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (WRITEOFFPARENT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and WRITEOFFPARENT.TYPECODE in (1,8) -- Pledge, Donor challenge claim
), 0)
)
from dbo.FINANCIALTRANSACTIONLINEITEM FTLI
inner join dbo.REVENUESPLIT_EXT FTLI_EXT on FTLI_EXT.ID = FTLI.ID
inner join DESIGNATIONS_CTE on DESIGNATIONS_CTE.ID = FTLI_EXT.DESIGNATIONID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUE_EXT FT_EXT on FT_EXT.ID = FT.ID
inner join dbo.REVENUESOLICITOR on REVENUESOLICITOR.REVENUESPLITID = FTLI.ID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH
on OPH.CONSTITUENTID = REVENUESOLICITOR.CONSTITUENTID and FT.[DATE] between OPH.DATEFROM and coalesce(OPH.DATETO, FT.[DATE])
inner join @IDS as SELECTION on SELECTION.ID = OPH.ID
left join dbo.APPEAL on APPEAL.ID = FT_EXT.APPEALID
left join dbo.REVENUESPLITBUSINESSUNIT RSBU on RSBU.REVENUESPLITID = FTLI.ID and RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID
where
(FT.[DATE] >= @STARTDATE or @STARTDATE is null)
and (FT.[DATE] <= @ASOFDATE or @ASOFDATE is null)
and (APPEAL.ID = @APPEALID or @APPEALID is null)
and (APPEAL.APPEALREPORT1CODEID = @APPEALREPORTCODE1ID or @APPEALREPORTCODE1ID is null)
and (RSBU.BUSINESSUNITCODEID = @BUSINESSUNITCODEID or @BUSINESSUNITCODEID is null)
and FT.TYPECODE in (1,8); -- Pledge, Donor challenge claim
end
declare @REFUNDVALUE money=null
select @REFUNDVALUE =
sum(
(coalesce(LI.QUANTITY,0)) *
(coalesce(LI.QUANTITY * LI.UNITVALUE - EXT.DISCOUNTS,0)
- (case
when coalesce(TICKET.ID, SALESORDERITEMMERCHANDISEUNIT.ID) is null then
isnull([SALESORDERITEMORDERDISCOUNTDETAIL].[AMOUNT], 0)
when LI.BASEAMOUNT > coalesce(TICKET.AMOUNTPAID, SALESORDERITEMMERCHANDISEUNIT.AMOUNTPAID) then
coalesce(TICKET.ORDERLEVELDISCOUNTSAPPLIED, SALESORDERITEMMERCHANDISEUNIT.ORDERLEVELDISCOUNTSAPPLIED)
else 0
end)
)
)
from dbo.FINANCIALTRANSACTION as FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = EXT.SALESORDERITEMID
inner join dbo.[SALESORDER] on [SALESORDERITEM].[SALESORDERID] = [SALESORDER].[ID]
left join dbo.TICKET on TICKET.ID = EXT.SALESORDERITEMIZEDITEMID
left join SALESORDERITEMMERCHANDISEUNIT on SALESORDERITEMMERCHANDISEUNIT.ID = EXT.SALESORDERITEMIZEDITEMID
left join (
select
SALESORDERITEMID,
sum(AMOUNT) as AMOUNT
from dbo.SALESORDERITEMORDERDISCOUNTDETAIL
group by SALESORDERITEMID
) SALESORDERITEMORDERDISCOUNTDETAIL
on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID = SALESORDERITEM.ID
left join dbo.[SALESORDERITEMDONATION]
on [SALESORDERITEM].[ID] = [SALESORDERITEMDONATION].[ID]
where
[SALESORDERITEMDONATION].DESIGNATIONID=@DESIGNATIONID and
[SALESORDERITEM].[TYPECODE] in (0,1,2,3,14,16) and
FT.TYPECODE = 23 -- Refund
set @VALUE = coalesce(@RECEIVED, 0) + coalesce(@PLEDGEBALANCE, 0) - coalesce(@REFUNDVALUE, 0);