USP_MKTSEGMENTATIONSEGMENTACTIVE_SAVE

Saves the activated marketing effort segment or test segment calculations.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTID uniqueidentifier IN
@TESTSEGMENTID uniqueidentifier IN
@IMPRESSIONS int IN
@IMPRESSIONCALCULATIONMETHODCODE tinyint IN
@QUANTITY int IN
@RESPONDERS int IN
@RESPONSES int IN
@VARIABLECOST money IN
@FIXEDCOST money IN
@TOTALCOST money IN
@COSTPERDOLLARRAISED money IN
@TOTALGIFTAMOUNT money IN
@AVERAGEGIFTAMOUNT money IN
@RESPONSERATE decimal(19, 4) IN
@LIFT decimal(19, 4) IN
@ROIAMOUNT money IN
@ROIPERCENT decimal(19, 4) IN
@EXPECTEDCOSTPERDOLLARRAISED money IN
@EXPECTEDRESPONDERS int IN
@EXPECTEDTOTALGIFTAMOUNT money IN
@EXPECTEDROIAMOUNT money IN
@EXPECTEDROIPERCENT decimal(19, 4) IN
@CHANGEAGENTID uniqueidentifier IN
@ORGANIZATIONVARIABLECOST money IN
@ORGANIZATIONFIXEDCOST money IN
@ORGANIZATIONTOTALCOST money IN
@ORGANIZATIONCOSTPERDOLLARRAISED money IN
@ORGANIZATIONTOTALGIFTAMOUNT money IN
@ORGANIZATIONAVERAGEGIFTAMOUNT money IN
@ORGANIZATIONROIAMOUNT money IN
@ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED money IN
@ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT money IN
@ORGANIZATIONEXPECTEDROIAMOUNT money IN
@BASECURRENCYID uniqueidentifier IN
@COSTTOACQUIRE money IN
@COSTPERTHOUSAND decimal(22, 4) IN
@NETPERTHOUSAND decimal(22, 4) IN
@GROSSPERTHOUSAND decimal(22, 4) IN
@ORGANIZATIONCOSTTOACQUIRE money IN
@ORGANIZATIONCOSTPERTHOUSAND decimal(22, 4) IN
@ORGANIZATIONNETPERTHOUSAND decimal(22, 4) IN
@ORGANIZATIONGROSSPERTHOUSAND money IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATIONSEGMENTACTIVE_SAVE]
(
  @SEGMENTID uniqueidentifier,
  @TESTSEGMENTID uniqueidentifier = null,
  @IMPRESSIONS integer,
  @IMPRESSIONCALCULATIONMETHODCODE tinyint,
  @QUANTITY integer,
  @RESPONDERS integer,
  @RESPONSES integer,
  @VARIABLECOST money,
  @FIXEDCOST money,
  @TOTALCOST money,
  @COSTPERDOLLARRAISED money,
  @TOTALGIFTAMOUNT money,
  @AVERAGEGIFTAMOUNT money,
  @RESPONSERATE decimal(19,4),
  @LIFT decimal(19,4),
  @ROIAMOUNT money,
  @ROIPERCENT decimal(19,4),
  @EXPECTEDCOSTPERDOLLARRAISED money,
  @EXPECTEDRESPONDERS integer,
  @EXPECTEDTOTALGIFTAMOUNT money,
  @EXPECTEDROIAMOUNT money,
  @EXPECTEDROIPERCENT decimal(19,4),
  @CHANGEAGENTID uniqueidentifier = null,
  @ORGANIZATIONVARIABLECOST money = null,
  @ORGANIZATIONFIXEDCOST money = null,
  @ORGANIZATIONTOTALCOST money = null,
  @ORGANIZATIONCOSTPERDOLLARRAISED money = null,
  @ORGANIZATIONTOTALGIFTAMOUNT money = null,
  @ORGANIZATIONAVERAGEGIFTAMOUNT money = null,
  @ORGANIZATIONROIAMOUNT money = null,
  @ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED money = null,
  @ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT money = null,
  @ORGANIZATIONEXPECTEDROIAMOUNT money = null,  
  @BASECURRENCYID uniqueidentifier = null,
  @COSTTOACQUIRE money = null,
  @COSTPERTHOUSAND decimal(22,4) = null,  
  @NETPERTHOUSAND decimal(22,4) = null,  
  @GROSSPERTHOUSAND decimal(22,4) = null,
  @ORGANIZATIONCOSTTOACQUIRE money = null,
  @ORGANIZATIONCOSTPERTHOUSAND decimal(22,4) = null,  
  @ORGANIZATIONNETPERTHOUSAND decimal(22,4) = null,
  @ORGANIZATIONGROSSPERTHOUSAND money = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;

  begin try
    if @CHANGEAGENTID is null  
      exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

    set @CURRENTDATE = GetDate();    

    if exists(select 1 from dbo.[MKTSEGMENTATIONSEGMENTACTIVE] where [SEGMENTID] = @SEGMENTID and ((@TESTSEGMENTID is null and [TESTSEGMENTID] is null) or (@TESTSEGMENTID is not null and [TESTSEGMENTID] = @TESTSEGMENTID)))
      /* Update the existing row of segment cache */
      update dbo.[MKTSEGMENTATIONSEGMENTACTIVE] set
        [IMPRESSIONS] = @IMPRESSIONS,
        [IMPRESSIONCALCULATIONMETHODCODE] = @IMPRESSIONCALCULATIONMETHODCODE,
        [QUANTITY] = @QUANTITY,
        [RESPONDERS] = @RESPONDERS,
        [RESPONSES] = @RESPONSES,
        [VARIABLECOST] = @VARIABLECOST,
        [FIXEDCOST] = @FIXEDCOST,
        [TOTALCOST] = @TOTALCOST,
        [COSTPERDOLLARRAISED] = @COSTPERDOLLARRAISED,
        [TOTALGIFTAMOUNT] = @TOTALGIFTAMOUNT,
        [AVERAGEGIFTAMOUNT] = @AVERAGEGIFTAMOUNT,
        [RESPONSERATE] = @RESPONSERATE,
        [LIFT] = @LIFT,
        [ROIAMOUNT] = @ROIAMOUNT,
        [ROIPERCENT] = @ROIPERCENT,
        [EXPECTEDCOSTPERDOLLARRAISED] = @EXPECTEDCOSTPERDOLLARRAISED,
        [EXPECTEDRESPONDERS] = @EXPECTEDRESPONDERS,
        [EXPECTEDTOTALGIFTAMOUNT] = @EXPECTEDTOTALGIFTAMOUNT,
        [EXPECTEDROIAMOUNT] = @EXPECTEDROIAMOUNT,
        [EXPECTEDROIPERCENT] = @EXPECTEDROIPERCENT,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE,
        [ORGANIZATIONVARIABLECOST] = isnull(@ORGANIZATIONVARIABLECOST, @VARIABLECOST),
        [ORGANIZATIONFIXEDCOST] = isnull(@ORGANIZATIONFIXEDCOST, @FIXEDCOST),
        [ORGANIZATIONTOTALCOST] = isnull(@ORGANIZATIONTOTALCOST, @TOTALCOST),
        [ORGANIZATIONCOSTPERDOLLARRAISED] = isnull(@ORGANIZATIONCOSTPERDOLLARRAISED, @COSTPERDOLLARRAISED),
        [ORGANIZATIONTOTALGIFTAMOUNT] = isnull(@ORGANIZATIONTOTALGIFTAMOUNT, @TOTALGIFTAMOUNT),
        [ORGANIZATIONAVERAGEGIFTAMOUNT] = isnull(@ORGANIZATIONAVERAGEGIFTAMOUNT, @AVERAGEGIFTAMOUNT),
        [ORGANIZATIONROIAMOUNT] = isnull(@ORGANIZATIONROIAMOUNT, @ROIAMOUNT),
        [ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED] = isnull(@ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED, @EXPECTEDCOSTPERDOLLARRAISED),
        [ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT] = isnull(@ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT, @EXPECTEDTOTALGIFTAMOUNT),
        [ORGANIZATIONEXPECTEDROIAMOUNT] = isnull(@ORGANIZATIONEXPECTEDROIAMOUNT, @EXPECTEDROIAMOUNT),
        [COSTTOACQUIRE] = isnull(@COSTTOACQUIRE, 0),
        [COSTPERTHOUSAND] = isnull(@COSTPERTHOUSAND, 0),
        [NETPERTHOUSAND] = isnull(@NETPERTHOUSAND, 0),
        [GROSSPERTHOUSAND] = isnull(@GROSSPERTHOUSAND, 0),
        [ORGANIZATIONCOSTTOACQUIRE] = coalesce(@ORGANIZATIONCOSTTOACQUIRE, @COSTTOACQUIRE, 0),
        [ORGANIZATIONCOSTPERTHOUSAND] = coalesce(@ORGANIZATIONCOSTPERTHOUSAND, @COSTPERTHOUSAND, 0),
        [ORGANIZATIONNETPERTHOUSAND] = coalesce(@ORGANIZATIONNETPERTHOUSAND, @NETPERTHOUSAND, 0),
        [ORGANIZATIONGROSSPERTHOUSAND] = coalesce(@ORGANIZATIONGROSSPERTHOUSAND, @GROSSPERTHOUSAND, 0)
      where [SEGMENTID] = @SEGMENTID
      and ((@TESTSEGMENTID is null and [TESTSEGMENTID] is null) or (@TESTSEGMENTID is not null and [TESTSEGMENTID] = @TESTSEGMENTID));
    else
    begin

      if @BASECURRENCYID is null
        set @BASECURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

      /* Insert a new row for the segment cache */
      insert into dbo.[MKTSEGMENTATIONSEGMENTACTIVE] (
        [ID],
        [SEGMENTID],
        [TESTSEGMENTID],
        [IMPRESSIONS],
        [IMPRESSIONCALCULATIONMETHODCODE],
        [QUANTITY],
        [RESPONDERS],
        [RESPONSES],
        [VARIABLECOST],
        [FIXEDCOST],
        [TOTALCOST],
        [COSTPERDOLLARRAISED],
        [TOTALGIFTAMOUNT],
        [AVERAGEGIFTAMOUNT],
        [RESPONSERATE],
        [LIFT],
        [ROIAMOUNT],
        [ROIPERCENT],
        [EXPECTEDCOSTPERDOLLARRAISED],
        [EXPECTEDRESPONDERS],
        [EXPECTEDTOTALGIFTAMOUNT],
        [EXPECTEDROIAMOUNT],
        [EXPECTEDROIPERCENT],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED],
        [ORGANIZATIONVARIABLECOST],
        [ORGANIZATIONFIXEDCOST],
        [ORGANIZATIONTOTALCOST],
        [ORGANIZATIONCOSTPERDOLLARRAISED],
        [ORGANIZATIONTOTALGIFTAMOUNT],
        [ORGANIZATIONAVERAGEGIFTAMOUNT],
        [ORGANIZATIONROIAMOUNT],
        [ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED],
        [ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT],
        [ORGANIZATIONEXPECTEDROIAMOUNT],
        [BASECURRENCYID],
        [COSTTOACQUIRE],
        [COSTPERTHOUSAND],
        [NETPERTHOUSAND],
        [GROSSPERTHOUSAND],
        [ORGANIZATIONCOSTTOACQUIRE],
        [ORGANIZATIONCOSTPERTHOUSAND],
        [ORGANIZATIONNETPERTHOUSAND],
        [ORGANIZATIONGROSSPERTHOUSAND]
      ) values (
        NewID(),
        @SEGMENTID,
        @TESTSEGMENTID,
        @IMPRESSIONS,
        @IMPRESSIONCALCULATIONMETHODCODE,
        @QUANTITY,
        @RESPONDERS,
        @RESPONSES,
        @VARIABLECOST,
        @FIXEDCOST,
        @TOTALCOST,
        @COSTPERDOLLARRAISED,
        @TOTALGIFTAMOUNT,
        @AVERAGEGIFTAMOUNT,
        @RESPONSERATE,
        @LIFT,
        @ROIAMOUNT,
        @ROIPERCENT,
        @EXPECTEDCOSTPERDOLLARRAISED,
        @EXPECTEDRESPONDERS,
        @EXPECTEDTOTALGIFTAMOUNT,
        @EXPECTEDROIAMOUNT,
        @EXPECTEDROIPERCENT,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE,
        isnull(@ORGANIZATIONVARIABLECOST, @VARIABLECOST),
        isnull(@ORGANIZATIONFIXEDCOST, @FIXEDCOST),
        isnull(@ORGANIZATIONTOTALCOST, @TOTALCOST),
        isnull(@ORGANIZATIONCOSTPERDOLLARRAISED, @COSTPERDOLLARRAISED),
        isnull(@ORGANIZATIONTOTALGIFTAMOUNT, @TOTALGIFTAMOUNT),
        isnull(@ORGANIZATIONAVERAGEGIFTAMOUNT, @AVERAGEGIFTAMOUNT),
        isnull(@ORGANIZATIONROIAMOUNT, @ROIAMOUNT),
        isnull(@ORGANIZATIONEXPECTEDCOSTPERDOLLARRAISED, @EXPECTEDCOSTPERDOLLARRAISED),
        isnull(@ORGANIZATIONEXPECTEDTOTALGIFTAMOUNT, @EXPECTEDTOTALGIFTAMOUNT),
        isnull(@ORGANIZATIONEXPECTEDROIAMOUNT, @EXPECTEDROIAMOUNT),
        @BASECURRENCYID,
        isnull(@COSTTOACQUIRE, 0),
        isnull(@COSTPERTHOUSAND, 0),
        isnull(@NETPERTHOUSAND, 0),
        isnull(@GROSSPERTHOUSAND, 0),
        coalesce(@ORGANIZATIONCOSTTOACQUIRE, @COSTTOACQUIRE, 0),
        coalesce(@ORGANIZATIONCOSTPERTHOUSAND, @COSTPERTHOUSAND, 0),
        coalesce(@ORGANIZATIONNETPERTHOUSAND, @NETPERTHOUSAND, 0),
        coalesce(@ORGANIZATIONGROSSPERTHOUSAND, @GROSSPERTHOUSAND, 0)
      );
    end
  end try

  begin catch
    exec dbo.[USP_RAISE_ERROR];
    return 1;
  end catch

  return 0;