USP_DATALIST_ADDONSBYMEMBERSHIP
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONTEXTID | uniqueidentifier | IN | |
@INCLUDEEXPIRED | bit | IN | |
@INCLUDEREFUNDED | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_ADDONSBYMEMBERSHIP(
@CONTEXTID uniqueidentifier,
@INCLUDEEXPIRED bit = 0,
@INCLUDEREFUNDED bit = 0
)
as
set nocount on;
declare @RECURRINGPROGRAMTYPECODE tinyint = 1;
declare @LIFETIMEPROGRAMTYPECODE tinyint = 2;
select
MEMBERSHIPADDON.ID,
coalesce(MEMBERSHIPTRANSACTION.TRANSACTIONDATE, MEMBERSHIPADDON.DATEADDED) as DATE,
ADDONTOTALS.QUANTITY,
ADDON.NAME,
MEMBERSHIPADDON.BASECURRENCYID,
ADDONTOTALS.TOTAL,
ADDON.ID as ADDONID,
MEMBERSHIPADDON.NUMCANCELLED
from dbo.MEMBERSHIP
inner join dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.MEMBERSHIPID = MEMBERSHIP.ID
left join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.ID = MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID
left join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIP.MEMBERSHIPPROGRAMID
left join dbo.ADDON on ADDON.ID = MEMBERSHIPADDON.ADDONID
outer apply (
select
sum(FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT) as TOTAL
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.CREDITITEM_EXT on CREDITITEM_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
where @INCLUDEREFUNDED = 0
and FINANCIALTRANSACTION.TYPECODE = 23 --refund
and CREDITITEM_EXT.TYPECODE = 16 --membershipaddon
and FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID = MEMBERSHIPADDON.[REVENUESPLITID]
) REFUNDS
cross apply (
select
MEMBERSHIPADDON.QUANTITY - MEMBERSHIPADDON.NUMCANCELLED as QUANTITY,
(MEMBERSHIPADDON.PURCHASEPRICE * MEMBERSHIPADDON.QUANTITY) - isnull(REFUNDS.TOTAL,0) as TOTAL
) ADDONTOTALS
where
MEMBERSHIP.ID = @CONTEXTID
and (
@INCLUDEEXPIRED = 1
or MEMBERSHIPPROGRAM.PROGRAMTYPECODE = @RECURRINGPROGRAMTYPECODE
or MEMBERSHIPPROGRAM.PROGRAMTYPECODE = @LIFETIMEPROGRAMTYPECODE
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
or (getdate() <= cast(dateadd(day, 1, MEMBERSHIPADDON.EXPIRATIONDATE) as date))
);
return 0;