USP_MKTSEGMENTATIONACTIVATE_CACHELISTSEGMENTS

Caches information about the list segments present in a marketing effort.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_CACHELISTSEGMENTS]
(
  @SEGMENTATIONID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;

  begin try
    -- only save this info if this is the first activation

    if (select [ACTIVE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID) = 0
      begin
        if @CHANGEAGENTID is null
          exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

        set @CURRENTDATE = getdate();

        --Cache all list segment info that was not specifically overridden...

        insert into dbo.[MKTSEGMENTATIONSEGMENTLIST] (
          [ID],
          [SEGMENTLISTID],
          [OVERRIDELISTCOSTS],
          [OVERRIDEQUANTITIESANDORSEGMENTCOSTS],
          [BASERENTALCOST],
          [BASERENTALCOSTBASISCODE],
          [RENTALQUANTITY],
          [RENTALCOSTADJUSTMENT],
          [RENTALCOSTADJUSTMENTBASISCODE],
          [BASEEXCHANGECOST],
          [BASEEXCHANGECOSTBASISCODE],
          [EXCHANGEQUANTITY],
          [EXCHANGECOSTADJUSTMENT],
          [EXCHANGECOSTADJUSTMENTBASISCODE],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED],
          [BASECURRENCYID],
          [ORGANIZATIONBASERENTALCOST],
          [ORGANIZATIONBASEEXCHANGECOST],
          [ORGANIZATIONRENTALCOSTADJUSTMENT],
          [ORGANIZATIONEXCHANGECOSTADJUSTMENT]
        )
        select
          [MKTSEGMENTATIONSEGMENT].[ID],
          [MKTSEGMENTLIST].[ID],
          0,
          0,
          [MKTLIST].[BASERENTALCOST],
          [MKTLIST].[BASERENTALCOSTBASISCODE],
          [MKTSEGMENTLIST].[RENTALQUANTITY],
          [MKTSEGMENTLIST].[RENTALCOSTADJUSTMENT],
          [MKTSEGMENTLIST].[RENTALCOSTBASISCODE],
          [MKTLIST].[BASEEXCHANGECOST],
          [MKTLIST].[BASEEXCHANGECOSTBASISCODE],
          [MKTSEGMENTLIST].[EXCHANGEQUANTITY],
          [MKTSEGMENTLIST].[EXCHANGECOSTADJUSTMENT],
          [MKTSEGMENTLIST].[EXCHANGECOSTBASISCODE],
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE,
          [MKTSEGMENTLIST].[BASECURRENCYID],
          [MKTLIST].[ORGANIZATIONBASERENTALCOST],
          [MKTSEGMENTLIST].[ORGANIZATIONRENTALCOSTADJUSTMENT],
          [MKTLIST].[ORGANIZATIONBASEEXCHANGECOST],
          [MKTSEGMENTLIST].[ORGANIZATIONEXCHANGECOSTADJUSTMENT]
        from dbo.[MKTSEGMENTATIONSEGMENT]
        left outer join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
        inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
        inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
        inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
        where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
        and [MKTSEGMENTATIONSEGMENTLIST].[ID] is null;

        --Set the list segment ID for all list segments that were overridden...

        update dbo.[MKTSEGMENTATIONSEGMENTLIST] set
          [SEGMENTLISTID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID],
          [CHANGEDBYID] = @CHANGEAGENTID,
          [DATECHANGED] = @CURRENTDATE
        from [MKTSEGMENTATIONSEGMENTLIST] as [SSL]
        inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [SSL].[ID]
        inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
        where [SSL].[SEGMENTLISTID] is null;
      end;
  end try

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

  return 0;