USP_DATAFORMTEMPLATE_MKTMARKETINGPLANITEM_VIEW

The load procedure used by the view dataform template "Marketing Plan Item View Form"

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(38) 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.
@MARKETINGPLANID uniqueidentifier INOUT Marketing plan ID
@PARENTMARKETINGPLANITEMID uniqueidentifier INOUT Parent marketing plan item ID
@CAPTION nvarchar(50) INOUT Caption
@NAME nvarchar(100) INOUT Name
@SOURCECODE nvarchar(100) INOUT Source code layout
@CODE nvarchar(10) INOUT Code
@STATUS nvarchar(25) INOUT Approval status
@CATEGORY nvarchar(25) INOUT Category
@GOALS nvarchar(max) INOUT Goals
@STARTDATE UDT_FUZZYDATE INOUT Start date
@ENDDATE UDT_FUZZYDATE INOUT End date
@BACKCOLOR int INOUT Back color
@FORECOLOR int INOUT Fore color
@LEVEL0NAME nvarchar(50) INOUT Level 0 name
@LEVEL0ID uniqueidentifier INOUT Level 0 ID
@LEVEL1CAPTION nvarchar(50) INOUT Level 1 caption
@LEVEL1NAME nvarchar(50) INOUT Level 1 name
@LEVEL1ID uniqueidentifier INOUT Level 1 ID
@LEVEL1COUNT int INOUT Level 1 count
@LEVEL2CAPTION nvarchar(50) INOUT Level 2 caption
@LEVEL2NAME nvarchar(50) INOUT Level 2 name
@LEVEL2ID uniqueidentifier INOUT Level 2 ID
@LEVEL2COUNT int INOUT Level 2 count
@LEVEL3CAPTION nvarchar(50) INOUT Level 3 caption
@LEVEL3NAME nvarchar(50) INOUT Level 3 name
@LEVEL3ID uniqueidentifier INOUT Level 3 ID
@LEVEL3COUNT int INOUT Level 3 count
@LEVEL4CAPTION nvarchar(50) INOUT Level 4 caption
@LEVEL4NAME nvarchar(50) INOUT Level 4 name
@LEVEL4ID uniqueidentifier INOUT Level 4 ID
@LEVEL4COUNT int INOUT Level 4 count
@LEVEL int INOUT Level
@APPEALLEVEL int INOUT Appeal level
@APPEALCAPTION nvarchar(100) INOUT Appeal caption
@ASSUMEDBUDGET decimal(18, 0) INOUT Assumed budget
@ALLOCATEDBUDGET decimal(18, 0) INOUT Allocated budget
@ASSUMEDREVENUE decimal(18, 0) INOUT Assumed total revenue
@ALLOCATEDREVENUE decimal(18, 0) INOUT Allocated total revenue
@ASSUMEDRESPONSE int INOUT Assumed total responses
@ALLOCATEDRESPONSE int INOUT Allocated total responses
@ASSUMEDQUANTITY int INOUT Assumed quantity
@ALLOCATEDQUANTITY int INOUT Allocated quantity
@EXPENSES money INOUT Expenses
@AVGGIFT money INOUT Average gift
@COSTPERPIECE money INOUT Cost per piece
@SEGMENTATIONNAME nvarchar(100) INOUT Marketing effort name
@SEGMENTATIONID uniqueidentifier INOUT Effort ID
@ISLINKED bit INOUT Linked to marketing effort?
@MAILINGLEVEL int INOUT Marketing effort level
@MAILDATE datetime INOUT Date
@HASACTIVATEDMAILING bit INOUT Has activated marketing effort?
@ALERTSENABLED bit INOUT Alerts enabled?
@BASECURRENCYID uniqueidentifier INOUT Base currency ID
@BASECURRENCYCANBECHANGED bit INOUT Base currency can be changed?

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_MKTMARKETINGPLANITEM_VIEW]
(
  @ID nvarchar(38),
  @DATALOADED bit = 0 output,
  @MARKETINGPLANID uniqueidentifier = null output,
  @PARENTMARKETINGPLANITEMID uniqueidentifier = null output,
  @CAPTION nvarchar(50) = null output,
  @NAME nvarchar(100) = null output,
  @SOURCECODE nvarchar(100) = null output,
  @CODE nvarchar(10) = null output,
  @STATUS nvarchar(25) = null output,
  @CATEGORY nvarchar(25) = null output,
  @GOALS nvarchar(max) = null output,
  @STARTDATE dbo.UDT_FUZZYDATE = null output,
  @ENDDATE dbo.UDT_FUZZYDATE = null output,
  @BACKCOLOR integer = null output,
  @FORECOLOR integer = null output,
  @LEVEL0NAME nvarchar(50) = null output,
  @LEVEL0ID uniqueidentifier = null output,
  @LEVEL1CAPTION nvarchar(50) = null output,
  @LEVEL1NAME nvarchar(50) = null output,
  @LEVEL1ID uniqueidentifier = null output,
  @LEVEL1COUNT integer = null output,
  @LEVEL2CAPTION nvarchar(50) = null output,
  @LEVEL2NAME nvarchar(50) = null output,
  @LEVEL2ID uniqueidentifier = null output,
  @LEVEL2COUNT integer = null output,
  @LEVEL3CAPTION nvarchar(50) = null output,
  @LEVEL3NAME nvarchar(50) = null output,
  @LEVEL3ID uniqueidentifier = null output,
  @LEVEL3COUNT integer = null output,
  @LEVEL4CAPTION nvarchar(50) = null output,
  @LEVEL4NAME nvarchar(50) = null output,
  @LEVEL4ID uniqueidentifier = null output,
  @LEVEL4COUNT integer = null output,
  @LEVEL integer = null output,
  @APPEALLEVEL integer = null output,
  @APPEALCAPTION nvarchar(100) = null output,
  @ASSUMEDBUDGET decimal = null output,
  @ALLOCATEDBUDGET decimal = null output,
  @ASSUMEDREVENUE decimal = null output,
  @ALLOCATEDREVENUE decimal = null output,
  @ASSUMEDRESPONSE integer = null output,
  @ALLOCATEDRESPONSE integer = null output,
  @ASSUMEDQUANTITY integer = null output,
  @ALLOCATEDQUANTITY integer = null output,
  @EXPENSES money = null output,
  @AVGGIFT money = null output,
  @COSTPERPIECE money = null output,
  @SEGMENTATIONNAME nvarchar(100) = null output,
  @SEGMENTATIONID uniqueidentifier = null output,
  @ISLINKED bit = null output,
  @MAILINGLEVEL integer = null output,
  @MAILDATE datetime = null output,
  @HASACTIVATEDMAILING bit = null output,
  @ALERTSENABLED bit = null output,
  @BASECURRENCYID uniqueidentifier = null output,
  @BASECURRENCYCANBECHANGED bit = null output
)
as
  set nocount on;

  declare @MARKETINGPLANITEMID uniqueidentifier;
  declare @CURRENCYCODE tinyint;

  set @DATALOADED = 0;

  if charindex('|', @ID, 1) > 0
    begin
      set @MARKETINGPLANITEMID = convert(uniqueidentifier, substring(@ID, 1, 36));
      set @CURRENCYCODE = convert(tinyint, substring(@ID, 38, 1));
    end
  else
    begin
      set @MARKETINGPLANITEMID = convert(uniqueidentifier, @ID);
      set @CURRENCYCODE = 0;
    end

  select
    @DATALOADED = 1,
    @MARKETINGPLANID = [MPI].[MARKETINGPLANID],
    @PARENTMARKETINGPLANITEMID = [MPI].[PARENTMARKETINGPLANITEMID],
    @CAPTION = [MPITI].[CAPTION],
    @NAME = [MPI].[NAME],
    @SOURCECODE = (coalesce((select [NAME] from dbo.[MKTSOURCECODE] where [ID] = [MPI].[SOURCECODEID]), '<none>')),
    @CODE = [MPI].[CODE],
    @STATUS = (case [MP].[ISAPPROVED] when 0 then 'Not approved' else 'Approved' end),
    @CATEGORY = [CODE].[DESCRIPTION],
    @GOALS = [MPI].[GOALS],
    @STARTDATE = [MPI].[STARTDATE],
    @ENDDATE = [MPI].[ENDDATE], 
    @BACKCOLOR = [MPITI].[BACKCOLOR],
    @FORECOLOR = [MPITI].[FORECOLOR],
    @LEVEL0NAME = coalesce((select top 1 [NAME] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 5), ''),
    @LEVEL0ID = (select top 1 [ID] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 5),
    @LEVEL1CAPTION = (select [CAPTION] from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where ([MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID] and [SUB].[LEVEL] = [MPITI].[LEVEL] + 1)),
    @LEVEL1NAME = coalesce((select top 1 [NAME] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 4), ''),          
    @LEVEL1ID = (select top 1 [ID] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 4),
    @LEVEL1COUNT = (select count(*) from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHYFROMID]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPITI].[LEVEL] + 1),
    @LEVEL2CAPTION = (select [CAPTION] from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where ([MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID] and [SUB].[LEVEL] = [MPITI].[LEVEL] + 2)),
    @LEVEL2NAME = coalesce((select top 1 [NAME] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 3), ''),
    @LEVEL2ID = (select top 1 [ID] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 3),
    @LEVEL2COUNT = (select count(*) from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHYFROMID]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPITI].[LEVEL] + 2),
    @LEVEL3CAPTION = (select [CAPTION] from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where ([MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID] and [SUB].[LEVEL] = [MPITI].[LEVEL] + 3)),
    @LEVEL3NAME = coalesce((select top 1 [NAME] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 2), ''),
    @LEVEL3ID = (select top 1 [ID] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 2),
    @LEVEL3COUNT = (select count(*) from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHYFROMID]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPITI].[LEVEL] + 3),
    @LEVEL4CAPTION = (select [CAPTION] from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where ([MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID] and [SUB].[LEVEL] = [MPITI].[LEVEL] + 4)),
    @LEVEL4NAME = coalesce((select top 1 [NAME] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 1), ''),
    @LEVEL4ID = (select top 1 [ID] from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHY]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPI].[LEVEL] - 1),
    @LEVEL4COUNT = (select count(*) from dbo.[UFN_MKTMARKETINGPLANITEMHIERARCHYFROMID]([MPI].[ID]) as [SUB] where [SUB].[LEVEL] = [MPITI].[LEVEL] + 4),
    @LEVEL = [MPI].[LEVEL],
    @APPEALLEVEL = (select max([LEVEL]) - 1 from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where [MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID]),
    @APPEALCAPTION = (select [CAPTION] from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where ([MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID] and [SUB].[LEVEL] = (select max([LEVEL]) from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where [MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID]))),
    @BASECURRENCYID = case @CURRENCYCODE when 1 then dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() else [MPI].[BASECURRENCYID] end,
    @ASSUMEDBUDGET = case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONBUDGETAMOUNT] else [MPI].[BUDGETAMOUNT] end,
    @ALLOCATEDBUDGET = coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONBUDGETAMOUNT] else [SUB].[BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEM] as [SUB] where [SUB].[PARENTMARKETINGPLANITEMID] = [MPI].[ID]), 0) + 
                       coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONBUDGETAMOUNT] else [SUB].[BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0),
    @ASSUMEDREVENUE = case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end,
    @ALLOCATEDREVENUE = coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONTOTALREVENUEGOAL] else [SUB].[TOTALREVENUEGOAL] end) from dbo.[MKTMARKETINGPLANITEM] as [SUB] where [SUB].[PARENTMARKETINGPLANITEMID] = [MPI].[ID]), 0) + 
                        coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONTOTALREVENUEGOAL] else [SUB].[TOTALREVENUEGOAL] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0),
    @ASSUMEDRESPONSE = [MPI].[TOTALTRANSACTIONSGOAL],
    @ALLOCATEDRESPONSE = coalesce((select sum([SUB].[TOTALTRANSACTIONSGOAL]) from dbo.[MKTMARKETINGPLANITEM] as [SUB] where [SUB].[PARENTMARKETINGPLANITEMID] = [MPI].[ID]), 0) + 
                         coalesce((select sum([SUB].[TOTALTRANSACTIONSGOAL]) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0), 
    @ASSUMEDQUANTITY = [MPI].[QUANTITY],
    @ALLOCATEDQUANTITY = coalesce((select sum([SUB].[QUANTITY]) from dbo.[MKTMARKETINGPLANITEM] as [SUB] where [SUB].[PARENTMARKETINGPLANITEMID] = [MPI].[ID]), 0) + 
                         coalesce((select sum([SUB].[QUANTITY]) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0),
    @EXPENSES = coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONBUDGETAMOUNT] else [SUB].[BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) + 
                coalesce((select sum(case @CURRENCYCODE when 1 then [SUB].[ORGANIZATIONBUDGETAMOUNT] else [SUB].[BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0),
    @AVGGIFT = case when [MPI].[TOTALTRANSACTIONSGOAL] > 0
                    then case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end / [MPI].[TOTALTRANSACTIONSGOAL]
                    else 0 end,
    @COSTPERPIECE = case when [MPI].[QUANTITY] > 0
                    then case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONBUDGETAMOUNT] else [MPI].[BUDGETAMOUNT] end / [MPI].[QUANTITY]
                    else 0 end,
    @SEGMENTATIONNAME = (select top 1 [MKTSEGMENTATION].[NAME] from dbo.[MKTSEGMENTATION] where ([MPI].[ID] = [MKTSEGMENTATION].[MARKETINGPLANITEMID])),
    @SEGMENTATIONID = (select top 1 [MKTSEGMENTATION].[ID] from dbo.[MKTSEGMENTATION] where ([MPI].[ID] = [MKTSEGMENTATION].[MARKETINGPLANITEMID])),
    @ISLINKED = (case when exists ((select [MKTSEGMENTATION].[ID] from dbo.[MKTSEGMENTATION] where ([MPI].[ID] = [MKTSEGMENTATION].[MARKETINGPLANITEMID]))) then 1 else 0 end),
    @MAILINGLEVEL = (select max([LEVEL]) from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [SUB] where [MPI].[MARKETINGPLANID] = [SUB].[MARKETINGPLANID]),
    @MAILDATE = [MPI].[MAILDATE]
  from dbo.[MKTMARKETINGPLANITEM] as [MPI]
  inner join dbo.[MKTMARKETINGPLAN] as [MP] on [MP].[ID] = [MPI].[MARKETINGPLANID]
  left join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on ([MPITI].[MARKETINGPLANID] = [MPI].[MARKETINGPLANID] and [MPITI].[LEVEL] = [MPI].[LEVEL])
  left outer join dbo.[MKTPLANITEMCATEGORYCODE] as [CODE] on [CODE].[ID] = [MPI].[PLANITEMCATEGORYCODEID]
  where [MPI].[ID] = @MARKETINGPLANITEMID;

  with [PLANS] ([ID], [IDTREE]) as
  (
    select [MPI].[ID], convert(nvarchar(max), [MPI].[ID]) as [IDTREE]
    from dbo.[MKTMARKETINGPLANITEM] as [MPI]
    where [MPI].[PARENTMARKETINGPLANITEMID] is null
    union all
    select [MPI].[ID], convert(nvarchar(max), [PLANS].[IDTREE] + '\' + convert(nvarchar(36), [MPI].[ID]))
    from dbo.[MKTMARKETINGPLANITEM] as [MPI]
    inner join [PLANS] on [MPI].[PARENTMARKETINGPLANITEMID] = [PLANS].[ID]
  )
  select @HASACTIVATEDMAILING = 1 
  from [PLANS]
  where 
    [ID] in (select [MARKETINGPLANITEMID] from dbo.[MKTSEGMENTATION] where [MARKETINGPLANITEMID] is not null and [ACTIVE] = 1) 
    and charindex(convert(varchar(36), @MARKETINGPLANITEMID), [IDTREE]) > 0;

  if @HASACTIVATEDMAILING is null set @HASACTIVATEDMAILING = 0;
  if @AVGGIFT is null set @AVGGIFT = 0;
  if @COSTPERPIECE is null set @COSTPERPIECE = 0;

  if exists(select object_id from sys.objects where type = 'U' and name = 'DATABASEMAILSETTINGS')
    select @ALERTSENABLED = [ENABLED] from dbo.[DATABASEMAILSETTINGS];

  declare @PLANLINKEDTOMAILING bit;
  set @PLANLINKEDTOMAILING = case when exists (select * 
                                               from dbo.[MKTMARKETINGPLAN]
                                               inner join [MKTMARKETINGPLANITEM] on [MKTMARKETINGPLANITEM].[MARKETINGPLANID] = [MKTMARKETINGPLAN].[ID]
                                               left join [MKTSEGMENTATION] on [MKTSEGMENTATION].[MARKETINGPLANITEMID] = [MKTMARKETINGPLANITEM].[ID]
                                               where [MKTMARKETINGPLAN].[ID] = @MARKETINGPLANID and [MKTSEGMENTATION].[ID] is not null) then 1 else 0 end;

  set @BASECURRENCYCANBECHANGED = case when exists (select top 1 1 
                                                    from dbo.[MKTMARKETINGPLANBRIEF]
                                                    where 
                                                      [MKTMARKETINGPLANBRIEF].[MARKETINGPLANID] = @MARKETINGPLANID and 
                                                      [MKTMARKETINGPLANBRIEF].[PACKAGEID] is not null) or @PLANLINKEDTOMAILING = 1 then 0 else 1 end;
  return 0;