USP_ADJUSTMENTHISTORY_PROPERTY_SAVESNAPSHOT

Stores a snapshot of property detail information at the time of an adjustment for use in reporting.

Parameters

Parameter Parameter Type Mode Description
@PROPERTYDETAILADJUSTMENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVESNAPSHOT
            (
                @PROPERTYDETAILADJUSTMENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier
            )
            as
            set nocount on;

            declare @CHANGEDATE datetime;
            declare @PROPERTYDETAILID uniqueidentifier;
            declare @ADJUSTMENTHISTORYPROPERTYID uniqueidentifier;
            declare @SNAPSHOTEXISTS bit;

            set @CHANGEDATE = getdate();
            set @SNAPSHOTEXISTS = 0;

            /*determine if a snapshot exists*/
            if (select count(ADJUSTMENTHISTORYPROPERTYSNAPSHOT.ID) 
                from dbo.ADJUSTMENTHISTORYPROPERTYSNAPSHOT
                inner join dbo.ADJUSTMENTHISTORYPROPERTY on ADJUSTMENTHISTORYPROPERTY.ID = ADJUSTMENTHISTORYPROPERTYSNAPSHOT.ID
                where ADJUSTMENTHISTORYPROPERTY.PROPERTYDETAILADJUSTMENTID = @PROPERTYDETAILADJUSTMENTID) > 0
                set @SNAPSHOTEXISTS = 1;

            if @SNAPSHOTEXISTS = 1 /*update the ADJUSTMENTHISTORYPROPERTY record to match PROPERTYDETAILADJUSTMENT */
            begin
                select @ADJUSTMENTHISTORYPROPERTYID = ID
                from dbo.ADJUSTMENTHISTORYPROPERTY
                where PROPERTYDETAILADJUSTMENTID = @PROPERTYDETAILADJUSTMENTID;

                if @PROPERTYDETAILADJUSTMENTID is not null
                    update dbo.ADJUSTMENTHISTORYPROPERTY set
                        ADJUSTMENTHISTORYPROPERTY.CONSTITUENTNAME = CONSTITUENT.NAME,
                        ADJUSTMENTHISTORYPROPERTY.REVENUEDATE = REVENUE.DATE,
                        ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTDATE = PROPERTYDETAILADJUSTMENT.DATE,
                        ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTPOSTDATE = PROPERTYDETAILADJUSTMENT.POSTDATE,
                        ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTREASON = PROPERTYDETAILADJUSTMENT.REASON,
                        ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTREASONCODEID = PROPERTYDETAILADJUSTMENT.REASONCODEID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    from dbo.ADJUSTMENTHISTORYPROPERTY
                    inner join dbo.PROPERTYDETAILADJUSTMENT on PROPERTYDETAILADJUSTMENT.ID = ADJUSTMENTHISTORYPROPERTY.PROPERTYDETAILADJUSTMENTID
                    inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID
                    inner join dbo.REVENUE on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
                    where PROPERTYDETAILADJUSTMENT.ID = @PROPERTYDETAILADJUSTMENTID;
            end
            else
            begin
                /*since the snapshot has an FK ADJUSTMENTHISTORYPROPERTY, need to create an ADJUSTMENTHISTORYPROPERTY row. The needed information is 
                attached to the PROPERTYDETAILADJUSTMENT record*/

                select
                    @PROPERTYDETAILID = PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID
                from dbo.PROPERTYDETAILADJUSTMENT 
                where ID = @PROPERTYDETAILADJUSTMENTID;

                set @ADJUSTMENTHISTORYPROPERTYID = newid();

                insert into dbo.ADJUSTMENTHISTORYPROPERTY(ID, PROPERTYDETAILADJUSTMENTID, PROPERTYDETAILIDENTIFIER, ADJUSTMENTIDENTIFIER, CONSTITUENTNAME, REVENUEDATE, ADJUSTMENTDATE, ADJUSTMENTPOSTDATE, ADJUSTMENTREASON, ADJUSTMENTREASONCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    select top 1
                        @ADJUSTMENTHISTORYPROPERTYID,
                        PROPERTYDETAILADJUSTMENT.ID,
                        cast(PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID as nvarchar(36)),
                        cast(PROPERTYDETAILADJUSTMENT.ID as nvarchar(36)),
                        CONSTITUENT.NAME,
                        REVENUE.DATE,
                        PROPERTYDETAILADJUSTMENT.DATE,
                        PROPERTYDETAILADJUSTMENT.POSTDATE,
                        PROPERTYDETAILADJUSTMENT.REASON,
                        PROPERTYDETAILADJUSTMENT.REASONCODEID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE
                    from dbo.PROPERTYDETAILADJUSTMENT
                    inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID
                    inner join dbo.REVENUE on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
                    where PROPERTYDETAILADJUSTMENT.ID = @PROPERTYDETAILADJUSTMENTID;

                /*create the snapshot of the PROPERTY detail information*/
                insert into dbo.ADJUSTMENTHISTORYPROPERTYSNAPSHOT(ID, SALEAMOUNT, BROKERFEE, CONSTITUENTIDENTIFIER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONSALEAMOUNT, TRANSACTIONBROKERFEE, ORGANIZATIONSALEAMOUNT, ORGANIZATIONBROKERFEE, BASECURRENCYID, TRANSACTIONCURRENCYID, BASERATE, ORGANIZATIONRATE)
                    select
                        @ADJUSTMENTHISTORYPROPERTYID,
                        PROPERTYDETAIL.SALEAMOUNT,
                        PROPERTYDETAIL.BROKERFEE,
                        REVENUE.CONSTITUENTID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE,
                        PROPERTYDETAIL.TRANSACTIONSALEAMOUNT,
                        PROPERTYDETAIL.TRANSACTIONBROKERFEE,
                        PROPERTYDETAIL.ORGANIZATIONSALEAMOUNT,
                        PROPERTYDETAIL.ORGANIZATIONBROKERFEE,
                        PROPERTYDETAIL.BASECURRENCYID,
                        PROPERTYDETAIL.TRANSACTIONCURRENCYID,
                        coalesce(BASERATE.RATE,0),
                        coalesce(ORGANIZATIONRATE.RATE,0)
                    from dbo.PROPERTYDETAIL
                    inner join dbo.PROPERTYDETAILADJUSTMENT on PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID = PROPERTYDETAIL.ID
                    inner join dbo.REVENUEPAYMENTMETHOD on PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID
                    inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                    left join dbo.CURRENCYEXCHANGERATE BASERATE on BASERATE.ID = PROPERTYDETAIL.BASEEXCHANGERATEID
                    left join dbo.CURRENCYEXCHANGERATE ORGANIZATIONRATE on ORGANIZATIONRATE.ID = PROPERTYDETAIL.ORGANIZATIONEXCHANGERATEID
                    where PROPERTYDETAILADJUSTMENT.ID = @PROPERTYDETAILADJUSTMENTID;

                /*create the distribution snapshot*/
                /*JamesWill CR254668-091306 10/02/2006 Reverse the debit and credit accounts to actually capture a reversal*/
                insert into dbo.ADJUSTMENTHISTORYPROPERTYDISTRIBUTIONSNAPSHOT(ADJUSTMENTHISTORYPROPERTYID, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
                    select
                        @ADJUSTMENTHISTORYPROPERTYID,
                        case TRANSACTIONTYPECODE when 0 then 1 else 0 end,
                        ACCOUNT,
                        PROJECT,
                        REFERENCE,
                        AMOUNT,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE,
                        TRANSACTIONAMOUNT,
                        ORGANIZATIONAMOUNT,
                        BASECURRENCYID,
                        TRANSACTIONCURRENCYID
                    from dbo.PROPERTYDETAILGLDISTRIBUTION
                    where PROPERTYDETAILID = @PROPERTYDETAILID
                    and PROPERTYDETAILGLDISTRIBUTION.OUTDATED = 0;

            end