USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL_2

The save procedure used by the edit dataform template "Revenue Detail Adjust Form 2".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@AMOUNT money IN Amount
@RECEIPTAMOUNT money IN Receipt amount
@SPLITS xml IN Designations
@SOURCECODE nvarchar(50) IN Source code
@APPEALID uniqueidentifier IN Appeal
@BENEFITS xml IN Benefits
@BENEFITSWAIVED bit IN Benefits waived
@MAILINGID uniqueidentifier IN Mailing
@CHANNELCODEID uniqueidentifier IN Channel
@DONOTACKNOWLEDGE bit IN Do not acknowledge
@ADJUSTMENTDATE datetime IN Adjustment date
@ADJUSTMENTPOSTDATE datetime IN Adjustment post date
@ADJUSTMENTREASON nvarchar(300) IN Adjustment reason
@CATEGORYCODEID uniqueidentifier IN Revenue category

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL_2
                    (
                        @ID uniqueidentifier,
                        @CURRENTAPPUSERID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier,
                        @AMOUNT money,                    
                        @RECEIPTAMOUNT money,
                        @SPLITS xml,
                        @SOURCECODE nvarchar(50),
                        @APPEALID uniqueidentifier,
                        @BENEFITS xml,
                        @BENEFITSWAIVED bit,
                        @MAILINGID uniqueidentifier,
                        @CHANNELCODEID uniqueidentifier,
                        @DONOTACKNOWLEDGE bit,
                        @ADJUSTMENTDATE datetime,
                        @ADJUSTMENTPOSTDATE datetime,
                        @ADJUSTMENTREASON nvarchar(300),
                        @CATEGORYCODEID uniqueidentifier
                    )
                    as
                    set nocount on;

                    declare @CHANGEDATE datetime;

                    declare @PAYMENTMETHODCODE tinyint;
                    declare @ADJUSTMENTID uniqueidentifier;
                    declare @TRANSACTIONID uniqueidentifier;
                    declare @REVENUEID uniqueidentifier;
                    declare @STOCKDETAILADJUSTMENTID uniqueidentifier;
                    declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;

                    declare @ADJUST bit;
                    declare @CLEARGLDISTRIBUTION bit;

                    declare @PROPERTYDETAILCOUNT int;
                    declare @STOCKDETAILCOUNT int;

                    set @ADJUST = 0
                    set @PROPERTYDETAILCOUNT = 0;
                    set @STOCKDETAILCOUNT = 0;

                    begin try

                        set @CHANGEDATE = getdate();

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

                        declare @TYPECODE tinyint, @REVENUEPAYMENTMETHODID uniqueidentifier
                        select top 1
                            @TYPECODE = REVENUE.TRANSACTIONTYPECODE,
                            @REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID,
                            @PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
                        from dbo.REVENUE
                        inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                        where REVENUE.ID = @ID;

                        if @TYPECODE = 0
                        begin
                            -- do not allow the gift amount to be adjusted less than the applied tribute amount

                            declare @TRIBUTEAMOUNT money;
                            select @TRIBUTEAMOUNT = sum(AMOUNT) from dbo.REVENUETRIBUTE where REVENUEID = @ID;

                            if (@TRIBUTEAMOUNT is not null) and (@AMOUNT < @TRIBUTEAMOUNT)
                            begin
                                raiserror('The gift amount cannot be less than the sum of the tribute amounts applied to this gift.', 13, 1)
                            end
                        end

                        declare @OLDCATEGORYCODEID uniqueidentifier
                        select top 1 @OLDCATEGORYCODEID = REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
                        from dbo.REVENUECATEGORY
                        inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID
                        where REVENUESPLIT.REVENUEID = @ID

                        -- check to see if amount or revenue category has changed

                        if (
                            select count(REVENUE.ID) from dbo.REVENUE 
                            where REVENUE.ID = @ID and AMOUNT = @AMOUNT
                        ) = 0 or not ((@CATEGORYCODEID is null and @OLDCATEGORYCODEID is null) and @CATEGORYCODEID = @OLDCATEGORYCODEID)
                        begin
                            set @ADJUST = 1;
                            set @CLEARGLDISTRIBUTION = 1;
                        end

                        /* Check if designations changed */
                        if @ADJUST = 0
                            if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
                            begin
                                set @ADJUST = 1;
                                set @CLEARGLDISTRIBUTION = 1;
                            end

                        /* Already adjusted */
                        if @ADJUST = 0
                            if (select count(ADJUSTMENT.ID)
                                    from dbo.ADJUSTMENT
                                    where ADJUSTMENT.REVENUEID = @ID and ADJUSTMENT.POSTSTATUSCODE = 1) > 0
                                set @ADJUST = 1;

                        /* If there was a change to GL related data log an adjustment for each revenue in the transaction */
                        if @ADJUST = 1
                        begin                            
                            set @ADJUSTMENTID = null;
                            exec dbo.USP_SAVE_ADJUSTMENT @REVENUEID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;

                            select @STOCKDETAILCOUNT = count(STOCKDETAIL.ID)
                            from dbo.STOCKSALE
                            inner join dbo.STOCKDETAIL on STOCKSALE.STOCKDETAILID = STOCKDETAIL.ID
                            inner join dbo.REVENUEPAYMENTMETHOD on STOCKDETAIL.ID = REVENUEPAYMENTMETHOD.ID
                            where REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID and SALEPOSTSTATUSCODE = 0;

                            select @PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
                            from dbo.PROPERTYDETAIL 
                            inner join dbo.REVENUEPAYMENTMETHOD on PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID
                            where REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID and SALEPOSTSTATUSCODE = 0;

                            /* If sold stock has been posted, log stock detail adjustment */
                            if (@PAYMENTMETHODCODE = 4) and (@STOCKDETAILCOUNT > 0) -- If stock detail records exist, some shares must have sold

                            begin
                                exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @STOCKDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;                    
                            end

                            /* If sold property has been posted, log property detail adjustment */
                            else if (@PAYMENTMETHODCODE = 5) and (@PROPERTYDETAILCOUNT > 0) -- If a posted property detail record exists, the property must have sold

                            begin
                                exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;                        
                            end

                        end

                        /* Save payment information */
                        exec dbo.USP_REVENUEDETAIL_EDIT_2 @ID, @CURRENTAPPUSERID, @CHANGEAGENTID, @TYPECODE
                            @AMOUNT, @RECEIPTAMOUNT, @SPLITS, @SOURCECODE, @APPEALID, @BENEFITS, @BENEFITSWAIVED
                            @MAILINGID, @CHANNELCODEID, @DONOTACKNOWLEDGE, @CHANGEDATE, @CATEGORYCODEID;

                        -- if the payment method has changed, clear any user-defined gl distributions for all revenue records

                        if @CLEARGLDISTRIBUTION = 1
                        begin
                            --Clear GL

                            --Cache CONTEXT INFO

                            declare @contextCache varbinary(128);
                            set @contextCache = CONTEXT_INFO();

                            if not @CHANGEAGENTID is null
                                set CONTEXT_INFO @CHANGEAGENTID;

                            delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;    
                            delete from dbo.STOCKDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;;
                            delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;;

                            --Restore CONTEXT_INFO

                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache;

                            -- Add new GL distributions

                            exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID;

                            -- Add new stock detail GL distributions

                            exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID;

                            -- Add new property detail GL distributions

                            exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID;

                        end

                        /* add adjustment history information */
                        if @ADJUST = 1
                        begin
                            /*call USP_ADJUSTMENTHISTORY_*_SAVEHISTORY after the revenue tables are updated */
                            if exists(select top 1 ID from dbo.REVENUE where ID = @REVENUEID)
                            begin
                                if @ADJUSTMENTID is not null
                                    exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @REVENUEID, @CHANGEAGENTID, null, @ADJUSTMENTID;

                                if @STOCKDETAILADJUSTMENTID is not null
                                    exec dbo.USP_ADJUSTMENTHISTORY_STOCK_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @STOCKDETAILADJUSTMENTID;

                                if @PROPERTYDETAILADJUSTMENTID is not null
                                    exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;
                            end
                        end

                    end try

                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                    end catch
                    return 0;