USP_DATAFORMTEMPLATE_ADD_INDTOIND_RELATIONSHIP

The save procedure used by the add dataform template "Relationship Individual to Individual Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CONSTITUENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@RECIPROCALCONSTITUENTID uniqueidentifier IN Related individual
@RECIPROCALTYPECODEID uniqueidentifier IN Individual is the
@RELATIONSHIPTYPECODEID uniqueidentifier IN Constituent is the
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@ISSPOUSE bit IN Is spouse?
@PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit IN Apply to <Constituent> for revenue from <Reciprocal>
@PRIMARYSOFTCREDITMATCHFACTOR decimal(5, 2) IN Recognition credit match percent
@RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit IN Apply to <Reciprocal> for revenue from <Constituent>
@RECIPROCALSOFTCREDITMATCHFACTOR decimal(5, 2) IN Recognition credit match percent
@PRIMARYRECOGNITIONTYPECODEID uniqueidentifier IN Recognition credit type
@RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier IN Recognition credit type
@COPYCONTACTINFO bit IN Copy primary contact information
@SKIP_ADDING_SECURITYGROUPS bit IN Skip adding security groups
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@MEMBERSOFSAMEHOUSEHOLD bit IN These individuals are members of the same household
@COMMENTS nvarchar(max) IN Comments
@RELATIONSHIPS xml IN
@MARRIAGERELATIONSHIPID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_INDTOIND_RELATIONSHIP
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null,    
  @CONSTITUENTID uniqueidentifier,
  @RECIPROCALCONSTITUENTID uniqueidentifier,
  @RECIPROCALTYPECODEID uniqueidentifier,
  @RELATIONSHIPTYPECODEID uniqueidentifier,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @ISSPOUSE bit = 0,
  @PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit = 0,
  @PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2) = 100,
  @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit = 0,
  @RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2) = 100,
  @PRIMARYRECOGNITIONTYPECODEID uniqueidentifier = null,
  @RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier = null,
  @COPYCONTACTINFO bit = 0,
  @SKIP_ADDING_SECURITYGROUPS bit=0,
  @CURRENTAPPUSERID uniqueidentifier,
  @MEMBERSOFSAMEHOUSEHOLD bit = 0,
  @COMMENTS nvarchar(max) = null,
  @RELATIONSHIPS xml = null,
  @MARRIAGERELATIONSHIPID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;

  if @ID is null
    set @ID = newid();

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

  set @CURRENTDATE = getdate();

  begin try

    declare @RECIPROCAL_RELATEDTOMARRIAGE as bit = 0; --reciprocal constit shares a relationship with one of the spouses

    if not @MARRIAGERELATIONSHIPID is null 
    begin
      if exists(
        select SHARED.ID
        from dbo.RELATIONSHIP SHARED
        inner join 
            (select RELATIONSHIP.RELATIONSHIPCONSTITUENTID CONSTITUENTID
                from dbo.RELATIONSHIP 
                where ID = @MARRIAGERELATIONSHIPID
                union 
                select RELATIONSHIP.RECIPROCALCONSTITUENTID CONSTITUENTID
                from dbo.RELATIONSHIP 
                where ID = @MARRIAGERELATIONSHIPID) MARRIAGE
            on MARRIAGE.CONSTITUENTID = SHARED.RECIPROCALCONSTITUENTID
        where 
          SHARED.RELATIONSHIPCONSTITUENTID = @RECIPROCALCONSTITUENTID and
          (SHARED.STARTDATE is null or SHARED.STARTDATE <= @CURRENTDATE) and
          (SHARED.ENDDATE is null or SHARED.ENDDATE >= @CURRENTDATE))
      set @RECIPROCAL_RELATEDTOMARRIAGE = 1;
    end

    declare @SETID uniqueidentifier = newid();

    insert into dbo.RELATIONSHIPSET
    (
      ID,
      ADDEDBYID,
      CHANGEDBYID,
      DATEADDED,
      DATECHANGED
    )
    values
    (
      @SETID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    insert into dbo.RELATIONSHIP
    (
      ID,
      RELATIONSHIPCONSTITUENTID,
      RECIPROCALCONSTITUENTID,
      RELATIONSHIPTYPECODEID,
      RECIPROCALTYPECODEID,
      ISSPOUSE,
      STARTDATE,
      ENDDATE,
      RELATIONSHIPSETID,
      COMMENTS,
      ADDEDBYID,
      CHANGEDBYID,
      DATEADDED,
      DATECHANGED
    )
    values
    (
      @ID,
      @CONSTITUENTID,
      @RECIPROCALCONSTITUENTID,
      @RELATIONSHIPTYPECODEID,
      @RECIPROCALTYPECODEID,
      @ISSPOUSE,
      @STARTDATE,
      @ENDDATE,
      @SETID,
      @COMMENTS,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @RECIPROCALCONSTITUENTID,
      @STARTDATE, @ENDDATE, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
      @PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS
      @RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID;

    --Always copy contact info for the spouse

    if @ISSPOUSE = 1
      exec dbo.USP_SPOUSERELATIONSHIP_SETUPHOUSEHOLD @CONSTITUENTID, @RECIPROCALCONSTITUENTID
        1, @CHANGEAGENTID, @CURRENTDATE,    @SKIP_ADDING_SECURITYGROUPS,@CURRENTAPPUSERID;

    if (@MEMBERSOFSAMEHOUSEHOLD = 1) and (@ISSPOUSE = 0)
  exec dbo.USP_RELATIONSHIP_SETUPHOUSEHOLD @CONSTITUENTID, @RECIPROCALCONSTITUENTID
        @COPYCONTACTINFO, @CHANGEAGENTID, @CURRENTDATE,    @SKIP_ADDING_SECURITYGROUPS,@CURRENTAPPUSERID,'753F5883-1BF9-428f-A7D2-866C5CDFAFC1', 0, 1, 1, 0;

    if @MEMBERSOFSAMEHOUSEHOLD = 1
    begin
      exec dbo.USP_RELATIONSHIPS_ADDFROMXML @RELATIONSHIPS, @ID, @CHANGEAGENTID, @CURRENTDATE
      exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE @CONSTITUENTID, @RECIPROCALCONSTITUENTID, @RELATIONSHIPTYPECODEID, @RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE
    end

    if @ISSPOUSE = 1
      exec dbo.USP_RELATIONSHIPS_MANAGELIFECHANGES @ID, @CONSTITUENTID, @RECIPROCALCONSTITUENTID, @CHANGEAGENTID;

    if not @MARRIAGERELATIONSHIPID is null 
      begin
        if @RECIPROCAL_RELATEDTOMARRIAGE = 1 
          exec dbo.USP_RELATIONSHIPBYMARRIAGE_CREATE @MARRIAGERELATIONSHIPID, @ID, @CHANGEAGENTID, @CURRENTDATE; --flag as a new shared relationship

      end
  end try

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

  return 0;