USP_REPORT_ADJUSTEDREVENUE_SINGLERECORD

Returns the data necessary for the Adjusted Revenue Single Record report.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@CURRENCYCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_ADJUSTEDREVENUE_SINGLERECORD
            (
                @REVENUEID uniqueidentifier,
                @CURRENCYCODE tinyint = null
            )
            as
            set nocount on;
            set transaction isolation level read uncommitted;

            select 
                ADJUSTMENTHISTORY.ADJUSTMENTIDENTIFIER, 
                ADJUSTMENT.DATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORY.CONSTITUENTNAME, 
                --JamesWill 04/29/2008 CR299003-042508 The data is stored somewhat inconveniently in the report tables, so convert the "payment" types to say "Payment"; otherwise, use what's there.

                case 
                    when ADJUSTMENTHISTORY.REVENUETYPE in ('Gift', 'Pledge payment', 'Recurring gift payment'
                                                           'Matching gift payment', 'Event registration fee', 'Membership fee', 'Donor challenge payment') then 'Payment' 
                    else ADJUSTMENTHISTORY.REVENUETYPE 
                end as [REVENUETYPE],
                ADJUSTMENTHISTORY.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENT.REASON as [ADJUSTMENTREASON],
                [DISTRIBUTION].ID as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                ADJUSTMENT.POSTSTATUS,
                ADJUSTMENT.POSTDATE,
                case @CURRENCYCODE when 0 then FINANCIALTRANSACTION.BASEAMOUNT when 2 then FINANCIALTRANSACTION.TRANSACTIONAMOUNT else FINANCIALTRANSACTION.ORGAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(ADJUSTMENT.REASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORY.DATEADDED
            from dbo.ADJUSTMENTHISTORY
            /*this needs to be a left join because adjustments consisting of just GL changes will not have changed fields.*/
            left join dbo.ADJUSTMENTHISTORYDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYID = ADJUSTMENTHISTORY.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETDISTRIBUTION_FORADJUSTMENTHISTORYID_FORDISPLAY(ADJUSTMENTHISTORY.ID) as [DISTRIBUTION]
            inner join dbo.ADJUSTMENT on ADJUSTMENT.ID = ADJUSTMENTHISTORY.ADJUSTMENTID /*this join means this select only works for non-deleted adjustments*/
            inner join dbo.FINANCIALTRANSACTION on ADJUSTMENT.REVENUEID = FINANCIALTRANSACTION.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where 
                ADJUSTMENTHISTORY.REVENUEIDENTIFIER = cast(@REVENUEID as nvarchar(36))
            group by 
                ADJUSTMENTIDENTIFIER, ADJUSTMENT.DATE, CONSTITUENTNAME, REVENUETYPE, REVENUEDATE, [DETAIL].ID, [DETAIL].ADJUSTEDFIELD,
                [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE, [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE, [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE,
                [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, 
                [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE, ADJUSTMENT.REASON, [DISTRIBUTION].ID, [DISTRIBUTION].TYPECODE, 
                [DISTRIBUTION].TYPE, [DISTRIBUTION].TRANSACTIONTYPE, [DISTRIBUTION].ACCOUNT, [DISTRIBUTION].PROJECT,
                [DISTRIBUTION].AMOUNT, [DISTRIBUTION].TRANSACTIONAMOUNT, [DISTRIBUTION].ORGANIZATIONAMOUNT, ADJUSTMENT.POSTSTATUS, 
                ADJUSTMENT.POSTDATE, FINANCIALTRANSACTION.BASEAMOUNT, FINANCIALTRANSACTION.TRANSACTIONAMOUNT, FINANCIALTRANSACTION.ORGAMOUNT, ADJUSTMENT.REASONCODEID, [DETAIL].ISMONEY,
                [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE, [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE, 
                [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE, [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE, 
                [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE, [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217, DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL, DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE,
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS, DISTRIBUTIONCURRENCYPROPERTIES.ISO4217, DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL, 
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS ,ADJUSTMENTHISTORY.DATEADDED



            union all

            /*get adjustments for sold stock items*/
            select
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTIDENTIFIER,
                STOCKSALEADJUSTMENT.DATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYSTOCK.CONSTITUENTNAME,
                'Sold stock' as [REVENUETYPE],
                ADJUSTMENTHISTORYSTOCK.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                STOCKSALEADJUSTMENT.POSTSTATUS,
                STOCKSALEADJUSTMENT.POSTDATE,
                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(STOCKSALEADJUSTMENT.REASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYSTOCK.DATEADDED
            from dbo.ADJUSTMENTHISTORYSTOCK
            left join dbo.ADJUSTMENTHISTORYSTOCKDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYSTOCKID = ADJUSTMENTHISTORYSTOCK.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETSTOCKDISTRIBUTION_FORADJUSTMENTHISTORYSTOCKID_FORDISPLAY(ADJUSTMENTHISTORYSTOCK.ID) as [DISTRIBUTION]
            inner join dbo.STOCKSALEADJUSTMENT on STOCKSALEADJUSTMENT.ID = ADJUSTMENTHISTORYSTOCK.STOCKSALEADJUSTMENTID /*this join means this select only works for non-deleted adjustments*/
            inner join dbo.STOCKSALE on STOCKSALE.ID = STOCKSALEADJUSTMENT.STOCKSALEID
            inner join dbo.REVENUEPAYMENTMETHOD on STOCKSALE.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where REVENUE.ID = @REVENUEID

            union all

            /*get adjustments for sold gift-in-kind items*/
            select
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTIDENTIFIER,
                GIFTINKINDSALEADJUSTMENT.DATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYGIFTINKIND.CONSTITUENTNAME,
                'Sold gift-in-kind' as [REVENUETYPE],
                ADJUSTMENTHISTORYGIFTINKIND.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                GIFTINKINDSALEADJUSTMENT.POSTSTATUS,
                GIFTINKINDSALEADJUSTMENT.POSTDATE,
                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(GIFTINKINDSALEADJUSTMENT.REASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYGIFTINKIND.DATEADDED     
            from dbo.ADJUSTMENTHISTORYGIFTINKIND
            left join dbo.ADJUSTMENTHISTORYGIFTINKINDPAYMENTMETHODDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYGIFTINKINDID = ADJUSTMENTHISTORYGIFTINKIND.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETGIFTINKINDDISTRIBUTION_FORADJUSTMENTHISTORYGIFTINKINDID_FORDISPLAY(ADJUSTMENTHISTORYGIFTINKIND.ID) as [DISTRIBUTION]
            inner join dbo.GIFTINKINDSALEADJUSTMENT on GIFTINKINDSALEADJUSTMENT.ID = ADJUSTMENTHISTORYGIFTINKIND.GIFTINKINDSALEADJUSTMENTID /*this join means this select only works for non-deleted adjustments*/
            inner join dbo.GIFTINKINDSALE on GIFTINKINDSALE.ID = GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID
            inner join dbo.REVENUEPAYMENTMETHOD on GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = REVENUEPAYMENTMETHOD.ID
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where REVENUE.ID = @REVENUEID

            union all

            /*get adjustments for sold property items*/
            select
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTIDENTIFIER,
                PROPERTYDETAILADJUSTMENT.DATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYPROPERTY.CONSTITUENTNAME,
                'Sold property' as [REVENUETYPE],
                ADJUSTMENTHISTORYPROPERTY.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                PROPERTYDETAILADJUSTMENT.POSTSTATUS,
                PROPERTYDETAILADJUSTMENT.POSTDATE,
                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(PROPERTYDETAILADJUSTMENT.REASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYPROPERTY.DATEADDED          
            from dbo.ADJUSTMENTHISTORYPROPERTY
            left join dbo.ADJUSTMENTHISTORYPROPERTYDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYPROPERTYID = ADJUSTMENTHISTORYPROPERTY.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETPROPERTYDISTRIBUTION_FORADJUSTMENTHISTORYPROPERTYID_FORDISPLAY(ADJUSTMENTHISTORYPROPERTY.ID) as [DISTRIBUTION]
            inner join dbo.PROPERTYDETAILADJUSTMENT on PROPERTYDETAILADJUSTMENT.ID = ADJUSTMENTHISTORYPROPERTY.PROPERTYDETAILADJUSTMENTID /*this join means this select only works for non-deleted adjustments*/
            inner join dbo.REVENUEPAYMENTMETHOD on PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID = REVENUEPAYMENTMETHOD.ID
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where REVENUE.ID = @REVENUEID

            union all
            /*get adjustments for deleted stock items */
            select
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTIDENTIFIER,
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTDATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYSTOCK.CONSTITUENTNAME,
                'Sold stock' as [REVENUETYPE],
                ADJUSTMENTHISTORYSTOCK.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                /*if this is the record for a deletion reversal, there's no way to know if it was posted or not.
                Otherwise, assume that it's posted since it's purely historical*/
                case 
                    when [DETAIL].ADJUSTEDFIELD = 'Deleted' or [DETAIL].ADJUSTEDFIELD = 'Unsold' 
                    then 
                        case when not ADJUSTMENTHISTORYSTOCK.GLTRANSACTIONID is null then 
                            (select POSTSTATUS from dbo.GLTRANSACTION where ID = ADJUSTMENTHISTORYSTOCK.GLTRANSACTIONID)
                        else
                            'N/A' 
                        end
                    else 
                        'Posted' 
                    end,
                ADJUSTMENTHISTORYSTOCK.ADJUSTMENTPOSTDATE, --Use the post date stored in the history table

                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(ADJUSTMENTHISTORYSTOCK.ADJUSTMENTREASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYSTOCK.DATEADDED      
            from dbo.ADJUSTMENTHISTORYSTOCK
            /*this needs to be a left join because adjustments consisting of just GL changes will not have changed fields*/
            left join dbo.ADJUSTMENTHISTORYSTOCKDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYSTOCKID = ADJUSTMENTHISTORYSTOCK.ID
            inner join dbo.REVENUEPAYMENTMETHOD on ADJUSTMENTHISTORYSTOCK.STOCKDETAILIDENTIFIER = cast(REVENUEPAYMENTMETHOD.ID as nvarchar(36))
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETSTOCKDISTRIBUTION_FORADJUSTMENTHISTORYSTOCKID_FORDISPLAY(ADJUSTMENTHISTORYSTOCK.ID) as [DISTRIBUTION]
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where 
                ADJUSTMENTHISTORYSTOCK.STOCKSALEADJUSTMENTID is null
                and REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID 

            union all
            /*get adjustments for deleted gift-in-kind items */
            select
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTIDENTIFIER,
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTDATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYGIFTINKIND.CONSTITUENTNAME,
                'Sold gift-in-kind' as [REVENUETYPE],
                ADJUSTMENTHISTORYGIFTINKIND.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                /*if this is the record for a deletion reversal, there's no way to know if it was posted or not.
                Otherwise, assume that it's posted since it's purely historical*/
                case 
                    when [DETAIL].ADJUSTEDFIELD = 'Deleted' or [DETAIL].ADJUSTEDFIELD = 'Unsold' 
                    then 
                        case when not ADJUSTMENTHISTORYGIFTINKIND.GLTRANSACTIONID is null then 
                            (select POSTSTATUS from dbo.GLTRANSACTION where ID = ADJUSTMENTHISTORYGIFTINKIND.GLTRANSACTIONID)
                        else
                            'N/A' 
                        end
                    else 
                        'Posted' 
                    end,
                ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTPOSTDATE, --Use the post date stored in the history table

                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(ADJUSTMENTHISTORYGIFTINKIND.ADJUSTMENTREASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYGIFTINKIND.DATEADDED             
            from dbo.ADJUSTMENTHISTORYGIFTINKIND
            /*this needs to be a left join because adjustments consisting of just GL changes will not have changed fields*/
            left join dbo.ADJUSTMENTHISTORYGIFTINKINDPAYMENTMETHODDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYGIFTINKINDID = ADJUSTMENTHISTORYGIFTINKIND.ID
            inner join dbo.REVENUEPAYMENTMETHOD on ADJUSTMENTHISTORYGIFTINKIND.GIFTINKINDPAYMENTMETHODDETAILIDENTIFIER = cast(REVENUEPAYMENTMETHOD.ID as nvarchar(36))
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETGIFTINKINDDISTRIBUTION_FORADJUSTMENTHISTORYGIFTINKINDID_FORDISPLAY(ADJUSTMENTHISTORYGIFTINKIND.ID) as [DISTRIBUTION]
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where 
                ADJUSTMENTHISTORYGIFTINKIND.GIFTINKINDSALEADJUSTMENTID is null
                and REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID 

            union all
            /*get adjustments for deleted property items */
            select
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTIDENTIFIER,
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTDATE as [ADJUSTMENTDATE],
                ADJUSTMENTHISTORYPROPERTY.CONSTITUENTNAME,
                'Sold property' as [REVENUETYPE],
                ADJUSTMENTHISTORYPROPERTY.REVENUEDATE,
                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                /*if this is the record for a deletion reversal, there's no way to know if it was posted or not.
                Otherwise, assume that it's posted since it's purely historical*/
                case 
                    when [DETAIL].ADJUSTEDFIELD = 'Deleted' or [DETAIL].ADJUSTEDFIELD = 'Unsold' 
                    then 
                        case when not ADJUSTMENTHISTORYPROPERTY.GLTRANSACTIONID is null then 
                            (select POSTSTATUS from dbo.GLTRANSACTION where ID = ADJUSTMENTHISTORYPROPERTY.GLTRANSACTIONID)
                        else
                            'N/A'
                        end            
                    else 
                        'Posted' 
                    end,
                ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTPOSTDATE, --Use the post date stored in the history table

                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(ADJUSTMENTHISTORYPROPERTY.ADJUSTMENTREASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYPROPERTY.DATEADDED        
            from dbo.ADJUSTMENTHISTORYPROPERTY
            /*this needs to be a left join because adjustments consisting of just GL changes will not have changed fields*/
            left join dbo.ADJUSTMENTHISTORYPROPERTYDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYPROPERTYID = ADJUSTMENTHISTORYPROPERTY.ID
            inner join dbo.REVENUEPAYMENTMETHOD on ADJUSTMENTHISTORYPROPERTY.PROPERTYDETAILIDENTIFIER = cast(REVENUEPAYMENTMETHOD.ID as nvarchar(36))
            inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETPROPERTYDISTRIBUTION_FORADJUSTMENTHISTORYPROPERTYID_FORDISPLAY(ADJUSTMENTHISTORYPROPERTY.ID) as [DISTRIBUTION]
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where 
                ADJUSTMENTHISTORYPROPERTY.PROPERTYDETAILADJUSTMENTID is null
                and REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID 

            union all

            /* Write-offs */
            select
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTIDENTIFIER,
                WRITEOFFADJUSTMENT.DATE as [ADJUSTMENTDATE],
                --ADJUSTMENTHISTORYWRITEOFF.WRITEOFFIDENTIFIER as [TRANSACTIONIDENTIFIER], 

                --ADJUSTMENTHISTORYWRITEOFF.WRITEOFFIDENTIFIER as [REVENUEIDENTIFIER], 

                ADJUSTMENTHISTORYWRITEOFF.CONSTITUENTNAME,
                'Write-off' as [REVENUETYPE],
                ADJUSTMENTHISTORYWRITEOFF.DATE as REVENUEDATE,
                --ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTDATE,

                [DETAIL].ID as [DETAILID],
                [DETAIL].ADJUSTEDFIELD,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE end as ADJUSTEDFIELDPREVIOUSVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE end as ADJUSTEDFIELDADJUSTEDVALUE,
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTREASON,
                cast([DISTRIBUTION].ID as nvarchar(36)) as [DISTRIBUTIONID],
                [DISTRIBUTION].TYPECODE as [GLTYPECODE],
                [DISTRIBUTION].TYPE as [GLTYPE],
                [DISTRIBUTION].TRANSACTIONTYPE,
                [DISTRIBUTION].ACCOUNT,
                [DISTRIBUTION].PROJECT,
                case @CURRENCYCODE when 0 then [DISTRIBUTION].AMOUNT when 2 then [DISTRIBUTION].TRANSACTIONAMOUNT else [DISTRIBUTION].ORGANIZATIONAMOUNT end as AMOUNT,
                WRITEOFFADJUSTMENT.POSTSTATUS,
                WRITEOFFADJUSTMENT.POSTDATE,
                case @CURRENCYCODE when 0 then REVENUE.AMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGANIZATIONAMOUNT end as [REVENUEAMOUNT],
                dbo.UFN_ADJUSTMENTREASONCODE_TRANSLATE(ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTREASONCODEID) as REASONCODE,
                coalesce([DETAIL].ISMONEY, 0) as ISMONEY,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDPREVIOUSMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE end as ADJUSTEDFIELDPREVIOUSMONEYVALUE,
                case @CURRENCYCODE when 0 then [DETAIL].ADJUSTEDFIELDADJUSTEDMONEYVALUE when 2 then [DETAIL].TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE else [DETAIL].ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE end as ADJUSTEDFIELDADJUSTEDMONEYVALUE,
                DETAILCURRENCYPROPERTIES.ISO4217 [DETAILISOCURRENCYCODE],
                DETAILCURRENCYPROPERTIES.CURRENCYSYMBOL [DETAILCURRENCYSYMBOL],
                DETAILCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DETAILCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DETAILCURRENCYPROPERTIES.DECIMALDIGITS [DETAILDECIMALDIGITS],
                DISTRIBUTIONCURRENCYPROPERTIES.ISO4217 [DISTRIBUTIONISOCURRENCYCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.CURRENCYSYMBOL [DISTRIBUTIONCURRENCYSYMBOL],
                DISTRIBUTIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [DISTRIBUTIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                DISTRIBUTIONCURRENCYPROPERTIES.DECIMALDIGITS [DISTRIBUTIONDECIMALDIGITS]
                ,ADJUSTMENTHISTORYWRITEOFF.DATEADDED          
            from dbo.ADJUSTMENTHISTORYWRITEOFF
            left join dbo.ADJUSTMENTHISTORYWRITEOFFDETAIL as [DETAIL] on [DETAIL].ADJUSTMENTHISTORYWRITEOFFID = ADJUSTMENTHISTORYWRITEOFF.ID
            cross apply dbo.UFN_ADJUSTMENTHISTORY_GETWRITEOFFDISTRIBUTION_FORADJUSTMENTHISTORYWRITEOFFID_FORDISPLAY(ADJUSTMENTHISTORYWRITEOFF.ID) as [DISTRIBUTION]
            inner join dbo.WRITEOFFADJUSTMENT on WRITEOFFADJUSTMENT.ID = ADJUSTMENTHISTORYWRITEOFF.WRITEOFFADJUSTMENTID/*this join means this select only works for non-deleted adjustments*/
            inner join dbo.WRITEOFF on WRITEOFFADJUSTMENT.WRITEOFFID = WRITEOFF.ID
            inner join dbo.REVENUE on WRITEOFF.REVENUEID = REVENUE.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DISTRIBUTION].BASECURRENCYID when 2 then [DISTRIBUTION].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DISTRIBUTIONCURRENCYPROPERTIES
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then [DETAIL].BASECURRENCYID when 2 then [DETAIL].TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) DETAILCURRENCYPROPERTIES
            where REVENUE.ID = @REVENUEID

            order by
                REVENUETYPE, ADJUSTMENTDATE desc, DATEADDED desc;