USP_GENERATESTEPUPDATEBATCH

Populates a row of the given batch with data from the given step ID.

Parameters

Parameter Parameter Type Mode Description
@STEPID uniqueidentifier IN
@BATCHID uniqueidentifier IN
@SEQUENCE int IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_GENERATESTEPUPDATEBATCH
(
  @STEPID uniqueidentifier,
  @BATCHID uniqueidentifier,
  @SEQUENCE int,      
  @CURRENTAPPUSERID uniqueidentifier
)
as
begin
  set nocount on;

  declare @ID uniqueidentifier;
  declare @CURRENTDATE datetime;
  declare @CHANGEAGENTID uniqueidentifier;

  set @ID = NewID();

  if @CHANGEAGENTID is null
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

  set @CURRENTDATE = GetDate();

  declare @STEPOWNERID uniqueidentifier;
  declare @STEWARDSHIPPLANID uniqueidentifier;
  declare @CATEGORYCODEID uniqueidentifier;
  declare @OBJECTIVE nvarchar(100);
  declare @TARGETDATE date;
  declare @DATELOCKED bit;
  declare @ACTUALDATE date;
  declare @STARTDATE date;
  declare @ENDDATE date;
  declare @CONTACTMETHODCODEID uniqueidentifier;
  declare @CONTACTPERSONID uniqueidentifier;
  declare @CONSTITUENTID uniqueidentifier;
  declare @RECURSCODE smallint;
  declare @STATUSCODE smallint;
  declare @EVENTID uniqueidentifier;
  declare @MAILINGID uniqueidentifier;
  declare @BENEFITID uniqueidentifier;
  declare @TIMEZONEENTRYID uniqueidentifier;
  declare @TARGETSTARTTIME UDT_HOURMINUTE;
  declare @TARGETENDTIME UDT_HOURMINUTE;
  declare @ACTUALSTARTTIME UDT_HOURMINUTE;
  declare @ACTUALENDTIME UDT_HOURMINUTE;
  declare @ISALLDAYEVENT bit;
  declare @ASSOCIATEDPLANS xml;
  declare @STEPPARTICIPANTS xml;

  select    
    @STEWARDSHIPPLANID = STEP.PLANID,
    @CATEGORYCODEID = STEP.CATEGORYCODEID,
    @OBJECTIVE = STEP.OBJECTIVE,
    @TARGETDATE = STEP.TARGETDATE,
    @DATELOCKED = STEP.DATELOCKED,
    @ACTUALDATE = STEP.ACTUALDATE,
    @STARTDATE = STEP.STARTDATE,
    @ENDDATE = STEP.ENDDATE,
    @CONTACTPERSONID = 
      case
        when STEPOWNER.ISGROUP = 0 and STEPOWNER.ISORGANIZATION = 0 then [PLAN].CONSTITUENTID
        else CONTACTPERSONID
      end,
    @CONTACTMETHODCODEID = STEP.CONTACTMETHODCODEID,                        
    @CONSTITUENTID = STEP.CONSTITUENTID,
    @ASSOCIATEDPLANS = dbo.UFN_STEWARDSHIPPLANSTEP_ASSOCIATEDPLANS_TOITEMLISTXML(STEP.ID, @CURRENTAPPUSERID),
    @RECURSCODE = STEP.RECURSCODE,
    @STATUSCODE = STEP.STATUSCODE,
    @BENEFITID = STEP.BENEFITID,
    @EVENTID = STEP.EVENTID,
    @MAILINGID = STEP.MAILINGID,
    @TARGETSTARTTIME = STEP.TARGETSTARTTIME,
    @TARGETENDTIME = STEP.TARGETENDTIME,
    @ISALLDAYEVENT = STEP.ISALLDAYEVENT, 
    @TIMEZONEENTRYID = STEP.TIMEZONEENTRYID,
    @ACTUALSTARTTIME = STEP.ACTUALSTARTTIME,
    @ACTUALENDTIME = STEP.ACTUALENDTIME,
    @STEPPARTICIPANTS = dbo.UFN_STEWARDSHIPPLANSTEP_PARTICIPANTS_TOITEMLISTXML(STEP.ID),
    @STEPOWNERID = STEPOWNER.ID
  from 
    dbo.STEWARDSHIPPLANSTEP STEP
  inner join dbo.STEWARDSHIPPLAN [PLAN]
    on STEP.PLANID = [PLAN].ID
  inner join dbo.CONSTITUENT STEPOWNER
    on [PLAN].CONSTITUENTID = STEPOWNER.ID
  outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(STEPOWNER.ID) NF
  where
    STEP.ID = @STEPID;

  begin try
    INSERT INTO dbo.BATCHSTEWARDSHIPPLANSTEPUPDATE
      (ID,BATCHID,SEQUENCE,PRIMARYRECORDID
      ,STEPOWNERID,STEWARDSHIPPLANID,CATEGORYCODEID,OBJECTIVE
      ,TARGETDATE,DATELOCKED,ACTUALDATE,STARTDATE,ENDDATE
      ,CONTACTMETHODCODEID,CONTACTPERSONID,CONSTITUENTID,RECURSCODE
      ,STATUSCODE,EVENTID,MAILINGID,BENEFITID
      ,TIMEZONEENTRYID,TARGETSTARTTIME,TARGETENDTIME,ACTUALSTARTTIME,ACTUALENDTIME,ISALLDAYEVENT
      ,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
     VALUES
      (@ID,@BATCHID,@SEQUENCE,@STEPID
      ,@STEPOWNERID,@STEWARDSHIPPLANID,@CATEGORYCODEID,@OBJECTIVE
      ,@TARGETDATE,@DATELOCKED,@ACTUALDATE,@STARTDATE,@ENDDATE
      ,@CONTACTMETHODCODEID,@CONTACTPERSONID,@CONSTITUENTID,@RECURSCODE
      ,@STATUSCODE,@EVENTID,@MAILINGID,@BENEFITID
      ,@TIMEZONEENTRYID,@TARGETSTARTTIME,@TARGETENDTIME,@ACTUALSTARTTIME,@ACTUALENDTIME,@ISALLDAYEVENT
      ,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE)

    if @ASSOCIATEDPLANS is not null 
      SET @ASSOCIATEDPLANS.modify('delete /ASSOCIATEDPLANS/ITEM/ID') --reset IDs...don't want to reuse ones from the originating table


    exec dbo.USP_BATCHSTEWARDSHIPPLANSTEPUPDATE_GETASSOCIATEDPLANS_ADDFROMXML @ID, @CURRENTAPPUSERID, @ASSOCIATEDPLANS, @CHANGEAGENTID;

    if @STEPPARTICIPANTS is not null
      SET @STEPPARTICIPANTS.modify('delete /STEPPARTICIPANTS/ITEM/ID')

    exec dbo.USP_BATCHSTEWARDSHIPPLANSTEPUPDATE_GETSTEPPARTICIPANTS_ADDFROMXML @ID, @STEPPARTICIPANTS, @CHANGEAGENTID;
  end try

  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0;
end