USP_DATAFORMTEMPLATE_EDIT_ADJUSTPROPERTYDETAILGLDISTRIBUTIONBYTRANSACTION

The save procedure used by the edit dataform template "Posted Sold Property GL Distribution By Transaction Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@GLDISTRIBUTION xml IN Sold Property GL distribution
@ADJUSTMENTDATE datetime IN Adjusted Date
@ADJUSTMENTPOSTDATE datetime IN Adjusted Post Date
@ADJUSTMENTREASON nvarchar(300) IN Adjustment reason
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ADJUSTPROPERTYDETAILGLDISTRIBUTIONBYTRANSACTION
                    (
                        @ID uniqueidentifier,
                        @GLDISTRIBUTION xml,
                        @ADJUSTMENTDATE datetime,
                        @ADJUSTMENTPOSTDATE datetime,
                        @ADJUSTMENTREASON nvarchar(300),
                        @CHANGEAGENTID uniqueidentifier = null
                    )
                as
                    set nocount on;

                    declare @ADJUST bit;
                    set @ADJUST = 0;

                    declare @ADJUSTMENTEXISTS bit;
                    set @ADJUSTMENTEXISTS = 0;

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

                    declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;

                    begin try

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

                        if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
                            raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)

                        /* Already adjusted */
                        if (select COUNT(ADJUSTMENT.ID)
                                from dbo.PROPERTYDETAILADJUSTMENT as ADJUSTMENT
                                where PROPERTYDETAILID = @ID and POSTSTATUSCODE = 1) > 0
                        begin
                            set @ADJUST = 1;
                            set @ADJUSTMENTEXISTS = 1;
                        end

                        /* Distributions Changed */
                        if @ADJUST = 0
                            set @ADJUST = dbo.UFN_PROPERTYDETAIL_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)

                        /* If there was a change to GL related data log an adjustment */
                        if @ADJUST = 1
                        begin
                            set @PROPERTYDETAILADJUSTMENTID = null;
                            exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @ID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
                        end

                        -- If user hasn't entered anything in the grid we will assume that user 

                        -- wants to use system-generated values for Post to GL and delete any previous entries

                        --if (select count(*) FROM dbo.UFN_REVENUETRANSACTION_GETPROPERTYDETAILGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) = 0

                        --    begin

                        --            delete dbo.PROPERTYDETAILGLDISTRIBUTION from dbo.PROPERTYDETAILGLDISTRIBUTION 

                        --            where PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = @ID;

                        --        return 0;

                        --    end



                        -- If an unposted adjustment already exists, update the property detail GL distribution rows.

                        -- Otherwise, insert new property detail gl distribution rows using @GLDISTRIBUTION.

                        if @ADJUSTMENTEXISTS = 1 
                        begin
                            exec dbo.USP_REVENUE_GETPROPERTYDETAILGLDISTRIBUTION_CUSTOMUPDATEFROMXML @ID, @GLDISTRIBUTION, @ADJUSTMENTPOSTDATE, @CHANGEAGENTID;
                        end
                        else
                        begin
                            declare @JOURNAL nvarchar(50);
                            set @JOURNAL = 'Blackbaud Enterprise';

                            set @CHANGEDATE = getdate();

                            declare @REVENUEID uniqueidentifier;
                            select @REVENUEID = REVENUEID from dbo.REVENUEPAYMENTMETHOD where ID = @ID;

                            declare @DISTRIBUTIONS table(
                                GLTRANSACTIONID uniqueidentifier,
                                ACCOUNT nvarchar(100),
                                AMOUNT money,
                                PROJECT nvarchar(100),
                                REFERENCE nvarchar(255),
                                TRANSACTIONTYPECODE tinyint,
                                GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier
                            );

                            -- Get the user-defined GL distributions for the property detail record.

                            insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID)
                            select 
                                newid(),
                                PROPERTYDISTRIBUTIONS.ACCOUNT,
                                PROPERTYDISTRIBUTIONS.AMOUNT,
                                PROPERTYDISTRIBUTIONS.PROJECT,
                                PROPERTYDISTRIBUTIONS.REFERENCE, 
                                PROPERTYDISTRIBUTIONS.TRANSACTIONTYPECODE,
                                PROPERTYDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID
                            from 
                                dbo.UFN_REVENUE_GETPROPERTYDETAILGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) PROPERTYDISTRIBUTIONS

                            -- Insert rows in GLTRANSACTION table

                            insert into dbo.GLTRANSACTION(ID, TRANSACTIONTYPECODE, ACCOUNT, AMOUNT, PROJECT, REFERENCE, POSTDATE, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            select
                                GLTRANSACTIONID,
                                TRANSACTIONTYPECODE,
                                ACCOUNT,
                                AMOUNT,
                                PROJECT,
                                REFERENCE,
                                @ADJUSTMENTPOSTDATE,
                                @JOURNAL,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CHANGEDATE,
                                @CHANGEDATE
                            from 
                                @DISTRIBUTIONS;

                            insert into dbo.PROPERTYDETAILGLDISTRIBUTION
                                (ID,GLTRANSACTIONID,PROPERTYDETAILID,REVENUEID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            select
                                newid(),
                                GLTRANSACTIONID,
                                @ID,
                                @REVENUEID,
                                GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                                PROJECT,
                                REFERENCE,
                                AMOUNT,
                                ACCOUNT,
                                TRANSACTIONTYPECODE,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CHANGEDATE,
                                @CHANGEDATE
                            from 
                                @DISTRIBUTIONS;
                        end

                        if @ADJUST = 1
                            exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY @ID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;

                    end try

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

                    return 0;