USP_BBNC_COMMITEVENTREGISTRATIONPAYMENTADD

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

Parameters

Parameter Parameter Type Mode Description
@REGISTRANTID uniqueidentifier IN
@APPLIEDAMOUNT money IN
@TRANSACTIONID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@DATE datetime IN
@PAYMENTMETHODCODE tinyint IN
@BATCHNUMBER nvarchar(100) IN
@POSTDATE datetime IN
@POSTSTATUSCODE tinyint IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@REFERENCEDATE UDT_FUZZYDATE IN
@REFERENCENUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(255) IN
@CREDITCARDNUMBER nvarchar(20) IN
@CREDITTYPECODEID uniqueidentifier IN
@AUTHORIZATIONCODE nvarchar(20) IN
@EXPIRESON UDT_FUZZYDATE IN
@ISSUER nvarchar(100) IN
@NUMBEROFUNITS decimal(20, 3) IN
@SYMBOL nvarchar(25) IN
@MEDIANPRICE decimal(19, 4) IN
@SALEDATE datetime IN
@SALEAMOUNT money IN
@BROKERFEE money IN
@SALEPOSTSTATUSCODE tinyint IN
@SALEPOSTDATE datetime IN
@PROPERTYSUBTYPECODEID uniqueidentifier IN
@GIFTINKINDSUBTYPECODEID uniqueidentifier IN
@ORIGINPAGENAME nvarchar(1000) IN
@ORIGINPAGEID int IN
@CHANGEAGENTID uniqueidentifier INOUT
@CREATIONDATE datetime INOUT
@REVENUEID uniqueidentifier INOUT
@EMAILID int IN
@EMAILNAME nvarchar(255) IN
@EMAILSUBJECT nvarchar(4000) IN
@MARKRECEIPTED bit IN
@FINDERNUMBER bigint IN
@RECEIPTNUMBER int IN
@ISOCODE nvarchar(3) IN
@PDACCOUNTSYSTEMID uniqueidentifier IN
@BBNCTRANSACTIONID int IN
@CURRENTAPPUSERID uniqueidentifier IN
@VENDORID nvarchar(50) IN
@PAYMENTAPPEALID uniqueidentifier IN
@CAMPAIGNXML xml IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITEVENTREGISTRATIONPAYMENTADD
            (
                @REGISTRANTID uniqueidentifier,
                @APPLIEDAMOUNT money,
                @TRANSACTIONID uniqueidentifier,
                @CONSTITUENTID uniqueidentifier, 
                @DATE datetime
                @PAYMENTMETHODCODE tinyint
                @BATCHNUMBER nvarchar(100), 
                @POSTDATE datetime
                @POSTSTATUSCODE tinyint,
--            @DONOTRECEIPT bit,

                @CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
                @CHECKNUMBER nvarchar(20) = '',
                @CONSTITUENTACCOUNTID uniqueidentifier = null,
                @REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
                @REFERENCENUMBER nvarchar(20) = '',
                @CARDHOLDERNAME nvarchar(255) = '',
                @CREDITCARDNUMBER nvarchar(20) = '',
                @CREDITTYPECODEID uniqueidentifier = null,
                @AUTHORIZATIONCODE nvarchar(20) = '',
                @EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
                @ISSUER nvarchar(100) = '',
                @NUMBEROFUNITS decimal(20,3) = 0,
                @SYMBOL nvarchar(25) = '',
                @MEDIANPRICE decimal(19,4) = 0,
                @SALEDATE datetime = null,
                @SALEAMOUNT money = null,
                @BROKERFEE money = null,
                @SALEPOSTSTATUSCODE tinyint = null,
                @SALEPOSTDATE datetime = null,
                @PROPERTYSUBTYPECODEID uniqueidentifier = null,
                @GIFTINKINDSUBTYPECODEID uniqueidentifier = null,
                @ORIGINPAGENAME as nvarchar(1000) = '',
                @ORIGINPAGEID as int = 0,
                @CHANGEAGENTID uniqueidentifier output,
                @CREATIONDATE datetime output,
                @REVENUEID uniqueidentifier output,
                @EMAILID int = 0,
                @EMAILNAME nvarchar(255) = '',
                @EMAILSUBJECT nvarchar(4000) = '',
                @MARKRECEIPTED bit = 0,
                @FINDERNUMBER bigint = 0,
                @RECEIPTNUMBER int = 0,
                @ISOCODE nvarchar(3) = '',
                @PDACCOUNTSYSTEMID uniqueidentifier = null,
                @BBNCTRANSACTIONID int = null,
        @CURRENTAPPUSERID uniqueidentifier = null,
        @VENDORID NVARCHAR(50) = '',
        @PAYMENTAPPEALID  uniqueidentifier =null,
        @CAMPAIGNXML xml =null
            )
            as 
                set nocount on;

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

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

                declare @RECEIPTAMOUNT money;
                declare @REVENUEPAYMENTMETHODID uniqueidentifier;

                begin try
                    set @REVENUEID = newid();
                    declare @COST money;

        if (@PDACCOUNTSYSTEMID is null)
          set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)

        if (@PDACCOUNTSYSTEMID is null)
          set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'

         -- Multicurrency Info grab

         declare @TRANSACTIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETCURRENCYFROMISO(@ISOCODE);
         declare @BASECURRENCYID uniqueidentifier;
         declare @BASEEXCHANGERATEID uniqueidentifier;
         declare @BASEAMOUNT money;
         declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
         declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
         declare @ORGANIZATIONAMOUNT money;

         --ID where clause is using default, should be using PDACCOUNTSYSTEMID that is selected in the batch.

         select @BASECURRENCYID = CURRENCYSET.BASECURRENCYID from dbo.PDACCOUNTSYSTEM
         inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
         where PDACCOUNTSYSTEM.ID =@PDACCOUNTSYSTEMID;

         set @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@BASECURRENCYID,@DATE,1,null);   

          select
                        @BASEAMOUNT = BASEAMOUNT,
                        @ORGANIZATIONAMOUNT = ORGANIZATIONAMOUNT,
                        @ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
                    from dbo.UFN_CURRENCY_GETCURRENCYVALUES(@APPLIEDAMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID);

         declare @MULTICURRENCYENABLED bit;
         set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERT(@APPLIEDAMOUNT,@BASEEXCHANGERATEID);
         set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency'); 
         if @MULTICURRENCYENABLED = 0
         begin
          set @BASEAMOUNT = @APPLIEDAMOUNT;
         end
         if @TRANSACTIONCURRENCYID = @BASECURRENCYID
         begin
          set @BASEAMOUNT = @APPLIEDAMOUNT;
         end


          -- Ensure that we can add a payment of this transaction currency to the account system.

         if not exists(select 1 from dbo.CURRENCYSETTRANSACTIONCURRENCY
                       inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSETTRANSACTIONCURRENCY.CURRENCYSETID
                       where PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID and CURRENCYSETTRANSACTIONCURRENCY.CURRENCYID = @TRANSACTIONCURRENCYID)
         begin
            raiserror('Invalid transaction currency, current account system does not contain this transaction currency',13,1);
         end  

        declare @BASETOTRANSACTIONEXCHANGERATE uniqueidentifier = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@BASECURRENCYID,@DATE,1,null);

        declare @BENEFITTABLE table(
            REVENUEID uniqueidentifier,
            BENEFITID uniqueidentifier,
            QUANTITY int,
            UNITVALUE money,
            DETAILS nvarchar(255),
            DATEADDED datetime,
            DATECHANGED datetime,
            ADDEDBYID uniqueidentifier,
            CHANGEDBYID uniqueidentifier,
            BASECURRENCYID uniqueidentifier,
            TRANSACTIONTOTALVALUE money,
            ORGANIZATIONTOTALVALUE money,
            TRANSACTIONCURRENCYID uniqueidentifier,
            BASEEXCHANGERATEID uniqueidentifier,
            ORGANIZATIONEXCHANGERATEID uniqueidentifier
        );
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

              /*
              Bug # 1156590 (Benefits missing on revenue records for BBIS Event Registrations where a guest receives a benefit but the host/payer does not)

              To cater this scenario, as a fix now we fetch registrantID corresponding to host/payer ID and use the same for benefits calculation. Reason being, 
              if host/payer is not an attendee in that case its registrantID doesn't exist in REGISTRANTREGISTRATIONMAP table (used in inner join while inserting data in @BENEFITTABLE table) 
              which causes this issue. 
              */

              declare @REGISTRATIONSXML XML

          declare @REGISTRANTIDS table
          (
            REGISTRANTID uniqueidentifier
          );

              declare @REGISTRANTREGISTRATIONTABLE table
              (
              REGISTRATIONID uniqueidentifier
              );

              select    @REGISTRATIONSXML = REGISTRATIONS 
              from    BATCHBBNCEVENTREGISTRATION 
              where    BBNCTRANID = @BBNCTRANSACTIONID

              insert into @REGISTRANTREGISTRATIONTABLE
              select RegistrationsTable.RegistrationID.value('(REGISTRATIONID)[1]','uniqueidentifier') as REGISTRATIONID 
              from    @REGISTRATIONSXML.nodes('/REGISTRATIONS/ITEM') RegistrationsTable(RegistrationID)

          insert into @REGISTRANTIDS
              select RRM.REGISTRANTID from REGISTRANTREGISTRATION RR
                    inner join REGISTRANTREGISTRATIONMAP RRM on RRM.REGISTRANTREGISTRATIONID = RR.ID
                    inner join @REGISTRANTREGISTRATIONTABLE RRT on RRT.REGISTRATIONID = RRM.REGISTRANTREGISTRATIONID
                    where RR.REGISTRANTID = @REGISTRANTID;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 -- select only distinct values, sometimes if benefits of guest and host are same, this returns duplicate value.

     insert into @BENEFITTABLE
          select distinct
                        @REVENUEID,
                        EVENTPRICEBENEFIT.BENEFITID,
                        EVENTPRICEBENEFIT.QUANTITY * REGISTRANTREGISTRATION.QUANTITY,
                        EVENTPRICEBENEFIT.UNITVALUE,
                        EVENTPRICEBENEFIT.DETAILS,
                        @CREATIONDATE, @CREATIONDATE, @CHANGEAGENTID, @CHANGEAGENTID,
                        EVENTPRICEBENEFIT.BASECURRENCYID,
                        case when @BASETOTRANSACTIONEXCHANGERATE is null then EVENTPRICEBENEFIT.QUANTITY * EVENTPRICEBENEFIT.UNITVALUE * REGISTRANTREGISTRATION.QUANTITY
                          else dbo.UFN_CURRENCY_CONVERT(EVENTPRICEBENEFIT.QUANTITY * EVENTPRICEBENEFIT.UNITVALUE * REGISTRANTREGISTRATION.QUANTITY, @BASETOTRANSACTIONEXCHANGERATE) end,
                        EVENTPRICEBENEFIT.ORGANIZATIONTOTALVALUE,
                        @TRANSACTIONCURRENCYID,
                        EVENTPRICEBENEFIT.BASEEXCHANGERATEID,
                        EVENTPRICEBENEFIT.ORGANIZATIONEXCHANGERATEID
                    from dbo.REGISTRANT 
          inner join @REGISTRANTIDS RID on RID.REGISTRANTID = REGISTRANT.ID
          inner join dbo.REGISTRANTREGISTRATIONMAP on RID.REGISTRANTID = REGISTRANTREGISTRATIONMAP.REGISTRANTID
                    inner join dbo.REGISTRANTREGISTRATION on REGISTRANTREGISTRATIONMAP.REGISTRANTREGISTRATIONID = REGISTRANTREGISTRATION.ID
                    inner join dbo.EVENTPRICE on REGISTRANTREGISTRATION.EVENTPRICEID = EVENTPRICE.ID
                    inner join dbo.EVENTPRICEBENEFIT on EVENTPRICE.ID = EVENTPRICEBENEFIT.EVENTPRICEID
                    where BENEFITSWAIVED = 0 and @BASECURRENCYID = EVENTPRICEBENEFIT.BASECURRENCYID;

                    --Calculate the receipt amount for all event registrations the registrant purchased

                    declare @AMOUNTMINUSCOST money;

                    select @AMOUNTMINUSCOST = sum((EVENTPRICE.AMOUNT - EVENTPRICE.COST) * REGISTRANTREGISTRATION.QUANTITY) 
                    from dbo.REGISTRANTREGISTRATION
                    inner join dbo.EVENTPRICE on REGISTRANTREGISTRATION.EVENTPRICEID = EVENTPRICE.ID
                    where REGISTRANTREGISTRATION.REGISTRANTID = @REGISTRANTID

                    set @RECEIPTAMOUNT = @AMOUNTMINUSCOST - coalesce((select sum(TRANSACTIONTOTALVALUE) from @BENEFITTABLE),0)

          --Update receipt amount to 0 if set to negative.

          if(@RECEIPTAMOUNT < 0
            set @RECEIPTAMOUNT=0

                    if @BASEEXCHANGERATEID is not null and @RECEIPTAMOUNT > 0
          begin
            set @RECEIPTAMOUNT = dbo.UFN_CURRENCY_CONVERT(@RECEIPTAMOUNT,@BASEEXCHANGERATEID)
          end

                    if @RECEIPTAMOUNT > @APPLIEDAMOUNT 
                        set @RECEIPTAMOUNT = @APPLIEDAMOUNT;

                    declare @DONOTPOST bit;
                    set @DONOTPOST = case @POSTSTATUSCODE when 2 then 1 else 0 end;

                    declare @CHANNELCODEID uniqueidentifier;
                    select top 1 
                        @CHANNELCODEID = CHANNELCODEID
                    from dbo.NETCOMMUNITYDEFAULTCODEMAP;

                  declare @CONSTITUENTIDFROMFINDERNUMBER uniqueidentifier;
                  declare @MAILINGID uniqueidentifier;
                  declare @SOURCECODE nvarchar(50);
                  declare @APPEALID uniqueidentifier;

                  exec dbo.[USP_BBNC_BATCH_FINDERNUMBERLOOKUP] @FINDERNUMBER, @CONSTITUENTIDFROMFINDERNUMBER output, @MAILINGID output, @SOURCECODE output, @APPEALID output;
                  if @CONSTITUENTIDFROMFINDERNUMBER is not null 
                    if @CONSTITUENTID <> @CONSTITUENTIDFROMFINDERNUMBER
                      set @FINDERNUMBER = 0;

                    set @APPEALID =@PAYMENTAPPEALID

                    insert into dbo.REVENUE (ID, CONSTITUENTID, DATE, TRANSACTIONTYPECODE, BATCHNUMBER, POSTDATE, DONOTPOST, DONOTRECEIPT, AMOUNT, RECEIPTAMOUNT, GIVENANONYMOUSLY, APPEALID, SOURCECODE, MAILINGID, CHANNELCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID,FINDERNUMBER)
                        select
                            @REVENUEID,
                            @CONSTITUENTID
                            @DATE
                            0, --Payment(TRANSACTIONTYPECODE)

                            @BATCHNUMBER
                            @POSTDATE
                            @DONOTPOST,
                            0, --@DONOTRECEIPT, 

                            @BASEAMOUNT,                            
                            @RECEIPTAMOUNT
                            0,
                            @APPEALID,
                            @SOURCECODE,
                            @MAILINGID,
                            @CHANNELCODEID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CREATIONDATE,
                            @CREATIONDATE,
              @BASECURRENCYID,
              @ORGANIZATIONAMOUNT,
              @APPLIEDAMOUNT,
              @TRANSACTIONCURRENCYID,
              @ORGANIZATIONEXCHANGERATEID,
              @BASEEXCHANGERATEID,
              @FINDERNUMBER

          --Update financial transaction's PDA account. its hardcoded in view which is causing problems in multi-currency cases

          if(@PDACCOUNTSYSTEMID is not null and  @PDACCOUNTSYSTEMID <> '00000000-0000-0000-0000-000000000000' and @PDACCOUNTSYSTEMID <> '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
          begin
          update dbo.FINANCIALTRANSACTION set PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID where id = @REVENUEID;
          end 

                    --Add origination source

                    exec dbo.USP_REVENUE_ADDORIGIN @REVENUEID, @CONSTITUENTID, @CHANGEAGENTID, @CREATIONDATE;

                   If(@PAYMENTMETHODCODE =10)
                    Begin
                    --Add pledge original amount

                    exec dbo.USP_PLEDGE_ADDORIGINALAMOUNT @REVENUEID, @APPLIEDAMOUNT, @CHANGEAGENTID, @CREATIONDATE;
                    End

                    --Default benefits from the registration option

                    insert into dbo.REVENUEBENEFIT
                    (
                        REVENUEID,
                        BENEFITID,
                        QUANTITY,
                        UNITVALUE,
                        DETAILS,
                        DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID,
                        BASECURRENCYID,
                        TRANSACTIONTOTALVALUE,
                        ORGANIZATIONTOTALVALUE,
                        TRANSACTIONCURRENCYID,
                        BASEEXCHANGERATEID,
                        ORGANIZATIONEXCHANGERATEID
                    )
                    select
                        @REVENUEID,
                        BENEFITID,
                        QUANTITY,
                        UNITVALUE,
                        DETAILS,
                        @CREATIONDATE, @CREATIONDATE, @CHANGEAGENTID, @CHANGEAGENTID,
                        BASECURRENCYID,
                        TRANSACTIONTOTALVALUE,
                        ORGANIZATIONTOTALVALUE,
                        @TRANSACTIONCURRENCYID,
                        BASEEXCHANGERATEID,
                        ORGANIZATIONEXCHANGERATEID
                    from @BENEFITTABLE



                    set @REVENUEPAYMENTMETHODID = newid();
                    insert into dbo.REVENUEPAYMENTMETHOD (ID,REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                        values (@REVENUEPAYMENTMETHODID, @REVENUEID, @PAYMENTMETHODCODE, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CREATIONDATE,@CREATIONDATE);

                    if @POSTSTATUSCODE = 0
                        insert into dbo.REVENUEPOSTED(ID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            values(@REVENUEID,@CHANGEAGENTID,@CHANGEAGENTID,@CREATIONDATE,@CREATIONDATE);

                    insert into dbo.REVENUEBBNC
                    (
                        [ID],
                        [NETCOMMUNITYPAGENAME],
                        [NETCOMMUNITYPAGEID],
                        [EMAILID],
                        [EMAILNAME],
                        [EMAILSUBJECT],
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    values
                    (
                        @REVENUEID,
                        @ORIGINPAGENAME,
                        @ORIGINPAGEID,
                        @EMAILID,
                        @EMAILNAME,
                        @EMAILSUBJECT,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CREATIONDATE,
                        @CREATIONDATE
                    );


                --Change for REVENUE Pledges

                If(@PAYMENTMETHODCODE =10)
                Begin
                declare @REVENUETRIBUTEID uniqueidentifier;
                insert into dbo.REVENUESCHEDULE(ID, STARTDATE, FREQUENCYCODE, NUMBEROFINSTALLMENTS, PLEDGESUBTYPEID, SENDPLEDGEREMINDER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values(@REVENUEID, @DATE, 5, 1, null, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);

                insert into dbo.INSTALLMENT(ID, REVENUEID, AMOUNT, DATE, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,BASEEXCHANGERATEID,BASECURRENCYID)
                                        values(newid(), @REVENUEID, @BASEAMOUNT, @DATE, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@APPLIEDAMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID,@BASECURRENCYID);

                                    --Generate the installment splits for the pledge

                                    exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;

                                    --if not @COMMENTS is null and len(@COMMENTS) > 0 

                                    --    insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)

                                    --        values(newid(), @DATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @REVENUEID, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);


                                    --add percent and unit value benefits 

                                    exec dbo.USP_REVENUEBENEFITS_ADDBENEFITS @REVENUEID, @RECEIPTAMOUNT output    

                                    --JamesWill 05/22/2008 CR301162-052008 Pledges do not have receipt amounts

                                    set @RECEIPTAMOUNT = 0;

                                    --if not @TRIBUTEID is null

                                    --begin

                                    --    set @REVENUETRIBUTEID = newid();


                                    --    insert into dbo.REVENUETRIBUTE(ID, REVENUEID, TRIBUTEID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID)

                                    --        values(@REVENUETRIBUTEID, @REVENUEID, @TRIBUTEID, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID);


                                    --    insert into dbo.REVENUETRIBUTELETTER(ID, REVENUETRIBUTEID, CONSTITUENTID, TRIBUTELETTERCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)

                                    --        select

                                    --            newid(),

                                    --            @REVENUETRIBUTEID,

                                    --            TRIBUTEACKNOWLEDGEE.CONSTITUENTID,

                                    --            TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID,

                                    --            @CHANGEAGENTID,

                                    --            @CHANGEAGENTID,

                                    --            @CREATIONDATE,

                                    --            @CREATIONDATE

                                    --        from dbo.TRIBUTEACKNOWLEDGEE 

                                    --        where TRIBUTEACKNOWLEDGEE.TRIBUTEID = @TRIBUTEID

                                    --        and TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID is not null;


                                    --end    

                End    


                    --End pledge

                    else
                    begin
                    declare @CREDITCARDPARTIALNUMBER nvarchar(4)

                    if len(@CREDITCARDNUMBER)>4 
                        set @CREDITCARDPARTIALNUMBER = right(@CREDITCARDNUMBER,4)
                    else
                        set @CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER

                    --Passing in BBNC transaction ID for the BBPS transaction ID since BBNC passes up its own transaction ID to BBPS and so they are the same.

                    --The BBNC table is queried directly since TRANSACTIONGUID isn't sent down from BBNC.  This probably should be revisited later so it's 

                    --consistent with the other BBNC fields.

                    declare @BBNCTRANSACTIONGUID uniqueidentifier;
                    select @BBNCTRANSACTIONGUID = TransactionGUID
                    from dbo.EventTransactions
                    where EventTransactionsID = @BBNCTRANSACTIONID;

                    exec USP_REVENUE_ADDPAYMENTDETAILS @REVENUEPAYMENTMETHODID, @PAYMENTMETHODCODE, @CHECKDATE, @CHECKNUMBER, @CONSTITUENTACCOUNTID, @REFERENCEDATE, @REFERENCENUMBER, @CARDHOLDERNAME, @CREDITCARDPARTIALNUMBER, @CREDITTYPECODEID, @AUTHORIZATIONCODE, @EXPIRESON, @ISSUER, @NUMBEROFUNITS, @SYMBOL, @MEDIANPRICE, @SALEDATE, @SALEAMOUNT, @BROKERFEE, @SALEPOSTSTATUSCODE, @SALEPOSTDATE, @PROPERTYSUBTYPECODEID, @GIFTINKINDSUBTYPECODEID, @CHANGEAGENTID, @CREATIONDATE, 1, @TRANSACTIONID=@BBNCTRANSACTIONGUID, @VENDORID =@VENDORID;

                exec dbo.USP_EVENT_ADDPAYMENT_1_1 
                    @REVENUEID = @REVENUEID
                    @APPLICATIONID = @REGISTRANTID
                    @APPLIEDAMOUNT = @APPLIEDAMOUNT,
                    @CREATIONDATE = @CREATIONDATE,
                    @CHANGEAGENTID = @CHANGEAGENTID,
                    @EVENTCAMPAIGNS =@CAMPAIGNXML;

               End                 
          --BBIS Event registration batch does not commit payments to pledges or recurring gifts. So don't need this step.

          --If any marketing information is null, try to default based on applications

                    if @SOURCECODE is null or @SOURCECODE = '' or @MAILINGID is null or @APPEALID is null
                    exec dbo.USP_REVENUE_DEFAULTMARKETINGINFORMATION @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;

            exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE
                      @ID = @REVENUEID,
                      @PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
                      @CHANGEDATE = @CREATIONDATE,
                      @CHANGEAGENTID = @CHANGEAGENTID    

                    exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;

          exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;

                    --Add gift fees 

                    exec dbo.USP_PAYMENT_ADDGIFTFEES @REVENUEID, @CONSTITUENTID, @CHANGEAGENTID, @CREATIONDATE;

          -- Add Original Payment

          exec dbo.USP_PAYMENT_ADDORIGINALAMOUNT     @REVENUEID, @CHANGEAGENTID, @CREATIONDATE;

                    if @MARKRECEIPTED = 1
                    begin
                        insert into dbo.REVENUERECEIPT(ID, REVENUEID, RECEIPTNUMBER, RECEIPTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @REVENUEID, @RECEIPTNUMBER, @DATE, @CHANGEAGENTID, @CHANGEAGENTID, @CREATIONDATE, @CREATIONDATE);

                    end

                    exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @REVENUEID
                                                                     null
                                                                      @PAYMENTMETHODCODE
                                                                      @CREDITTYPECODEID
                                                                      @CHANGEAGENTID
                                                                      @DATE
                                                                      0, --revenue transaction type code for payment is 0

                                                                      null
                               null;  
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                end catch

                return 0;