USP_MKTSEGMENTATIONPACKAGE_GETEXPENSESDATALIST
Returns of a list of marketing effort package expenses.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONPACKAGE_GETEXPENSESDATALIST]
(
@SEGMENTATIONID uniqueidentifier,
@CURRENCYCODE tinyint = 0 /* 0 = base, 1 = organization */
)
as
set nocount on;
if (select [ACTIVE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID) = 0
begin
--Check if the mailing is currently being activated...
declare @R int;
exec @R = dbo.[USP_MKTSEGMENTATION_CHECKACTIVATION] @SEGMENTATIONID;
if @R <> 0
return 1;
end
declare @PACKAGEPERTHOUSANDAMOUNT decimal(15,5) = 1000.0;
select
[MKTSEGMENTATIONPACKAGE].[ID],
[MKTPACKAGE].[ID] as [PACKAGEID],
[MKTPACKAGE].[NAME],
(case when [MKTSEGMENTATION].[ACTIVE] = 1 then [MKTSEGMENTATIONPACKAGE].[CODE] else [MKTPACKAGE].[CODE] end) as [CODE],
cast((case [MKTSEGMENTATION].[ACTIVE]
when 1 then
case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 0 then case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONUNITCOST] else [MKTSEGMENTATIONPACKAGE].[UNITCOST] end
when 4 then case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONUNITCOST]/@PACKAGEPERTHOUSANDAMOUNT else [MKTSEGMENTATIONPACKAGE].[UNITCOST]/@PACKAGEPERTHOUSANDAMOUNT end else 0 end +
case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONINSERTCOSTPERPIECE] else [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPERPIECE] end
else
case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 0 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end
when 4 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST]/@PACKAGEPERTHOUSANDAMOUNT else [MKTPACKAGE].[UNITCOST]/@PACKAGEPERTHOUSANDAMOUNT end else 0 end +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 0, @CURRENCYCODE) +
-- Add any other package costs using 'Per thousand'
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 4, @CURRENCYCODE)
end) as decimal(30,8)) -- WI 370811 cast as decimal to be explicit about the precision
as [COSTPERPIECE],
(case [MKTSEGMENTATION].[ACTIVE]
when 1 then
case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 1 then case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONUNITCOST] else [MKTSEGMENTATIONPACKAGE].[UNITCOST] end else 0 end +
case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONINSERTCOSTPERRESPONSE] else [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPERRESPONSE] end
else
case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 1 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end else 0 end +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 1, @CURRENCYCODE)
end)
as [COSTPERRESPONSE],
(case [MKTSEGMENTATION].[ACTIVE]
when 1 then
case [MKTSEGMENTATIONPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 2 then case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONUNITCOST] else [MKTSEGMENTATIONPACKAGE].[UNITCOST] end else 0 end +
case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONPACKAGE].[ORGANIZATIONINSERTCOSTPEREFFORT] else [MKTSEGMENTATIONPACKAGE].[INSERTCOSTPEREFFORT] end
else
case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 2 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end else 0 end +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 2, @CURRENCYCODE)
end)
as [COSTPEREFFORT],
[MKTSEGMENTATION].[ACTIVE] as [SEGMENTATIONACTIVE],
[MKTPACKAGE].[CHANNELCODE],
[MKTPACKAGE].[CHANNEL],
[MKTPACKAGE].[BASECURRENCYID],
[CURRENCY].[ISO4217],
[CURRENCY].[DECIMALDIGITS],
[CURRENCY].[CURRENCYSYMBOL],
[CURRENCY].[SYMBOLDISPLAYSETTINGCODE]
from dbo.[MKTSEGMENTATIONPACKAGE]
inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONPACKAGE].[PACKAGEID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID]
inner join dbo.[CURRENCY] on [CURRENCY].[ID] = case when @CURRENCYCODE = 1 then dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() else [MKTSEGMENTATION].[BASECURRENCYID] end
where [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID] = @SEGMENTATIONID
order by [MKTPACKAGE].[NAME];
return 0;