UFN_ADJUSTMENTHISTORY_SPLITSCHANGED

Determines if splits have changed for an adjustment.

Return

Return Type
bit

Parameters

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

Definition

Copy


            CREATE function dbo.UFN_ADJUSTMENTHISTORY_SPLITSCHANGED
            (
                @REVENUEID uniqueidentifier,
                @ADJUSTMENTHISTORYID uniqueidentifier = null
            )
            returns bit
            with execute as caller
            as
            begin
                declare @SPLITSCHANGED bit;
                set @SPLITSCHANGED = 0;

                declare @SPLITSCOUNT int;

                declare @SPLITSTABLE table
                (
                    ID uniqueidentifier,
                    AMOUNT money,
                    DESIGNATIONID nvarchar(36)
                );

                declare @NEWSPLITSTABLE table
                ( 
                    ID uniqueidentifier,
                    AMOUNT money,
                    DESIGNATIONID nvarchar(36
                );

                insert into @SPLITSTABLE(ID, AMOUNT, DESIGNATIONID)
                    select
                        ID,
                        AMOUNT,
                        DESIGNATIONIDENTIFIER
                    from dbo.ADJUSTMENTHISTORYSPLIT
                    where REVENUEIDENTIFIER = cast(@REVENUEID as nvarchar(36))
                        and (@ADJUSTMENTHISTORYID is null or ADJUSTMENTHISTORYSPLIT.ADJUSTMENTHISTORYID = @ADJUSTMENTHISTORYID);

                insert into @NEWSPLITSTABLE(ID, AMOUNT, DESIGNATIONID)
                    select
                        [SPLITS].ID,
                        [SPLITS].AMOUNT,
                        cast([SPLITS].DESIGNATIONID as nvarchar(36))
                    from dbo.REVENUESPLIT as [SPLITS]
                    where [SPLITS].REVENUEID = @REVENUEID

                select @SPLITSCOUNT = count(ID) from @SPLITSTABLE;
                if @SPLITSCOUNT <> (select count(ID) from @NEWSPLITSTABLE)
                    set @SPLITSCHANGED = 1;

                if @SPLITSCHANGED = 0
                begin
                    select @SPLITSCOUNT = count([NEW].ID)
                    from @NEWSPLITSTABLE as [NEW]
                    inner join @SPLITSTABLE as [OLD]
                        on [NEW].AMOUNT = [OLD].AMOUNT
                           and [NEW].DESIGNATIONID = [OLD].DESIGNATIONID or ([NEW].DESIGNATIONID = null and [OLD].DESIGNATIONID = null);

                    if @SPLITSCOUNT <> (select count(ID) from @NEWSPLITSTABLE)
                        set @SPLITSCHANGED = 1;

                end

                return @SPLITSCHANGED;
            end