USP_DATALIST_MKTASKLADDERRESPONSEROUNDINGUSED

Parameters

Parameter Parameter Type Mode Description
@SELECTIONID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@EFFORTID uniqueidentifier IN
@FILTERTYPECODE int IN
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


create procedure dbo.USP_DATALIST_MKTASKLADDERRESPONSEROUNDINGUSED
(
  @SELECTIONID uniqueidentifier = null,
  @CURRENTAPPUSERID uniqueidentifier,
  @EFFORTID uniqueidentifier = null,
  @FILTERTYPECODE int = 0,
  @SECURITYFEATUREID uniqueidentifier = null,
  @SECURITYFEATURETYPE tinyint = null
)
with execute as owner
as
  set nocount on;

  declare @SQL nvarchar(max);
  declare @SEGMENTATIONID uniqueidentifier;
  declare @MAILINGDATATABLENAME nvarchar(128);
  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

  declare @ASKLADDER table (
    [ASKLADDERID] uniqueidentifier
  );

  --Build Segmentation cursor

  declare @SEGMENTATIONCURSOR cursor;                    

  if @FILTERTYPECODE = 0 begin
  set @SQL = 'set @SEGMENTATIONCURSOR = cursor local fast_forward for' + char(13) + 
         '  select [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]' + char(13) + 
         '  from dbo.[MKTSEGMENTATIONACTIVATE]' + char(13) +                                  
         '  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]' + char(13) +
         '  where dbo.[UFN_SITEALLOWEDFORUSER](@CURRENTAPPUSERID, [MKTSEGMENTATION].[SITEID]) = 1' + char(13) +
         '  and [MKTSEGMENTATION].[ACTIVE] = 1 and [MKTSEGMENTATION].[MAILINGTYPECODE] <> 4;' + char(13) +
         'open @SEGMENTATIONCURSOR;';
  end

  if @FILTERTYPECODE = 1 begin
    set @SQL = 'set @SEGMENTATIONCURSOR = cursor local fast_forward for' + char(13) + 
         '  select [IDSET].[ID]' + char(13) + 
         '  from dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@SELECTIONID) + ' as [IDSET]' + char(13) + 
         '  inner join dbo.[MKTSEGMENTATIONACTIVATE] on  [IDSET].[ID] = [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]' + char(13) +
         '  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [IDSET].[ID]' + char(13) +
         '  where dbo.[UFN_SITEALLOWEDFORUSER](@CURRENTAPPUSERID, [MKTSEGMENTATION].[SITEID]) = 1' + char(13) +
         '  and [MKTSEGMENTATION].[ACTIVE] = 1 and [MKTSEGMENTATION].[MAILINGTYPECODE] <> 4;' + char(13) +
         'open @SEGMENTATIONCURSOR;';
  end;

  if @FILTERTYPECODE = 2 begin
    set @SQL = 'set @SEGMENTATIONCURSOR = cursor local fast_forward for' + char(13) + 
         '  select [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]' + char(13) + 
         '  from dbo.[MKTSEGMENTATIONACTIVATE]' + char(13) +                                  
         '  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID]' + char(13) +
         '  where dbo.[UFN_SITEALLOWEDFORUSER](@CURRENTAPPUSERID, [MKTSEGMENTATION].[SITEID]) = 1' + char(13) +
         '  and [MKTSEGMENTATION].[ACTIVE] = 1 and [MKTSEGMENTATION].[MAILINGTYPECODE] <> 4 and [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = @EFFORTID;' + char(13) +
         'open @SEGMENTATIONCURSOR;';
  end

  if @FILTERTYPECODE = 2
    exec sp_executesql @SQL, N'@SEGMENTATIONCURSOR cursor output, @CURRENTAPPUSERID uniqueidentifier, @EFFORTID uniqueidentifier', @SEGMENTATIONCURSOR = @SEGMENTATIONCURSOR output, @CURRENTAPPUSERID = @CURRENTAPPUSERID, @EFFORTID = @EFFORTID;
  else
    exec sp_executesql @SQL, N'@SEGMENTATIONCURSOR cursor output, @CURRENTAPPUSERID uniqueidentifier', @SEGMENTATIONCURSOR = @SEGMENTATIONCURSOR output, @CURRENTAPPUSERID = @CURRENTAPPUSERID;

  --Loop through each Mailing

  fetch next from @SEGMENTATIONCURSOR into @SEGMENTATIONID;

  while (@@FETCH_STATUS = 0)
  begin
    if ( -- check site security

       select count(1
       from (select [SITEID]
             from dbo.[MKTSEGMENTATION]
             where [ID] = @SEGMENTATIONID
       as [SEGMENTATIONSITE]
       where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SEGMENTATIONSITE].[SITEID] or (SITEID is null and [SEGMENTATIONSITE].[SITEID] is null)))
       ) > 0
    begin
      set @MAILINGDATATABLENAME = dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID);

      --Get all the ask ladder items from the segmentation data table

      set @SQL = 'select distinct [MAILINGDATA].[ASKLADDERID]' + char(13) +
            'from dbo.[' + @MAILINGDATATABLENAME + '] as [MAILINGDATA]' + char(13);
      insert into @ASKLADDER
      exec (@SQL);
    end
  fetch next from @SEGMENTATIONCURSOR into @SEGMENTATIONID;
  end;

  close @SEGMENTATIONCURSOR;
  deallocate @SEGMENTATIONCURSOR;

  if exists (select [ASKLADDERID] from @ASKLADDER)

    select top 1
      cast(case when [MKTASKLADDER].[BASECURRENCYID] <> @ORGANIZATIONCURRENCYID then 1 else 0 end as bit) as [ROUNDINGUSED] 
    from @ASKLADDER as [ASKLADDER]
    inner join dbo.[MKTASKLADDER] on [MKTASKLADDER].[ID] = [ASKLADDER].[ASKLADDERID]
    order by [ROUNDINGUSED] desc;

  else
    select 
      cast(0 as bit) as [ROUNDINGUSED]
    order by [ROUNDINGUSED];

  return 0;