spTransactions_AddUpdateDonation

Parameters

Parameter Parameter Type Mode Description
@PKID int INOUT
@xmlData ntext IN
@ClientsID int IN
@UserID int IN
@ClientDonationsID int IN
@EmailID int IN
@GiftAmount numeric(30, 6) IN
@GiftPaymentMethod int IN
@GiftCurrencyType int IN
@LastName nvarchar(256) IN
@TransactionGUID uniqueidentifier IN
@ProcessedDate datetime IN
@BackOfficeUserID int IN
@DateAdded datetime IN
@Status int IN
@QueueForDownload bit IN
@EmailJobRecipientID int IN
@OrderID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.spTransactions_AddUpdateDonation
(
                            @PKID            int output,
                            @xmlData         ntext,
                            @ClientsID         int,
                            @UserID         int
                            @ClientDonationsID     int,
                            @EmailID        int,
                            @GiftAmount        numeric(30,6),
                            @GiftPaymentMethod    int,
                            @GiftCurrencyType    int,
                            @LastName        nvarchar(256),
                            @TransactionGUID     uniqueidentifier,
                            @ProcessedDate         datetime,
                            @BackOfficeUserID    int,
                            @DateAdded            datetime = getutcdate,
                            @Status                int
                            @QueueForDownload     bit,
                            @EmailJobRecipientID int,
                            @OrderID uniqueidentifier = null
                        )
as
begin
        if datalength(@xmlData)<8 
                        begin
                            RAISERROR ('Unable to insert transaction - DonationTransactions.XMLObjectData cannot be a zero-length string and must be well formed XML',16,1)
                            return 0
                        end

                        if @UserID=0 set @UserID=NULL
                        if @ClientDonationsID=0 set @ClientDonationsID=NULL
                        if @EmailJobRecipientID <= 0 set @EmailJobRecipientID = NULL

                        begin transaction

                        if (@PKID<=0)

                        begin
                            insert into dbo.DonationTransactions
                            (
                            ClientsID,
                            ClientDonationsID,
                            AddedByUserID,
                            XMLObjectData,
                            EmailID,
                            GiftAmount,
                            GiftPaymentMethod,
                            GiftCurrencyType,
                            LastName,
                            TransactionGUID,
                            processed_date,
                            DateAdded,
                            [Status],
                            [EmailJobRecipientID]
                            ) 
                            values
                            (
                            @ClientsID,
                            @ClientDonationsID,
                            @UserID,
                            @xmlData,
                            @EmailID,
                            @GiftAmount,
                            @GiftPaymentMethod,
                            @GiftCurrencyType,
                            @LastName,
                            @TransactionGUID,
                            @ProcessedDate,
                            @DateAdded
                            @Status,
                            @EmailJobRecipientID
                            )

                            SELECT @PKID = SCOPE_IDENTITY()
                            --Update pKid in XML

                            update dbo.DONATIONTRANSACTIONS set XMLOBJECTDATA = replace(cast(@xmlData AS nvarchar(max)),'<PKID>0</PKID>', '<PKID>'+cast(@PKID as nvarchar(15))+'</PKID>') where DONATIONTRANSACTIONSID=@PKID;

                        end 
                        else 
                        begin
                            UPDATE dbo.DonationTransactions SET
                                ClientsID         =@ClientsID,
                                AddedByUserID         =@UserID,
                                XMLObjectData         =@xmlData,
                                IsDeleted        =0,
                                EmailID            = @EmailID,
                                GiftAmount        = @GiftAmount,
                                GiftPaymentMethod    = @GiftPaymentMethod,
                                GiftCurrencyType    = @GiftCurrencyType,
                                LastName        = @LastName,
                                TransactionGUID     =@TransactionGUID,
                                processed_date         =@ProcessedDate,
                                [Status]            =@Status,
                                [EmailJobRecipientID] = @EmailJobRecipientID,
                                DateAdded            =@DateAdded --CR303623-062708

                            WHERE DonationTransactionsID=@PKID
                        end

                    if @QueueForDownload = 1 and @Status = 1
                    begin

                            --This will save the transaction into the BBNCTransactions Table

                        declare @BBNCTransactionsPKID int
                        set @BBNCTransactionsPKID = 0

                        declare @TransactionType nvarchar(100)
                        set @TransactionType = '{5705B543-4033-4a3a-BBCD-A731403EE1E6}'

                        exec spTransactions_InsertTransaction @BBNCTransactionsPKID, @PKID, @TransactionType, @xmlData, @UserID, @BackOfficeUserID
                    -- this check is a workaround for the new payment design

                    -- OrderID will be null for the earlier framework

                    -- this check will be removed once the new design is implemented elsewhere

                    if @OrderID is null
                    begin        

                        delete dbo.CMSTransactionState
                        where TransactionId = @TransactionGUID
                    end
                    else
                    begin
                        update dbo.DonationTransactions
                        set OrderID = @OrderID
                        where DonationTransactionsID = @PKID
                    END


                        if @EmailJobRecipientID IS NOT NULL and @EmailID IS NOT NULL and @EmailID > 0
                  begin

                      insert into EMAILJOB_RECIPIENT_DONATED
                    (
                                EMAILJOBRECIPIENTID,
                          EMAILID,
                          DONATIONDATE
                      )
                      values
                      (
                          @EmailJobRecipientID,
                          @EmailID,
                          getutcdate()
                      );
                  end

                    end        
                end

                commit transaction