USP_RECORDOPERATION_SELLPROPERTYUNDO

Executes the "Sell Property: Undo" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


                CREATE procedure dbo.USP_RECORDOPERATION_SELLPROPERTYUNDO
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier
                )
                as begin

                    declare @ADJUSTMENTHISTORYPROPERTYID uniqueidentifier;

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

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

                    begin try
                        if (select SALEPOSTSTATUSCODE from dbo.PROPERTYDETAIL where ID = @ID) = 0
                            exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_FIXFORDELETE @ID, 1, @CHANGEAGENTID, @CURRENTDATE, @ADJUSTMENTHISTORYPROPERTYID output;

                        /* If property details have been posted but not already adjusted */
                        if exists (select 1 from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = @ID and PROPERTYDETAIL.SALEPOSTSTATUSCODE = 0)
                            and not exists (select 1 from dbo.PROPERTYDETAILADJUSTMENT where PROPERTYDETAILID = @ID and POSTSTATUSCODE = 1)
                            begin
                                declare @POSTDATE datetime;
                                declare @ERRORMESSAGE nvarchar(255);
                                select top 1 @POSTDATE = POSTDATE from dbo.PROPERTYDETAILADJUSTMENT where PROPERTYDETAILID = @ID and POSTSTATUSCODE = 0 order by DATEADDED desc;
                                if @POSTDATE is null
                                    select @POSTDATE = SALEPOSTDATE from dbo.PROPERTYDETAIL where ID = @ID;
                                set @ERRORMESSAGE = dbo.UFN_GLDISTRIBUTION_VALIDPOSTDATE(@POSTDATE);
                                if @ERRORMESSAGE <> ''
                                    raiserror(@ERRORMESSAGE, 13, 1);

                                --Log reversals in the GLTRANSACTION table

                                exec dbo.USP_GLTRANSACTION_ADDPROPERTYDETAILREVERSALS @ID, @CHANGEAGENTID, @CURRENTDATE, @POSTDATE;
                            end
                        else --Update the post date of the existing property detail reversal rows to today's date

                            begin
                                update dbo.GLTRANSACTION
                                set 
                                    POSTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE),
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where ID in (
                                    select
                                        REVERSAL.ID
                                    from
                                        dbo.PROPERTYDETAILGLDISTRIBUTION
                                    inner join 
                                        dbo.GLTRANSACTION on PROPERTYDETAILGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
                                    inner join 
                                        dbo.GLTRANSACTION REVERSAL on GLTRANSACTION.ID = REVERSAL.REVERSEDGLTRANSACTIONID
                                    where 
                                        PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = @ID
                                    and 
                                        REVERSAL.POSTSTATUSCODE = 1);
                            end

                        --Update the new ADJUSTMENTHISTORYPROPERTY record with one of the newly created GLTRANSACTION reversal IDs

                        update dbo.ADJUSTMENTHISTORYPROPERTY
                        set GLTRANSACTIONID = (
                            select top 1 REVERSAL.ID from dbo.PROPERTYDETAILGLDISTRIBUTION
                            inner join dbo.GLTRANSACTION on PROPERTYDETAILGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
                            inner join dbo.GLTRANSACTION REVERSAL on GLTRANSACTION.ID = REVERSAL.REVERSEDGLTRANSACTIONID
                            where PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = @ID
                            order by REVERSAL.DATEADDED desc)
                        where ID = @ADJUSTMENTHISTORYPROPERTYID;

                        /* Delete rows from Property Detail GL Distribution */
                        --Cache CONTEXT INFO

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

                        if not @CHANGEAGENTID is null
                            set CONTEXT_INFO @CHANGEAGENTID;                        

                        delete from dbo.PROPERTYDETAILGLDISTRIBUTION where PROPERTYDETAILID = @ID and OUTDATED = 0;

                        if exists(select 1 from dbo.FINANCIALTRANSACTION where ID = @ID and POSTSTATUSCODE != 2)
                        begin
                            delete from dbo.FINANCIALTRANSACTIONLINEITEM
                            where
                                FINANCIALTRANSACTIONID = @ID

                            update dbo.FINANCIALTRANSACTION set
                                [TRANSACTIONAMOUNT] = 0,
                                [BASEAMOUNT] = 0,
                                [ORGAMOUNT] = 0,
                                [POSTDATE] = null,
                                [POSTSTATUSCODE] = 3,
                                [CHANGEDBYID] = @CHANGEAGENTID,
                                [DATECHANGED] = @CURRENTDATE
                            where
                                ID = @ID
                        end

                        --reset CONTEXT_INFO to previous value

                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache;

                        /* If any adjustment has occurred, log a new line item adjustment and link */
                        if exists (select 1 from dbo.ADJUSTMENTHISTORYPROPERTY where PROPERTYDETAILIDENTIFIER = @ID)
                        begin

                            declare @LIAID uniqueidentifier = newid()
                            insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT (
                                ID
                                ,ADJUSTMENTREASONCODEID
                                ,REASON
                                ,DATE
                                ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            select
                                @LIAID,
                                ADJUSTMENTREASONCODEID,
                                ADJUSTMENTREASON,
                                ADJUSTMENTDATE,
                                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            from dbo.ADJUSTMENTHISTORYPROPERTY where ID = @ADJUSTMENTHISTORYPROPERTYID

                            update dbo.FINANCIALTRANSACTIONLINEITEM
                                set FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @LIAID
                            where FINANCIALTRANSACTIONID = @ID and TYPECODE = 1 and POSTSTATUSCODE = 1

                            update ORIGINALS
                                set DELETEDON = @CURRENTDATE
                            from
                                dbo.FINANCIALTRANSACTIONLINEITEM ORIGINALS
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM REVERSALS on REVERSALS.REVERSEDLINEITEMID = ORIGINALS.ID
                            where
                                REVERSALS.TYPECODE = 1 and ORIGINALS.FINANCIALTRANSACTIONID = @ID and ORIGINALS.POSTSTATUSCODE = 2

                        end

                        update dbo.FINANCIALTRANSACTION set
                                [TRANSACTIONAMOUNT] = 0,
                                [BASEAMOUNT] = 0,
                                [ORGAMOUNT] = 0,
                                [POSTDATE] = null,
                                [POSTSTATUSCODE] = 3,
                                [CHANGEDBYID] = @CHANGEAGENTID,
                                [DATECHANGED] = @CURRENTDATE
                            where
                                ID = @ID

                        update dbo.PROPERTYDETAIL_EXT set
                            [SALEDATE] = null,
                            [BROKERFEE] = 0,
                            [TRANSACTIONBROKERFEE] = 0,
                            [ORGANIZATIONBROKERFEE] = 0,
                            [CHANGEDBYID] = @CHANGEAGENTID,
                            [DATECHANGED] = @CURRENTDATE
                        where
                            PROPERTYDETAIL_EXT.ID = @ID

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

                    return 0;
                end