USP_REGISTRANT_FAF_BENEFIT_ADD
Add registrant benefits and benefit options
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REGISTRANTID | uniqueidentifier | IN | |
@BENEFITID | uniqueidentifier | IN | |
@EVENTPRICEID | uniqueidentifier | IN | |
@BENEFITTYPECODE | tinyint | IN | |
@BENEFITOPTIONIDLIST | varchar(4000) | IN | |
@PREFERENCELIST | varchar(4000) | IN | |
@QUANTITY | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REGISTRANT_FAF_BENEFIT_ADD
(
@REGISTRANTID uniqueidentifier,
@BENEFITID uniqueidentifier,
@EVENTPRICEID uniqueidentifier = null,
@BENEFITTYPECODE tinyint = 0,
@BENEFITOPTIONIDLIST varchar(4000) = '',
@PREFERENCELIST varchar(4000) = '',
@QUANTITY int = 1,
@CHANGEAGENTID uniqueidentifier = null
)
with execute as caller
as
begin
set nocount on;
declare @CURRENTDATE datetime
declare @EVENTID uniqueidentifier
declare @BASECURRENCYID uniqueidentifier
declare @BENEFITOPTIONID uniqueidentifier
declare @BENEFITPREFERENCE nvarchar(500)
declare @BENEFITOPTIONS table (ID int identity(1,1), BENEFITOPTIONID uniqueidentifier);
declare @BENEFITPREFERENCES table (ID int identity(1,1), BENEFITPREFERENCE nvarchar(500));
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @i int
declare @TOTAL int
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
set @CURRENTDATE = getdate();
SELECT @EVENTID = EVENTID from dbo.REGISTRANT where ID = @REGISTRANTID;
SELECT @BASECURRENCYID = BASECURRENCYID from dbo.EVENT where ID = @EVENTID
if ISNULL(@BENEFITOPTIONIDLIST,'') > ''
INSERT INTO @BENEFITOPTIONS(BENEFITOPTIONID)
SELECT element_value from dbo.UFN_PARSE_STRING(@BENEFITOPTIONIDLIST,',');
if ISNULL(@PREFERENCELIST,'') > ''
INSERT INTO @BENEFITPREFERENCES(BENEFITPREFERENCE)
SELECT element_value from dbo.UFN_PARSE_STRING(@PREFERENCELIST,',');
SELECT @TOTAL = COUNT(*) from @BENEFITOPTIONS;
SET @i = 1;
BEGIN TRAN
begin try
IF @BENEFITTYPECODE = 0 AND @EVENTPRICEID IS NOT NULL
BEGIN
insert into dbo.REGISTRANTBENEFIT
(
REGISTRANTID,
BENEFITID,
UNITVALUE,
QUANTITY,
TOTALVALUE,
DETAILS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
BASECURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID,
EVENTBASECURRENCYTOTALVALUE,
ORGANIZATIONTOTALVALUE
)
select
R.ID,
EPB.BENEFITID,
EPB.UNITVALUE,
EPB.QUANTITY,
(EPB.UNITVALUE * EPB.QUANTITY),
EPB.DETAILS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
EPB.BASECURRENCYID,
case when EPB.BASECURRENCYID = E.BASECURRENCYID
then null
else dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EPB.BASECURRENCYID, E.BASECURRENCYID, @CURRENTDATE, 1, null)
end,
case when EPB.BASECURRENCYID = @ORGANIZATIONCURRENCYID
then null
else dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EPB.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null)
end,
case when EPB.BASECURRENCYID = E.BASECURRENCYID
then (EPB.UNITVALUE * EPB.QUANTITY)
else dbo.UFN_CURRENCY_CONVERT((EPB.UNITVALUE * EPB.QUANTITY), dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EPB.BASECURRENCYID, E.BASECURRENCYID, @CURRENTDATE, 1, null))
end,
case when EPB.BASECURRENCYID = @ORGANIZATIONCURRENCYID
then (EPB.UNITVALUE * EPB.QUANTITY)
else dbo.UFN_CURRENCY_CONVERT((EPB.UNITVALUE * EPB.QUANTITY), dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EPB.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null))
end
from
dbo.REGISTRANT R (NOLOCK)
INNER JOIN dbo.EVENT E (NOLOCK)
ON R.EVENTID = E.ID
INNER JOIN dbo.EVENTPRICE EP (NOLOCK)
ON EP.EVENTID = E.ID
INNER JOIN dbo.EVENTPRICEBENEFIT EPB (NOLOCK)
ON EPB.EVENTPRICEID = EP.ID
where
EPB.EVENTPRICEID = @EVENTPRICEID
AND EPB.BENEFITID = @BENEFITID
AND R.ID = @REGISTRANTID;
END
IF ISNULL(@BENEFITTYPECODE,0) > 0
BEGIN
insert into dbo.REGISTRANTBENEFIT
(
REGISTRANTID,
BENEFITID,
UNITVALUE,
QUANTITY,
TOTALVALUE,
DETAILS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
BASECURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID,
EVENTBASECURRENCYTOTALVALUE,
ORGANIZATIONTOTALVALUE
)
select
@REGISTRANTID,
B.ID,
B.VALUE,
@QUANTITY,
(B.VALUE * @QUANTITY),
'',
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@BASECURRENCYID,
null,
null,
(B.VALUE * @QUANTITY),
(B.VALUE * @QUANTITY)
from
dbo.BENEFIT B (NOLOCK)
where
B.ID = @BENEFITID
END
WHILE (@i <= @TOTAL)
BEGIN
SET @BENEFITOPTIONID = null;
SET @BENEFITPREFERENCE = '';
SELECT @BENEFITOPTIONID = BENEFITOPTIONID FROM @BENEFITOPTIONS WHERE ID = @i;
SELECT @BENEFITPREFERENCE = BENEFITPREFERENCE FROM @BENEFITPREFERENCES WHERE ID = @i;
IF @BENEFITOPTIONID IS NOT NULL
EXEC dbo.USP_DATAFORMTEMPLATE_ADD_REGISTRANTBENEFITEXTENSION @ID = null, @CHANGEAGENTID = @CHANGEAGENTID, @REGISTRANTID = @REGISTRANTID, @BENEFITID = @BENEFITID, @BENEFITOPTIONID = @BENEFITOPTIONID, @BENEFITPREFERENCE = @BENEFITPREFERENCE, @BENEFITTYPECODE = @BENEFITTYPECODE
SET @i = @i + 1;
END
end try
begin catch
exec dbo.USP_RAISE_ERROR
ROLLBACK TRAN
return 1;
end catch
COMMIT TRAN;
return 0;
end