UFN_CHECKDETAIL_AUCTIONPURCHASESCHANGED

Determines if the auction purchases have changed for a revenue record.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@REVENUESTREAMS xml IN

Definition

Copy


            create function dbo.UFN_CHECKDETAIL_AUCTIONPURCHASESCHANGED
            (
                @REVENUEID uniqueidentifier,
                @REVENUESTREAMS xml
            )
            returns bit
            with execute as caller
            as begin

                declare @OLDPURCHASES table 
                (
                    ID uniqueidentifier, 
                    APPLICATIONID uniqueidentifier, 
                    APPLIED money,
                    APPLICATIONCODE tinyint
                );

                declare @UPDATEDPURCHASES table 
                (
                    ID uniqueidentifier, 
                    APPLICATIONID uniqueidentifier, 
                    APPLIED money,
                    APPLICATIONCODE tinyint
                );

                declare @STREAMCOUNT int
                declare @CHANGED as bit
                set @CHANGED = 0;

                insert into @OLDPURCHASES
                    select ID, APPLICATIONID, APPLIED, APPLICATIONCODE
                    from dbo.UFN_REVENUE_GETAPPLICATIONS(@REVENUEID)
                    where APPLICATIONCODE = 12;

                insert into @UPDATEDPURCHASES
                    select ID, APPLICATIONID, APPLIED, APPLICATIONCODE
                    from dbo.UFN_REVENUE_GETAPPLICATIONS_FROMXML(@REVENUESTREAMS)
                    where APPLICATIONCODE = 12;

                select @STREAMCOUNT = count(ID) from @OLDPURCHASES;

                if @STREAMCOUNT <> (select count(*) from @UPDATEDPURCHASES
                    set @CHANGED = 1;

                if @CHANGED = 0
                begin
                    select @STREAMCOUNT = count([NEW].ID)
                    from @UPDATEDPURCHASES as [NEW
                    inner join @OLDPURCHASES as [OLD] on [OLD].ID = [NEW].ID 
                    where ([NEW].APPLICATIONID = [OLD].APPLICATIONID
                            or [NEW].APPLICATIONID is null and [OLD].APPLICATIONID is null)
                        and [NEW].APPLIED = [OLD].APPLIED
                        and [NEW].APPLICATIONCODE = [OLD].APPLICATIONCODE

                    if @STREAMCOUNT <> (select count(ID) from @UPDATEDPURCHASES)
                        set @CHANGED = 1;
                end

                return @CHANGED;

            end