USP_REVENUE_PAYMENTGIFTFEE_SAVE_2

Stored proc to update the gift fees on a payment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@GIFTFEES xml IN
@REASONCODEID uniqueidentifier IN
@COMMENTS nvarchar(255) IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            create procedure dbo.USP_REVENUE_PAYMENTGIFTFEE_SAVE_2
            (
                @ID uniqueidentifier,
                @GIFTFEES xml,
                @REASONCODEID uniqueidentifier,
                @COMMENTS nvarchar(255),
                @CHANGEAGENTID uniqueidentifier = null
            )

            as 
            set nocount on;

            declare @CURRENTDATE datetime;
            set @CURRENTDATE = getdate();

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

            declare @BASECURRENCYID uniqueidentifier
            declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier
            declare @TRANSACTIONCURRENCYID uniqueidentifier
            declare @BASEEXCHANGERATEID uniqueidentifier    

            select
                @BASECURRENCYID = BASECURRENCYID,
                @ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID,
                @TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
                @BASEEXCHANGERATEID = BASEEXCHANGERATEID
            from
                dbo.REVENUE
            where
                ID = @ID

            select @GIFTFEES = dbo.UFN_GIFTFEE_CONVERTAMOUNTSINXML
            (
                @GIFTFEES,
                @BASECURRENCYID,
                @ORGANIZATIONEXCHANGERATEID,
                @TRANSACTIONCURRENCYID,
                @BASEEXCHANGERATEID
            )

            --Rows are not allowed to be removed so update and insert are all we need

            update dbo.REVENUESPLITGIFTFEE
            set REVENUESPLITGIFTFEE.FEE = FEES.FEE,
                REVENUESPLITGIFTFEE.TRANSACTIONAMOUNT = FEES.TRANSACTIONFEE,
                REVENUESPLITGIFTFEE.ORGANIZATIONAMOUNT = FEES.ORGANIZATIONFEE,
                REVENUESPLITGIFTFEE.WAIVED = FEES.WAIVED,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from dbo.REVENUESPLITGIFTFEE
            inner join dbo.UFN_REVENUE_GETGIFTFEES_2_FROMITEMLISTXML(@GIFTFEES) FEES
                on FEES.ID = REVENUESPLITGIFTFEE.ID
            where FEES.FEE <> REVENUESPLITGIFTFEE.FEE
                or FEES.WAIVED <> REVENUESPLITGIFTFEE.WAIVED

            insert into dbo.REVENUESPLITGIFTFEE(ID, FEE, WAIVED, BASECURRENCYID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, CHANGEDBYID, ADDEDBYID, DATECHANGED,  DATEADDED)
            select ID, FEE, WAIVED, @BASECURRENCYID, ORGANIZATIONFEE, @ORGANIZATIONEXCHANGERATEID, TRANSACTIONFEE, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
            from dbo.UFN_REVENUE_GETGIFTFEES_2_FROMITEMLISTXML(@GIFTFEES) FEES
            where not exists(select top 1 ID from REVENUESPLITGIFTFEE where REVENUESPLITGIFTFEE.ID = FEES.ID)
            and (FEE > 0 or WAIVED = 1)


            update dbo.PAYMENTGIFTFEEOVERRIDE
            set
                REASONCODEID = @REASONCODEID,
                COMMENTS = @COMMENTS,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
                dbo.PAYMENTGIFTFEEOVERRIDE
            where
                ID = @ID;

            --if new then insert data

            if @@ROWCOUNT = 0
                insert into dbo.PAYMENTGIFTFEEOVERRIDE(ID, REASONCODEID, COMMENTS, ADDEDBYID, CHANGEDBYID, DATECHANGED, DATEADDED)
                values(@ID, @REASONCODEID, @COMMENTS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)