USP_DATAFORMTEMPLATE_VIEW_APPEALMAILING

Returns appeal mailing information.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@DESCRIPTION nvarchar(255) INOUT Description
@MAILDATE datetime INOUT Mail date
@FIXEDCOST money INOUT Fixed cost
@PACKAGENAME nvarchar(100) INOUT Package
@SELECTIONNAME nvarchar(300) INOUT Selections
@SELECTIONRECORDCOUNT nvarchar(100) INOUT Records
@TOTALCOST nvarchar(100) INOUT Total cost
@ACTIVE bit INOUT Active
@DATEREFRESHED datetime INOUT Current as of
@SEGMENTATIONMODELNAME nvarchar(100) INOUT Segmentation Model Name
@NUMPACKAGES int INOUT Packages
@NUMSEGMENTS int INOUT Segments
@STATUS nvarchar(13) INOUT Status
@MAILINGBUDGET money INOUT Budget
@ISHYBRID bit INOUT ISHYBRID
@SELECTIONS xml INOUT Lists
@CHANNELCODE tinyint INOUT CHANNELCODE
@EMAILPACKAGE nvarchar(150) INOUT Email package
@MAILPACKAGE nvarchar(150) INOUT Mail package
@MKTASKLADDER nvarchar(100) INOUT Ask ladder
@BASECURRENCYID uniqueidentifier INOUT Base currency ID
@CURRENCY nvarchar(110) INOUT Currency
@ISOCURRENCYCODE nvarchar(3) INOUT ISO currency code
@DECIMALDIGITS tinyint INOUT Decimal digits
@CURRENCYSYMBOL nvarchar(5) INOUT Currency symbol
@CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint INOUT Currency symbol display setting code
@RECORDCOUNTNEEDSUPDATED bit INOUT
@HASEMAIL bit INOUT
@UPDATECOUNTPARAMETERSETID uniqueidentifier INOUT
@HASLETTERSELECTIONS bit INOUT
@HASINCOMPLETEEMAILLETTER bit INOUT

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_VIEW_APPEALMAILING]
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @DESCRIPTION nvarchar(255) = null output,
  @MAILDATE datetime = null output,
  @FIXEDCOST money = null output,
  @PACKAGENAME nvarchar(100) = null output,
  @SELECTIONNAME nvarchar(300) = null output,
  @SELECTIONRECORDCOUNT nvarchar(100) = null output,
  @TOTALCOST nvarchar(100) = null output,
  @ACTIVE bit = null output,
  @DATEREFRESHED datetime = null output,
  @SEGMENTATIONMODELNAME nvarchar(100) = null output,
  @NUMPACKAGES integer = null output,
  @NUMSEGMENTS integer = null output,
  @STATUS nvarchar(13) = null output,
  @MAILINGBUDGET money = null output,
  @ISHYBRID bit = null output,
  @SELECTIONS xml = null output,
  @CHANNELCODE tinyint = null output,
  @EMAILPACKAGE nvarchar(150) = null output,
  @MAILPACKAGE nvarchar(150) = null output,
  @MKTASKLADDER nvarchar (100) = null output,
  @BASECURRENCYID uniqueidentifier = null output,
  @CURRENCY nvarchar(110) = null output,
  @ISOCURRENCYCODE nvarchar(3) = null output,
  @DECIMALDIGITS tinyint = null output,
  @CURRENCYSYMBOL nvarchar(5) = null output,
  @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint = null output,
  @RECORDCOUNTNEEDSUPDATED bit = null output,
  @HASEMAIL bit = null output,
  @UPDATECOUNTPARAMETERSETID uniqueidentifier = null output,
  @HASLETTERSELECTIONS bit = null output,
  @HASINCOMPLETEEMAILLETTER bit = null output
)
as
  set nocount on;

  declare @PACKAGEUNITCOST money;
  declare @MKTSEGMENTATIONSEGMENTID uniqueidentifier;

  set @DATALOADED = 0;
  set @RECORDCOUNTNEEDSUPDATED = 0;

  declare @MKTSEGMENTATIONSUMMARYINFO table
  (
    [NAME] nvarchar(100),
    [DESCRIPTION] nvarchar(255),
    [CODE] nvarchar(10),
    [IDINTEGER] int,
    [ACTIVE] bit,
    [ACTIVATEDATE] datetime,
    [APPEAL] nvarchar(100),
    [DATEREFRESHED] datetime,
    [NUMSEGMENTS] int,
    [NUMPACKAGES] int,
    [BUDGETAMOUNT] money,
    [FIXEDCOST] money,
    [MARKETINGPLANITEMID] uniqueidentifier,
    [GIFTSOURCESDEFINED] bit,
    [NUMSEEDS] int,
    [NUMTESTMAILINGS] int,
    [MAILDATE] datetime,
    [SITE] nvarchar(1024),
    [MAILINGTYPECODE] tinyint,
    [MAILINGFIXEDCOST] money,
    [BBECAPPEALID] uniqueidentifier,
    [BBECAPPEALDESCRIPTION] nvarchar(100),
    [BASECURRENCYID] uniqueidentifier,
    [CURRENCY] nvarchar(110),
    [ISHISTORICAL] bit,
    [DATEADDED] datetime,
    [LASTCALCULATEDATE] datetime,
    [LASTEXPORTDATE] datetime,
    [REMOVEMEMBERSDATE] datetime,
    [CALCULATEPROCESSID] uniqueidentifier,
    [EXPORTPROCESSID] uniqueidentifier,
    [ACTIVATEPROCESSID] uniqueidentifier,
    [REFRESHPROCESSID] uniqueidentifier,
    [REMOVEMEMBERSPROCESSID] uniqueidentifier,
    [DUEDATE] datetime,
    [CHANNEL] nvarchar(13),
    [TEMPLATENAME] nvarchar(100),
    [OWNER] nvarchar(100),
    [COLLAPSESUMMARYSECTION] bit,
    [SHOWLOCKEDFIELDS] bit,
    [CALCULATESTATUSCODE] tinyint,
    [EXPORTSTATUSCODE] tinyint,
    [ACTIVATESTATUSCODE] tinyint,
    [REFRESHSTATUSCODE] tinyint,
    [REMOVEMEMBERSSTATUSCODE] tinyint,
    [INCLUDESEEDS] bit,
    [ISBBEC] bit
  );

  insert into @MKTSEGMENTATIONSUMMARYINFO
    exec dbo.[USP_MKTSEGMENTATION_GETSUMMARYINFO] @ID, @CURRENTAPPUSERID;

  select
    @DATALOADED = 1,
    @DESCRIPTION = [SUMMARYINFO].[DESCRIPTION],
    @MAILDATE = [SUMMARYINFO].[MAILDATE],
    @ACTIVE = [SUMMARYINFO].[ACTIVE],
    @NUMPACKAGES = [SUMMARYINFO].[NUMPACKAGES],
    @NUMSEGMENTS = [SUMMARYINFO].[NUMSEGMENTS],
    @FIXEDCOST = [SUMMARYINFO].[FIXEDCOST],
    @DATEREFRESHED = [SUMMARYINFO].[DATEREFRESHED],
    @PACKAGENAME = [MKTPACKAGE].[NAME],
    @PACKAGEUNITCOST = (case when [MKTSEGMENTATION].[ACTIVE] = 1 then [MKTSEGMENTATIONPACKAGE].[UNITCOST] else [MKTPACKAGE].[UNITCOST] end),
    @SELECTIONNAME = [APPEALMAILINGSELECTION].[NAME],
    @STATUS = (case when [SUMMARYINFO].[ACTIVE] = 0 then N'Not activated' else N'Activated' end),
    @MKTSEGMENTATIONSEGMENTID = [MKTSEGMENTATIONSEGMENT].[ID],
    @MAILINGBUDGET = [SUMMARYINFO].[BUDGETAMOUNT],
    @BASECURRENCYID = [SUMMARYINFO].[BASECURRENCYID],
    @CURRENCY = dbo.[UFN_CURRENCY_GETDESCRIPTION]([SUMMARYINFO].[BASECURRENCYID]),
    @ISOCURRENCYCODE = [CURRENCYPROPERTIES].[ISO4217],
    @DECIMALDIGITS = [CURRENCYPROPERTIES].[DECIMALDIGITS],
    @CURRENCYSYMBOL = [CURRENCYPROPERTIES].[CURRENCYSYMBOL],
    @CURRENCYSYMBOLDISPLAYSETTINGCODE = [CURRENCYPROPERTIES].[SYMBOLDISPLAYSETTINGCODE],
    @UPDATECOUNTPARAMETERSETID = MKTSEGMENTATIONSEGMENTCALCULATEPROCESS.ID
  from @MKTSEGMENTATIONSUMMARYINFO as [SUMMARYINFO]
  inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = @ID
  left outer join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left outer join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID]
  left outer join dbo.[MKTSEGMENTATIONPACKAGE] on [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID] and [MKTSEGMENTATIONPACKAGE].[PACKAGEID] = [MKTPACKAGE].[ID]
  left outer join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
  left outer join dbo.[IDSETREGISTER] as [APPEALMAILINGSELECTION] on [APPEALMAILINGSELECTION].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID]
  left outer join dbo.MKTSEGMENTATIONSEGMENTCALCULATEPROCESS on MKTSEGMENTATION.ID = MKTSEGMENTATIONSEGMENTCALCULATEPROCESS.SEGMENTATIONID
  outer apply dbo.[UFN_CURRENCY_GETPROPERTIES]([SUMMARYINFO].[BASECURRENCYID]) [CURRENCYPROPERTIES]

  if @DATALOADED = 1
    begin
      if @ACTIVE = 1
        select
          @SELECTIONRECORDCOUNT = [QUANTITY]
        from dbo.[MKTSEGMENTATIONACTIVE]
        where [ID] = @ID;
      else
        begin
          if not exists(select ID from dbo.APPEALMAILINGSETUP where ID = @ID)
            begin
              --If something changed with the segment, then re-cache the segment donor IDs and grab the new record count...

              if dbo.[UFN_MKTSEGMENTATIONSEGMENT_ISRECORDCOUNTCACHECURRENT](@MKTSEGMENTATIONSEGMENTID, 1) = 0
                set @RECORDCOUNTNEEDSUPDATED = 1;
              else
                select
                  @SELECTIONRECORDCOUNT = sum([MKTSEGMENTATIONSEGMENTCACHEINFO].[OFFERCOUNT]) 
                from dbo.[MKTSEGMENTATIONSEGMENT] 
                inner join dbo.[MKTSEGMENTATIONSEGMENTCACHEINFO] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENTCACHEINFO].[SEGMENTID]
                where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @ID;
            end
        end

      if @SELECTIONRECORDCOUNT is not null
        set @TOTALCOST = (@SELECTIONRECORDCOUNT * @PACKAGEUNITCOST) + @FIXEDCOST;
      else
        begin
          set @SELECTIONRECORDCOUNT = N'--';

          set @TOTALCOST = N'--';

          set @RECORDCOUNTNEEDSUPDATED = 1;
        end

      select top(1)
        @ISHYBRID = 1,
        @SELECTIONS = dbo.UFN_MKTSEGMENT_GETSELECTIONS_TOITEMLISTXML(MKTSEGMENTATIONSEGMENT.SEGMENTID, null),
        @CHANNELCODE = APPEALMAILINGSETUP.CHANNELCODE,
        @MAILPACKAGE = dbo.UFN_MKTPACKAGE_GETNAME(APPEALMAILINGSETUP.MAILPACKAGEID),
        @EMAILPACKAGE = dbo.UFN_MKTPACKAGE_GETNAME(APPEALMAILINGSETUP.EMAILPACKAGEID),
        @MKTASKLADDER = dbo.UFN_MKTASKLADDER_GETNAME(APPEALMAILINGSETUP.MKTASKLADDERID),
        @HASEMAIL = case when exists(select ID from dbo.COMMUNICATIONLETTER where COMMUNICATIONLETTER.SEGMENTATIONID = APPEALMAILING.ID and COMMUNICATIONLETTER.CHANNELCODE > 0) then 1 else 0 end,
        @HASLETTERSELECTIONS = case when exists(select COMMUNICATIONLETTER.ID from dbo.COMMUNICATIONLETTER left outer join dbo.COMMUNICATIONLETTERSELECTION on COMMUNICATIONLETTER.ID = COMMUNICATIONLETTERSELECTION.COMMUNICATIONLETTERID and COMMUNICATIONLETTERSELECTION.FILTERTYPECODE = 0 where COMMUNICATIONLETTER.SEGMENTATIONID = APPEALMAILING.ID and COMMUNICATIONLETTERSELECTION.ID is null) then 0 else 1 end,
        @HASINCOMPLETEEMAILLETTER = case when exists(select COMMUNICATIONLETTER.ID from dbo.COMMUNICATIONLETTER where COMMUNICATIONLETTER.SEGMENTATIONID = @ID and COMMUNICATIONLETTER.CHANNELCODE > 0 and (len(COMMUNICATIONLETTER.EMAILSUBJECT) = 0 or len(COMMUNICATIONLETTER.EMAILFROMADDRESS) = 0 or len(COMMUNICATIONLETTER.EMAILFROMDISPLAYNAME) = 0 or len(COMMUNICATIONLETTER.EMAILCONTENTHTML) = 0)) then 1 else 0 end
      from dbo.APPEALMAILING
      inner join dbo.APPEALMAILINGSETUP on APPEALMAILINGSETUP.ID = APPEALMAILING.ID
      left join dbo.MKTSEGMENTATIONSEGMENT on MKTSEGMENTATIONSEGMENT.SEGMENTATIONID = APPEALMAILING.ID
      where APPEALMAILINGSETUP.ID = @ID;
    end

  return 0;