USP_REVENUESPLITBUSINESSUNIT_GETMARKETINGFIELDS

Returns all marketing fields (test segment,segment,effort and appeal) from revenue and revenue split information.

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN
@TESTSEGMENTID uniqueidentifier INOUT
@SEGMENTID uniqueidentifier INOUT
@MAILINGID uniqueidentifier INOUT
@APPEALID uniqueidentifier INOUT

Definition

Copy


CREATE procedure dbo.USP_REVENUESPLITBUSINESSUNIT_GETMARKETINGFIELDS(
 @REVENUESPLITID uniqueidentifier,
 @TESTSEGMENTID uniqueidentifier =null output,
 @SEGMENTID uniqueidentifier = null output,
 @MAILINGID uniqueidentifier = null output,
 @APPEALID uniqueidentifier = null output      
)
as
begin
    declare @REVENUEID uniqueidentifier;
  declare @CONSTITUENTID uniqueidentifier;
  declare @FINDERNUMBER bigint;

  declare @REVENUEMAILINGID uniqueidentifier;
  declare @REVENUEAPPEALID uniqueidentifier;
  declare @SOURCECODE nvarchar(max);

  declare @SOURCECODEMAILINGID uniqueidentifier;
  declare @SOURCECODEAPPEALID uniqueidentifier;

  --Grab some revenue related information.

  select 
    @REVENUEID= FINANCIALTRANSACTION.ID,
    @REVENUEMAILINGID= REVENUE_EXT.MAILINGID,
    @REVENUEAPPEALID= REVENUE_EXT.APPEALID,
    @SOURCECODE= REVENUE_EXT.SOURCECODE,
    @CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID,
    @FINDERNUMBER = REVENUE_EXT.FINDERNUMBER
  from dbo.FINANCIALTRANSACTION inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
  inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID= FINANCIALTRANSACTION.ID
  where FINANCIALTRANSACTIONLINEITEM.ID = @REVENUESPLITID


  if @REVENUEMAILINGID is not null -- Mailing is on revenue record

    set @MAILINGID = @REVENUEMAILINGID

  if @REVENUEAPPEALID is not null -- Appeal is on revenue record

    set @APPEALID = @REVENUEAPPEALID

  -- Look in mailing data table first for normal constituent segments in a direct marketing efforts.

  if @MAILINGID is not null
  begin    
    declare @SQLEXEC nvarchar(max) ='select ';
    declare @COLUMNS nvarchar(max); 
    declare @FROMCLAUSE nvarchar(max);
    declare @WHERECLAUSE nvarchar(max);

    set @COLUMNS =  ' @TESTSEGMENTID = MD.TESTSEGMENTID, '+ char(13) +
                    ' @SEGMENTID = MD.SEGMENTID  ';

    set @FROMCLAUSE = ' from ' + dbo.UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME(@MAILINGID)+' MD ';
    set @WHERECLAUSE =' where MD.DONORID=@CONSTITUENTID ';
    if @APPEALID is null
    begin
      set @COLUMNS= @COLUMNS + ',@APPEALID = A.ID '
      set @FROMCLAUSE = @FROMCLAUSE + ' inner join dbo.CONSTITUENTAPPEAL CA on CA.ID = MD.CONSTITUENTAPPEALID '+ char(13) +
                                      ' inner join dbo.APPEAL A on A.ID = CA.APPEALID '
    end

    set @SQLEXEC = @SQLEXEC + @COLUMNS + @FROMCLAUSE + @WHERECLAUSE;

    if @APPEALID is null
      exec sp_executesql @SQLEXEC,
        N'@TESTSEGMENTID uniqueidentifier output, @SEGMENTID uniqueidentifier output, @APPEALID uniqueidentifier output, @CONSTITUENTID uniqueidentifier',
        @TESTSEGMENTID = @TESTSEGMENTID output, @SEGMENTID=@SEGMENTID output, @APPEALID=@APPEALID output, @CONSTITUENTID = @CONSTITUENTID;
    else
      exec sp_executesql @SQLEXEC,
        N'@TESTSEGMENTID uniqueidentifier output, @SEGMENTID uniqueidentifier output, @CONSTITUENTID uniqueidentifier',
        @TESTSEGMENTID = @TESTSEGMENTID output, @SEGMENTID=@SEGMENTID output, @CONSTITUENTID = @CONSTITUENTID;   
  end

  -- Check for an imported list segment in a direct marketing effort.

  if @TESTSEGMENTID is null and @SEGMENTID is null and (@FINDERNUMBER is not null and @FINDERNUMBER<>0)
  begin
    if @MAILINGID is null
      set @MAILINGID= dbo.UFN_MKTSEGMENTATIONFINDERNUMBER_GETSEGMENTATION(@FINDERNUMBER)

    if @APPEALID is null
      select 
        @APPEALID = coalesce(APPEALSYSTEMID, '00000000-0000-0000-0000-000000000000')
      from dbo.MKTSEGMENTATIONACTIVATE
      inner join MKTSEGMENTATION 
        on MKTSEGMENTATION.ID = MKTSEGMENTATIONACTIVATE.SEGMENTATIONID
      where MKTSEGMENTATIONACTIVATE.SEGMENTATIONID = @MAILINGID 
        and MKTSEGMENTATION.ACTIVE=1
        and APPEALSYSTEMID <> ''

    declare @LISTSQLEXEC nvarchar(max);

    set @LISTSQLEXEC =  ' select ' + char(13)+ 
                    ' @TESTSEGMENTID = MD.TESTSEGMENTID, '+ char(13) +
                    ' @SEGMENTID = MD.SEGMENTID  ' +
                    ' from ' + dbo.UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME(@MAILINGID)+' MD ' +
                    ' where MD.FINDERNUMBER = @FINDERNUMBER ';
    exec sp_executesql @LISTSQLEXEC,
      N'@TESTSEGMENTID uniqueidentifier output, @SEGMENTID uniqueidentifier output, @FINDERNUMBER bigint',
        @TESTSEGMENTID = @TESTSEGMENTID output, @SEGMENTID=@SEGMENTID output, @FINDERNUMBER = @FINDERNUMBER;   
  end


  -- Check for a vendor managed list segment in a direct marketing effort.

  if @TESTSEGMENTID is null and @SEGMENTID is null and (@SOURCECODE is not null or @SOURCECODE<>'')
  begin   
    --Grab source code information

    exec dbo.USP_DATAFORMTEMPLATE_VIEW_MKTSOURCECODEMAP
      @SOURCECODE,
      0,
      null,
      @SOURCECODEMAILINGID output,
      null,
      null,
      null,
      @SOURCECODEAPPEALID output,
      null

    if @APPEALID is null and @SOURCECODEAPPEALID is null
      select 
        @APPEALID = APPEALSYSTEMID
      from dbo.MKTSEGMENTATIONACTIVATE
      inner join MKTSOURCECODEMAP on MKTSOURCECODEMAP.SEGMENTATIONID = MKTSEGMENTATIONACTIVATE.SEGMENTATIONID
      inner join MKTSEGMENTATION on MKTSEGMENTATION.ID = MKTSOURCECODEMAP.SEGMENTATIONID
      where MKTSEGMENTATION.ACTIVE=1 and MKTSOURCECODEMAP.SOURCECODE = @SOURCECODE and MKTSOURCECODEMAP.SEGMENTATIONID = @MAILINGID
    else
      if @APPEALID is null
        set @APPEALID = @SOURCECODEAPPEALID

    if @SOURCECODEMAILINGID is not null    
    begin
      if @MAILINGID is null
        set @MAILINGID = @SOURCECODEMAILINGID

      select
        @TESTSEGMENTID = SEGMENTATIONTESTSEGMENTID,
        @SEGMENTID = SEGMENTATIONSEGMENTID
      from dbo.MKTSOURCECODEMAP where SOURCECODE = @SOURCECODE and SEGMENTATIONID= @MAILINGID
    end
  end
end