USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONEXPORTPROCESS_4

The load procedure used by the edit dataform template "Marketing Effort Export Process Edit Form 4"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@SEGMENTATIONID uniqueidentifier INOUT Marketing effort
@DESCRIPTION nvarchar(255) INOUT Description
@MAILINGTYPECODE tinyint INOUT Type
@EXPORTDEFINITIONRECORDTYPE nvarchar(50) INOUT Export definition record type
@EXPORTDEFINITIONRECORDTYPEID uniqueidentifier INOUT Export definition record type ID
@EXPORTDEFINITIONQUERYVIEWID uniqueidentifier INOUT Export definition query view ID
@MAILEXPORTDEFINITIONID uniqueidentifier INOUT Mail export definition
@EMAILEXPORTDEFINITIONID uniqueidentifier INOUT Email export definition
@PHONEEXPORTDEFINITIONID uniqueidentifier INOUT Phone export definition
@HASMAILPACKAGES bit INOUT Has mail packages?
@HASEMAILPACKAGES bit INOUT Has email packages?
@HASPHONEPACKAGES bit INOUT Has phone packages?
@HASUNDEFINEDMAILPACKAGES bit INOUT Has undefined mail packages?
@HASUNDEFINEDEMAILPACKAGES bit INOUT Has undefined email packages?
@HASUNDEFINEDPHONEPACKAGES bit INOUT Has undefined phone packages?
@HASDEFINEDPACKAGES bit INOUT Has defined packages?
@DEFINEDPACKAGES xml INOUT Defined packages
@ORGANIZATIONCURRENCYID uniqueidentifier INOUT Organization currency ID
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@EXPORTACTIVESEGMENTS bit INOUT Export active segments
@EXPORTINLINEEXCLUSIONS bit INOUT Export exclusion segments
@INLINEEXCLUSIONEXPORTDEFINITIONID uniqueidentifier INOUT Export definition
@HASEXCLUDEDRECORDS bit INOUT Has excluded records?
@EXPORTDESCRIPTIONLOCKED bit INOUT
@MAILEXPORTDEFINITIONIDLOCKED bit INOUT
@EMAILEXPORTDEFINITIONIDLOCKED bit INOUT
@PHONEEXPORTDEFINITIONIDLOCKED bit INOUT

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONEXPORTPROCESS_4]
(
  @ID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @SEGMENTATIONID uniqueidentifier = null output,
  @DESCRIPTION nvarchar(255) = null output,
  @MAILINGTYPECODE tinyint = null output,
  @EXPORTDEFINITIONRECORDTYPE nvarchar(50) = null output,
  @EXPORTDEFINITIONRECORDTYPEID uniqueidentifier = null output,
  @EXPORTDEFINITIONQUERYVIEWID uniqueidentifier = null output,
  @MAILEXPORTDEFINITIONID uniqueidentifier = null output,
  @EMAILEXPORTDEFINITIONID uniqueidentifier = null output,
  @PHONEEXPORTDEFINITIONID uniqueidentifier = null output,
  @HASMAILPACKAGES bit = null output,
  @HASEMAILPACKAGES bit = null output,
  @HASPHONEPACKAGES bit = null output,
  @HASUNDEFINEDMAILPACKAGES bit = null output,
  @HASUNDEFINEDEMAILPACKAGES bit = null output,
  @HASUNDEFINEDPHONEPACKAGES bit = null output,
  @HASDEFINEDPACKAGES bit = null output,
  @DEFINEDPACKAGES xml = null output,
  @ORGANIZATIONCURRENCYID uniqueidentifier = null output,
  @TSLONG bigint = 0 output,
  @EXPORTACTIVESEGMENTS bit = null output,
  @EXPORTINLINEEXCLUSIONS bit = null output,
  @INLINEEXCLUSIONEXPORTDEFINITIONID uniqueidentifier = null output,
  @HASEXCLUDEDRECORDS bit = null output,
  @EXPORTDESCRIPTIONLOCKED bit = null output,
  @MAILEXPORTDEFINITIONIDLOCKED bit = null output,
  @EMAILEXPORTDEFINITIONIDLOCKED bit = null output,
  @PHONEEXPORTDEFINITIONIDLOCKED bit = null output
)
as
  set nocount on;

  set @DATALOADED = 0;
  set @TSLONG = 0;

  select 
    @DATALOADED = 1,
    @SEGMENTATIONID = [MKTSEGMENTATIONEXPORTPROCESS].[SEGMENTATIONID],
    @MAILINGTYPECODE = [MKTSEGMENTATION].[MAILINGTYPECODE],
    @DESCRIPTION = [MKTSEGMENTATIONEXPORTPROCESS].[DESCRIPTION],
    @EXPORTACTIVESEGMENTS = [MKTSEGMENTATIONEXPORTPROCESS].[EXPORTACTIVESEGMENTS],
    @MAILEXPORTDEFINITIONID = [MKTSEGMENTATIONEXPORTPROCESS].[MAILEXPORTDEFINITIONID],
    @EMAILEXPORTDEFINITIONID = [MKTSEGMENTATIONEXPORTPROCESS].[EMAILEXPORTDEFINITIONID],
    @PHONEEXPORTDEFINITIONID = [MKTSEGMENTATIONEXPORTPROCESS].[PHONEEXPORTDEFINITIONID],
    @EXPORTINLINEEXCLUSIONS = [MKTSEGMENTATIONEXPORTPROCESS].[EXPORTINLINEEXCLUSIONS],
    @INLINEEXCLUSIONEXPORTDEFINITIONID =[MKTSEGMENTATIONEXPORTPROCESS]. [INLINEEXCLUSIONEXPORTDEFINITIONID],
    @TSLONG = [MKTSEGMENTATIONEXPORTPROCESS].[TSLONG]
  from dbo.[MKTSEGMENTATIONEXPORTPROCESS]
  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONEXPORTPROCESS].[SEGMENTATIONID]
  where [MKTSEGMENTATIONEXPORTPROCESS].[ID] = @ID
  and [MKTSEGMENTATION].[ISHISTORICAL] = 0;

  set @EXPORTDEFINITIONRECORDTYPE = dbo.[UFN_MKTEXPORTDEFINITION_GETRECORDTYPEFROMMAILINGTYPECODE](@MAILINGTYPECODE);
  set @EXPORTDEFINITIONRECORDTYPEID = dbo.[UFN_MKTEXPORTDEFINITION_GETRECORDTYPEIDFROMMAILINGTYPECODE](@MAILINGTYPECODE);
  set @EXPORTDEFINITIONQUERYVIEWID = dbo.[UFN_MKTEXPORTDEFINITION_GETQUERYVIEWIDFROMMAILINGTYPECODE](@MAILINGTYPECODE);

  set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

  declare @PACKAGES table ([PACKAGEID] uniqueidentifier);

  insert into @PACKAGES
  select distinct [TEMP].[PACKAGEID]
    from (select [MKTSEGMENTATIONSEGMENT].[PACKAGEID]
            from dbo.[MKTSEGMENTATIONSEGMENT]
            inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
            left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID]
           where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
           and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1)
          union all
          select [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
            from dbo.[MKTSEGMENTATIONTESTSEGMENT]
            inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
            inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
            left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID]
           where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
           and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1)) as [TEMP];

  set @HASMAILPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 0)
         then 1 else 0 end);

  set @HASEMAILPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 1)
         then 1 else 0 end);

  set @HASPHONEPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 2)
         then 1 else 0 end);

  set @HASUNDEFINEDMAILPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 0 and [MKTPACKAGE].[LETTERCODEID] is null and [MKTPACKAGE].[EXPORTDEFINITIONID] is null)
         then 1 else 0 end);

  set @HASUNDEFINEDEMAILPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 1 and [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] = 0 and [MKTPACKAGE].[EXPORTDEFINITIONID] is null)
         then 1 else 0 end);

  set @HASUNDEFINEDPHONEPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where [MKTPACKAGE].[CHANNELCODE] = 2 and [MKTPACKAGE].[EXPORTDEFINITIONID] is null)
         then 1 else 0 end);

  set @HASDEFINEDPACKAGES = convert(bit
    case when exists (select top 1 1
                        from @PACKAGES as [P]
                        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
                       where (([MKTPACKAGE].[CHANNELCODE] = 0 and ([MKTPACKAGE].[LETTERCODEID] is not null or [MKTPACKAGE].[EXPORTDEFINITIONID] is not null)) or 
                              ([MKTPACKAGE].[CHANNELCODE] = 1 and ([MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] > 0 or [MKTPACKAGE].[EXPORTDEFINITIONID] is not null)) or
                              ([MKTPACKAGE].[CHANNELCODE] = 2 and [MKTPACKAGE].[EXPORTDEFINITIONID] is not null)))
         then 1 else 0 end);

  set @DEFINEDPACKAGES = (
    select distinct
      [ID],
      [EXPORTDEFINITION],
      [COUNT],
      [PACKAGES]
    from (
      select distinct 
          [EXPORTDEFINITION].[ID],
          [EXPORTDEFINITION].[NAME] as [EXPORTDEFINITION],
          (select count(distinct [MKTPACKAGE].[NAME])
             from @PACKAGES as [P]
             inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
             inner join dbo.[LETTERCODE] on [LETTERCODE].[ID] = [MKTPACKAGE].[LETTERCODEID]
            where [LETTERCODE].[EXPORTDEFINITIONID] = [EXPORTDEFINITION].[ID])
          as [COUNT],
          dbo.[UFN_MKTSEGMENTATIONEXPORTPROCESS_GETSEGMENTATIONPACKAGELISTFOREXPORTDEFINITION]([EXPORTDEFINITION].[ID], @SEGMENTATIONID, default) as [PACKAGES]
        from @PACKAGES as [P]
inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
        inner join dbo.[LETTERCODE] on [LETTERCODE].[ID] = [MKTPACKAGE].[LETTERCODEID]
        inner join dbo.[EXPORTDEFINITION] on [EXPORTDEFINITION].[ID] = [LETTERCODE].[EXPORTDEFINITIONID]
      union all
      select distinct 
          [EXPORTDEFINITION].[ID],
          [EXPORTDEFINITION].[NAME] as [EXPORTDEFINITION],
          (select count(distinct [MKTPACKAGE].[NAME])
             from @PACKAGES as [P]
             inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
             inner join dbo.[MKTEXPORTDEFINITION] on ([MKTEXPORTDEFINITION].[NETCOMMUNITYDATASOURCEID] = [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] and [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] > 0)
             inner join dbo.[EXPORTDEFINITION] as [EMAILEXPORTDEFINITION] on [EMAILEXPORTDEFINITION].[ID] = [MKTEXPORTDEFINITION].[EXPORTDEFINITIONID]
            where [EMAILEXPORTDEFINITION].[ID] = [EXPORTDEFINITION].[ID])
          as [COUNT],
          dbo.[UFN_MKTSEGMENTATIONEXPORTPROCESS_GETSEGMENTATIONPACKAGELISTFOREXPORTDEFINITION]([EXPORTDEFINITION].[ID], @SEGMENTATIONID, default) as [PACKAGES]
        from @PACKAGES as [P]
        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
        inner join dbo.[MKTEXPORTDEFINITION] on ([MKTEXPORTDEFINITION].[NETCOMMUNITYDATASOURCEID] = [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] and [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] > 0)
        inner join dbo.[EXPORTDEFINITION] on [EXPORTDEFINITION].[ID] = [MKTEXPORTDEFINITION].[EXPORTDEFINITIONID]
      union all
      select distinct 
          [EXPORTDEFINITION].[ID],
          [EXPORTDEFINITION].[NAME] as [EXPORTDEFINITION],
          (select count(distinct [MKTPACKAGE].[NAME])
             from @PACKAGES as [P]
             inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
            where [MKTPACKAGE].[EXPORTDEFINITIONID] = [EXPORTDEFINITION].[ID])
          as [COUNT],
          dbo.[UFN_MKTSEGMENTATIONEXPORTPROCESS_GETSEGMENTATIONPACKAGELISTFOREXPORTDEFINITION]([EXPORTDEFINITION].[ID], @SEGMENTATIONID, default) as [PACKAGES]
        from @PACKAGES as [P]
        inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [P].[PACKAGEID]
        inner join dbo.[EXPORTDEFINITION] on [EXPORTDEFINITION].[ID] = [MKTPACKAGE].[EXPORTDEFINITIONID]) as [TEMP]
     for xml raw('ITEM'), type, elements, root('DEFINEDPACKAGES'), binary base64);

  set @HASEXCLUDEDRECORDS =
    case when exists (select top 1 1
                      from dbo.[MKTSEGMENTATIONSEGMENT]
                      where [SEGMENTATIONID] = @SEGMENTATIONID
                      and [EXCLUDE] = 1)
         then 1 else 0 end;

  /* If using a communication template, load the lock settings from the template */
  if exists(select top 1 1 from dbo.[MKTCOMMUNICATIONTEMPLATE] where [MKTSEGMENTATIONID] = @SEGMENTATIONID)
    begin

      select
        @EXPORTDESCRIPTIONLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EXPORTDESCRIPTIONLOCKED],
        @MAILEXPORTDEFINITIONIDLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[MAILEXPORTDEFINITIONIDLOCKED],
        @EMAILEXPORTDEFINITIONIDLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EMAILEXPORTDEFINITIONIDLOCKED],
        @PHONEEXPORTDEFINITIONIDLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[PHONEEXPORTDEFINITIONIDLOCKED]
      from dbo.[MKTCOMMUNICATIONTEMPLATE]
      inner join dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULT] on [MKTCOMMUNICATIONTEMPLATEDEFAULT].[COMMUNICATIONTEMPLATEID] = [MKTCOMMUNICATIONTEMPLATE].[ID]
      where [MKTSEGMENTATIONID] = @SEGMENTATIONID;

    end

  return 0;