USP_DATALIST_PAYMENTEVENTREGISTRANTBENEFITS
Returns the benefits that a registrant will receive.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REGISTRANTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | Transaction currency ID |
@BASECURRENCYID | uniqueidentifier | IN | Base currency ID |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_PAYMENTEVENTREGISTRANTBENEFITS
(
@REGISTRANTID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null
)
as
set nocount on;
if @BASECURRENCYID is null and @TRANSACTIONCURRENCYID is null
select @BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @BENEFITS table
(
BENEFITID uniqueidentifier,
QUANTITY int,
UNITVALUE money,
DETAILS nvarchar(255),
BENEFITNAME nvarchar(100),
TRANSACTIONTOTALVALUE money
);
--Fetch overall benefits
insert into
@BENEFITS
select
BENEFITID,
sum(QUANTITY),
UNITVALUE,
DETAILS,
BENEFITNAME,
sum(TRANSACTIONTOTALVALUE)
from
dbo.UFN_REVENUEBATCH_EVENTREGISTRANT_GETPAYMENTBENEFITS(@REGISTRANTID, default, @TRANSACTIONCURRENCYID, @BASECURRENCYID, default, default, default)
group by BENEFITID, UNITVALUE, DETAILS, BENEFITNAME;
declare @PAIDBENEFITS table(BENEFITID uniqueidentifier, QUANTITY int, TRANSACTIONTOTALVALUE money);
--Fetch paid benefits
insert into @PAIDBENEFITS
select
PAIDBENEFITS_TEMP.BENEFITID,
sum(PAIDBENEFITS_TEMP.QUANTITY),
sum(PAIDBENEFITS_TEMP.TRANSACTIONTOTALVALUE)
from
(
select
distinct FINANCIALTRANSACTION.ID,
BENEFIT.ID 'BENEFITID',
(REVENUEBENEFIT.QUANTITY) 'QUANTITY',
(
REVENUEBENEFIT.UNITVALUE * REVENUEBENEFIT.QUANTITY
) 'TRANSACTIONTOTALVALUE'
from
dbo.REVENUEBENEFIT
inner join dbo.BENEFIT on BENEFIT.ID = REVENUEBENEFIT.BENEFITID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = REVENUEBENEFIT.REVENUEID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.EVENTREGISTRANTPAYMENT on EVENTREGISTRANTPAYMENT.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
where REGISTRANTID = @REGISTRANTID
and FINANCIALTRANSACTION.DELETEDON is null
and REVENUEBENEFIT.UNITVALUE > 0
) PAIDBENEFITS_TEMP
group by
PAIDBENEFITS_TEMP.BENEFITID;
--Fetch remaining benefits
update @BENEFITS
set QUANTITY = BENIFITS.QUANTITY - PAID.QUANTITY,
TRANSACTIONTOTALVALUE = BENIFITS.TRANSACTIONTOTALVALUE - PAID.TRANSACTIONTOTALVALUE
from @BENEFITS as BENIFITS
inner join @PAIDBENEFITS as PAID on PAID.BENEFITID = BENIFITS.BENEFITID;
delete from @BENEFITS where QUANTITY <= 0;
select BENEFITID, QUANTITY, UNITVALUE, DETAILS, BENEFITNAME, TRANSACTIONTOTALVALUE from @BENEFITS;