USP_STEWARDSHIPPLAN_STEPSWITHCHILDREN_UPDATEFROMXML
Updates a stewardship plan's steps along with the step's associated plans.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STEWARDSHIPPLANID | uniqueidentifier | IN | |
@STATUSCODE | smallint | IN | |
@STEPS | xml | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_STEWARDSHIPPLAN_STEPSWITHCHILDREN_UPDATEFROMXML
(
@STEWARDSHIPPLANID uniqueidentifier,
@STATUSCODE smallint,
@STEPS xml,
@CURRENTAPPUSERID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
declare @contextCache varbinary(128);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
/* cache current context information */
set @contextCache = CONTEXT_INFO();
/* set CONTEXT_INFO to @CHANGEAGENTID */
if @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
set @STEPS=(
select
-- Set the ID to a value known in this SP so the additional fundraisers can be inserted/updated as well
case when ID is null then newid() else ID end as ID,
case when PLANID is null then @STEWARDSHIPPLANID else PLANID end as PLANID,
CATEGORYCODEID,
OBJECTIVE,
TARGETDATE,
DATELOCKED,
ACTUALDATE,
case when @STATUSCODE = 0 then TARGETDATE else STARTDATE end as STARTDATE,
ENDDATE,
CONTACTPERSONID,
CONTACTMETHODCODEID,
CONSTITUENTID,
case when ASSOCIATEDPLANS is null then null else ASSOCIATEDPLANS.query('(ASSOCIATEDPLANS/ITEM)') end as ASSOCIATEDPLANS,
coalesce(TEMPLATE, '') as TEMPLATE,
RECURSCODE,
STATUSCODE,
TARGETSTARTTIME,
TARGETENDTIME,
TIMEZONEENTRYID,
ISALLDAYEVENT,
ACTUALSTARTTIME,
ACTUALENDTIME,
case when LINKTYPECODE is null or LINKTYPECODE = 0 then BENEFITID else null end as BENEFITID,
case when LINKTYPECODE is null or LINKTYPECODE = 1 then EVENTID else null end as EVENTID,
case when LINKTYPECODE is null or LINKTYPECODE = 2 then MAILINGID else null end as MAILINGID,
case when STEPPARTICIPANTS is null then null else STEPPARTICIPANTS.query('(STEPPARTICIPANTS/ITEM)') end as STEPPARTICIPANTS,
NEXTTARGETDATE
from
dbo.UFN_STEWARDSHIPPLAN_STEPSWITHCHILDREN_FROMITEMLISTXML(@STEPS)
for xml raw('ITEM'), type, elements, root('STEPS'), binary base64
)
exec dbo.USP_STEWARDSHIPPLAN_FILTEREDSTEPS_UPDATEFROMXML @STEWARDSHIPPLANID, @STATUSCODE, @STEPS, @CURRENTAPPUSERID, @CHANGEAGENTID, @CHANGEDATE;
-- Take care of the associated plans for each step
declare @STEPID uniqueidentifier;
declare @PLANID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @ASSOCIATEDPLANS xml;
declare @CONTACTPERSONID uniqueidentifier;
declare @STEPPARTICIPANTS xml;
declare @NEXTTARGETDATE datetime;
declare STEPCURSOR cursor local fast_forward for
select
ID,
PLANID,
CONSTITUENTID,
ASSOCIATEDPLANS,
CONTACTPERSONID,
STEPPARTICIPANTS,
NEXTTARGETDATE,
STATUSCODE
from
dbo.UFN_STEWARDSHIPPLAN_STEPSWITHCHILDREN_FROMITEMLISTXML(@STEPS)
open STEPCURSOR
fetch next from STEPCURSOR into @STEPID, @PLANID, @CONSTITUENTID, @ASSOCIATEDPLANS, @CONTACTPERSONID, @STEPPARTICIPANTS, @NEXTTARGETDATE, @STATUSCODE;
while @@FETCH_STATUS = 0
begin
exec dbo.USP_STEWARDSHIPPLANSTEP_ASSOCIATEDPLANS_UPDATEFROMXML @STEPID, null, @ASSOCIATEDPLANS, @CHANGEAGENTID, @CHANGEDATE;
-- Add assigned to constituent as a plan steward to the plan which owns the step,
-- if it doesn't already exist
if not @CONSTITUENTID is null and not @PLANID is null
exec dbo.USP_STEWARDSHIPPLANSTEWARD_ADD @PLANID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_STEWARDSHIPPLANSTEP_PARTICIPANTS_UPDATEFROMXML @STEPID, @STEPPARTICIPANTS, @CHANGEAGENTID, @CHANGEDATE;
-- Create pending step for completed steps added that recur
if @STATUSCODE = 1 and not @NEXTTARGETDATE is null
exec dbo.USP_STEWARDSHIPPLAN_CLONERECURRINGCOMPLETEDSTEP @STEPID, @NEXTTARGETDATE, @CHANGEAGENTID, @CHANGEDATE;
fetch next from STEPCURSOR into @STEPID, @PLANID, @CONSTITUENTID, @ASSOCIATEDPLANS, @CONTACTPERSONID, @STEPPARTICIPANTS, @NEXTTARGETDATE, @STATUSCODE;
end
close STEPCURSOR
deallocate STEPCURSOR
/* reset CONTEXT_INFO to previous value */
if not @contextCache is null
set CONTEXT_INFO @contextCache