USP_BBNC_COMMITDONATIONADDMG

Adds a matching gift claim for a Blackbaud Internet Solutions donation batch.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@BATCHNUMBER nvarchar(100) IN
@MAPID int INOUT
@CONSTITUENTID uniqueidentifier IN
@SOURCEREVENUEID uniqueidentifier IN
@AMOUNT money IN
@DATE datetime IN
@SPLITS xml IN
@BBNCTRANSACTIONID int IN
@BBNCPAGENAME nvarchar(1000) IN
@BBNCPAGEID int IN
@BBNCAPPEALID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@ISOCODE nvarchar(3) IN
@PDACCOUNTSYSTEMID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITDONATIONADDMG
            (
                @ID uniqueidentifier = null output,
                @BATCHNUMBER nvarchar(100),
                @MAPID integer = null output,
                @CONSTITUENTID uniqueidentifier,
                @SOURCEREVENUEID uniqueidentifier,
                @AMOUNT money,
                @DATE datetime,
                @SPLITS xml,

                @BBNCTRANSACTIONID int,
                @BBNCPAGENAME nvarchar(1000),
                @BBNCPAGEID int,
                @BBNCAPPEALID uniqueidentifier,

                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,

        @ISOCODE nvarchar(3),
        @PDACCOUNTSYSTEMID uniqueidentifier = null,
        @CURRENTAPPUSERID uniqueidentifier = null
            )
            as
            set nocount on;

            if @CHANGEDATE is null
                set @CHANGEDATE = getdate();
            if @CHANGEAGENTID is null
                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

            declare @STARTDATE datetime;
            declare @FREQUENCYCODE tinyint;
            declare @NUMBEROFINSTALLMENTS int;
            declare @INSTALLMENTSEQUENCE int;
            declare @MGCONDITIONTYPEID uniqueidentifier;
            declare @MGCONDITIONID uniqueidentifier; 

            set @STARTDATE = @DATE;
            set @FREQUENCYCODE = 5; --Single Installment

            set @NUMBEROFINSTALLMENTS = 1;
            set @INSTALLMENTSEQUENCE = 1;

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

            begin try

      -- 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(@AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID);

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

        exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 1,@ID,@TRANSACTIONCURRENCYID,0;

                select @MGCONDITIONTYPEID = MGCONDITIONTYPECODEID from dbo.NETCOMMUNITYDEFAULTCODEMAP; 
                select @MGCONDITIONID = ID from dbo.MATCHINGGIFTCONDITION where ORGANIZATIONID = @CONSTITUENTID and MATCHINGGIFTCONDITIONTYPECODEID = @MGCONDITIONTYPEID;
                insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, DONOTPOST, POSTDATE, DONOTRECEIPT, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, DONOTACKNOWLEDGE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID)
                    values (@ID, @BATCHNUMBER, @CONSTITUENTID, @DATE, 1, null, 1, @BASEAMOUNT, 3, 0, 0, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID);

                --Add origination source

                exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;

                insert into dbo.REVENUEPAYMENTMETHOD (REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                    values (@ID, 9, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);

                insert into dbo.REVENUEBBNC(ID, NETCOMMUNITYTRANSACTIONID, NETCOMMUNITYPAGENAME, NETCOMMUNITYPAGEID, NETCOMMUNITYAPPEALID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values(@ID, @BBNCTRANSACTIONID, @BBNCPAGENAME, @BBNCPAGEID, @BBNCAPPEALID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                insert into dbo.REVENUEMATCHINGGIFT(ID, MATCHINGGIFTCONDITIONID, MGSOURCEREVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values(@ID, @MGCONDITIONID, @SOURCEREVENUEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                insert into dbo.REVENUESCHEDULE(ID, STARTDATE, FREQUENCYCODE, NUMBEROFINSTALLMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values (@ID, @STARTDATE, @FREQUENCYCODE, @NUMBEROFINSTALLMENTS, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

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

                set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
                exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;

                --JamesWill 09/08/2008 Default campaigns on the revenue record based on designations (this MUST be done AFTER splits are added to the revenue)

                    exec dbo.USP_BBNC_ADDCAMPAIGNSTOREVENUE @ID, @CHANGEAGENTID, @CHANGEDATE;

                --Generate the installment splits for the pledge

                exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @ID, @CHANGEAGENTID, @CHANGEDATE;

                --Add gift fees

                exec dbo.USP_PAYMENT_ADDGIFTFEES @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;

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

            return 0;