USP_DATAFORMTEMPLATE_EDIT_MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE_MULTIPLE_5
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | nvarchar(max) | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASKLADDER | xml | IN | |
@ASKLADDERLOADED | bit | IN | |
@PACKAGEID | uniqueidentifier | IN | |
@PACKAGECODE | nvarchar(10) | IN | |
@PACKAGELOADED | bit | IN | |
@RESPONSERATE | decimal(5, 2) | IN | |
@RESPONSERATELOADED | bit | IN | |
@GIFTAMOUNT | money | IN | |
@GIFTAMOUNTLOADED | bit | IN | |
@MAXDAYS | int | IN | |
@MAXDAYSCHECKED | bit | IN | |
@MAXDAYSLOADED | bit | IN | |
@MINQUANTITY | int | IN | |
@MINQUANTITYCHECKED | bit | IN | |
@MINQUANTITYLOADED | bit | IN | |
@PACKAGECODEVALUEID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@EXCLUDE | bit | IN | |
@EXCLUDELOADED | bit | IN | |
@CHANNELCODEVALUEID | uniqueidentifier | IN | |
@CHANNELCODE | nvarchar(10) | IN |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE_MULTIPLE_5]
(
@ID nvarchar(max),
@CHANGEAGENTID uniqueidentifier = null,
@ASKLADDER xml,
@ASKLADDERLOADED bit,
@PACKAGEID uniqueidentifier,
@PACKAGECODE nvarchar(10),
@PACKAGELOADED bit,
@RESPONSERATE decimal(5,2),
@RESPONSERATELOADED bit,
@GIFTAMOUNT money,
@GIFTAMOUNTLOADED bit,
@MAXDAYS int,
@MAXDAYSCHECKED bit,
@MAXDAYSLOADED bit,
@MINQUANTITY int,
@MINQUANTITYCHECKED bit,
@MINQUANTITYLOADED bit,
@PACKAGECODEVALUEID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@EXCLUDE bit,
@EXCLUDELOADED bit,
@CHANNELCODEVALUEID uniqueidentifier,
@CHANNELCODE nvarchar(10)
)
as
set nocount on;
declare @RULESTABLE table([ID] uniqueidentifier);
declare @START int;
declare @POS int;
declare @RULEID uniqueidentifier;
declare @CURRENTDATE datetime;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONGIFTAMOUNT money;
declare @ORGANIZATIONCURRENCYEXCHANGERATEID uniqueidentifier;
declare @DATEADDED datetime;
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
select
@PACKAGECODEVALUEID = case when @PACKAGECODEVALUEID is null then [PARTDEFINITIONVALUESID] else @PACKAGECODEVALUEID end,
@PACKAGECODE = case when len(@PACKAGECODE) = 0 then [CODE] else @PACKAGECODE end,
@CHANNELCODEVALUEID = case when @CHANNELCODEVALUEID is null then [CHANNELPARTDEFINITIONVALUESID] else @CHANNELCODEVALUEID end,
@CHANNELCODE = case when len(@PACKAGECODE) = 0 then [CHANNELSOURCECODE] else @CHANNELCODE end
from dbo.[MKTPACKAGE]
where [ID] = @PACKAGEID;
if @EXCLUDELOADED = 1 and @EXCLUDE = 1
begin
set @ASKLADDERLOADED = 1;
set @PACKAGELOADED = 1;
set @RESPONSERATELOADED = 1;
set @GIFTAMOUNTLOADED = 1;
set @MAXDAYSLOADED = 1;
set @MINQUANTITYLOADED = 1;
set @PACKAGEID = null;
set @RESPONSERATE = 0;
set @GIFTAMOUNT = 0;
set @PACKAGECODEVALUEID = null;
set @PACKAGECODE = '';
set @CHANNELCODEVALUEID = null;
set @CHANNELCODE = '';
set @MAXDAYSCHECKED = 0;
set @MAXDAYS = 1;
set @MINQUANTITYCHECKED = 0;
set @MINQUANTITY = 1;
end
if @PACKAGELOADED = 1 and @EXCLUDE = 0
/* Update the package with the selected code */
exec dbo.[USP_MKTPACKAGE_UPDATECODE] @PACKAGEID, @PACKAGECODE, @PACKAGECODEVALUEID, @CHANNELCODE, @CHANNELCODEVALUEID, @CHANGEAGENTID, @CURRENTAPPUSERID;
if @GIFTAMOUNTLOADED = 1 and @EXCLUDE = 0
set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();
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);
declare RULECURSOR cursor local fast_forward for
select [ID] from @RULESTABLE;
open RULECURSOR;
fetch next from RULECURSOR into @RULEID;
while (@@FETCH_STATUS = 0)
begin
if @GIFTAMOUNTLOADED = 1 and @EXCLUDE = 0
begin
--Only need to do this currency work if we are actually going to set the amount field...
select
@BASECURRENCYID = [BASECURRENCYID],
@ORGANIZATIONCURRENCYEXCHANGERATEID = [CURRENCYEXCHANGERATEID],
@DATEADDED = [DATEADDED]
from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE]
where [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID] = @RULEID;
if @ORGANIZATIONCURRENCYID = @BASECURRENCYID
set @ORGANIZATIONGIFTAMOUNT = @GIFTAMOUNT;
else
begin
if @ORGANIZATIONCURRENCYEXCHANGERATEID is null
set @ORGANIZATIONCURRENCYEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYEXCHANGERATEID, @DATEADDED, 0, null);
set @ORGANIZATIONGIFTAMOUNT = dbo.[UFN_CURRENCY_CONVERT](@GIFTAMOUNT, @ORGANIZATIONCURRENCYEXCHANGERATEID);
end
end
/* Save the rule */
update dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] set
[EXCLUDE] = (case when @EXCLUDELOADED = 1 then @EXCLUDE else [EXCLUDE] end),
[ASKLADDERID] = (case when @ASKLADDERLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then (select T.c.value('(ASKLADDERID)[1]','uniqueidentifier') AS 'ASKLADDERID' from @ASKLADDER.nodes('/ASKLADDER/ITEM') T(c)) else null end else [ASKLADDERID] end),
[PACKAGEID] = (case when @PACKAGELOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @PACKAGEID else null end else [PACKAGEID] end),
[RESPONSERATE] = (case when @RESPONSERATELOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @RESPONSERATE else 0 end else [RESPONSERATE] end),
[GIFTAMOUNT] = (case when @GIFTAMOUNTLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @GIFTAMOUNT else 0 end else [GIFTAMOUNT] end),
[MAXDAYSCHECKED] = (case when @MAXDAYSLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @MAXDAYSCHECKED else 0 end else [MAXDAYSCHECKED] end),
[MAXDAYS] = (case when @MAXDAYSLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @MAXDAYS else 1 end else [MAXDAYS] end),
[MINQUANTITYCHECKED] = (case when @MINQUANTITYLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @MINQUANTITYCHECKED else 0 end else [MINQUANTITYCHECKED] end),
[MINQUANTITY] = (case when @MINQUANTITYLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @MINQUANTITY else 1 end else [MINQUANTITY] end),
[ORGANIZATIONGIFTAMOUNT] = (case when @GIFTAMOUNTLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @ORGANIZATIONGIFTAMOUNT else 0 end else [ORGANIZATIONGIFTAMOUNT] end),
[CURRENCYEXCHANGERATEID] = (case when @GIFTAMOUNTLOADED = 1 then case when (@EXCLUDELOADED = 1 and @EXCLUDE = 0) or (@EXCLUDELOADED = 0 and [EXCLUDE] = 0) then @ORGANIZATIONCURRENCYEXCHANGERATEID else null end else [CURRENCYEXCHANGERATEID] end),
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @RULEID;
fetch next from RULECURSOR into @RULEID;
end;
close RULECURSOR;
deallocate RULECURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;