UFN_REVENUEBATCH_EVENTREGISTRANT_GETBENEFITS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AMOUNT | money | IN | |
@APPLICATIONINFO | nvarchar(60) | IN | |
@REVENUESTREAMS | xml | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@EXCHANGERATE | decimal(20, 8) | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEBATCH_EVENTREGISTRANT_GETBENEFITS
(
@AMOUNT money,
@APPLICATIONINFO nvarchar(60),
@REVENUESTREAMS xml,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASECURRENCYID uniqueidentifier,
@EXCHANGERATE decimal(20, 8),
@BASEEXCHANGERATEID uniqueidentifier
)
returns @RESULT table
(
BENEFITID uniqueidentifier,
VALUE money,
QUANTITY int,
SEQUENCE int
)
as
begin
declare @SINGLEAPPLICATIONID uniqueidentifier;
declare @APPLICATIONTYPECODE tinyint;
if len(@APPLICATIONINFO) > 3
select
@SINGLEAPPLICATIONID = SINGLEAPPLICATIONID,
@APPLICATIONTYPECODE = APPLICATIONTYPECODE
from
dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(@APPLICATIONINFO);
declare @REGISTRANTIDS table
(
ID uniqueidentifier,
AMOUNT money
);
if @SINGLEAPPLICATIONID is null
begin
if @REVENUESTREAMS.exist('/REVENUESTREAMS/ITEM') <> 0
begin
insert into
@REGISTRANTIDS
select
APPLICATIONS.APPLICATIONID,
APPLICATIONS.APPLIED
from
(
select
coalesce(APPLICATIONID, APPLICATIONCOMMITMENTID) as APPLICATIONID,
APPLIED
from
dbo.UFN_REVENUEBATCH_GETAPPLICATIONS_FROMITEMLISTXML(@REVENUESTREAMS)
where
APPLIED > 0
)
as APPLICATIONS
left join
dbo.BATCHREVENUEREGISTRANT on BATCHREVENUEREGISTRANT.ID = APPLICATIONS.APPLICATIONID
left join
dbo.REGISTRANT on REGISTRANT.ID = APPLICATIONS.APPLICATIONID
where
REGISTRANT.ID is not null
or
BATCHREVENUEREGISTRANT.ID is not null
end
end
else
begin
insert into
@REGISTRANTIDS
select
@SINGLEAPPLICATIONID,
@AMOUNT
where
@APPLICATIONTYPECODE = 7;
end
declare @MUSTPAYFULLREGISTRATIONAMOUNT bit = 1;
insert into
@RESULT
select
REGISTRANTBENEFIT.BENEFITID,
REGISTRANTBENEFIT.UNITVALUE,
REGISTRANTBENEFIT.QUANTITY,
(row_number() over(order by ID)) - 1 as SEQUENCE
from
@REGISTRANTIDS as REGISTRANT
cross apply
dbo.UFN_REVENUEBATCH_EVENTREGISTRANT_GETPAYMENTBENEFITS(REGISTRANT.ID, REGISTRANT.AMOUNT, @TRANSACTIONCURRENCYID, @BASECURRENCYID, @EXCHANGERATE,
@BASEEXCHANGERATEID, @MUSTPAYFULLREGISTRATIONAMOUNT) as REGISTRANTBENEFIT;
declare @ROLLINGMAXSEQUENCE int = coalesce((select max(SEQUENCE) from @RESULT), 0);
insert into
@RESULT
select
REGISTRANTBENEFIT.BENEFITID,
REGISTRANTBENEFIT.UNITVALUE,
REGISTRANTBENEFIT.QUANTITY,
@ROLLINGMAXSEQUENCE + (row_number() over(order by ID)) as SEQUENCE
from
@REGISTRANTIDS as REGISTRANT
cross apply
dbo.UFN_REVENUEBATCH_BATCHEVENTREGISTRANT_GETPAYMENTBENEFITS(REGISTRANT.ID, @TRANSACTIONCURRENCYID, @BASECURRENCYID) as REGISTRANTBENEFIT;
return;
end