USP_DATALIST_APPEALBENEFITS

This datalist returns all benefits for a given appeal

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_APPEALBENEFITS (@ID uniqueidentifier)
                as begin
                set nocount on;

                --power() function returns the same number of decimal digits as the first parameter has, using a number with the maximum decimal digits a money type can have

                declare @LEASTSIGNIFICANTAMOUNT money;
                select @LEASTSIGNIFICANTAMOUNT = power(10.0000,-CURRENCY.DECIMALDIGITS)
                    from dbo.APPEAL
                        left join dbo.CURRENCY on CURRENCY.ID = APPEAL.BASECURRENCYID
                    where APPEAL.ID = @ID;

                select
                    APPEALBENEFIT.ID,
                    ROW_NUMBER() OVER(Order by APPEALBENEFIT.AMOUNT) LEVEL,
                    APPEALBENEFIT.AMOUNT,
                    (select top (1) (NEXTAPPEALBENEFITLEVEL.AMOUNT - @LEASTSIGNIFICANTAMOUNT
                        from dbo.APPEALBENEFIT NEXTAPPEALBENEFITLEVEL
                        where NEXTAPPEALBENEFITLEVEL.APPEALID = @ID 
                            and NEXTAPPEALBENEFITLEVEL.AMOUNT > APPEALBENEFIT.AMOUNT
                        order by NEXTAPPEALBENEFITLEVEL.AMOUNT asc) MAXAMOUNT,
                    dbo.UDA_BUILDLIST(BENEFIT.NAME) BENEFITLIST, 
                    APPEALBENEFIT.BASECURRENCYID
                from
                    dbo.APPEALBENEFIT
                    left join dbo.APPEALBENEFITDETAIL on APPEALBENEFIT.ID = APPEALBENEFITDETAIL.APPEALBENEFITID
                    left join dbo.BENEFIT on APPEALBENEFITDETAIL.BENEFITID = BENEFIT.ID
                where
                    APPEALID = @ID
                group by APPEALBENEFIT.ID, APPEALBENEFIT.AMOUNT, APPEALBENEFIT.BASECURRENCYID
                order by
                    AMOUNT;
                end