USP_DATAFORMTEMPLATE_VIEW_MKTSEGMENTATIONPASSIVE

The load procedure used by the view dataform template "Public Media Marketing Effort View Form"

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.
@MAILINGID int INOUT Effort ID
@NAME nvarchar(100) INOUT Name
@DESCRIPTION nvarchar(255) INOUT Description
@SITE nvarchar(100) INOUT Site
@CODE nvarchar(10) INOUT Code
@APPEAL nvarchar(max) INOUT Appeal
@ACTIVE bit INOUT Active
@MAILDATE date INOUT Date
@ACTIVATEDATE datetime INOUT Activate date
@DATEREFRESHED datetime INOUT Current as of
@SEGMENTS int INOUT Segments
@PACKAGES int INOUT Packages
@OFFERS int INOUT Quantity
@BUDGET money INOUT Budget
@FIXEDCOST money INOUT Fixed cost
@TOTALEXPENSES money INOUT Total expenses
@EXPECTEDREVENUE money INOUT Expected revenue
@GIFTSOURCESDEFINED int INOUT Gift record sources defined
@SEGMENTATIONACTIVATEPROCESSID uniqueidentifier INOUT Marketing effort activate process ID
@SEGMENTATIONREFRESHPROCESSID uniqueidentifier INOUT Marketing effort refresh process ID
@ISACTIVATING bit INOUT Is activating?
@ADDMEDIAOUTLETCONTEXTID nvarchar(38) INOUT Add media outlet context ID
@ADDTIMESLOTCONTEXTID nvarchar(38) INOUT Add time slot context ID
@ADDMARKETINGLOCATIONCONTEXTID nvarchar(38) INOUT Add marketing location context ID
@EVENTINSTANCEID uniqueidentifier INOUT Event instance ID
@HASPACKAGE bit INOUT Has a package
@HASAPPEAL bit INOUT Has an appeal
@BASECURRENCYID uniqueidentifier INOUT Base currency ID
@CURRENCY nvarchar(110) INOUT Currency
@RESPONSES int INOUT Responses
@HASACTIVATIONSTATUS bit INOUT Has activation status
@HASREFRESHSTATUS bit INOUT Has refresh status
@BBECAPPEALID nvarchar(36) INOUT
@BBECAPPEALDESCRIPTION nvarchar(100) INOUT

Definition

Copy

