USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@AMOUNT money IN
@RECEIPTAMOUNT money IN
@SPLITS xml IN
@SOURCECODE nvarchar(50) IN
@APPEALID uniqueidentifier IN
@BENEFITS xml IN
@BENEFITSWAIVED bit IN
@MAILINGID uniqueidentifier IN
@CHANNELCODEID uniqueidentifier IN
@DONOTACKNOWLEDGE bit IN
@ADJUSTMENTDATE datetime IN
@ADJUSTMENTPOSTDATE datetime IN
@ADJUSTMENTREASON nvarchar(300) IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL
                    (
                        @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)
                    )
                    as
                    set nocount on;

                    declare @CHANGEDATE datetime;
                    declare @TYPECODE tinyint;

                    declare @PAYMENTMETHODCODE tinyint;
                    declare @ADJUSTMENTID 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;

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

                        if not exists(select top 1 1 from dbo.REVENUE where ID = @ID and AMOUNT = @AMOUNT)
                            set @ADJUST = 1;

                        /* Check if designations changed */
                        if @ADJUST = 0 and not (@TYPECODE in (6, 4, 8)) --Event Fee\Pledge\MG payment cannot change splits on form

                            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
                                declare @REVENUEPAYMENTMETHODID uniqueidentifier;
                                select @REVENUEPAYMENTMETHODID = ID from dbo.REVENUEPAYMENTMETHOD where REVENUEID = @ID;

                                set @ADJUSTMENTID = null;
                                exec dbo.USP_SAVE_ADJUSTMENT @ID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;

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

                                select @PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
                                from dbo.PROPERTYDETAIL 
                                where PROPERTYDETAIL.ID = @REVENUEPAYMENTMETHODID and SALEPOSTSTATUSCODE = 0;

                                /* If sold stock has been posted, log stock detail adjustment */
                                if (@PAYMENTMETHODCODE = 4) and (@STOCKDETAILCOUNT > 0
                                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
                                begin
                                    exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;                        
                                end

                        end

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

                        -- 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 = @ID)
                            begin
                                if @ADJUSTMENTID is not null
                                    exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @ID, @CHANGEAGENTID, null, @ADJUSTMENTID;

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

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

                        end

                    end try

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