USP_REPORT_AUCTIONCOMPARISON

Retrieves the information needed to compare auction statistics.

Parameters

Parameter Parameter Type Mode Description
@AUCTIONID1 uniqueidentifier IN
@AUCTIONID2 uniqueidentifier IN
@IDSETREGISTERID uniqueidentifier IN
@USESELECTION bit IN
@CURRENCYCODE smallint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_AUCTIONCOMPARISON
            (
                @AUCTIONID1 as uniqueidentifier = null,
                @AUCTIONID2 as uniqueidentifier = null,
                @IDSETREGISTERID as uniqueidentifier = null,
                @USESELECTION as bit = null,
                @CURRENCYCODE smallint = null
            )
            as
            begin
                declare @AUCTIONFILTER table(ID uniqueidentifier primary key);

                if @USESELECTION = 0
                    begin
                        insert into @AUCTIONFILTER(ID) values(@AUCTIONID1)
                        insert into @AUCTIONFILTER(ID) values(@AUCTIONID2)
                    end
                else
                    insert into @AUCTIONFILTER(ID)
                    (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID))

                declare @AUCTIONRESULTS table
                (
                    AUCTIONID uniqueidentifier primary key,
                    AUCTIONNAME nvarchar(255),
                    TOTALITEMSFORBID int,
                    TOTALITEMSSOLD int,
                    TOTALFMV money,
                    TOTALPURCHASE money,
                    PROFITLOSS money,
                    ISOCURRENCYCODE nvarchar(3),
                    CURRENCYSYMBOL nvarchar(5),
                    SYMBOLDISPLAYSETTINGCODE tinyint,
                    DECIMALDIGITS tinyint,
                    SOLDFMV money
                )

                insert into @AUCTIONRESULTS(AUCTIONID, AUCTIONNAME, TOTALFMV, TOTALPURCHASE, ISOCURRENCYCODE, CURRENCYSYMBOL, SYMBOLDISPLAYSETTINGCODE, DECIMALDIGITS)
                (
                    select
                        EVENT.ID as AUCTIONID,
                        EVENT.NAME as AUCTIONNAME,
                        case @CURRENCYCODE 
                            when 2 then coalesce(sum(AUCTIONITEM.TRANSACTIONVALUE),0
                            else coalesce(sum(AUCTIONITEM.ORGANIZATIONVALUE),0)
                        end as TOTALFMV,
                        case @CURRENCYCODE 
                            when 2 then coalesce(sum([PURCHASESPLIT].TRANSACTIONAMOUNT),0
                            else coalesce(sum([PURCHASESPLIT].ORGANIZATIONAMOUNT),0)
                        end as TOTALPURCHASE,
                        CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
                        CURRENCYPROPERTIES.CURRENCYSYMBOL,
                        CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE,
                        CURRENCYPROPERTIES.DECIMALDIGITS
                    from
                        dbo.EVENT
                        left join dbo.AUCTIONITEM on AUCTIONITEM.EVENTAUCTIONID = EVENT.ID
                        left join dbo.AUCTIONITEMPURCHASE on AUCTIONITEMPURCHASE.AUCTIONITEMID = AUCTIONITEM.ID
                        left join dbo.REVENUESPLIT [PURCHASESPLIT] on AUCTIONITEMPURCHASE.PURCHASEID = [PURCHASESPLIT].ID
                        outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 2 then AUCTIONITEM.TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) CURRENCYPROPERTIES
                    where
                        exists(select 1 from @AUCTIONFILTER where ID = EVENT.ID)
                    group by
                        EVENT.ID, EVENT.NAME, CURRENCYPROPERTIES.ISO4217, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, CURRENCYPROPERTIES.DECIMALDIGITS
                )

                update @AUCTIONRESULTS
                set TOTALITEMSFORBID = 
                        (
                            select count(AUCTIONITEM.ID)
                            from dbo.AUCTIONITEM
                            where AUCTIONITEM.EVENTAUCTIONID = AUCTIONID and AUCTIONITEM.PACKAGEID is null
                        )

                update @AUCTIONRESULTS
                set 
                    TOTALITEMSSOLD = 
                        (    --JamesWill WI162777 2011-06-17 Don't count items in a package since packages are counted as a single unit, no matter how many items are in them 

                            select count(AUCTIONITEM.ID)
                            from dbo.AUCTIONITEM 
                            inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEMPURCHASE.AUCTIONITEMID = AUCTIONITEM.ID
                            where AUCTIONITEM.EVENTAUCTIONID = AUCTIONID 
                                and AUCTIONITEMPURCHASE.PURCHASEID is not null
                                and AUCTIONITEM.PACKAGEID is null
                        ) + 
                        (    --JamesWill WI162777 2011-06-17 Count individual packages that were sold by looking for items in packages that were sold. Fortunately,

                            --we do not support partially selling packages, so this works. 

                            select count(distinct AUCTIONITEM.PACKAGEID) 
                            from dbo.AUCTIONITEM 
                            inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEMPURCHASE.AUCTIONITEMID = AUCTIONITEM.ID
                            where AUCTIONITEM.EVENTAUCTIONID = AUCTIONID 
                                and AUCTIONITEMPURCHASE.PURCHASEID is not null
                                and AUCTIONITEM.PACKAGEID is not null
                        ),
                    SOLDFMV = 
                        (
                            --JamesWill WI162777 2011-06-17 The FMV of a package is the sum of the FMVs of its items, so don't need to count packages separately here

                            select sum(    case @CURRENCYCODE when 2 then coalesce(AUCTIONITEM.TRANSACTIONVALUE,0)  
                                        else coalesce(AUCTIONITEM.ORGANIZATIONVALUE,0) end 
                                      )
                            from dbo.AUCTIONITEM 
                            inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEMPURCHASE.AUCTIONITEMID = AUCTIONITEM.ID
                            where AUCTIONITEM.EVENTAUCTIONID = AUCTIONID 
                                and AUCTIONITEMPURCHASE.PURCHASEID is not null        
                        ) 

                update @AUCTIONRESULTS
                set PROFITLOSS = coalesce(TOTALPURCHASE - SOLDFMV,0) --JamesWill WI162777 2011-06-17 Don't consider items not sold as part of the loss


                select 
                    AUCTIONID,
                    AUCTIONNAME,
                    TOTALITEMSFORBID,
                    TOTALITEMSSOLD,
                    TOTALFMV,
                    TOTALPURCHASE,
                    PROFITLOSS,
                    ISOCURRENCYCODE,
                    CURRENCYSYMBOL,
                    SYMBOLDISPLAYSETTINGCODE,
                    DECIMALDIGITS 
                from @AUCTIONRESULTS order by AUCTIONNAME

            end