CREATE procedure dbo.[USP_DATAFORMTEMPLATE_VIEW_MKTSEGMENTATIONPASSIVE]
(
  @ID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @MAILINGID integer = null output,
  @NAME nvarchar(100) = null output,
  @DESCRIPTION nvarchar(255) = null output,
  @SITE nvarchar(100) = null output,
  @CODE nvarchar(10) = null output,
  @APPEAL nvarchar(max) = null output,
  @ACTIVE bit = null output,
  @MAILDATE date = null output,
  @ACTIVATEDATE datetime = null output,
  @DATEREFRESHED datetime = null output,
  @SEGMENTS integer = null output,
  @PACKAGES integer = null output,
  @OFFERS integer = null output,
  @BUDGET money = null output,
  @FIXEDCOST money = null output,
  @TOTALEXPENSES money = null output,
  @EXPECTEDREVENUE money = null output,
  @GIFTSOURCESDEFINED integer = null output,
  @SEGMENTATIONACTIVATEPROCESSID uniqueidentifier = null output,
  @SEGMENTATIONREFRESHPROCESSID uniqueidentifier = null output,
  @ISACTIVATING bit = null output,
  @ADDMEDIAOUTLETCONTEXTID nvarchar(38) = null output,
  @ADDTIMESLOTCONTEXTID nvarchar(38) = null output,
  @ADDMARKETINGLOCATIONCONTEXTID nvarchar(38) = null output,
  @EVENTINSTANCEID uniqueidentifier = null output,
  @HASPACKAGE bit = null output,
  @HASAPPEAL bit = null output,
  @BASECURRENCYID uniqueidentifier = null output,
  @CURRENCY nvarchar(110) = null output,
  @RESPONSES integer = null output,
  @HASACTIVATIONSTATUS bit = null output,
  @HASREFRESHSTATUS bit = null output,
  @BBECAPPEALID nvarchar(36) = null output,
  @BBECAPPEALDESCRIPTION nvarchar(100) = null output
)
as
  set nocount on;

  declare @PACKAGEPERTHOUSANDAMOUNT decimal(15, 5) = 1000.0;
  declare @BBECAPPEALGUID uniqueidentifier;

  select 
    @BBECAPPEALID = [APPEALSYSTEMID]
  from dbo.[MKTSEGMENTATIONACTIVATE] 
  where [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = @ID
  and dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC]([MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID]) = 1;

  begin try
    set @BBECAPPEALGUID = convert(uniqueidentifier, @BBECAPPEALID);
  end try
  begin catch
    set @BBECAPPEALGUID = null;
  end catch

  if not @BBECAPPEALGUID is null
    select
      @BBECAPPEALDESCRIPTION = [NAME]
    from dbo.[APPEAL] 
    where [ID] = @BBECAPPEALGUID;

  declare @RESPONSETABLE table (
    [OFFERS] integer,
    [RESPONDERS] integer,
    [RESPONSES] integer,
    [TOTALGIFTAMOUNT] money,
    [RESPONSERATE] decimal,
    [TOTALORGANIZATIONGIFTAMOUNT] money,
    [FIRSTRESPONSEDATE] datetime
  );

  set @DATALOADED = 0;

  select @ACTIVE = [MKTSEGMENTATION].[ACTIVE] from dbo.[MKTSEGMENTATION] where [ID] = @ID;

  select
    @DATALOADED = 1,
    @MAILINGID = [MKTSEGMENTATION].[IDINTEGER],
    @NAME = [MKTSEGMENTATION].[NAME],
    @DESCRIPTION = [MKTSEGMENTATION].[DESCRIPTION],
    @SITE = dbo.[UFN_TRANSLATIONFUNCTION_SITE_GETNAME]([MKTSEGMENTATION].[SITEID]),
    @MAILDATE = [MKTSEGMENTATION].[MAILDATE],
    @CODE = [MKTSEGMENTATION].[CODE],
    @ACTIVATEDATE = [MKTSEGMENTATION].[ACTIVATEDATE],
    @APPEAL = isnull(stuff(
                            (
                              select ', ' + case when [APPEALSYSTEMID] = @BBECAPPEALID then @BBECAPPEALDESCRIPTION else [APPEALDESCRIPTION] end 
                              from dbo.[MKTSEGMENTATIONACTIVATE] 
                              where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID] 
                              for xml path(''), type
                            ).value('.', 'varchar(max)')
                            , 1, 2, ''
                          ), ''),
    @DATEREFRESHED = isnull([MKTSEGMENTATIONREFRESHPROCESS].[DATEREFRESHED], [MKTSEGMENTATION].[ACTIVATEDATE]),
    @SEGMENTS = (select count([ID]) from dbo.[MKTSEGMENTATIONSEGMENT] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]),
    @PACKAGES = (select count([ID]) from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]),
    @OFFERS = (
      select 
        isnull(sum(dbo.[UFN_MKTSEGMENTATIONPASSIVESEGMENT_GETQUANTITY](
                         [MKTSEGMENTATIONSEGMENT].[ID], 
                      @ACTIVE
                         case @ACTIVE when 1 then [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONCALCULATIONMETHODCODE] else [MKTSEGMENTPASSIVE].[IMPRESSIONCALCULATIONMETHODCODE] end
                         case @ACTIVE when 1 then [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONS] else [MKTSEGMENTPASSIVE].[IMPRESSIONS] end
                         [MKTSEGMENTATIONSEGMENT].[EXPOSURESTARTDATE], 
                         [MKTSEGMENTATIONSEGMENT].[EXPOSUREENDDATE])), 0)
      from dbo.[MKTSEGMENTATIONSEGMENT]
      inner join dbo.[MKTSEGMENTPASSIVE] on [MKTSEGMENTPASSIVE].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
      left outer join dbo.[MKTSEGMENTATIONSEGMENTACTIVE] on [MKTSEGMENTATIONSEGMENTACTIVE].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @ID),
    @BUDGET = [MKTSEGMENTATIONBUDGET].[BUDGETAMOUNT],
    @FIXEDCOST = [MKTSEGMENTATIONBUDGET].[FIXEDCOST],
    @TOTALEXPENSES = [MKTSEGMENTATIONBUDGET].[FIXEDCOST] + (
      select
        isnull(
          sum(
            -- cost per piece
            (case @ACTIVE
               when 1 then
                 case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE] 
                   when 0 then [MKTSEGMENTATIONPACKAGE].[UNITCOST]
                   when 4 then [MKTSEGMENTATIONPACKAGE].[UNITCOST] / @PACKAGEPERTHOUSANDAMOUNT else 0 end + 
                 [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPERPIECE]
               else
                 case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE] 
                   when 0 then [MKTPACKAGE].[UNITCOST]
                   when 4 then [MKTPACKAGE].[UNITCOST] / @PACKAGEPERTHOUSANDAMOUNT else 0 end +
                 dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTSEGMENTATIONPACKAGE].[PACKAGEID], 0, 0) +
                 -- Add any other package costs using 'Per thousand'
                 dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTSEGMENTATIONPACKAGE].[PACKAGEID], 4, 0)
             end 
             * dbo.[UFN_MKTSEGMENTATIONPASSIVEPACKAGE_GETQUANTITY](@ID, [MKTSEGMENTATIONPACKAGE].[PACKAGEID], @ACTIVE)) +
            -- cost per response
            (case @ACTIVE
               when 1 then
                 (case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE] when 1 then [MKTSEGMENTATIONPACKAGE].[UNITCOST] else 0 end + 
                  [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPERRESPONSE])
                 * dbo.[UFN_MKTSEGMENTATIONPACKAGEACTIVE_GETRESPONSECOUNT](@ID, [MKTSEGMENTATIONPACKAGE].[PACKAGEID])
               else
                 (case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE] when 1 then [MKTPACKAGE].[UNITCOST] else 0 end + 
                  dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTSEGMENTATIONPACKAGE].[PACKAGEID], 1, 0))
                 * dbo.[UFN_MKTSEGMENTATIONPASSIVEPACKAGE_GETEXPECTEDRESPONSECOUNT](@ID, [MKTSEGMENTATIONPACKAGE].[PACKAGEID], @ACTIVE)
             end) +
            -- cost per effort
            (case @ACTIVE
               when 1 then
                 case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE] when 2 then [MKTSEGMENTATIONPACKAGE].[UNITCOST] else 0 end +
                 [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPEREFFORT]
               else
                 case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE] when 2 then [MKTPACKAGE].[UNITCOST] else 0 end +
                 dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTSEGMENTATIONPACKAGE].[PACKAGEID], 2, 0)
             end)
          )
        , 0)
      from dbo.[MKTSEGMENTATIONPACKAGE]
      inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONPACKAGE].[PACKAGEID]
      where [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID] = @ID),
    @EXPECTEDREVENUE = (
      select 
        isnull(sum(floor(dbo.[UFN_MKTSEGMENTATIONPASSIVESEGMENT_GETQUANTITY](
                               [MKTSEGMENTATIONSEGMENT].[ID], 
                               @ACTIVE,
                               case @ACTIVE when 1 then [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONCALCULATIONMETHODCODE] else [MKTSEGMENTPASSIVE].[IMPRESSIONCALCULATIONMETHODCODE] end
                               case @ACTIVE when 1 then [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONS] else [MKTSEGMENTPASSIVE].[IMPRESSIONS] end
                               [MKTSEGMENTATIONSEGMENT].[EXPOSURESTARTDATE], 
                               [MKTSEGMENTATIONSEGMENT].[EXPOSUREENDDATE]) 
                   * ([MKTSEGMENTATIONSEGMENT].[RESPONSERATE] / 100)) * [MKTSEGMENTATIONSEGMENT].[GIFTAMOUNT]), 0)
      from dbo.[MKTSEGMENTATIONSEGMENT]
      inner join dbo.[MKTSEGMENTPASSIVE] on [MKTSEGMENTPASSIVE].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
      left outer join dbo.[MKTSEGMENTATIONSEGMENTACTIVE] on [MKTSEGMENTATIONSEGMENTACTIVE].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @ID),
    @GIFTSOURCESDEFINED = 
      (select (case when count(*) = 0 then (select case when (select count([ID]) from dbo.[MKTGIFTRECORDSOURCE]) > 0 then 1 else 0 end) else 0 end)
       from dbo.[MKTSEGMENTATIONSEGMENT]
       inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
       left outer join dbo.[MKTGIFTRECORDSOURCE] on [MKTGIFTRECORDSOURCE].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
       where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
       and [MKTGIFTRECORDSOURCE].[ID] is null),
    @SEGMENTATIONACTIVATEPROCESSID = (select [ID] from dbo.[MKTSEGMENTATIONACTIVATEPROCESS] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]),
    @ISACTIVATING = dbo.[UFN_MKTSEGMENTATION_ISACTIVATING]([MKTSEGMENTATION].[ID]),
    @SEGMENTATIONREFRESHPROCESSID = (select [ID] from dbo.[MKTSEGMENTATIONREFRESHPROCESS] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]),
    @HASPACKAGE = (select case when exists (select 1 from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = @ID) then 1 else 0 end),
    @HASAPPEAL = (select case when exists(select 1 from dbo.[MKTSEGMENTATIONACTIVATE] where [SEGMENTATIONID] = @ID) then 1 else 0 end),
    @BASECURRENCYID = [MKTSEGMENTATION].[BASECURRENCYID],
    @CURRENCY = dbo.[UFN_CURRENCY_GETDESCRIPTION]([MKTSEGMENTATION].[BASECURRENCYID])
  from dbo.[MKTSEGMENTATION]
  inner join dbo.[MKTSEGMENTATIONBUDGET] on [MKTSEGMENTATIONBUDGET].[ID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTSEGMENTATIONREFRESHPROCESS] on [MKTSEGMENTATIONREFRESHPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  where [MKTSEGMENTATION].[ID] = @ID;

  set @ADDMEDIAOUTLETCONTEXTID = convert(nvarchar(36), @ID) + '|6';
  set @ADDTIMESLOTCONTEXTID = convert(nvarchar(36), @ID) + '|7';
  set @ADDMARKETINGLOCATIONCONTEXTID = convert(nvarchar(36), @ID) + '|8';
  set @EVENTINSTANCEID = newid();

  insert into @RESPONSETABLE
    exec dbo.[USP_MKTSEGMENTATION_GETRESPONSECOUNTS] @SEGMENTATIONID = @ID;

  select
    @RESPONSES = [RESPONSES]
  from @RESPONSETABLE;

  if @SEGMENTATIONACTIVATEPROCESSID is not null
    set @HASACTIVATIONSTATUS = case when exists (select top 1 1 from dbo.[MKTSEGMENTATIONACTIVATEPROCESSSTATUS] where [PARAMETERSETID] = @SEGMENTATIONACTIVATEPROCESSID) then 1 else 0 end
  else
    set @HASACTIVATIONSTATUS = 0;

  if @SEGMENTATIONREFRESHPROCESSID is not null
    set @HASREFRESHSTATUS = case when exists (select top 1 1 from dbo.[MKTSEGMENTATIONREFRESHPROCESSSTATUS] where [PARAMETERSETID] = @SEGMENTATIONREFRESHPROCESSID) then 1 else 0 end
  else
    set @HASREFRESHSTATUS = 0;

  return 0;