USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTMEMBERSHIPPROGRAM_LIFETIMEINFO
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@TOTALMEMBERSHIPAMOUNT | money | INOUT | |
@LASTRENEWALAMOUNT | money | INOUT | |
@LASTRENEWALDATE | datetime | INOUT | |
@TRANSACTIONCOUNT | int | INOUT | |
@BASECURRENCYID | uniqueidentifier | INOUT | |
@WHEREISREVENUETRACKED | smallint | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTMEMBERSHIPPROGRAM_LIFETIMEINFO
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@TOTALMEMBERSHIPAMOUNT money = null output,
@LASTRENEWALAMOUNT money = null output,
@LASTRENEWALDATE datetime = null output,
@TRANSACTIONCOUNT int = null output,
@BASECURRENCYID uniqueidentifier = null output,
@WHEREISREVENUETRACKED smallint = null output
)
as
set nocount on;
set @DATALOADED = 1;
set @TOTALMEMBERSHIPAMOUNT = 0
set @TRANSACTIONCOUNT = 0
set @LASTRENEWALAMOUNT = 0
declare @RECURRINGGIFTID uniqueidentifier
set @RECURRINGGIFTID = dbo.UFN_MEMBERSHIP_GETRECURRINGGIFT_2(@ID, 1)
declare @OBTAINLEVELCODE tinyint
declare @REVENUEISTRACKEDINANOTHERSYSTEM tinyint = 1
select @OBTAINLEVELCODE = MEMBERSHIPLEVEL.OBTAINLEVELCODE
,@BASECURRENCYID = MEMBERSHIPLEVEL.BASECURRENCYID
,@WHEREISREVENUETRACKED = MEMBERSHIPPROGRAM.WHEREISREVENUETRACKEDCODE
from dbo.MEMBERSHIP
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
where MEMBERSHIP.ID = @ID
if @RECURRINGGIFTID is null
begin
select @TOTALMEMBERSHIPAMOUNT = coalesce(sum(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT),0) - isnull(sum(CREDITS.TOTAL),0)
from dbo.MEMBERSHIPTRANSACTION
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
cross apply (
select sum(TOTAL) as TOTAL
from dbo.CREDITITEM
where [REVENUESPLITID] = MEMBERSHIPTRANSACTION.REVENUESPLITID
) as CREDITS
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = @ID
and MEMBERSHIPLEVEL.OBTAINLEVELCODE = 0
if @OBTAINLEVELCODE = 0
begin
select @TRANSACTIONCOUNT = count(1)
from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = @ID
select @TOTALMEMBERSHIPAMOUNT = @TOTALMEMBERSHIPAMOUNT + coalesce(sum(BASEAMOUNT),0)
from dbo.MEMBERSHIPCONTRIBUTIONPORTION
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPCONTRIBUTIONPORTION.FINANCIALTRANSACTIONLINEITEMID
where MEMBERSHIPCONTRIBUTIONPORTION.MEMBERSHIPTRANSACTIONID in ( select MEMBERSHIPTRANSACTION.ID from dbo.MEMBERSHIPTRANSACTION where MEMBERSHIPTRANSACTION.MEMBERSHIPID = @ID)
end
else
begin
select @TRANSACTIONCOUNT = count(1) from (select FINANCIALTRANSACTION.ID from dbo.MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.FINANCIALTRANSACTIONLINEITEMID
inner join dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
where MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.MEMBERSHIPID = @ID
group by FINANCIALTRANSACTION.ID) TRANCOUNT
select @TOTALMEMBERSHIPAMOUNT = @TOTALMEMBERSHIPAMOUNT + coalesce(sum(MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.AMOUNT),0)
from dbo.MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE
where MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.MEMBERSHIPID = @ID
end
end
if @RECURRINGGIFTID is not null
begin
select @TOTALMEMBERSHIPAMOUNT = sum(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT),
@TRANSACTIONCOUNT = count(distinct FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID)
from dbo.MEMBERSHIPTRANSACTION
inner join dbo.FINANCIALTRANSACTIONLINEITEM on MEMBERSHIPTRANSACTION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.RECURRINGGIFTACTIVITY on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = @ID
end
declare @LASTRENEWTRANSACTIONID uniqueidentifier
declare @RENEWALUPGRADE int = 1
declare @MIDTERMUPGRADE int = 2
declare @RENEWACTIONCODE int = 1
declare @UPGRADEACTIONCODE int = 2
declare @DOWNGRADEACTIONCODE int = 3
select @LASTRENEWTRANSACTIONID = (select top 1 MEMBERSHIPTRANSACTION.ID from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = @ID
and (MEMBERSHIPTRANSACTION.ACTIONCODE IN (@RENEWACTIONCODE, @UPGRADEACTIONCODE, @DOWNGRADEACTIONCODE ) )
and (MEMBERSHIPTRANSACTION.UPGRADEMETHODCODE <> @MIDTERMUPGRADE)
order by TRANSACTIONDATE DESC, DATEADDED DESC)
if @LASTRENEWTRANSACTIONID is not null
begin
select
@LASTRENEWALAMOUNT =
case
when @WHEREISREVENUETRACKED = @REVENUEISTRACKEDINANOTHERSYSTEM then
MEMBERSHIPTRANSACTION.BASEAMOUNT
else
coalesce(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,0) - isnull(CREDITS.TOTAL,0)
end
,@LASTRENEWALDATE = TRANSACTIONDATE
from dbo.MEMBERSHIPTRANSACTION
left join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
cross apply (
select sum(TOTAL) as TOTAL
from dbo.CREDITITEM
where [REVENUESPLITID] = MEMBERSHIPTRANSACTION.REVENUESPLITID
) as CREDITS
where MEMBERSHIPTRANSACTION.ID = @LASTRENEWTRANSACTIONID
if @OBTAINLEVELCODE = 0
begin
select @LASTRENEWALAMOUNT = @LASTRENEWALAMOUNT + coalesce(sum(BASEAMOUNT),0)
from dbo.MEMBERSHIPCONTRIBUTIONPORTION
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPCONTRIBUTIONPORTION.FINANCIALTRANSACTIONLINEITEMID
where MEMBERSHIPCONTRIBUTIONPORTION.MEMBERSHIPTRANSACTIONID = @LASTRENEWTRANSACTIONID
end
else
begin
select @LASTRENEWALAMOUNT = coalesce(sum(MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.AMOUNT),0),
@LASTRENEWALDATE = case when @LASTRENEWALDATE is null then max(MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.EFFECTIVEDATE)
else @LASTRENEWALDATE
end
from dbo.MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE
where ORIGINALMEMBERSHIPTRANSACTIONID = @LASTRENEWTRANSACTIONID
end
end
select @TOTALMEMBERSHIPAMOUNT = @TOTALMEMBERSHIPAMOUNT + coalesce(sum(MEMBERSHIPADDON.PURCHASEPRICE * MEMBERSHIPADDON.QUANTITY),0) - isnull(sum(CREDITS.TOTAL),0)
from dbo.MEMBERSHIPADDON
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on MEMBERSHIPADDON.REVENUESPLITID = FTLI.ID
cross apply (
select sum(TOTAL) as TOTAL
from dbo.CREDITITEM
where [REVENUESPLITID] = MEMBERSHIPADDON.REVENUESPLITID
) as CREDITS
where MEMBERSHIPADDON.MEMBERSHIPID = @ID
and FTLI.DELETEDON is null
and FTLI.TYPECODE <> 1
return 0;