USP_DATALIST_PDACCOUNTSEGMENTEVENTMAP

Returns a list of account segment values mapped to events.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@DATEFILTER tinyint IN Events
@INCLUDEINACTIVE bit IN Include inactive
@SITEID uniqueidentifier IN Site
@EVENTCATEGORYCODEID uniqueidentifier IN Category
@EVENTLOCATIONID uniqueidentifier IN Location
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SEGMENTNAMEORVALUE nvarchar(200) IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_PDACCOUNTSEGMENTEVENTMAP(
    @ID uniqueidentifier,
    @DATEFILTER tinyint = 0,
    @INCLUDEINACTIVE bit = 0,
    @SITEID uniqueidentifier = null,
    @EVENTCATEGORYCODEID uniqueidentifier = null,
    @EVENTLOCATIONID uniqueidentifier = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
  @SEGMENTNAMEORVALUE nvarchar(200) = null
    )
    as

      set nocount on;
    --sanitize the search values, adding mask chars at beginning and end so it performs a 'contains' style match
      set @SEGMENTNAMEORVALUE = dbo.UFN_TEXTSEARCH_SANITIZE(@SEGMENTNAMEORVALUE,'/',DEFAULT,DEFAULT,DEFAULT) ;

        declare @DATE datetime
        declare @STARTDATE datetime
        declare @ENDDATE datetime

        set @DATE = getdate();

        if @DATEFILTER = 0        -- all
            begin
                set @STARTDATE = null
                set @ENDDATE = null
            end

        if @DATEFILTER = 1        -- this week
            begin
                set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0)
                set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 0)
            end

        if @DATEFILTER = 2        -- this month
            begin
                set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0)
                set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 0)
            end

        if @DATEFILTER = 3        -- this quarter
            begin
                set @STARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@DATE, 0)
                set @ENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@DATE, 0)
            end

        if @DATEFILTER = 4        --this calendar year
            begin

                set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@DATE, 0)
                set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATE, 0)
            end

        set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE)

        declare @EVENTS table(ID uniqueidentifier)
        insert into @EVENTS
        select ID from dbo.EVENT T2
        where
            (
                (@INCLUDEINACTIVE = 1)
                or
                (T2.ISACTIVE = 1)
            )
        and
            (
                (@STARTDATE is null)
                or
                (T2.STARTDATE between @STARTDATE and @ENDDATE)
            )
        and
            (
                (@SITEID is null)
                or
                (T2.ID in (select EVENTID from dbo.EVENTSITE where EVENTSITE.SITEID = @SITEID))
            )
        and
            (
                (@EVENTCATEGORYCODEID is null)
                or
                (T2.EVENTCATEGORYCODEID = @EVENTCATEGORYCODEID)
            )
        and
            (
                (@EVENTLOCATIONID is null)
                or
                (T2.EVENTLOCATIONID = @EVENTLOCATIONID)
            )

    select * from (
        select
            T1.ID,
            LONGDESCRIPTION,
            T1.ID as LONGDESCRIPTIONID,
            PDACCOUNTSEGMENTVALUEID,
            T3.SHORTDESCRIPTION,
            T1.PDACCOUNTSTRUCTUREID,
            ISDEFAULT
        from dbo.PDACCOUNTSEGMENTMAPPING T1
            left join dbo.PDACCOUNTSEGMENTVALUE T3 on T1.PDACCOUNTSEGMENTVALUEID = T3.ID
        where T1.PDACCOUNTSTRUCTUREID = @ID
            and T1.ISDEFAULT = 1

        union all

        select 
            T1.ID,
            LONGDESCRIPTION,
            isnull(nullif(LONGDESCRIPTIONID,''),T1.ID ) LONGDESCRIPTIONID,
            PDACCOUNTSEGMENTVALUEID,
            T3.SHORTDESCRIPTION,
            T1.PDACCOUNTSTRUCTUREID,
            ISDEFAULT
        from dbo.PDACCOUNTSEGMENTMAPPING T1
            left join dbo.PDACCOUNTSEGMENTVALUE T3 on T1.PDACCOUNTSEGMENTVALUEID = T3.ID
            inner join @EVENTS T2 on nullif(T1.LONGDESCRIPTIONID,'') = T2.ID
        where T1.PDACCOUNTSTRUCTUREID = @ID
            and T1.ISDEFAULT = 0

        union all

        select
            NEWID(),
            V1.LONGDESCRIPTION,
            V1.LONGDESCRIPTIONID,
            null,
            null,
            V1.PDACCOUNTSTRUCTUREID,
            0
        from
            dbo.PDACCOUNTSEGMENTMAPPINGVIEW V1
            inner join @EVENTS T2 on V1.LONGDESCRIPTIONID = T2.ID
        where 
            V1.PDACCOUNTSTRUCTUREID = @ID
            and
            V1.LONGDESCRIPTIONID not in (select LONGDESCRIPTIONID from PDACCOUNTSEGMENTMAPPING where PDACCOUNTSTRUCTUREID = @ID)) ALLITEMS

    where
      (ALLITEMS.LONGDESCRIPTION like @SEGMENTNAMEORVALUE escape '/' or ALLITEMS.SHORTDESCRIPTION like @SEGMENTNAMEORVALUE escape '/')
        order by LONGDESCRIPTION