USP_MKTSEGMENTATIONACTIVATE_CACHELISTRESPONSECOUNTS
Saves all the list response calculations for an activated marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_CACHELISTRESPONSECOUNTS]
(
@SEGMENTATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @LISTID uniqueidentifier;
declare @SEGMENTID uniqueidentifier;
declare @PACKAGEID uniqueidentifier;
declare @RESPONSECOUNTS table([QUANTITY] int not null, [RESPONDERS] int not null, [RESPONSES] int not null, [TOTALCOST] money not null, [TOTALGIFTAMOUNT] money not null, [AVERAGEGIFTAMOUNT] money not null, [ORGANIZATIONTOTALCOST] money not null, [ORGANIZATIONTOTALGIFTAMOUNT] money not null, [ORGANIZATIONAVERAGEGIFTAMOUNT] money not null);
declare @BASECURRENCYID uniqueidentifier;
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
select @BASECURRENCYID = [BASECURRENCYID] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID;
declare RESPONSECOUNTCURSOR cursor local fast_forward for
--Imported list segments
select distinct
[MKTLIST].[ID],
[MKTSEGMENTATIONSEGMENT].[ID],
[MKTSEGMENTATIONSEGMENT].[PACKAGEID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[IDSETRECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID] or [MKTSEGMENTLIST].[IDSETRECORDTYPEID] in (select [LS].[IDSETRECORDTYPEID] from dbo.[MKTSEGMENTLIST] as [LS] inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [LS].[CONSOLIDATEDQUERYVIEWID] where [QUERYVIEWCATALOG].[RECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID])
inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTLIST].[RECORDSOURCEID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
and [MKTSEGMENTLIST].[TYPECODE] <> 1
union
--Imported list test segments
select distinct
[MKTLIST].[ID],
[MKTSEGMENTATIONSEGMENT].[ID],
[MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[IDSETRECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID] or [MKTSEGMENTLIST].[IDSETRECORDTYPEID] in (select [LS].[IDSETRECORDTYPEID] from dbo.[MKTSEGMENTLIST] as [LS] inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [LS].[CONSOLIDATEDQUERYVIEWID] where [QUERYVIEWCATALOG].[RECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID])
inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTLIST].[RECORDSOURCEID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
and [MKTSEGMENTLIST].[TYPECODE] <> 1
union
--Vendor managed list segments
select distinct
[MKTLIST].[ID],
[MKTSEGMENTATIONSEGMENT].[ID],
[MKTSEGMENTATIONSEGMENT].[PACKAGEID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENTLIST].[SEGMENTLISTID]
inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTLIST].[RECORDSOURCEID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
and [MKTSEGMENTLIST].[TYPECODE] = 1
union
--Vendor managed list test segments
select distinct
[MKTLIST].[ID],
[MKTSEGMENTATIONSEGMENT].[ID],
[MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENTLIST].[SEGMENTLISTID]
inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTLIST].[RECORDSOURCEID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
and [MKTSEGMENTLIST].[TYPECODE] = 1;
open RESPONSECOUNTCURSOR;
fetch next from RESPONSECOUNTCURSOR into @LISTID, @SEGMENTID, @PACKAGEID;
while (@@FETCH_STATUS = 0)
begin
delete from @RESPONSECOUNTS;
insert into @RESPONSECOUNTS
exec dbo.[USP_MKTSEGMENTATIONLIST_GETRESPONSECOUNTS] @LISTID, @SEGMENTATIONID, @SEGMENTID, @PACKAGEID;
if exists(select 1 from dbo.[MKTSEGMENTATIONLISTACTIVE] where [LISTID] = @LISTID and [SEGMENTID] = @SEGMENTID and [PACKAGEID] = @PACKAGEID)
--The list cache row already exists, so just update the existing row...
update dbo.[MKTSEGMENTATIONLISTACTIVE] set
[MKTSEGMENTATIONLISTACTIVE].[QUANTITY] = [RC].[QUANTITY],
[MKTSEGMENTATIONLISTACTIVE].[RESPONDERS] = [RC].[RESPONDERS],
[MKTSEGMENTATIONLISTACTIVE].[RESPONSES] = [RC].[RESPONSES],
[MKTSEGMENTATIONLISTACTIVE].[TOTALCOST] = [RC].[TOTALCOST],
[MKTSEGMENTATIONLISTACTIVE].[TOTALGIFTAMOUNT] = [RC].[TOTALGIFTAMOUNT],
[MKTSEGMENTATIONLISTACTIVE].[CHANGEDBYID] = @CHANGEAGENTID,
[MKTSEGMENTATIONLISTACTIVE].[DATECHANGED] = getdate(),
[MKTSEGMENTATIONLISTACTIVE].[ORGANIZATIONTOTALCOST] = [RC].[ORGANIZATIONTOTALCOST],
[MKTSEGMENTATIONLISTACTIVE].[ORGANIZATIONTOTALGIFTAMOUNT] = [RC].[ORGANIZATIONTOTALGIFTAMOUNT]
from @RESPONSECOUNTS as [RC]
where [MKTSEGMENTATIONLISTACTIVE].[LISTID] = @LISTID
and [MKTSEGMENTATIONLISTACTIVE].[SEGMENTID] = @SEGMENTID
and [MKTSEGMENTATIONLISTACTIVE].[PACKAGEID] = @PACKAGEID;
else
--Insert a new list cache row...
insert into dbo.[MKTSEGMENTATIONLISTACTIVE] ([LISTID], [SEGMENTID], [PACKAGEID], [QUANTITY], [RESPONDERS], [RESPONSES], [TOTALCOST], [TOTALGIFTAMOUNT], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED], [ORGANIZATIONTOTALCOST], [ORGANIZATIONTOTALGIFTAMOUNT], [BASECURRENCYID])
select
@LISTID,
@SEGMENTID,
@PACKAGEID,
[QUANTITY],
[RESPONDERS],
[RESPONSES],
[TOTALCOST],
[TOTALGIFTAMOUNT],
@CHANGEAGENTID,
@CHANGEAGENTID,
getdate(),
getdate(),
[ORGANIZATIONTOTALCOST],
[ORGANIZATIONTOTALGIFTAMOUNT],
@BASECURRENCYID
from @RESPONSECOUNTS;
fetch next from RESPONSECOUNTCURSOR into @LISTID, @SEGMENTID, @PACKAGEID;
end
close RESPONSECOUNTCURSOR;
deallocate RESPONSECOUNTCURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;