USP_DATAFORMTEMPLATE_EDITLOAD_MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE_MINIMAL_MULTIPLE
The load procedure used by the edit dataform template "Marketing Acknowledgement Template Multiple Rule Minimal Edit Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | nvarchar(max) | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@ACKNOWLEDGEMENTMAILINGTEMPLATEID | uniqueidentifier | INOUT | Marketing Acknowledgement Template |
@ASKLADDER | xml | INOUT | Ask ladder |
@ASKLADDERLOADED | bit | INOUT | Ask ladder loaded |
@ASKLADDERLOCKED | bit | INOUT | Ask ladder locked |
@PACKAGEID | uniqueidentifier | INOUT | Package |
@PACKAGECODE | nvarchar(10) | INOUT | Package code |
@PACKAGELOADED | bit | INOUT | Package loaded |
@RESPONSERATE | decimal(5, 2) | INOUT | Response rate |
@RESPONSERATELOADED | bit | INOUT | Response rate loaded |
@GIFTAMOUNT | money | INOUT | Gift amount |
@GIFTAMOUNTLOADED | bit | INOUT | Gift amount loaded |
@SOURCECODEID | uniqueidentifier | INOUT | Source code ID |
@MAXDAYSLOADED | bit | INOUT | Max days loaded |
@MAXDAYSCHECKED | bit | INOUT | Process transactions within |
@MAXDAYS | int | INOUT | Maximum days |
@MINQUANTITYLOADED | bit | INOUT | Min quantity loaded |
@MINQUANTITYCHECKED | bit | INOUT | Process when the number of transactions reaches |
@MINQUANTITY | int | INOUT | Minimum quantity |
@ACKNOWLEDGEMENTMAILINGTEMPLATESITEID | uniqueidentifier | INOUT | Marketing Acknowledgement Template site ID |
@TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE_MINIMAL_MULTIPLE]
(
@ID nvarchar(max),
@DATALOADED bit = 0 output,
@ACKNOWLEDGEMENTMAILINGTEMPLATEID uniqueidentifier = null output,
@ASKLADDER xml = null output,
@ASKLADDERLOADED bit = null output,
@ASKLADDERLOCKED bit = null output,
@PACKAGEID uniqueidentifier = null output,
@PACKAGECODE nvarchar(10) = null output,
@PACKAGELOADED bit = null output,
@RESPONSERATE decimal(5,2) = null output,
@RESPONSERATELOADED bit = null output,
@GIFTAMOUNT money = null output,
@GIFTAMOUNTLOADED bit = null output,
@SOURCECODEID uniqueidentifier = null output,
@MAXDAYSLOADED bit = null output,
@MAXDAYSCHECKED bit = null output,
@MAXDAYS int = null output,
@MINQUANTITYLOADED bit = null output,
@MINQUANTITYCHECKED bit = null output,
@MINQUANTITY int = null output,
@ACKNOWLEDGEMENTMAILINGTEMPLATESITEID uniqueidentifier = null output,
@TSLONG bigint = 0 output
)
as
set nocount on;
set @DATALOADED = 0;
set @TSLONG = 0;
declare @RULESTABLE table([ID] uniqueidentifier primary key);
declare @START int;
declare @POS int;
/* Parse out the multiple rule IDs */
set @START = 0;
select @POS = charindex(',', @ID, @START);
while (@POS <> 0)
begin
insert into @RULESTABLE
select substring(@ID, @START, @POS - @START);
set @START = @POS + 1;
select @POS = charindex(',', @ID, @START);
end;
if len(@ID) > 0
insert into @RULESTABLE
select substring(@ID, @START, 37);
/* Acknowledgement Mailing Template information */
select top 1
@ACKNOWLEDGEMENTMAILINGTEMPLATEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ACKNOWLEDGEMENTMAILINGTEMPLATEID],
@SOURCECODEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[SOURCECODEID],
@ACKNOWLEDGEMENTMAILINGTEMPLATESITEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[SITEID]
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]
inner join dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE] on [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ACKNOWLEDGEMENTMAILINGTEMPLATEID];
/* Common record source and common ask ladder */
if (select count(distinct([MKTSEGMENT].[QUERYVIEWCATALOGID])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID] inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEGMENTID]) = 1
begin
if (select count(distinct(isnull([MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ASKLADDERID], '00000000-0000-0000-0000-000000000000'))) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@ASKLADDER = (select
[QUERYVIEWCATALOG].[ID] as [RECORDSOURCEID],
[QUERYVIEWCATALOG].[DISPLAYNAME] as [RECORDSOURCENAME],
(select top 1 [T1].[ASKLADDERID] from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] as [T1] inner join @RULESTABLE as [T2] on [T2].[ID] = [T1].[ID]) as [ASKLADDERID]
from dbo.[MKTRECORDSOURCE]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCE].[ID]
where [QUERYVIEWCATALOG].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID] and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([QUERYVIEWCATALOG].[ID]) = 1
for xml raw('ITEM'), type, elements, root('ASKLADDER'), BINARY BASE64),
@ASKLADDERLOADED = 1,
@ASKLADDERLOCKED = 0
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEGMENTID];
else
select top 1
@ASKLADDER = (select
[QUERYVIEWCATALOG].[ID] as [RECORDSOURCEID],
[QUERYVIEWCATALOG].[DISPLAYNAME] as [RECORDSOURCENAME]
from dbo.[MKTRECORDSOURCE]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCE].[ID]
where [QUERYVIEWCATALOG].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID] and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([QUERYVIEWCATALOG].[ID]) = 1
for xml raw('ITEM'), type, elements, root('ASKLADDER'), BINARY BASE64),
@ASKLADDERLOADED = 0,
@ASKLADDERLOCKED = 0
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEGMENTID];
end
else
begin
set @ASKLADDERLOADED = 0;
set @ASKLADDERLOCKED = 1;
end
/* Common package */
if (select count(distinct([PACKAGEID])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@PACKAGEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[PACKAGEID],
@PACKAGECODE = [MKTPACKAGE].[CODE],
@PACKAGELOADED = 1
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]
inner join [MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[PACKAGEID];
else
set @PACKAGELOADED = 0;
/* Common response rate */
if (select count(distinct([RESPONSERATE])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@RESPONSERATE = [RESPONSERATE],
@RESPONSERATELOADED = 1
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID];
else
begin
set @RESPONSERATE = 5;
set @RESPONSERATELOADED = 0;
end
/* Common gift amount */
if (select count(distinct([GIFTAMOUNT])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@GIFTAMOUNT = [GIFTAMOUNT],
@GIFTAMOUNTLOADED = 1
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID];
else
set @GIFTAMOUNTLOADED = 0;
/* Common max days */
if (select count(distinct([MAXDAYSCHECKED])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1 and
(select count(distinct([MAXDAYS])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@MAXDAYS = [MAXDAYS],
@MAXDAYSCHECKED = [MAXDAYSCHECKED],
@MAXDAYSLOADED = 1
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID];
else
begin
set @MAXDAYS = 1;
set @MAXDAYSCHECKED = 0;
set @MAXDAYSLOADED = 0;
end
/* Common minquantity */
if (select count(distinct([MINQUANTITYCHECKED])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1 and
(select count(distinct([MINQUANTITY])) from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID]) = 1
select top 1
@MINQUANTITY = [MINQUANTITY],
@MINQUANTITYCHECKED = [MINQUANTITYCHECKED],
@MINQUANTITYLOADED = 1
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID];
else
begin
set @MINQUANTITY = 1;
set @MINQUANTITYCHECKED = 0;
set @MINQUANTITYLOADED = 0;
end
select @TSLONG = max([TSLONG])
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
inner join @RULESTABLE as [S] on [S].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID];
-- TODO: this should not always return 1
set @DATALOADED = 1;
return 0;