UFN_REVENUE_GETCHANGEDORDELETEDAUCTIONPURCHASES

Compares the old auction purchase collection to the new revenue splits to see which items have been affected.

Return

Return Type
table

Parameters

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

Definition

Copy


            create function dbo.UFN_REVENUE_GETCHANGEDORDELETEDAUCTIONPURCHASES
            (
                @REVENUEID uniqueidentifier,
                @OLDAUCTIONPURCHASES xml
            )
            returns @AUCTIONITEMS table
            (
                AUCTIONITEMID uniqueidentifier,
                REVENUEAUCTIONDONATIONID uniqueidentifier,
                DONOTPOST bit
            )
            with execute as caller
            as begin

                declare @OLDPURCHASES table
                (
                    AUCTIONITEMID uniqueidentifier,
                    REVENUEAUCTIONDONATIONID uniqueidentifier,
                    PURCHASEID uniqueidentifier,
                    AMOUNT money
                )

                insert into @OLDPURCHASES(AUCTIONITEMID,REVENUEAUCTIONDONATIONID,PURCHASEID,AMOUNT)
                    select 
                        T.c.value('(AUCTIONITEMID)[1]','uniqueidentifier'), 
                        T.c.value('(REVENUEAUCTIONDONATIONID)[1]','uniqueidentifier'), 
                        T.c.value('(REVENUESPLITID)[1]','uniqueidentifier'), 
                        T.c.value('(AMOUNT)[1]','money')
                    from @OLDAUCTIONPURCHASES.nodes('/AUCTIONPURCHASES/ITEM') T(c)

                declare @NEWPURCHASES table
                (
                    AUCTIONITEMID uniqueidentifier,
                    REVENUEAUCTIONDONATIONID uniqueidentifier,
                    PURCHASEID uniqueidentifier,
                    AMOUNT money
                )

                insert into @NEWPURCHASES(AUCTIONITEMID,REVENUEAUCTIONDONATIONID,PURCHASEID,AMOUNT)
                    select
                        AUCTIONITEM.ID,
                        AUCTIONITEM.REVENUEAUCTIONDONATIONID,
                        REVENUESPLIT.ID,
                        REVENUESPLIT.AMOUNT
                    from 
                        dbo.AUCTIONITEM 
                        inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEM.ID = AUCTIONITEMPURCHASE.AUCTIONITEMID
                        inner join dbo.REVENUESPLIT on AUCTIONITEMPURCHASE.PURCHASEID = REVENUESPLIT.ID
                    where REVENUESPLIT.REVENUEID = @REVENUEID

                --Find items that are no longer being purchased

                insert into @AUCTIONITEMS(AUCTIONITEMID,REVENUEAUCTIONDONATIONID)
                    select OLDPURCHASES.AUCTIONITEMID,OLDPURCHASES.REVENUEAUCTIONDONATIONID
                    from @OLDPURCHASES OLDPURCHASES
                    left join @NEWPURCHASES NEWPURCHASES on OLDPURCHASES.AUCTIONITEMID = NEWPURCHASES.AUCTIONITEMID
                    where NEWPURCHASES.AUCTIONITEMID is null

                --Find items where the amount changed

                insert into @AUCTIONITEMS(AUCTIONITEMID,REVENUEAUCTIONDONATIONID)
                    select OLDPURCHASES.AUCTIONITEMID,OLDPURCHASES.REVENUEAUCTIONDONATIONID
                    from @OLDPURCHASES OLDPURCHASES inner join @NEWPURCHASES NEWPURCHASES on OLDPURCHASES.AUCTIONITEMID = NEWPURCHASES.AUCTIONITEMID
                    where OLDPURCHASES.AMOUNT <> NEWPURCHASES.AMOUNT

                --Find items that were added to the payment

                insert into @AUCTIONITEMS(AUCTIONITEMID,REVENUEAUCTIONDONATIONID)
                    select NEWPURCHASES.AUCTIONITEMID,NEWPURCHASES.REVENUEAUCTIONDONATIONID
                    from @NEWPURCHASES NEWPURCHASES
                    left join @OLDPURCHASES OLDPURCHASES on NEWPURCHASES.AUCTIONITEMID = OLDPURCHASES.AUCTIONITEMID
                    where OLDPURCHASES.AUCTIONITEMID is null

                update @AUCTIONITEMS
                set DONOTPOST = REVENUE.DONOTPOST
                from @AUCTIONITEMS AUCTIONITEMS
                inner join dbo.REVENUE on AUCTIONITEMS.REVENUEAUCTIONDONATIONID = REVENUE.ID

                return
            end