USP_REGISTRANTREGISTRATION_CHANGEREGISTRATIONOPTION
Allow registrants to change their registration option
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@REGISTRATIONOPTIONID | uniqueidentifier | IN | |
@REGISTRATIONOPTIONIDORIGINAL | uniqueidentifier | IN | |
@ROLECODE | tinyint | IN | |
@ROLECODEORIGINAL | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_REGISTRANTREGISTRATION_CHANGEREGISTRATIONOPTION
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@REGISTRATIONOPTIONID uniqueidentifier,
@REGISTRATIONOPTIONIDORIGINAL uniqueidentifier,
@ROLECODE tinyint,
@ROLECODEORIGINAL tinyint
)
as
begin try
declare @IsAvailableToIndividual bit,
@IsAvailableToTeamMember bit,
@IsAvailableToTeamLeader bit,
@IsAvailableToHouseholdMember bit,
@IsAvailableToHeadHousehold bit,
@IsAvailableToCompanyLeader bit,
@amount money,
@receiptamount money,
@organizationamount money,
@MAXQUANTITY int,
@USEDQUANTITY int,
@USEDQUANTITYORIGINAL int
select @IsAvailableToCompanyLeader=FAFRT.ISREGTYPEAVAILABLECOMPANYLEADER,
@IsAvailableToHeadHousehold=FAFRT.ISREGTYPEAVAILABLEHEADHOUSEHOLD,
@IsAvailableToHouseholdMember=FAFRT.ISREGTYPEAVAILABLEFAMILYMEMBER,
@IsAvailableToTeamLeader=FAFRT.ISREGTYPEAVAILABLETEAMLEADER,
@IsAvailableToTeamMember=FAFRT.ISREGTYPEAVAILABLETEAMMEMBER,
@IsAvailableToIndividual=FAFRT.ISREGTYPEAVAILABLEINDIVIDUAL,
@amount=EP.amount,
@receiptamount=EP.receiptamount,
@organizationamount=EP.organizationamount
from dbo.EVENTPRICE EP
join dbo.FAFREGISTRATIONTYPE FAFRT on EP.ID = FAFRT.EVENTPRICEID
where FAFRT.EVENTPRICEID = @REGISTRATIONOPTIONID
SELECT @MAXQUANTITY = MAXQUANTITY from dbo.FAFREGISTRATIONTYPE where EVENTPRICEID=@REGISTRATIONOPTIONID
SELECT @USEDQUANTITY = COUNT(*) from dbo.REGISTRANTREGISTRATION where EVENTPRICEID=@REGISTRATIONOPTIONID
SELECT @USEDQUANTITYORIGINAL = COUNT(*) from dbo.REGISTRANTREGISTRATION where EVENTPRICEID=@REGISTRATIONOPTIONIDORIGINAL
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
if @REGISTRATIONOPTIONID <> @REGISTRATIONOPTIONIDORIGINAL
begin
if @MAXQUANTITY > 0 and @USEDQUANTITY >= @MAXQUANTITY
RAISERROR('MAXQUANTITYERROR',13,1)
if ( (@ROLECODE = 0 and @IsAvailableToCompanyLeader = 1)
or (@ROLECODE = 1 and @IsAvailableToTeamLeader = 1)
or (@ROLECODE = 2 and @IsAvailableToTeamMember = 1)
or (@ROLECODE = 3 and @IsAvailableToHeadHousehold = 1)
or (@ROLECODE = 4 and @IsAvailableToHouseholdMember = 1)
or (@ROLECODE = 5 and @IsAvailableToIndividual = 1) )
begin
update dbo.REGISTRANTREGISTRATION
set EVENTPRICEID = @REGISTRATIONOPTIONID,
AMOUNT = @amount,
RECEIPTAMOUNT=@receiptamount,
ORGANIZATIONAMOUNT=@organizationamount,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where REGISTRANTID = @ID
/* update registration type */
update FAFREGISTRATIONTYPE set USEDQUANTITY = @USEDQUANTITY + 1 where EVENTPRICEID=@REGISTRATIONOPTIONID
update FAFREGISTRATIONTYPE set USEDQUANTITY = @USEDQUANTITYORIGINAL - 1 where EVENTPRICEID=@REGISTRATIONOPTIONIDORIGINAL
/* update registrant benefits */
delete from dbo.REGISTRANTBENEFIT
where REGISTRANTID = @ID
delete from dbo.REGISTRANTBENEFITEXTENSION
where REGISTRANTID = @ID and BENEFITTYPECODE = 0
insert into dbo.REGISTRANTBENEFIT
(ID, REGISTRANTID, BENEFITID, UNITVALUE, QUANTITY, TOTALVALUE, DETAILS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, EVENTBASECURRENCYTOTALVALUE, ORGANIZATIONTOTALVALUE)
select NEWID(), @ID, BENEFITID, UNITVALUE, QUANTITY, TOTALVALUE, DETAILS,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE, BASECURRENCYID, EVENTBASECURRENCYTOTALVALUE, ORGANIZATIONTOTALVALUE
from dbo.EVENTPRICEBENEFIT
where EVENTPRICEID = @REGISTRATIONOPTIONID
insert into dbo.REGISTRANTBENEFITEXTENSION
(ID, REGISTRANTID, BENEFITID, BENEFITOPTIONID, BENEFITPREFERENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BENEFITTYPECODE)
select NEWID(), @ID, BENEFITID, null, '', @CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE, 0
from (select distinct BENEFITID, UNITVALUE, QUANTITY, TOTALVALUE, DETAILS, BASECURRENCYID, EVENTBASECURRENCYTOTALVALUE, ORGANIZATIONTOTALVALUE
from EVENTPRICEBENEFIT
where EVENTPRICEID = @REGISTRATIONOPTIONID
) B -- use case when there are more than same benefit in an option, this table has restriction on this unique
end
else
raiserror('MISMATCHROLEANDOPTION', 13,1)
end
end try
begin catch
exec USP_RAISE_ERROR
return 1;
end catch
return 0;