USP_DATALIST_BENEFITS

This datalist returns all benefits.

Parameters

Parameter Parameter Type Mode Description
@NAME nvarchar(100) IN Name
@BENEFITCATEGORYCODEID uniqueidentifier IN Category
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_BENEFITS 
                (
                    @NAME nvarchar(100) = null,
                    @BENEFITCATEGORYCODEID uniqueidentifier = null,
                    @CURRENTAPPUSERID uniqueidentifier = null,
                    @SITEFILTERMODE tinyint = 0,
                    @SITESSELECTED xml = null,
                    @SECURITYFEATUREID uniqueidentifier = null,
                    @SECURITYFEATURETYPE tinyint = null
                )
                as
                    set nocount on;

                    set @NAME = coalesce(@NAME, '')

                    declare @BENEFITS table (
                        ID uniqueidentifier, 
                        NAME nvarchar(100), 
                        BENEFITCATEGORY_TRANSLATION nvarchar(100), 
                        DESCRIPTION nvarchar(255),
                        VALUE money,
                        SENDBENEFIT nvarchar(20),
                        VALUEPERCENT decimal(20,2),
                        SITES nvarchar(max),
                        BASECURRENCYID uniqueidentifier,
                        BENEFITAPPLIED bit
                    )

                    insert into @BENEFITS
                    select distinct BENEFIT.ID,
                            BENEFIT.NAME,
                            CATEGORY.DESCRIPTION as BENEFITCATEGORY_TRANSLATION,
                            BENEFIT.DESCRIPTION,
                            case when BENEFIT.USEPERCENT=1 then null else BENEFIT.VALUE end as VALUE,
                            BENEFIT.SENDBENEFIT,
                            case when BENEFIT.USEPERCENT=1 then BENEFIT.VALUEPERCENT else null end as VALUEPERCENT,
                            (
                                select dbo.UDA_BUILDLIST(SITE.NAME)
                                from dbo.SITE
                                    inner join dbo.BENEFITSITE on BENEFITSITE.SITEID = SITE.ID
                                where BENEFITSITE.BENEFITID = BENEFIT.ID
                            ) as SITES,
                            BENEFIT.BASECURRENCYID,
                            0 as BENEFITAPPLIED
                    from dbo.BENEFIT
                    left join dbo.BENEFITCATEGORYCODE CATEGORY on BENEFIT.BENEFITCATEGORYCODEID = CATEGORY.ID
                    left join dbo.BENEFITSITE on BENEFITSITE.BENEFITID = BENEFIT.ID
                    where 
                        (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[BENEFITSITE].[SITEID] or (SITEID is null and [BENEFITSITE].[SITEID] is null))) and
                        (@SITEFILTERMODE = 0 or 
                            BENEFITSITE.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
                        ) and
                        ((BENEFIT.BENEFITCATEGORYCODEID = @BENEFITCATEGORYCODEID or @BENEFITCATEGORYCODEID is null) and
                        (@NAME = '' or BENEFIT.NAME like @NAME + '%'))
                    order by CATEGORY.DESCRIPTION asc, BENEFIT.NAME asc

                    update @BENEFITS
                    set BENEFITAPPLIED = 1
                    where ID in (
                        select BENEFITID 
                        from dbo.EVENTPRICEBENEFIT
                    )

                    update @BENEFITS
                    set BENEFITAPPLIED = 1
                    where BENEFITAPPLIED = 0 and ID in (
                        select BENEFITID 
                        from dbo.REGISTRANTBENEFIT
                    )

                    update @BENEFITS
                    set BENEFITAPPLIED = 1
                    where BENEFITAPPLIED = 0 and ID in (
                        select BENEFITID 
                        from dbo.MEMBERSHIPLEVELBENEFIT
                    )

                    update @BENEFITS
                    set BENEFITAPPLIED = 1
                    where BENEFITAPPLIED = 0 and ID in (
                        select REVENUEBENEFIT_EXT.BENEFITID 
                        from dbo.FINANCIALTRANSACTIONLINEITEM
                        inner join dbo.REVENUEBENEFIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUEBENEFIT_EXT.ID
                        where FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                    )

                    select
                        ID, 
                        NAME, 
                        BENEFITCATEGORY_TRANSLATION, 
                        DESCRIPTION,
                        VALUE,
                        SENDBENEFIT,
                        VALUEPERCENT,
                        SITES,
                        BASECURRENCYID,
                        BENEFITAPPLIED
                    from @BENEFITS