USP_DATAFORMTEMPLATE_EDIT_REVENUESPLITDETAILS

The save procedure used by the edit dataform template "Revenue Split Details Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@DESIGNATIONID uniqueidentifier IN Designation
@CATEGORYCODEID uniqueidentifier IN Revenue category
@OTHERTYPECODEID uniqueidentifier IN Other type
@OPPORTUNITYID uniqueidentifier IN Opportunity

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUESPLITDETAILS
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier,
                        @DESIGNATIONID uniqueidentifier,
                        @CATEGORYCODEID uniqueidentifier,
                        @OTHERTYPECODEID uniqueidentifier,
                        @OPPORTUNITYID uniqueidentifier
                    )
                    as
                        set nocount on

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        -- Validate that the all the values passed in apply for the application code

                        declare @REVENUEID uniqueidentifier, @APPLICATIONCODE tinyint
                        select
                            @REVENUEID = REVENUEID,
                            @APPLICATIONCODE = APPLICATIONCODE
                        from dbo.REVENUESPLIT
                        where ID = @ID

                        if @DESIGNATIONID is null and 
                            @APPLICATIONCODE = 0 -- Donation

                        begin
                            raiserror('DESIGNATIONREQUIRED', 13, 1)
                            return 1
                        end

                        if @OTHERTYPECODEID is not null and @APPLICATIONCODE <> 4
                        begin
                            raiserror('OTHERTYPECODENOTVALID', 13, 1)
                            return 1                        
                        end

                        if @OTHERTYPECODEID is null and @APPLICATIONCODE = 4
                        begin
                            raiserror('OTHERTYPECODEREQUIRED', 13, 1)
                            return 1                        
                        end

                        if @OPPORTUNITYID is not null and @APPLICATIONCODE <> 0
                        begin
                            raiserror('OPPORTUNITYCODENOTVALID', 13, 1)
                            return 1                        
                        end

                        -- Verify the transaction hasn't already been posted

                        if exists (select 1 from dbo.REVENUEPOSTED where ID = @REVENUEID)
                        begin
                            raiserror('TRANSACTIONCANNOTBEPOSTED', 13, 1)
                            return 1
                        end

                        --check to see if designation changed, if so re-receipt, re-acknowledge and adjust (if posted)

                        declare @CURRENTDESIGNATIONID uniqueidentifier, @CURRENTCATEGORYID uniqueidentifier
                        select @CURRENTDESIGNATIONID = DESIGNATIONID from dbo.REVENUESPLIT where ID = @ID
                        select @CURRENTCATEGORYID = GLREVENUECATEGORYMAPPINGID from dbo.REVENUECATEGORY where ID = @ID

                        declare @DESIGNATIONCHANGED as bit, @CATEGORYCHANGED as bit
                        if (@CURRENTDESIGNATIONID is null and @DESIGNATIONID is null) or @CURRENTDESIGNATIONID = @DESIGNATIONID
                            set @DESIGNATIONCHANGED = 0
                        else
                            set @DESIGNATIONCHANGED = 1

                        if (@CURRENTCATEGORYID is null and @CATEGORYCODEID is null) or @CURRENTCATEGORYID = @CATEGORYCODEID
                            set @CATEGORYCHANGED = 0
                        else
                            set @CATEGORYCHANGED = 1

                        begin try                            
                            if @DESIGNATIONCHANGED = 1
                            begin
                                exec dbo.USP_REVENUE_UPDATERERECEIPTS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE

                                exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
                            end

              /* CMC
                            update dbo.FINANCIALTRANSACTIONLINEITEM set
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                ID = @ID

             update dbo.REVENUESPLIT_EXT set
                                DESIGNATIONID = @DESIGNATIONID
                            where
                                ID = @ID
                                */

              update dbo.REVENUESPLIT set
                                DESIGNATIONID = @DESIGNATIONID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                ID = @ID



                            if @CATEGORYCODEID is null
                                exec dbo.USP_REVENUECATEGORY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
                            else
                            begin
                                update dbo.REVENUECATEGORY set
                                    GLREVENUECATEGORYMAPPINGID = @CATEGORYCODEID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    ID = @ID

                                if @@ROWCOUNT = 0
                                    insert into dbo.REVENUECATEGORY (ID, GLREVENUECATEGORYMAPPINGID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values (@ID, @CATEGORYCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                            end

                            if @OTHERTYPECODEID is null
                                exec dbo.USP_REVENUESPLITOTHER_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
                            else
                            begin
                                update dbo.REVENUESPLITOTHER set
                                    OTHERTYPECODEID = @OTHERTYPECODEID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    ID = @ID

                                if @@ROWCOUNT = 0
                                    insert into dbo.REVENUESPLITOTHER (ID, OTHERTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values (@ID, @OTHERTYPECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                            end

                            if @OPPORTUNITYID is null
                                exec dbo.USP_REVENUEOPPORTUNITY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
                            else
                            begin
                                update dbo.REVENUEOPPORTUNITY set
                                    OPPORTUNITYID = @OPPORTUNITYID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    ID = @ID

                                if @@ROWCOUNT = 0
                                    insert into dbo.REVENUEOPPORTUNITY (ID, OPPORTUNITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values (@ID, @OPPORTUNITYID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
                            end

                            -- Clear the user-defined gl distributions if the designation or revenue category has changed

                            -- Do this regardless of whether gift is posted or not

                            if @DESIGNATIONCHANGED = 1 or @CATEGORYCHANGED = 1
                            begin
                                declare @contextCache varbinary(128);

                                --cache current context information

                                set @contextCache = CONTEXT_INFO();

                                -- Clear GL

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

                                set CONTEXT_INFO @CHANGEAGENTID;

                                --reset CONTEXT_INFO to previous value

                                if not @contextCache is null
                                    set CONTEXT_INFO @contextCache;    

                                -- Add new GL distributions

                                declare @DONOTPOST bit
                                select @DONOTPOST = DONOTPOST from dbo.REVENUE where ID = @REVENUEID

                                if @DONOTPOST = 0
                                begin
                                    -- Add new GL distributions

                                    exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;

                                    -- Add new stock detail GL distributions

                                    exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;

                                    -- Add new property detail GL distributions

                                    exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
                                end
                            end
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;