USP_BBNC_COMMITEVENTREGISTRATIONREGISTRANTREGISTRATION

Adds an event registration for a registrant from a Blackbaud Internet Solutions event registration transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@REGISTRANTID uniqueidentifier IN
@EVENTPRICEID uniqueidentifier IN
@AMOUNT money IN
@RECEIPTAMOUNT money IN
@QUANTITY int IN
@DATEPURCHASED datetime IN
@ORIGINPAGENAME nvarchar(1000) IN
@ORIGINPAGEID int IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@ISOCODE nvarchar(3) IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITEVENTREGISTRATIONREGISTRANTREGISTRATION
            (
                @ID uniqueidentifier = null output,
                @REGISTRANTID uniqueidentifier = null,
                @EVENTPRICEID uniqueidentifier = null,
                @AMOUNT money = null,
                @RECEIPTAMOUNT money = null,
                @QUANTITY int = null,
                @DATEPURCHASED datetime = null,
                @ORIGINPAGENAME nvarchar(1000) = null,
                @ORIGINPAGEID int = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,
                @ISOCODE nvarchar(3) = null
            )
            as
                set nocount on;

                if @ID is null
                    set @ID = newid();

                if @CHANGEAGENTID is null            
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                if @CHANGEDATE is null
                    set @CHANGEDATE = getdate();

        declare @TRANSACTIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETCURRENCYFROMISO(@ISOCODE);
        declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

        declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@ORGANIZATIONCURRENCYID,@CHANGEDATE,1,null);   
        declare @ORGANIZATIONAMOUNT money = dbo.UFN_CURRENCY_CONVERT(@AMOUNT,@ORGANIZATIONEXCHANGERATEID);

                begin try
                    --HACK: BBNC does not provide a receipt amount, use the current value for the selected event price

                    if @RECEIPTAMOUNT is null
                        select
                            @RECEIPTAMOUNT =
                            case
                                when (@QUANTITY * [EVENTPRICE].[RECEIPTAMOUNT]) > @AMOUNT
                                    then @AMOUNT
                                else (@QUANTITY * [EVENTPRICE].[RECEIPTAMOUNT])
                            end
                        from
                            dbo.[EVENTPRICE]
                        where
                            [EVENTPRICE].[ID] = @EVENTPRICEID;

                    insert into dbo.[REGISTRANTREGISTRATION]
                    (
                        [ID],
                        [REGISTRANTID],
                        [EVENTPRICEID],
                        [AMOUNT],
                        [RECEIPTAMOUNT],
                        [QUANTITY],
                        [DATEPURCHASED],
                        [NETCOMMUNITYPAGENAME],
                        [NETCOMMUNITYPAGEID],
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED],
                        [ORGANIZATIONAMOUNT],
                        [ORGANIZATIONEXCHANGERATEID]
                    )
                    values
                    (
                        @ID,
                        @REGISTRANTID,
                        @EVENTPRICEID,
                        @AMOUNT,
                        @RECEIPTAMOUNT,
                        @QUANTITY,
                        @DATEPURCHASED,
                        @ORIGINPAGENAME,
                        @ORIGINPAGEID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE,
                        @ORGANIZATIONAMOUNT,
                        @ORGANIZATIONEXCHANGERATEID
                    )

                    --Add the default designation for the added registrations,

                    declare @DEFAULTDESIGNATIONID uniqueidentifier = 
                        (select 
                            DESIGNATIONID
                        from dbo.REGISTRANT
                            join dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
                            join dbo.EVENTDESIGNATION on EVENTDESIGNATION.EVENTID = EVENT.ID
                        where 
                            REGISTRANT.ID = @REGISTRANTID
                            and EVENT.DESIGNATIONSONFEES = 1
                            and EVENTDESIGNATION.[DEFAULT] = 1)

                    declare @RECIEPTAMOUNT money = 
                        coalesce((select sum(REGISTRANTREGISTRATION.RECEIPTAMOUNT) 
                                    from dbo.REGISTRANTREGISTRATION 
                                    where REGISTRANTREGISTRATION.REGISTRANTID = @REGISTRANTID),0);


                    --default designation and receipt amount on main registrant; update if necessary

                    if @DEFAULTDESIGNATIONID is not null 
                    begin

                        if not exists(select * from dbo.REGISTRANTDESIGNATION where REGISTRANTID = @REGISTRANTID)
       insert into dbo.REGISTRANTDESIGNATION(REGISTRANTID,DESIGNATIONID,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            values(@REGISTRANTID, @DEFAULTDESIGNATIONID, @RECIEPTAMOUNT,
                                    @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE); 

                        -- if there is single registrant designation, update it

                        if 1 = (select count(*) from dbo.REGISTRANTDESIGNATION where REGISTRANTID = @REGISTRANTID)
                            update dbo.REGISTRANTDESIGNATION
                            set 
                                AMOUNT = @RECIEPTAMOUNT,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CHANGEDATE
                            where 
                                REGISTRANTID = @REGISTRANTID
                                and DESIGNATIONID = @DEFAULTDESIGNATIONID
                    end

                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;