USP_DATALIST_MKTMARKETINGPLANSTATUS
Returns a list of all plan items for a specific plan with revenue and expense information for each.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLANID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENCYCODE | tinyint | IN | Currency |
Definition
Copy
CREATE procedure [dbo].[USP_DATALIST_MKTMARKETINGPLANSTATUS]
(
@PLANID uniqueidentifier = null,
@CURRENCYCODE tinyint = 1
)
as
set nocount on;
begin try
-- get number of levels in the plan
declare @LEVELS integer;
select
@LEVELS = count([ID])
from dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM]
where [MARKETINGPLANID] = @PLANID;
declare @RETURNTABLE table (
[SITE] nvarchar(1024),
[CURRENCYISOCURRENCYCODE] nvarchar(6),
[CURRENCYDECIMALDIGITS] tinyint,
[CURRENCYSYMBOL] nvarchar(10),
[CURRENCYSYMBOLDISPLAYSETTINGCODE] tinyint,
[LEVELS] integer,
[LEVEL0ID] uniqueidentifier,
[LEVEL0NAME] nvarchar(100),
[LEVEL0CAPTION] nvarchar(50),
[LEVEL0EXPBUDGET] money,
[LEVEL0EXPREVENUE] money,
[LEVEL0EXPQUANTITY] integer,
[LEVEL0EXPRESPONSES] integer,
[LEVEL0EXPRESPONSERATE] float,
[LEVEL1ID] uniqueidentifier,
[LEVEL1NAME] nvarchar(100),
[LEVEL1CAPTION] nvarchar(50),
[LEVEL1EXPBUDGET] money,
[LEVEL1EXPREVENUE] money,
[LEVEL1EXPQUANTITY] integer,
[LEVEL1EXPRESPONSES] integer,
[LEVEL1EXPRESPONSERATE] float,
[LEVEL2ID] uniqueidentifier,
[LEVEL2NAME] nvarchar(100),
[LEVEL2CAPTION] nvarchar(50),
[LEVEL2EXPBUDGET] money,
[LEVEL2EXPREVENUE] money,
[LEVEL2EXPQUANTITY] integer,
[LEVEL2EXPRESPONSES] integer,
[LEVEL2EXPRESPONSERATE] float,
[LEVEL3ID] uniqueidentifier,
[LEVEL3NAME] nvarchar(100),
[LEVEL3CAPTION] nvarchar(50),
[LEVEL3EXPBUDGET] money,
[LEVEL3EXPREVENUE] money,
[LEVEL3EXPQUANTITY] integer,
[LEVEL3EXPRESPONSES] integer,
[LEVEL3EXPRESPONSERATE] float,
[LEVEL4ID] uniqueidentifier,
[LEVEL4NAME] nvarchar(100),
[LEVEL4CAPTION] nvarchar(50),
[LEVEL4EXPBUDGET] money,
[LEVEL4EXPREVENUE] money,
[LEVEL4EXPQUANTITY] integer,
[LEVEL4EXPRESPONSES] integer,
[LEVEL4EXPRESPONSERATE] float,
[OFFERS] integer,
[RESPONSES] integer,
[REVENUE] money,
[COST] money
);
declare @RESPONSETABLE table (
[OFFERS] integer,
[RESPONDERS] integer,
[RESPONSES] integer,
[TOTALGIFTAMOUNT] money,
[RESPONSERATE] decimal,
[TOTALORGANIZATIONGIFTAMOUNT] money,
[FIRSTRESPONSEDATE] datetime
);
declare @COSTTABLE table (
[COST] money
);
declare @OFFERS integer;
declare @RESPONSES integer;
declare @REVENUE money;
declare @COSTS money;
declare @MAILINGID uniqueidentifier;
---------------------------------------------------------------------------------------------------------------------
-- BEGIN LEVEL 0
---------------------------------------------------------------------------------------------------------------------
declare LEVEL0CURSOR cursor local fast_forward for
select
[MPI].[ID],
[MPI].[NAME],
[MPITI].[CAPTION],
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) +
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0)
as [BUDGETAMOUNT],
case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end as [TOTALREVENUEGOAL],
[MPI].[TOTALTRANSACTIONSGOAL],
[MPI].[RESPONSERATEGOAL],
[MPI].[QUANTITY]
from dbo.[MKTMARKETINGPLANITEM] as [MPI]
inner join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on [MPITI].[LEVEL] = [MPI].[LEVEL] and [MPITI].[MARKETINGPLANID] = @PLANID
where [MPI].[MARKETINGPLANID] = @PLANID
and [MPI].[LEVEL] = 0;
declare @LEVEL0ID uniqueidentifier;
declare @LEVEL0NAME nvarchar(100);
declare @LEVEL0CAPTION nvarchar(50);
declare @LEVEL0EXPBUDGET money;
declare @LEVEL0EXPREVENUE money;
declare @LEVEL0EXPRESPONSES integer;
declare @LEVEL0EXPRESPONSERATE float;
declare @LEVEL0EXPQUANTITY integer;
open LEVEL0CURSOR;
fetch next from LEVEL0CURSOR into @LEVEL0ID, @LEVEL0NAME, @LEVEL0CAPTION, @LEVEL0EXPBUDGET, @LEVEL0EXPREVENUE, @LEVEL0EXPRESPONSES, @LEVEL0EXPRESPONSERATE, @LEVEL0EXPQUANTITY;
while (@@FETCH_STATUS = 0)
begin
---------------------------------------------------------------------------------------------------------------------
-- BEGIN LEVEL 1
---------------------------------------------------------------------------------------------------------------------
declare LEVEL1CURSOR cursor local fast_forward for
select
[MPI].[ID],
[MPI].[NAME],
[MPITI].[CAPTION],
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) +
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0)
as [BUDGETAMOUNT],
case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end as [TOTALREVENUEGOAL],
[MPI].[TOTALTRANSACTIONSGOAL],
[MPI].[RESPONSERATEGOAL],
[MPI].[QUANTITY]
from dbo.[MKTMARKETINGPLANITEM] as [MPI]
inner join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on [MPITI].[LEVEL] = [MPI].[LEVEL] and [MPITI].[MARKETINGPLANID] = @PLANID
where [MPI].[PARENTMARKETINGPLANITEMID] = @LEVEL0ID;
declare @LEVEL1ID uniqueidentifier;
declare @LEVEL1NAME nvarchar(100);
declare @LEVEL1CAPTION nvarchar(50);
declare @LEVEL1EXPBUDGET money;
declare @LEVEL1EXPREVENUE money;
declare @LEVEL1EXPRESPONSES integer;
declare @LEVEL1EXPRESPONSERATE float;
declare @LEVEL1EXPQUANTITY integer;
open LEVEL1CURSOR;
fetch next from LEVEL1CURSOR into @LEVEL1ID, @LEVEL1NAME, @LEVEL1CAPTION, @LEVEL1EXPBUDGET, @LEVEL1EXPREVENUE, @LEVEL1EXPRESPONSES, @LEVEL1EXPRESPONSERATE, @LEVEL1EXPQUANTITY;
if @@FETCH_STATUS <> 0
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1NAME],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
'__NO_ITEM_EXISTS__',
0,
0,
0,
0
);
while (@@FETCH_STATUS = 0)
begin
if @LEVELS > 2
begin
---------------------------------------------------------------------------------------------------------------------
-- BEGIN LEVEL 2
---------------------------------------------------------------------------------------------------------------------
declare LEVEL2CURSOR cursor local fast_forward for
select
[MPI].[ID],
[MPI].[NAME],
[MPITI].[CAPTION],
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) +
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0)
as [BUDGETAMOUNT],
case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end as [TOTALREVENUEGOAL],
[MPI].[TOTALTRANSACTIONSGOAL],
[MPI].[RESPONSERATEGOAL],
[MPI].[QUANTITY]
from dbo.[MKTMARKETINGPLANITEM] as [MPI]
inner join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on [MPITI].[LEVEL] = [MPI].[LEVEL] and [MPITI].[MARKETINGPLANID] = @PLANID
where [MPI].[PARENTMARKETINGPLANITEMID] = @LEVEL1ID;
declare @LEVEL2ID uniqueidentifier;
declare @LEVEL2NAME nvarchar(100);
declare @LEVEL2CAPTION nvarchar(50);
declare @LEVEL2EXPBUDGET money;
declare @LEVEL2EXPREVENUE money;
declare @LEVEL2EXPRESPONSES integer;
declare @LEVEL2EXPRESPONSERATE float;
declare @LEVEL2EXPQUANTITY integer;
open LEVEL2CURSOR;
fetch next from LEVEL2CURSOR into @LEVEL2ID, @LEVEL2NAME, @LEVEL2CAPTION, @LEVEL2EXPBUDGET, @LEVEL2EXPREVENUE, @LEVEL2EXPRESPONSES, @LEVEL2EXPRESPONSERATE, @LEVEL2EXPQUANTITY;
if @@FETCH_STATUS <> 0
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2NAME],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
'__NO_ITEM_EXISTS__',
0,
0,
0,
0
);
while (@@FETCH_STATUS = 0)
begin
if @LEVELS > 3
begin
---------------------------------------------------------------------------------------------------------------------
-- BEGIN LEVEL 3
---------------------------------------------------------------------------------------------------------------------
declare LEVEL3CURSOR cursor local fast_forward for
select
[MPI].[ID],
[MPI].[NAME],
[MPITI].[CAPTION],
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) +
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0)
as [BUDGETAMOUNT],
case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end as [TOTALREVENUEGOAL],
[MPI].[TOTALTRANSACTIONSGOAL],
[MPI].[RESPONSERATEGOAL],
[MPI].[QUANTITY]
from dbo.[MKTMARKETINGPLANITEM] as [MPI]
inner join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on [MPITI].[LEVEL] = [MPI].[LEVEL] and [MPITI].[MARKETINGPLANID] = @PLANID
where [MPI].[PARENTMARKETINGPLANITEMID] = @LEVEL2ID;
declare @LEVEL3ID uniqueidentifier;
declare @LEVEL3NAME nvarchar(100);
declare @LEVEL3CAPTION nvarchar(50);
declare @LEVEL3EXPBUDGET money;
declare @LEVEL3EXPREVENUE money;
declare @LEVEL3EXPRESPONSES integer;
declare @LEVEL3EXPRESPONSERATE float;
declare @LEVEL3EXPQUANTITY integer;
open LEVEL3CURSOR;
fetch next from LEVEL3CURSOR into @LEVEL3ID, @LEVEL3NAME, @LEVEL3CAPTION, @LEVEL3EXPBUDGET, @LEVEL3EXPREVENUE, @LEVEL3EXPRESPONSES, @LEVEL3EXPRESPONSERATE, @LEVEL3EXPQUANTITY;
if @@FETCH_STATUS <> 0
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[LEVEL3NAME],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@LEVEL2ID,
@LEVEL2NAME,
@LEVEL2CAPTION,
@LEVEL2EXPBUDGET,
@LEVEL2EXPREVENUE,
@LEVEL2EXPQUANTITY,
@LEVEL2EXPRESPONSES,
@LEVEL2EXPRESPONSERATE,
'__NO_ITEM_EXISTS__',
0,
0,
0,
0
);
while (@@FETCH_STATUS = 0)
begin
if @LEVELS > 4
begin
---------------------------------------------------------------------------------------------------------------------
-- BEGIN LEVEL 4
---------------------------------------------------------------------------------------------------------------------
declare LEVEL4CURSOR cursor local fast_forward for
select
[MPI].[ID],
[MPI].[NAME],
[MPITI].[CAPTION],
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANITEMEXPENSE] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0) +
coalesce((select sum(case @CURRENCYCODE when 1 then [ORGANIZATIONBUDGETAMOUNT] else [BUDGETAMOUNT] end) from dbo.[MKTMARKETINGPLANBRIEF] as [SUB] where [SUB].[MARKETINGPLANITEMID] = [MPI].[ID]), 0)
as [BUDGETAMOUNT],
case @CURRENCYCODE when 1 then [MPI].[ORGANIZATIONTOTALREVENUEGOAL] else [MPI].[TOTALREVENUEGOAL] end as [TOTALREVENUEGOAL],
[MPI].[TOTALTRANSACTIONSGOAL],
[MPI].[RESPONSERATEGOAL],
[MPI].[QUANTITY]
from dbo.[MKTMARKETINGPLANITEM] as [MPI]
inner join dbo.[MKTMARKETINGPLANITEMTEMPLATEITEM] as [MPITI] on [MPITI].[LEVEL] = [MPI].[LEVEL] and [MPITI].[MARKETINGPLANID] = @PLANID
where [MPI].[PARENTMARKETINGPLANITEMID] = @LEVEL3ID;
declare @LEVEL4ID uniqueidentifier;
declare @LEVEL4NAME nvarchar(100);
declare @LEVEL4CAPTION nvarchar(50);
declare @LEVEL4EXPBUDGET money;
declare @LEVEL4EXPREVENUE money;
declare @LEVEL4EXPRESPONSES integer;
declare @LEVEL4EXPRESPONSERATE float;
declare @LEVEL4EXPQUANTITY integer;
open LEVEL4CURSOR;
fetch next from LEVEL4CURSOR into @LEVEL4ID, @LEVEL4NAME, @LEVEL4CAPTION, @LEVEL4EXPBUDGET, @LEVEL4EXPREVENUE, @LEVEL4EXPRESPONSES, @LEVEL4EXPRESPONSERATE, @LEVEL4EXPQUANTITY;
if @@FETCH_STATUS <> 0
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[LEVEL3ID],
[LEVEL3NAME],
[LEVEL3CAPTION],
[LEVEL3EXPBUDGET],
[LEVEL3EXPREVENUE],
[LEVEL3EXPQUANTITY],
[LEVEL3EXPRESPONSES],
[LEVEL3EXPRESPONSERATE],
[LEVEL4NAME],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@LEVEL2ID,
@LEVEL2NAME,
@LEVEL2CAPTION,
@LEVEL2EXPBUDGET,
@LEVEL2EXPREVENUE,
@LEVEL2EXPQUANTITY,
@LEVEL2EXPRESPONSES,
@LEVEL2EXPRESPONSERATE,
@LEVEL3ID,
@LEVEL3NAME,
@LEVEL3CAPTION,
@LEVEL3EXPBUDGET,
@LEVEL3EXPREVENUE,
@LEVEL3EXPQUANTITY,
@LEVEL3EXPRESPONSES,
@LEVEL3EXPRESPONSERATE,
'__NO_ITEM_EXISTS__',
0,
0,
0,
0
);
while (@@FETCH_STATUS = 0)
begin
set @MAILINGID = null;
select
@MAILINGID = [S].[ID]
from dbo.[MKTSEGMENTATION] as [S]
inner join dbo.[MKTSEGMENTATIONBUDGET] as [SB] on [SB].[ID] = [S].[ID]
where [S].[MARKETINGPLANITEMID] = @LEVEL4ID
and [S].[ACTIVE] = 1;
if @MAILINGID is not null
begin
-- multicurrency to do
insert into @RESPONSETABLE
exec dbo.[USP_MKTSEGMENTATION_GETRESPONSECOUNTS] @SEGMENTATIONID = @MAILINGID;
select
@OFFERS = [OFFERS],
@RESPONSES = [RESPONSES],
@REVENUE = [TOTALGIFTAMOUNT]
from @RESPONSETABLE;
delete from @RESPONSETABLE;
-- multicurrency to do
insert into @COSTTABLE
exec dbo.[USP_MKTSEGMENTATION_GETACTIVETOTALCOST] @SEGMENTATIONID = @MAILINGID;
select
@COSTS = [COST]
from @COSTTABLE;
delete from @COSTTABLE;
end
else
begin
set @OFFERS = 0;
set @RESPONSES = 0;
set @REVENUE = 0;
set @COSTS = 0;
end
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[LEVEL3ID],
[LEVEL3NAME],
[LEVEL3CAPTION],
[LEVEL3EXPBUDGET],
[LEVEL3EXPREVENUE],
[LEVEL3EXPQUANTITY],
[LEVEL3EXPRESPONSES],
[LEVEL3EXPRESPONSERATE],
[LEVEL4ID],
[LEVEL4NAME],
[LEVEL4CAPTION],
[LEVEL4EXPBUDGET],
[LEVEL4EXPREVENUE],
[LEVEL4EXPQUANTITY],
[LEVEL4EXPRESPONSES],
[LEVEL4EXPRESPONSERATE],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@LEVEL2ID,
@LEVEL2NAME,
@LEVEL2CAPTION,
@LEVEL2EXPBUDGET,
@LEVEL2EXPREVENUE,
@LEVEL2EXPQUANTITY,
@LEVEL2EXPRESPONSES,
@LEVEL2EXPRESPONSERATE,
@LEVEL3ID,
@LEVEL3NAME,
@LEVEL3CAPTION,
@LEVEL3EXPBUDGET,
@LEVEL3EXPREVENUE,
@LEVEL3EXPQUANTITY,
@LEVEL3EXPRESPONSES,
@LEVEL3EXPRESPONSERATE,
@LEVEL4ID,
@LEVEL4NAME,
@LEVEL4CAPTION,
@LEVEL4EXPBUDGET,
@LEVEL4EXPREVENUE,
@LEVEL4EXPQUANTITY,
@LEVEL4EXPRESPONSES,
@LEVEL4EXPRESPONSERATE,
@OFFERS,
@RESPONSES,
@REVENUE,
@COSTS
);
fetch next from LEVEL4CURSOR into @LEVEL4ID, @LEVEL4NAME, @LEVEL4CAPTION, @LEVEL4EXPBUDGET, @LEVEL4EXPREVENUE, @LEVEL4EXPRESPONSES, @LEVEL4EXPRESPONSERATE, @LEVEL4EXPQUANTITY;
end
close LEVEL4CURSOR;
deallocate LEVEL4CURSOR;
---------------------------------------------------------------------------------------------------------------------
-- END LEVEL 4
---------------------------------------------------------------------------------------------------------------------
end
else
begin
set @MAILINGID = null;
select
@MAILINGID = [S].[ID]
from dbo.[MKTSEGMENTATION] as [S]
inner join dbo.[MKTSEGMENTATIONBUDGET] as [SB] on [SB].[ID] = [S].[ID]
where [S].[MARKETINGPLANITEMID] = @LEVEL3ID
and [S].[ACTIVE] = 1;
if @MAILINGID is not null
begin
-- multicurrency to do
insert into @RESPONSETABLE
exec dbo.[USP_MKTSEGMENTATION_GETRESPONSECOUNTS] @SEGMENTATIONID = @MAILINGID;
select
@OFFERS = [OFFERS],
@RESPONSES = [RESPONSES],
@REVENUE = [TOTALGIFTAMOUNT]
from @RESPONSETABLE;
delete from @RESPONSETABLE;
-- multicurrency to do
insert into @COSTTABLE
exec dbo.[USP_MKTSEGMENTATION_GETACTIVETOTALCOST] @SEGMENTATIONID = @MAILINGID;
select
@COSTS = [COST]
from @COSTTABLE;
delete from @COSTTABLE;
end
else
begin
set @OFFERS = 0;
set @RESPONSES = 0;
set @REVENUE = 0;
set @COSTS = 0;
end
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[LEVEL3ID],
[LEVEL3NAME],
[LEVEL3CAPTION],
[LEVEL3EXPBUDGET],
[LEVEL3EXPREVENUE],
[LEVEL3EXPQUANTITY],
[LEVEL3EXPRESPONSES],
[LEVEL3EXPRESPONSERATE],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@LEVEL2ID,
@LEVEL2NAME,
@LEVEL2CAPTION,
@LEVEL2EXPBUDGET,
@LEVEL2EXPREVENUE,
@LEVEL2EXPQUANTITY,
@LEVEL2EXPRESPONSES,
@LEVEL2EXPRESPONSERATE,
@LEVEL3ID,
@LEVEL3NAME,
@LEVEL3CAPTION,
@LEVEL3EXPBUDGET,
@LEVEL3EXPREVENUE,
@LEVEL3EXPQUANTITY,
@LEVEL3EXPRESPONSES,
@LEVEL3EXPRESPONSERATE,
@OFFERS,
@RESPONSES,
@REVENUE,
@COSTS
);
end
fetch next from LEVEL3CURSOR into @LEVEL3ID, @LEVEL3NAME, @LEVEL3CAPTION, @LEVEL3EXPBUDGET, @LEVEL3EXPREVENUE, @LEVEL3EXPRESPONSES, @LEVEL3EXPRESPONSERATE, @LEVEL3EXPQUANTITY;
end
close LEVEL3CURSOR;
deallocate LEVEL3CURSOR;
---------------------------------------------------------------------------------------------------------------------
-- END LEVEL 3
---------------------------------------------------------------------------------------------------------------------
end
else
begin
set @MAILINGID = null;
select
@MAILINGID = [S].[ID]
from dbo.[MKTSEGMENTATION] as [S]
inner join dbo.[MKTSEGMENTATIONBUDGET] as [SB] on [SB].[ID] = [S].[ID]
where [S].[MARKETINGPLANITEMID] = @LEVEL2ID
and [S].[ACTIVE] = 1;
if @MAILINGID is not null
begin
-- multicurrency to do
insert into @RESPONSETABLE
exec dbo.[USP_MKTSEGMENTATION_GETRESPONSECOUNTS] @SEGMENTATIONID = @MAILINGID;
select
@OFFERS = [OFFERS],
@RESPONSES = [RESPONSES],
@REVENUE = [TOTALGIFTAMOUNT]
from @RESPONSETABLE;
delete from @RESPONSETABLE;
-- multicurrency to do
insert into @COSTTABLE
exec dbo.[USP_MKTSEGMENTATION_GETACTIVETOTALCOST] @SEGMENTATIONID = @MAILINGID;
select
@COSTS = [COST]
from @COSTTABLE;
delete from @COSTTABLE;
end
else
begin
set @OFFERS = 0;
set @RESPONSES = 0;
set @REVENUE = 0;
set @COSTS = 0;
end
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@LEVEL2ID,
@LEVEL2NAME,
@LEVEL2CAPTION,
@LEVEL2EXPBUDGET,
@LEVEL2EXPREVENUE,
@LEVEL2EXPQUANTITY,
@LEVEL2EXPRESPONSES,
@LEVEL2EXPRESPONSERATE,
@OFFERS,
@RESPONSES,
@REVENUE,
@COSTS
);
end
fetch next from LEVEL2CURSOR into @LEVEL2ID, @LEVEL2NAME, @LEVEL2CAPTION, @LEVEL2EXPBUDGET, @LEVEL2EXPREVENUE, @LEVEL2EXPRESPONSES, @LEVEL2EXPRESPONSERATE, @LEVEL2EXPQUANTITY;
end
close LEVEL2CURSOR;
deallocate LEVEL2CURSOR;
---------------------------------------------------------------------------------------------------------------------
-- END LEVEL 2
---------------------------------------------------------------------------------------------------------------------
end
else
begin
set @MAILINGID = null;
select
@MAILINGID = [S].[ID]
from dbo.[MKTSEGMENTATION] as [S]
inner join dbo.[MKTSEGMENTATIONBUDGET] as [SB] on [SB].[ID] = [S].[ID]
where [S].[MARKETINGPLANITEMID] = @LEVEL1ID
and [S].[ACTIVE] = 1;
if @MAILINGID is not null
begin
-- multicurrency to do
insert into @RESPONSETABLE
exec dbo.[USP_MKTSEGMENTATION_GETRESPONSECOUNTS] @SEGMENTATIONID = @MAILINGID;
select
@OFFERS = [OFFERS],
@RESPONSES = [RESPONSES],
@REVENUE = [TOTALGIFTAMOUNT]
from @RESPONSETABLE;
delete from @RESPONSETABLE;
-- multicurrency to do
insert into @COSTTABLE
exec dbo.[USP_MKTSEGMENTATION_GETACTIVETOTALCOST] @SEGMENTATIONID = @MAILINGID;
select
@COSTS = [COST]
from @COSTTABLE;
delete from @COSTTABLE;
end
else
begin
set @OFFERS = 0;
set @RESPONSES = 0;
set @REVENUE = 0;
set @COSTS = 0;
end
insert into @RETURNTABLE (
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
) values (
@LEVELS,
@LEVEL0ID,
@LEVEL0NAME,
@LEVEL0CAPTION,
@LEVEL0EXPBUDGET,
@LEVEL0EXPREVENUE,
@LEVEL0EXPQUANTITY,
@LEVEL0EXPRESPONSES,
@LEVEL0EXPRESPONSERATE,
@LEVEL1ID,
@LEVEL1NAME,
@LEVEL1CAPTION,
@LEVEL1EXPBUDGET,
@LEVEL1EXPREVENUE,
@LEVEL1EXPQUANTITY,
@LEVEL1EXPRESPONSES,
@LEVEL1EXPRESPONSERATE,
@OFFERS,
@RESPONSES,
@REVENUE,
@COSTS
);
end
fetch next from LEVEL1CURSOR into @LEVEL1ID, @LEVEL1NAME, @LEVEL1CAPTION, @LEVEL1EXPBUDGET, @LEVEL1EXPREVENUE, @LEVEL1EXPRESPONSES, @LEVEL1EXPRESPONSERATE, @LEVEL1EXPQUANTITY;
end
close LEVEL1CURSOR;
deallocate LEVEL1CURSOR;
---------------------------------------------------------------------------------------------------------------------
-- END LEVEL 1
---------------------------------------------------------------------------------------------------------------------
fetch next from LEVEL0CURSOR into @LEVEL0ID, @LEVEL0NAME, @LEVEL0CAPTION, @LEVEL0EXPBUDGET, @LEVEL0EXPREVENUE, @LEVEL0EXPRESPONSES, @LEVEL0EXPRESPONSERATE, @LEVEL0EXPQUANTITY;
end
close LEVEL0CURSOR;
deallocate LEVEL0CURSOR;
---------------------------------------------------------------------------------------------------------------------
-- END LEVEL 0
---------------------------------------------------------------------------------------------------------------------
declare @SITE nvarchar(100);
set @SITE = dbo.[UFN_TRANSLATIONFUNCTION_SITE_GETNAME](dbo.[UFN_SITEID_MAPFROM_MARKETINGPLANID](@PLANID));
declare @CURRENCYISOCURRENCYCODE nvarchar(6);
declare @CURRENCYDECIMALDIGITS tinyint;
declare @CURRENCYSYMBOL nvarchar(10);
declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;
select
@CURRENCYISOCURRENCYCODE = [ISO4217],
@CURRENCYDECIMALDIGITS = [DECIMALDIGITS],
@CURRENCYSYMBOL = [CURRENCYSYMBOL],
@CURRENCYSYMBOLDISPLAYSETTINGCODE = [SYMBOLDISPLAYSETTINGCODE]
from dbo.[CURRENCY]
inner join dbo.[MKTMARKETINGPLAN] as [MP] on case @CURRENCYCODE when 1 then dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() else [MP].[BASECURRENCYID] end = [CURRENCY].[ID]
where [MP].[ID] = @PLANID;
update @RETURNTABLE set
[SITE] = @SITE,
[CURRENCYISOCURRENCYCODE] = @CURRENCYISOCURRENCYCODE,
[CURRENCYDECIMALDIGITS] = @CURRENCYDECIMALDIGITS,
[CURRENCYSYMBOL] = @CURRENCYSYMBOL,
[CURRENCYSYMBOLDISPLAYSETTINGCODE] = @CURRENCYSYMBOLDISPLAYSETTINGCODE;
select
[SITE],
[CURRENCYISOCURRENCYCODE],
[CURRENCYDECIMALDIGITS],
[CURRENCYSYMBOL],
[CURRENCYSYMBOLDISPLAYSETTINGCODE],
[LEVELS],
[LEVEL0ID],
[LEVEL0NAME],
[LEVEL0CAPTION],
[LEVEL0EXPBUDGET],
[LEVEL0EXPREVENUE],
[LEVEL0EXPQUANTITY],
[LEVEL0EXPRESPONSES],
[LEVEL0EXPRESPONSERATE],
[LEVEL1ID],
[LEVEL1NAME],
[LEVEL1CAPTION],
[LEVEL1EXPBUDGET],
[LEVEL1EXPREVENUE],
[LEVEL1EXPQUANTITY],
[LEVEL1EXPRESPONSES],
[LEVEL1EXPRESPONSERATE],
[LEVEL2ID],
[LEVEL2NAME],
[LEVEL2CAPTION],
[LEVEL2EXPBUDGET],
[LEVEL2EXPREVENUE],
[LEVEL2EXPQUANTITY],
[LEVEL2EXPRESPONSES],
[LEVEL2EXPRESPONSERATE],
[LEVEL3ID],
[LEVEL3NAME],
[LEVEL3CAPTION],
[LEVEL3EXPBUDGET],
[LEVEL3EXPREVENUE],
[LEVEL3EXPQUANTITY],
[LEVEL3EXPRESPONSES],
[LEVEL3EXPRESPONSERATE],
[LEVEL4ID],
[LEVEL4NAME],
[LEVEL4CAPTION],
[LEVEL4EXPBUDGET],
[LEVEL4EXPREVENUE],
[LEVEL4EXPQUANTITY],
[LEVEL4EXPRESPONSES],
[LEVEL4EXPRESPONSERATE],
[OFFERS],
[RESPONSES],
[REVENUE],
[COST]
from
@RETURNTABLE
order by
[LEVEL0NAME];
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;