USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGSETUP_MINIMAL
The save procedure used by the edit dataform template "Appeal Mailing Edit Data Form For Minimal Data Ext".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@NAME | nvarchar(100) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@MAILDATE | datetime | IN | Mail date |
@MAILINGBUDGET | money | IN | Budget |
@APPEALID | uniqueidentifier | IN | Appeal |
@SELECTEDSELECTIONS | xml | IN | |
@SELECTEDEXCLUSIONS | xml | IN | Exclude constituents with these |
@EXCLUDESELECTIONS | xml | IN | Exclude records in these selections |
@EXCLUSIONDATETYPECODE | tinyint | IN | Consider exclusions as of |
@EXCLUSIONASOFDATE | datetime | IN | Consider exclusions as of |
@CHANNELCODE | tinyint | IN | |
@CHANNELPREFERENCECODE | tinyint | IN | If the constituent does not have a preference, attempt to send... |
@MAILPACKAGEID | uniqueidentifier | IN | Mail package |
@EMAILPACKAGEID | uniqueidentifier | IN | Email package |
@ADDRESSPROCESSINGOPTIONID | uniqueidentifier | IN | Address processing |
@NAMEFORMATPARAMETERID | uniqueidentifier | IN | Name format |
@HOUSEHOLDINGTYPECODE | tinyint | IN | Include |
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD | bit | IN | Also include qualifying individuals who are not members of any household |
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS | bit | IN | Also include qualifying households which do not have any members |
@HOUSEHOLDINGONERECORDPERHOUSEHOLD | bit | IN | Send to one person per household |
@CREATEOUTPUTIDSET | bit | IN | Create selection from results |
@OUTPUTIDSETNAME | nvarchar(100) | IN | Selection name |
@OVERWRITEOUTPUTIDSET | bit | IN | Overwrite existing selection |
@FINALSAVECODE | tinyint | IN | |
@OUTPUTPATH | nvarchar(256) | IN | |
@MKTASKLADDERID | uniqueidentifier | IN | Ask ladder |
@TASKS | xml | IN | |
@SELECTIONS | xml | IN | Selection |
@EXCLUSIONS | xml | IN | Exclusions |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGSETUP_MINIMAL (
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255),
@MAILDATE datetime,
@MAILINGBUDGET money,
@APPEALID uniqueidentifier,
@SELECTEDSELECTIONS xml,
@SELECTEDEXCLUSIONS xml,
@EXCLUDESELECTIONS xml,
@EXCLUSIONDATETYPECODE tinyint,
@EXCLUSIONASOFDATE datetime,
@CHANNELCODE tinyint,
@CHANNELPREFERENCECODE tinyint,
@MAILPACKAGEID uniqueidentifier,
@EMAILPACKAGEID uniqueidentifier,
@ADDRESSPROCESSINGOPTIONID uniqueidentifier,
@NAMEFORMATPARAMETERID uniqueidentifier,
@HOUSEHOLDINGTYPECODE tinyint,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit,
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit,
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit,
@CREATEOUTPUTIDSET bit,
@OUTPUTIDSETNAME nvarchar(100),
@OVERWRITEOUTPUTIDSET bit,
@FINALSAVECODE tinyint,
@OUTPUTPATH nvarchar(256),
@MKTASKLADDERID uniqueidentifier,
@TASKS xml,
@SELECTIONS xml,
@EXCLUSIONS xml
)
as
begin
set nocount on;
declare @TempTbl table ([ID] uniqueidentifier);
declare @TaskTempTbl table ([TASKID] uniqueidentifier, [SUBJECT] nvarchar(100), [NOTES] nvarchar(256), [STATUSCODE] tinyint,
[DATEDUE] UDT_FUZZYDATE, [DATECOMPLETED] datetime, [OWNERID] uniqueidentifier);
declare @RemindersTempTbl table ([TASKID] uniqueidentifier, [NAME] nvarchar(100),[SENDDATE] datetime);
declare @REMINDERS xml;
declare @count int;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
insert into @TempTbl
select
T.c.value('(SELECTIONID)[1]', 'uniqueidentifier') as ID
from
@SELECTIONS.nodes('/SELECTIONS/ITEM') T(c);
set @SELECTEDSELECTIONS = (
select newID() as ID,
temp.ID as SELECTIONID,
IDSETREGISTER.NAME as SELECTIONLABEL
from @TempTbl as temp
inner join dbo.IDSETREGISTER on IDSETREGISTER.ID = temp.ID
for xml raw('ITEM'),type,elements,root('SELECTIONS'),BINARY BASE64);
exec dbo.USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGSETUP @ID, @CURRENTAPPUSERID, @CHANGEAGENTID, @NAME, @DESCRIPTION, @MAILDATE, @MAILINGBUDGET,
@APPEALID, @SELECTEDSELECTIONS, @SELECTEDEXCLUSIONS, @EXCLUDESELECTIONS, @EXCLUSIONDATETYPECODE, @EXCLUSIONASOFDATE, @CHANNELCODE,
@CHANNELPREFERENCECODE, @MAILPACKAGEID, @EMAILPACKAGEID, @ADDRESSPROCESSINGOPTIONID, @NAMEFORMATPARAMETERID, @HOUSEHOLDINGTYPECODE,
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD, @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS, @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
@CREATEOUTPUTIDSET, @OUTPUTIDSETNAME, @OVERWRITEOUTPUTIDSET, 0, '', @MKTASKLADDERID;
delete from dbo.APPEALMAILINGTASK where SEGMENTATIONID = @ID;
insert into @TaskTempTbl
select
T.c.value('(TASKID)[1]', 'uniqueidentifier') as 'TASKID',
T.c.value('(SUBJECT)[1]', 'nvarchar(100)') as 'SUBJECT',
T.c.value('(NOTES)[1]', 'nvarchar(256)') as 'NOTES',
T.c.value('(STATUSCODE)[1]', 'tinyint') as 'STATUSCODE',
T.c.value('(DATEDUE)[1]', 'UDT_FUZZYDATE') as 'DATEDUE',
T.c.value('(DATECOMPLETED)[1]', 'datetime') as 'DATECOMPLETED',
T.c.value('(OWNERID)[1]', 'uniqueidentifier') as 'OWNERID'
from @TASKS.nodes('/TASKS/ITEM') T(c);
update @TaskTempTbl
set TASKID = newID()
where TASKID is null;
select @count = count(*) from @TaskTempTbl
if @count > 0
begin
declare @SUBJECT nvarchar(100);
declare @NOTES nvarchar(256) = '';
declare @DATEDUE dbo.UDT_FUZZYDATE;
declare @STATUSCODE tinyint;
declare @OWNERID uniqueidentifier;
declare @TASKID uniqueidentifier;
declare @CURSORID uniqueidentifier;
declare @DATECOMPLETED datetime;
declare TASKCURSOR cursor local fast_forward for
select TASKID from @TaskTempTbl;
insert into @RemindersTempTbl
select
t.c.value('(TASKID)[1]', 'uniqueidentifier') as 'TASKID',
t.c.value('(NAME)[1]', 'nvarchar(max)') as 'NAME',
t.c.value('(SENDDATE)[1]', 'datetime') as 'SENDDATE'
from @TASKS.nodes('/TASKS/ITEM/REMINDERS/ITEM') t(c);
open TASKCURSOR;
fetch next from TASKCURSOR into @CURSORID
while (@@FETCH_STATUS = 0)
begin
set @REMINDERS = (
select REMINDERS.NAME as NAME,
REMINDERS.SENDDATE as SENDDATE,
coalesce(SENT,0) as SENT
from @RemindersTempTbl as REMINDERS
left join @TaskTempTbl as TASKS
on REMINDERS.TASKID = TASKS.TASKID
left join APPEALMAILINGTASKREMINDER on APPEALMAILINGTASKREMINDER.APPEALMAILINGTASKID = TASKS.TASKID
where REMINDERS.TASKID = @CURSORID
for xml raw('ITEM'),type,elements,root('REMINDERS'),BINARY BASE64);
select @SUBJECT = SUBJECT,
@NOTES = coalesce(NOTES,''),
@DATEDUE = coalesce(DATEDUE,''),
@DATECOMPLETED = coalesce(DATECOMPLETED,null),
@STATUSCODE = coalesce(STATUSCODE,0),
@OWNERID = coalesce(OWNERID,null),
@TASKID = @CURSORID
from @TaskTempTbl as TASKS
where (TASKS.TASKID = @CURSORID)
if exists(select top 1 * from dbo.APPEALMAILINGTASK where ID = @CURSORID)
begin
exec dbo.USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGTASK_2 @CURSORID, @SUBJECT, @NOTES, @DATEDUE,
@DATECOMPLETED, @STATUSCODE, @OWNERID, @CHANGEAGENTID, @CURRENTAPPUSERID, @REMINDERS;
end
else
begin
exec USP_DATAFORMTEMPLATE_ADD_APPEALMAILINGTASK @TASKID output, @ID, @SUBJECT, @NOTES,
@DATEDUE, @DATECOMPLETED,@STATUSCODE,@OWNERID,null,@CURRENTAPPUSERID,null,@REMINDERS;
end
set @TASKID = null;
fetch next from TASKCURSOR into @CURSORID
end
close TASKCURSOR;
deallocate TASKCURSOR;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;
end