USP_DATALIST_ORGANIZATION_CALENDAR

Returns all items on the organization calendar as a datalist.

Parameters

Parameter Parameter Type Mode Description
@ITEMTYPE tinyint IN Type
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date

Definition

Copy


        CREATE procedure dbo.USP_DATALIST_ORGANIZATION_CALENDAR(
        @ITEMTYPE tinyint = 0,
        @STARTDATE datetime = null,
        @ENDDATE datetime = null
        )
        as

        set nocount on;

        declare @CURRENTDATE date;
        set @CURRENTDATE = getdate();

        if @ITEMTYPE = 0 --Appeal mailings

          begin
              select
                  MKTSEGMENTATION.ID,
              null as PARENTID,
                  MKTSEGMENTATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                  MKTSEGMENTATION.NAME,
              'Appeal mailing' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.MKTSEGMENTATION
              left outer join
                  dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
            left join 
              dbo.CHANGEAGENT on MKTSEGMENTATION.ADDEDBYID = CHANGEAGENT.ID
              where
                  ( (APPEALMAILING.ID is not null) )
                  and (MKTSEGMENTATION.MAILDATE is not null)
                  and
                  (
                      ( (MKTSEGMENTATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (MKTSEGMENTATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (MKTSEGMENTATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )

              union all

              select
                  APPEALMAILINGTASK.SEGMENTATIONID,
              null as PARENTID,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) as STARTDATE,
              null as ENDDATE,
                  APPEALMAILINGTASK.SUBJECT as NAME,
              'Appeal mailing task' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              1 as TYPECODE
              from
                  dbo.APPEALMAILINGTASK
              inner join
                  dbo.MKTSEGMENTATION on MKTSEGMENTATION.ID = APPEALMAILINGTASK.SEGMENTATIONID
              left outer join
                  dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
            left join 
              dbo.CHANGEAGENT on APPEALMAILINGTASK.ADDEDBYID = CHANGEAGENT.ID
              where
                  (APPEALMAILINGTASK.DATEDUE <> '00000000')
                  and
                  (
                      ( (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )
            order by STARTDATE
          end

        else if @ITEMTYPE = 1 --Calendar items

          begin
              select
                  CALENDARITEM.ID,
              null as PARENTID,
                  CALENDARITEM.STARTDATE,
                  CALENDARITEM.ENDDATE,
                  CALENDARITEM.NAME,
              'Calendar item' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.CALENDARITEM
            left join 
              dbo.CHANGEAGENT on CALENDARITEM.ADDEDBYID = CHANGEAGENT.ID
                        where
                            (
                                ( (CALENDARITEM.STARTDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                                or ( (CALENDARITEM.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                                or ( (CALENDARITEM.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                                or ( (CALENDARITEM.ENDDATE between @STARTDATE and @ENDDATE))
                                or ( (CALENDARITEM.STARTDATE <= @STARTDATE) and (CALENDARITEM.ENDDATE >= @ENDDATE or @ENDDATE is null))
                                or ( (CALENDARITEM.STARTDATE <= @ENDDATE) and (@STARTDATE is null))
                            )
                        order by STARTDATE
          end

        else if @ITEMTYPE = 2 --Events and invitations

          begin
                select --Events

                    EVENT.ID,
              null as PARENTID,
                    EVENT.STARTDATE,
                    EVENT.ENDDATE,                        
                    EVENT.NAME,
              'Event' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                from 
                    dbo.EVENT 
                left outer join 
              dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = EVENT.ID
            left join 
              dbo.CHANGEAGENT on EVENT.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        (@STARTDATE is null and @ENDDATE is null)
                        or ((@STARTDATE is not null and @ENDDATE is not null) and (EVENT.STARTDATE <= @ENDDATE and @STARTDATE <= EVENT.ENDDATE))
                        or ( (EVENT.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                or ( (EVENT.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                or ( (EVENT.STARTDATE <= @ENDDATE) and (@STARTDATE is null) )
                or ( (EVENT.ENDDATE >= @STARTDATE) and (@ENDDATE is null) )
                            )
                    and EVENT.ISACTIVE = 1
                    and EVENT.PROGRAMID is null

            union all

            select --Invitations

                    INVITATION.ID,
              INVITATION.EVENTID as PARENTID,
                    INVITATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                    INVITATION.NAME,
              'Event invitation' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                from
                    dbo.INVITATION
                inner join
                    dbo.EVENT on EVENT.ID = INVITATION.EVENTID
                left outer join
                    dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = EVENT.ID
            left join 
                dbo.CHANGEAGENT on INVITATION.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        ( (INVITATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                        or ( (INVITATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (INVITATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                    )
                    and EVENT.ISACTIVE = 1
                    and EVENT.PROGRAMID is null
            order by STARTDATE
          end

       else if @ITEMTYPE = 3 --Marketing efforts

          begin
              select
                  MKTSEGMENTATION.ID,
              null as PARENTID,
                  MKTSEGMENTATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                  MKTSEGMENTATION.NAME,
              'Marketing effort' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.MKTSEGMENTATION
            left join 
              dbo.CHANGEAGENT on MKTSEGMENTATION.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      ( (MKTSEGMENTATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (MKTSEGMENTATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (MKTSEGMENTATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )
                  and (MKTSEGMENTATION.ID not in (select ID from dbo.APPEALMAILING))
            order by STARTDATE
          end

         else if @ITEMTYPE = 4 --Plan activities

          begin
              select
                  M.ID,
              M.PARENTMARKETINGPLANITEMID PARENTID,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.STARTDATE) as STARTDATE,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE) as ENDDATE,
                  M.NAME,
              'Plan activity' as TYPE,
  CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEM] M
              left join
                  dbo.MKTMARKETINGPLANITEMTEMPLATEITEM on (M.MARKETINGPLANID=MKTMARKETINGPLANITEMTEMPLATEITEM.MARKETINGPLANID and M.LEVEL=MKTMARKETINGPLANITEMTEMPLATEITEM.LEVEL)
              left join
                  dbo.MKTMARKETINGPLANITEM on MKTMARKETINGPLANITEM.ID = M.[PARENTMARKETINGPLANITEMID]
            left join 
              dbo.CHANGEAGENT on M.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      (@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is null) and (dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.STARTDATE) >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE))
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE and (@STARTDATE <= dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE))))
                or ((dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE) and (@STARTDATE is null))
                or ((dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE) >= @STARTDATE) and (@ENDDATE is null))
                  )

              union all

              select
                  MKTMARKETINGPLANITEMTASK.ID,
              MKTMARKETINGPLANITEMTASK.MARKETINGPLANITEMID PARENTID,
                  MKTMARKETINGPLANITEMTASK.DUEDATE as STARTDATE,
                  null as ENDDATE,
                  MKTMARKETINGPLANITEMTASK.SUBJECT as NAME,
              'Plan activity task' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              1 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEMTASK]
              inner join
                  dbo.[MKTMARKETINGPLANITEM] M on (M.[ID]=MKTMARKETINGPLANITEMTASK.[MARKETINGPLANITEMID])
            left join 
              dbo.CHANGEAGENT on MKTMARKETINGPLANITEMTASK.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      (@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (dbo.UFN_DATE_FROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) between @STARTDATE and @ENDDATE))
                      or ((@ENDDATE is null and @STARTDATE is not null) and (dbo.UFN_DATE_LATESTFROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) <= @ENDDATE))
                  )

              union all

              select 
                  MKTMARKETINGPLANITEM.ID,
              MKTMARKETINGPLANITEM.PARENTMARKETINGPLANITEMID PARENTID,
                  convert(nvarchar(8),MKTMARKETINGPLANITEM.[MAILDATE],112) as STARTDATE,
                  convert(nvarchar(8),MKTMARKETINGPLANITEM.[MAILDATE],112) as ENDDATE,
                  MKTMARKETINGPLANITEM.NAME + ' - Mail date' as NAME,
              'Plan activity' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEM]
              left join
                  dbo.MKTMARKETINGPLANITEMTEMPLATEITEM on (MKTMARKETINGPLANITEM.MARKETINGPLANID=MKTMARKETINGPLANITEMTEMPLATEITEM.MARKETINGPLANID and MKTMARKETINGPLANITEM.LEVEL=MKTMARKETINGPLANITEMTEMPLATEITEM.LEVEL)
            left join 
              dbo.CHANGEAGENT on MKTMARKETINGPLANITEM.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      ((@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is null) and (MAILDATE >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (MAILDATE <= @ENDDATE))
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (MAILDATE <= @ENDDATE and (@STARTDATE <= MAILDATE ))))
                      and MKTMARKETINGPLANITEM.MAILDATE is not null
                  )
            order by STARTDATE
          end

        else if @ITEMTYPE = 5 --Programs

          begin
                select 
                    EVENT.ID as [ID],
                    null as PARENTID,
                    EVENT.STARTDATE,
                    EVENT.ENDDATE,
                    EVENT.NAME,
                    'Program event' as TYPE,
                    CHANGEAGENT.USERNAME as CREATEDBY,
                    0 as TYPECODE
                from 
                    dbo.EVENT                    
                    left join dbo.CHANGEAGENT on EVENT.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        (@STARTDATE is null and @ENDDATE is null)
                        or ((@STARTDATE is not null and @ENDDATE is not null) and (EVENT.STARTDATE <= @ENDDATE and @STARTDATE <= EVENT.ENDDATE))
                        or ( (EVENT.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (EVENT.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                or ( (EVENT.STARTDATE <= @ENDDATE) and (@STARTDATE is null) )
                or ( (EVENT.ENDDATE >= @STARTDATE) and (@ENDDATE is null) )
                    )
                    and
                    EVENT.PROGRAMID is not null
                order by 
                    STARTDATE
          end

        else if @ITEMTYPE = 6 --Reservations

          begin
                        select RESERVATION.ID,
              null as PARENTID,
                            ARRIVALDATE as STARTDATE,
                            isnull((select top 1 ITINERARYITEM.ENDDATE
                                    from dbo.ITINERARYITEM
                                    inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                    where ITINERARY.RESERVATIONID = RESERVATION.ID
                                    order by ENDDATE desc), ARRIVALDATE) ENDDATE,
                            NAME,
              'Reservation' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                        from dbo.RESERVATION
                        inner join 
              dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
            left join 
              dbo.CHANGEAGENT on RESERVATION.ADDEDBYID = CHANGEAGENT.ID
                        where    
                            (STATUSCODE <> 1 and STATUSCODE <> 5)
                            and (
                        ( (ARRIVALDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                        or ( (ARRIVALDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (ARRIVALDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  or ( isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) between @STARTDATE and @ENDDATE)
                  or ( (isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) <=@ENDDATE) and (@STARTDATE is null))
                  or ( (isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) >= @STARTDATE) and (@ENDDATE is null))
                  )
            order by STARTDATE
          end

        else -- All items

          begin
              select
                  MKTSEGMENTATION.ID,
              null as PARENTID,
                  MKTSEGMENTATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                  MKTSEGMENTATION.NAME,
              'Appeal mailing' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.MKTSEGMENTATION
              left outer join
                  dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
            left join 
              dbo.CHANGEAGENT on MKTSEGMENTATION.ADDEDBYID = CHANGEAGENT.ID
              where
                  ( (APPEALMAILING.ID is not null) )
                  and (MKTSEGMENTATION.MAILDATE is not null)
                  and
                  (
                      ( (MKTSEGMENTATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (MKTSEGMENTATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (MKTSEGMENTATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )

              union all

              select
                  APPEALMAILINGTASK.SEGMENTATIONID,
              null as PARENTID,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) as STARTDATE,
              null as ENDDATE,
                  APPEALMAILINGTASK.SUBJECT as NAME,
              'Appeal mailing task' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              1 as TYPECODE
              from
                  dbo.APPEALMAILINGTASK
              inner join
                  dbo.MKTSEGMENTATION on MKTSEGMENTATION.ID = APPEALMAILINGTASK.SEGMENTATIONID
              left outer join
                  dbo.APPEALMAILING on APPEALMAILING.ID = MKTSEGMENTATION.ID
            left join 
              dbo.CHANGEAGENT on APPEALMAILINGTASK.ADDEDBYID = CHANGEAGENT.ID
              where
                  (APPEALMAILINGTASK.DATEDUE <> '00000000')
                  and
                  (
                      ( (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (dbo.UFN_DATE_LATESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(APPEALMAILINGTASK.DATEDUE) <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )

            union all

            select
                    EVENT.ID,
              null as PARENTID,
                    EVENT.STARTDATE,
                    EVENT.ENDDATE,                        
                    EVENT.NAME,
              'Event' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                from 
                    dbo.EVENT 
                left outer join 
              dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = EVENT.ID
            left join 
              dbo.CHANGEAGENT on EVENT.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        (@STARTDATE is null and @ENDDATE is null)
                        or ((@STARTDATE is not null and @ENDDATE is not null) and (EVENT.STARTDATE <= @ENDDATE and @STARTDATE <= EVENT.ENDDATE))
                        or ( (EVENT.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (EVENT.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                or ( (EVENT.STARTDATE <= @ENDDATE) and (@STARTDATE is null) )
                or ( (EVENT.ENDDATE >= @STARTDATE) and (@ENDDATE is null) )
                    )
                    and EVENT.ISACTIVE = 1
                    and EVENT.PROGRAMID is null

            union all

            select
                    INVITATION.ID,
              INVITATION.EVENTID as PARENTID,
                    INVITATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                    INVITATION.NAME,
              'Event invitation' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                from
                    dbo.INVITATION
                inner join
                    dbo.EVENT on EVENT.ID = INVITATION.EVENTID
                left outer join
                    dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = EVENT.ID
            left join 
      dbo.CHANGEAGENT on INVITATION.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        ( (INVITATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                        or ( (INVITATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (INVITATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                    )
                    and EVENT.ISACTIVE = 1
                    and EVENT.PROGRAMID is null

            union all

                select 
                    EVENT.ID as [ID],
                    null as PARENTID,
                    EVENT.STARTDATE,
                    EVENT.ENDDATE,
                    EVENT.NAME,
                    'Program event' as TYPE,
                    CHANGEAGENT.USERNAME as CREATEDBY,
                    0 as TYPECODE
                from 
                    dbo.EVENT                      
                    left join dbo.CHANGEAGENT on EVENT.ADDEDBYID = CHANGEAGENT.ID
                where
                    (
                        (@STARTDATE is null and @ENDDATE is null)
                        or ((@STARTDATE is not null and @ENDDATE is not null) and (EVENT.STARTDATE <= @ENDDATE and @STARTDATE <= EVENT.ENDDATE))
                        or ( (EVENT.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (EVENT.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                or ( (EVENT.STARTDATE <= @ENDDATE) and (@STARTDATE is null) )
                or ( (EVENT.ENDDATE >= @STARTDATE) and (@ENDDATE is null) )
                    )
                    and    EVENT.PROGRAMID is not null
                    and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('bb1c17bc-9e0b-4683-b490-ee40d511fa05') = 1)

                        union all

                        select 
              RESERVATION.ID,
              null as PARENTID,
                            ARRIVALDATE as STARTDATE,
                            isnull((select top 1 ITINERARYITEM.ENDDATE
                                    from dbo.ITINERARYITEM
                                    inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                    where ITINERARY.RESERVATIONID = RESERVATION.ID
                                    order by ENDDATE desc), ARRIVALDATE) ENDDATE,
                            NAME,
              'Reservation' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
                        from dbo.RESERVATION
                        inner join 
              dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
            left join 
              dbo.CHANGEAGENT on RESERVATION.ADDEDBYID = CHANGEAGENT.ID
                        where
                            (STATUSCODE <> 1 and STATUSCODE <> 5)
                            and (
                        ( (ARRIVALDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                        or ( (ARRIVALDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                        or ( (ARRIVALDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  or ( isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) between @STARTDATE and @ENDDATE)
                  or ( (isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) <=@ENDDATE) and (@STARTDATE is null))
                  or ( (isnull((select top 1 ITINERARYITEM.ENDDATE
                                from dbo.ITINERARYITEM
                                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                                where ITINERARY.RESERVATIONID = RESERVATION.ID
                                order by ENDDATE desc), ARRIVALDATE) >= @STARTDATE) and (@ENDDATE is null))
                  )
                and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('bb1c17bc-9e0b-4683-b490-ee40d511fa05') = 1)

            union all

               select
                  CALENDARITEM.ID,
              null as PARENTID,
                  CALENDARITEM.STARTDATE,
                  CALENDARITEM.ENDDATE,
                  CALENDARITEM.NAME,
              'Calendar item' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.CALENDARITEM
            left join 
              dbo.CHANGEAGENT on CALENDARITEM.ADDEDBYID = CHANGEAGENT.ID
              where
                            (
                                ( (CALENDARITEM.STARTDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                                or ( (CALENDARITEM.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                                or ( (CALENDARITEM.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                                or ( (CALENDARITEM.ENDDATE between @STARTDATE and @ENDDATE))
                                or ( (CALENDARITEM.STARTDATE <= @STARTDATE) and (CALENDARITEM.ENDDATE >= @ENDDATE or @ENDDATE is null))
                                or ( (CALENDARITEM.STARTDATE <= @ENDDATE) and (@STARTDATE is null))
                            )

            union all

              select
                  MKTSEGMENTATION.ID,
              null as PARENTID,
                  MKTSEGMENTATION.MAILDATE as STARTDATE,
              null as ENDDATE,
                  MKTSEGMENTATION.NAME,
              'Marketing effort' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.MKTSEGMENTATION
            left join 
              dbo.CHANGEAGENT on MKTSEGMENTATION.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      ( (MKTSEGMENTATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
                      or ( (MKTSEGMENTATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
                      or ( (MKTSEGMENTATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
                  )
                  and (MKTSEGMENTATION.ID not in (select ID from dbo.APPEALMAILING))

            union all

              select
                  M.[ID],
              M.[PARENTMARKETINGPLANITEMID] PARENTID,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.STARTDATE) as STARTDATE,
                  dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE) as ENDDATE,
                  M.[NAME] as NAME,
              'Plan activity' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEM] M
              left join
                  dbo.MKTMARKETINGPLANITEMTEMPLATEITEM on (M.MARKETINGPLANID=MKTMARKETINGPLANITEMTEMPLATEITEM.MARKETINGPLANID and M.LEVEL=MKTMARKETINGPLANITEMTEMPLATEITEM.LEVEL)
              left join
                  dbo.MKTMARKETINGPLANITEM on MKTMARKETINGPLANITEM.ID = M.[PARENTMARKETINGPLANITEMID]
            left join 
              dbo.CHANGEAGENT on M.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      (@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is null) and (dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.STARTDATE) >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE))
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE and (@STARTDATE <= dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE))))
                or ((dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(M.STARTDATE) <= @ENDDATE) and (@STARTDATE is null))
                or ((dbo.UFN_DATE_LATESTFROMFUZZYDATE(M.ENDDATE) >= @STARTDATE) and (@ENDDATE is null))
                  )
              and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('bb9873d7-f1ed-430a-8ab4-f09f47056538') = 1 or
       dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('3117d2c8-7f46-42f2-abeb-b654f2f63046') = 1)


              union all

              select
                  MKTMARKETINGPLANITEMTASK.[ID],
              MKTMARKETINGPLANITEMTASK.[MARKETINGPLANITEMID] PARENTID,
                  MKTMARKETINGPLANITEMTASK.[DUEDATE] as STARTDATE,
                  null as ENDDATE,
                  MKTMARKETINGPLANITEMTASK.[SUBJECT] as NAME,
              'Plan activity task' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              1 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEMTASK]
              inner join
                  dbo.[MKTMARKETINGPLANITEM] M on (M.[ID]=MKTMARKETINGPLANITEMTASK.[MARKETINGPLANITEMID])
            left join 
              dbo.CHANGEAGENT on MKTMARKETINGPLANITEMTASK.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      (@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (dbo.UFN_DATE_FROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) between @STARTDATE and @ENDDATE))
                      or ((@ENDDATE is null and @STARTDATE is not null) and (dbo.UFN_DATE_LATESTFROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (dbo.UFN_DATE_EARLIESTFROMFUZZYDATE(MKTMARKETINGPLANITEMTASK.DUEDATE) <= @ENDDATE))
                  )
              and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('bb9873d7-f1ed-430a-8ab4-f09f47056538') = 1 or
                   dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('3117d2c8-7f46-42f2-abeb-b654f2f63046') = 1)

              union all

              select 
                  MKTMARKETINGPLANITEM.[ID],
              MKTMARKETINGPLANITEM.[PARENTMARKETINGPLANITEMID] PARENTID,
                  convert(nvarchar(8),MKTMARKETINGPLANITEM.[MAILDATE],112) as [STARTDATE],
                  convert(nvarchar(8),MKTMARKETINGPLANITEM.[MAILDATE],112) as [ENDDATE],
                  MKTMARKETINGPLANITEM.[NAME] + ' - Mail date' as NAME,
              'Plan activity' as TYPE,
              CHANGEAGENT.USERNAME as CREATEDBY,
              0 as TYPECODE
              from
                  dbo.[MKTMARKETINGPLANITEM]
              left join
                  dbo.MKTMARKETINGPLANITEMTEMPLATEITEM on (MKTMARKETINGPLANITEM.MARKETINGPLANID=MKTMARKETINGPLANITEMTEMPLATEITEM.MARKETINGPLANID and MKTMARKETINGPLANITEM.LEVEL=MKTMARKETINGPLANITEMTEMPLATEITEM.LEVEL)
            left join 
              dbo.CHANGEAGENT on MKTMARKETINGPLANITEM.ADDEDBYID = CHANGEAGENT.ID
              where
                  (
                      ((@STARTDATE is null and @ENDDATE is null)
                      or ((@STARTDATE is not null and @ENDDATE is null) and (MAILDATE >= @STARTDATE))
                      or ((@STARTDATE is null and @ENDDATE is not null) and (MAILDATE <= @ENDDATE))
                      or ((@STARTDATE is not null and @ENDDATE is not null) and (MAILDATE <= @ENDDATE and (@STARTDATE <= MAILDATE ))))
                      and MKTMARKETINGPLANITEM.MAILDATE is not null
                  )
              and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('bb9873d7-f1ed-430a-8ab4-f09f47056538') = 1 or
                    dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('3117d2c8-7f46-42f2-abeb-b654f2f63046') = 1)

            order by STARTDATE

          end