UFN_MEMBERSHIPTRANSACTION_AMOUNT
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPTRANSACTIONID | uniqueidentifier | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_MEMBERSHIPTRANSACTION_AMOUNT (
@MEMBERSHIPTRANSACTIONID uniqueidentifier,
@CURRENCYCODE tinyint
)
returns table
as return (
with LINEITEM_CTE as (
select
ID,
case @CURRENCYCODE
when 0 then TRANSACTIONAMOUNT
when 1 then BASEAMOUNT
else ORGAMOUNT
end as AMOUNT
from
dbo.FINANCIALTRANSACTIONLINEITEM
),
CONTRIBUTIONAMOUNT_CTE as (
select
MEMBERSHIPCONTRIBUTIONPORTION.MEMBERSHIPTRANSACTIONID,
sum(LINEITEM_CTE.AMOUNT) as AMOUNT
from
dbo.MEMBERSHIPCONTRIBUTIONPORTION
inner join
LINEITEM_CTE on LINEITEM_CTE.ID = MEMBERSHIPCONTRIBUTIONPORTION.FINANCIALTRANSACTIONLINEITEMID
group by
MEMBERSHIPCONTRIBUTIONPORTION.MEMBERSHIPTRANSACTIONID
),
MEMBERSHIP_ADDONS_CTE as (
select
MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID,
sum(MEMBERSHIPADDON.TRANSACTIONPURCHASEPRICE * (MEMBERSHIPADDON.QUANTITY)) as AMOUNT
from
dbo.MEMBERSHIPADDON
inner join
LINEITEM_CTE on LINEITEM_CTE.ID = MEMBERSHIPADDON.REVENUESPLITID
group by
MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID
),
PROGRAM_CTE as (
select MEMBERSHIPTRANSACTIONID = MEMBERSHIPTRANSACTION.ID, WHEREISREVENUETRACKEDCODE
from dbo.MEMBERSHIPTRANSACTION
inner join
dbo.MEMBERSHIPLEVEL ON dbo.MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
inner join
dbo.MEMBERSHIPPROGRAM ON MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
where MEMBERSHIPTRANSACTION.ID = @MEMBERSHIPTRANSACTIONID
)
select
case PROGRAM_CTE.WHEREISREVENUETRACKEDCODE
when 0 then
isnull(LINEITEM_CTE.AMOUNT - dbo.UFN_MEMBERSHIP_GETBASEAMOUNTDISCOUNT(MEMBERSHIPTRANSACTION.ID) + isnull(CONTRIBUTIONAMOUNT_CTE.AMOUNT, 0), 0)
when 1 then
MEMBERSHIPTRANSACTION.BASEAMOUNT
end as AMOUNT,
isnull(MEMBERSHIP_ADDONS_CTE.AMOUNT, 0) as ADDONAMOUNT
from
dbo.MEMBERSHIPTRANSACTION
inner join PROGRAM_CTE on MEMBERSHIPTRANSACTION.ID = PROGRAM_CTE.MEMBERSHIPTRANSACTIONID
left outer join
LINEITEM_CTE on LINEITEM_CTE.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
left outer join
CONTRIBUTIONAMOUNT_CTE on CONTRIBUTIONAMOUNT_CTE.MEMBERSHIPTRANSACTIONID = MEMBERSHIPTRANSACTION.ID
left outer join
MEMBERSHIP_ADDONS_CTE on MEMBERSHIP_ADDONS_CTE.MEMBERSHIPTRANSACTIONID = MEMBERSHIPTRANSACTION.ID
where
MEMBERSHIPTRANSACTION.ID = @MEMBERSHIPTRANSACTIONID);