USP_STEWARDSHIPPLAN_STEPSWITHCHILDREN_ADDFROMXML

Adds stewardship plan steps and associated plans.

Parameters

Parameter Parameter Type Mode Description
@STEWARDSHIPPLANID uniqueidentifier IN
@STEPS xml IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


CREATE procedure dbo.USP_STEWARDSHIPPLAN_STEPSWITHCHILDREN_ADDFROMXML
(
    @STEWARDSHIPPLANID uniqueidentifier,
    @STEPS xml,
    @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();

    insert into dbo.STEWARDSHIPPLANSTEP
        (ID,
        PLANID, 
        ACTUALDATE,
        CATEGORYCODEID,
        CONSTITUENTID,
        CONTACTPERSONID,
        CONTACTMETHODCODEID,
        DATELOCKED,
        ENDDATE,
        OBJECTIVE,
        RECURSCODE,
        STARTDATE,
        STATUSCODE,
        TARGETDATE,
        TEMPLATE,
        TARGETSTARTTIME,
        TARGETENDTIME,
        TIMEZONEENTRYID,
        ISALLDAYEVENT,
        ACTUALSTARTTIME,
        ACTUALENDTIME,
        ADDEDBYID, 
        CHANGEDBYID, 
        DATEADDED, 
        DATECHANGED,
        EVENTID,
        MAILINGID,
        BENEFITID)
    select 
        ID,
        @STEWARDSHIPPLANID
        ACTUALDATE,
        CATEGORYCODEID,
        CONSTITUENTID,
        CONTACTPERSONID,
        CONTACTMETHODCODEID,
        DATELOCKED,
        ENDDATE,
        OBJECTIVE,
        RECURSCODE,
        STARTDATE,
        STATUSCODE,
        TARGETDATE,
        TEMPLATE,
        coalesce(TARGETSTARTTIME,''),
        coalesce(TARGETENDTIME,''),
        TIMEZONEENTRYID,        
        case when TARGETSTARTTIME is null then 1 when TARGETSTARTTIME = '' then 1 else 0 end,
        coalesce(ACTUALSTARTTIME,''),
        coalesce(ACTUALENDTIME,''),
        @CHANGEAGENTID
        @CHANGEAGENTID
        @CHANGEDATE
        @CHANGEDATE,
        EVENTID,
        MAILINGID,
        BENEFITID
    from dbo.UFN_STEWARDSHIPPLAN_STEPSWITHCHILDREN_FROMITEMLISTXML(@STEPS);

    -- Take care of the associated plans for each step

    declare @STEPID uniqueidentifier
    declare @STATUSCODE smallint;
    declare @CONSTITUENTID uniqueidentifier; 
    declare @ASSOCIATEDPLANS xml;
    declare @NEXTTARGETDATE datetime;
    declare @CONTACTPERSONID uniqueidentifier;
    declare @STEPPARTICIPANTS xml;

    declare STEPCURSOR cursor local fast_forward for 
    select
        ID,
        STATUSCODE,
        CONSTITUENTID,
        ASSOCIATEDPLANS,
        NEXTTARGETDATE,
        CONTACTPERSONID,
        STEPPARTICIPANTS
    from
        dbo.UFN_STEWARDSHIPPLAN_STEPSWITHCHILDREN_FROMITEMLISTXML(@STEPS)

    open STEPCURSOR

    fetch next from STEPCURSOR into @STEPID, @STATUSCODE, @CONSTITUENTID, @ASSOCIATEDPLANS, @NEXTTARGETDATE, @CONTACTPERSONID, @STEPPARTICIPANTS;

    while @@FETCH_STATUS = 0
    begin
        exec dbo.USP_STEWARDSHIPPLANSTEP_ASSOCIATEDPLANS_ADDFROMXML @STEPID, null, @ASSOCIATEDPLANS, @CHANGEAGENTID, @CHANGEDATE;

        -- Add assigned to constituent as a plan steward, if it doesn't already exist

        if not @CONSTITUENTID is null
            exec dbo.USP_STEWARDSHIPPLANSTEWARD_ADD @STEWARDSHIPPLANID, @CONSTITUENTID, @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;                        

        if not @STEPPARTICIPANTS is null
            exec dbo.USP_STEWARDSHIPPLANSTEP_PARTICIPANTS_UPDATEFROMXML @STEPID, @STEPPARTICIPANTS, @CHANGEAGENTID, @CHANGEDATE;

        fetch next from STEPCURSOR into @STEPID, @STATUSCODE, @CONSTITUENTID, @ASSOCIATEDPLANS, @NEXTTARGETDATE, @CONTACTPERSONID, @STEPPARTICIPANTS;
    end

    close STEPCURSOR
    deallocate STEPCURSOR

    /* reset CONTEXT_INFO to previous value */
    if not @contextCache is null
        set CONTEXT_INFO @contextCache