UFN_ADJUSTMENTHISTORY_STREAMSCHANGED

Determines if streams have changed for an adjustment.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@ADJUSTMENTHISTORYID uniqueidentifier IN
@REVENUEID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_ADJUSTMENTHISTORY_STREAMSCHANGED
            (
                @ADJUSTMENTHISTORYID uniqueidentifier,
                @REVENUEID uniqueidentifier
            )
            returns bit
            with execute as caller
            as
            begin
                declare @OLDTABLE table
                (
                    REVENUEID nvarchar(36),
                    AMOUNT money,
                    REVENUECATEGORYCODEID nvarchar(36),
          APPLICATION nvarchar(36)
                );

                declare @NEWTABLE table
                (
                    REVENUEID nvarchar(36),
                    AMOUNT money,
                    REVENUECATEGORYCODEID nvarchar(36),
          APPLICATION nvarchar(36)
                );

                declare @STREAMSCHANGED bit;
                declare @NEWCOUNT int;
                declare @OLDCOUNT int;

                set @STREAMSCHANGED = 0;

                insert into @OLDTABLE
                    select 
                        REVENUEIDENTIFIER,
                        AMOUNT,
                        REVENUECATEGORYCODEIDENTIFIER,
            APPLICATION
                    from dbo.ADJUSTMENTHISTORYREVENUE
                    where ADJUSTMENTHISTORYID = @ADJUSTMENTHISTORYID;

                insert into @NEWTABLE
                    select
                        cast(FINANCIALTRANSACTION.ID as nvarchar(36)),
                        FINANCIALTRANSACTION.BASEAMOUNT,
                        case when REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID is null then '00000000-0000-0000-0000-000000000000' else cast(REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID as nvarchar(36)) end,
                      APPLICATION
                    from dbo.FINANCIALTRANSACTION
                    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    left join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = FINANCIALTRANSACTIONLINEITEM.ID
                    where FINANCIALTRANSACTION.ID = @REVENUEID --and TRANSACTIONTYPECODE <> 0;

                        and FINANCIALTRANSACTION.DELETEDON is null
                        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                        and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1

                select @NEWCOUNT = count(REVENUEID) from @NEWTABLE;
                select @OLDCOUNT = count(REVENUEID) from @OLDTABLE;

                if @NEWCOUNT <> @OLDCOUNT 
                    set @STREAMSCHANGED = 1;

                if @STREAMSCHANGED = 0 
                begin
                    select @NEWCOUNT = count([NEW].REVENUEID)
                    from @NEWTABLE as [NEW]
                    inner join @OLDTABLE as [OLD
                        on [OLD].AMOUNT = [NEW].AMOUNT
                        and [OLD].REVENUECATEGORYCODEID = [NEW].REVENUECATEGORYCODEID
                        and ([NEW].REVENUEID = [OLD].REVENUEID or ([NEW].REVENUEID is null and [OLD].REVENUEID is null))
            and [NEW].APPLICATION = [OLD].APPLICATION;

                    if @NEWCOUNT <> @OLDCOUNT
                        set @STREAMSCHANGED = 1;
                end

                return @STREAMSCHANGED;
            end