USP_MKTPACKAGE_EMAIL_LOAD

Loads an email channel package.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTPACKAGE_EMAIL_LOAD]
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier
)
as
  begin
    set nocount on;

    declare @CONTENTCANBECHANGED bit;
    declare @CONTENTMAILINGTYPECODEALLOWED tinyint;

    if exists(select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] where [PACKAGEID] = @ID)
    or exists(select top 1 1 from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [PACKAGEID] = @ID)
    or exists(select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
    or exists(select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
    or exists(select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
      begin
        -- if the package is in use by any mailings, the email message can be changed only if the package is only in use

        -- by one type of mailing (appeal, acknowledgement, membership or sponsorship)

        declare @MAILINGTYPECODES table ([MAILINGTYPECODE] tinyint);

        insert into @MAILINGTYPECODES
          select distinct 
            [MKTSEGMENTATION].[MAILINGTYPECODE]
          from dbo.[MKTSEGMENTATIONSEGMENT]
          inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
          where [MKTSEGMENTATIONSEGMENT].[PACKAGEID] = @ID;

        insert into @MAILINGTYPECODES
          select distinct 
            [MKTSEGMENTATION].[MAILINGTYPECODE]
          from dbo.[MKTSEGMENTATIONTESTSEGMENT]
          inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
          inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
          where [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = @ID;

        if exists(select top 1 1 from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
          insert into @MAILINGTYPECODES values (1);

        if exists(select top 1 1 from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
          insert into @MAILINGTYPECODES values (2);

        if exists(select top 1 1 from dbo.[MKTSPONSORSHIPMAILINGTEMPLATERULE] where [PACKAGEID] = @ID)
          insert into @MAILINGTYPECODES values (3);

        if (select count(distinct [MAILINGTYPECODE]) from @MAILINGTYPECODES) = 1
          begin
            set @CONTENTCANBECHANGED = 1;
            set @CONTENTMAILINGTYPECODEALLOWED = (select top 1 [MAILINGTYPECODE] from @MAILINGTYPECODES);
          end
        else
          begin
            set @CONTENTCANBECHANGED = 0;
            set @CONTENTMAILINGTYPECODEALLOWED = 255;
          end

        -- if the package is in use on an acknowledgement mailing, its email message cannot be changed

        if exists(select top 1 1 
                  from dbo.[MKTSEGMENTATIONSEGMENT]
                  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
                  inner join dbo.[MKTACKNOWLEDGEMENTMAILINGPROCESSSEGMENTATION] on [MKTACKNOWLEDGEMENTMAILINGPROCESSSEGMENTATION].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
                  where [MKTSEGMENTATION].[MAILINGTYPECODE] = 1
                  and [MKTSEGMENTATIONSEGMENT].[PACKAGEID] = @ID)
        or 
           exists(select top 1 1 
                  from dbo.[MKTSEGMENTATIONTESTSEGMENT]
                  inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
                  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
                  inner join dbo.[MKTACKNOWLEDGEMENTMAILINGPROCESSSEGMENTATION] on [MKTACKNOWLEDGEMENTMAILINGPROCESSSEGMENTATION].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
                  where [MKTSEGMENTATION].[MAILINGTYPECODE] = 1
                  and [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = @ID)
          set @CONTENTCANBECHANGED = 0;
      end
    else
      begin
        set @CONTENTCANBECHANGED = 1;
        set @CONTENTMAILINGTYPECODEALLOWED = 255;
      end

    select
      [NAME],
      [DESCRIPTION],
      [CODE],
      [PARTDEFINITIONVALUESID],
      [CHANNELCODE],
      [PACKAGECATEGORYCODEID] as [CATEGORYCODEID],
      [UNITCOST] as [COST],
      [COSTDISTRIBUTIONMETHODCODE],
      (select isnull(sum(case [MKTCREATIVE].[COSTDISTRIBUTIONMETHODCODE] when 0 then [MKTCREATIVE].[COST] when 4 then [MKTCREATIVE].[COST] / 1000 end), 0) from dbo.[MKTCREATIVE] inner join dbo.[MKTPACKAGECREATIVE] on [MKTPACKAGECREATIVE].[CREATIVEID] = [MKTCREATIVE].[ID] where [MKTPACKAGECREATIVE].[PACKAGEID] = [MKTPACKAGE].[ID] and [MKTCREATIVE].[COSTDISTRIBUTIONMETHODCODE] in (0, 4)) +
      (select isnull(sum(case [MKTDOCUMENT].[COSTDISTRIBUTIONMETHODCODE] when 0 then [MKTDOCUMENT].[COST] when 4 then [MKTDOCUMENT].[COST] / 1000 end), 0) from dbo.[MKTDOCUMENT] inner join dbo.[MKTPACKAGEDOCUMENT] on [MKTPACKAGEDOCUMENT].[DOCUMENTID] = [MKTDOCUMENT].[ID] where [MKTPACKAGEDOCUMENT].[PACKAGEID] = [MKTPACKAGE].[ID] and [MKTDOCUMENT].[COSTDISTRIBUTIONMETHODCODE] in (0, 4)) +
      (select isnull(sum(case [MKTMATERIAL].[COSTDISTRIBUTIONMETHODCODE] when 0 then [MKTMATERIAL].[COST] when 4 then [MKTMATERIAL].[COST] / 1000 end), 0) from dbo.[MKTMATERIAL] inner join dbo.[MKTPACKAGEMATERIAL] on [MKTPACKAGEMATERIAL].[MATERIALID] = [MKTMATERIAL].[ID] where [MKTPACKAGEMATERIAL].[PACKAGEID] = [MKTPACKAGE].[ID] and [MKTMATERIAL].[COSTDISTRIBUTIONMETHODCODE] in (0, 4)) +
      (select isnull(sum(case [MKTEXPENSE].[COSTDISTRIBUTIONMETHODCODE] when 0 then [MKTEXPENSE].[COST] when 4 then [MKTEXPENSE].[COST] / 1000 end), 0) from dbo.[MKTEXPENSE] inner join dbo.[MKTPACKAGEEXPENSE] on [MKTPACKAGEEXPENSE].[EXPENSEID] = [MKTEXPENSE].[ID] where [MKTPACKAGEEXPENSE].[PACKAGEID] = [MKTPACKAGE].[ID] and [MKTEXPENSE].[COSTDISTRIBUTIONMETHODCODE] in (0, 4)) as [INSERTCOSTPERPIECE],
      [SITEID],
      dbo.UFN_SITEREQUIREDFORUSERONFEATURE(@CURRENTAPPUSERID, '759b0ddc-3ba6-44c3-94b7-21f9bfd37178', 1) as [SITEREQUIRED],
      convert(bit, case when
                      exists(select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENT] where [PACKAGEID] = @ID) or
                      exists(select top 1 1 from dbo.[MKTPACKAGECREATIVE] where [PACKAGEID] = @ID)
                     then 0 else 1 end) as [SITECANBECHANGED],
      dbo.[UFN_MKTNETCOMMUNITYINTEGRATION_LINKESTABLISHED]() as [NETCOMMUNITYLINKESTABLISHED],
      [NETCOMMUNITYTEMPLATEID],
      [NETCOMMUNITYDATASOURCEID],
      [EXPORTDEFINITIONID],
      @CONTENTCANBECHANGED as [CONTENTCANBECHANGED],
      @CONTENTMAILINGTYPECODEALLOWED as [CONTENTMAILINGTYPECODEALLOWED],
      dbo.[UFN_MKTCOMMON_ACKNOWLEDGEMENTMAILINGSINSTALLED]() as [ACKNOWLEDGEMENTMAILINGSINSTALLED],
      dbo.[UFN_MKTCOMMON_MEMBERSHIPMAILINGSINSTALLED]() as [MEMBERSHIPMAILINGSINSTALLED],
      [CHANNELSOURCECODE],
      [CHANNELPARTDEFINITIONVALUESID] as [CHANNELSOURCECODEVALUEID],
      [TSLONG],
      [BASECURRENCYID],
      (select top 1 [ID] from dbo.[MKTSOURCECODEPARTDEFINITION] where [ITEMTYPECODE] = 2) as [PACKAGEPARTDEFINITIONID],
      (select top 1 [ID] from dbo.[MKTSOURCECODEPARTDEFINITION] where [ITEMTYPECODE] = 3) as [CHANNELPARTDEFINITIONID],
      dbo.[UFN_MKTCOMMON_SPONSORSHIPMAILINGSINSTALLED]() as [SPONSORSHIPMAILINGSINSTALLED]
    from dbo.[MKTPACKAGE]
    where [ID] = @ID;

    return 0;
  end;