USP_DATAFORMTEMPLATE_EDIT_MKTVENDORCONTACT_2

The save procedure used by the edit dataform template "Marketing Vendor Contact Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CONTACT_LASTNAME nvarchar(100) IN Last name
@CONTACT_FIRSTNAME nvarchar(50) IN First name
@CONTACT_MIDDLENAME nvarchar(50) IN Middle name
@CONTACT_TITLECODEID uniqueidentifier IN Title
@CONTACT_SUFFIXCODEID uniqueidentifier IN Suffix
@CONTACT_NICKNAME nvarchar(50) IN Nickname
@CONTACT_ADDRESS_TYPECODEID uniqueidentifier IN Address type
@CONTACT_ADDRESS_COUNTRYID uniqueidentifier IN Country
@CONTACT_ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@CONTACT_ADDRESS_CITY nvarchar(50) IN City
@CONTACT_ADDRESS_STATEID uniqueidentifier IN State
@CONTACT_ADDRESS_POSTCODE nvarchar(12) IN Post code
@CONTACT_ADDRESS_DONOTMAIL bit IN Do not send mail to this address
@CONTACT_ADDRESS_DONOTMAILREASONCODEID uniqueidentifier IN Reason
@CONTACT_PHONE_PHONETYPECODEID uniqueidentifier IN Phone type
@CONTACT_PHONE_NUMBER nvarchar(100) IN Phone number
@CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier IN Email type
@CONTACT_EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN Email address
@CONTACT_RELATIONSHIPTYPECODEID uniqueidentifier IN Relationship type
@CONTACT_RECIPROCALTYPECODEID uniqueidentifier IN Reciprocal relationship type
@CONTACTTYPECODEID uniqueidentifier IN Contact type
@CONTACT_POSITION nvarchar(100) IN Job title
@ISPRIMARYCONTACT bit IN Set as primary contact
@CONTACT_TITLE2CODEID uniqueidentifier IN Title 2
@CONTACT_SUFFIX2CODEID uniqueidentifier IN Suffix 2

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTVENDORCONTACT_2]
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @CONTACT_LASTNAME nvarchar(100),
  @CONTACT_FIRSTNAME nvarchar(50),
  @CONTACT_MIDDLENAME nvarchar(50),
  @CONTACT_TITLECODEID uniqueidentifier,
  @CONTACT_SUFFIXCODEID uniqueidentifier,
  @CONTACT_NICKNAME nvarchar(50),
  @CONTACT_ADDRESS_TYPECODEID uniqueidentifier,
  @CONTACT_ADDRESS_COUNTRYID uniqueidentifier,
  @CONTACT_ADDRESS_ADDRESSBLOCK nvarchar(150),
  @CONTACT_ADDRESS_CITY nvarchar(50),
  @CONTACT_ADDRESS_STATEID uniqueidentifier,
  @CONTACT_ADDRESS_POSTCODE nvarchar(12),
  @CONTACT_ADDRESS_DONOTMAIL bit,
  @CONTACT_ADDRESS_DONOTMAILREASONCODEID uniqueidentifier,
  @CONTACT_PHONE_PHONETYPECODEID uniqueidentifier,
  @CONTACT_PHONE_NUMBER nvarchar(100),
  @CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier,
  @CONTACT_EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS,
  @CONTACT_RELATIONSHIPTYPECODEID uniqueidentifier,
  @CONTACT_RECIPROCALTYPECODEID uniqueidentifier,
  @CONTACTTYPECODEID uniqueidentifier,
  @CONTACT_POSITION nvarchar(100),
  @ISPRIMARYCONTACT bit,
  @CONTACT_TITLE2CODEID uniqueidentifier,
  @CONTACT_SUFFIX2CODEID uniqueidentifier
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @VENDORID uniqueidentifier;
  declare @CONTACTID uniqueidentifier;
  declare @ADDRESSID uniqueidentifier;
  declare @PHONEID uniqueidentifier;
  declare @EMAILADDRESSID uniqueidentifier;

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

    set @CURRENTDATE = getdate();

    select
      @VENDORID = [RELATIONSHIP].[RELATIONSHIPCONSTITUENTID],
      @CONTACTID = [RELATIONSHIP].[RECIPROCALCONSTITUENTID]
    from
      dbo.[RELATIONSHIP]
    where
      [ID] = @ID;

    update dbo.[CONSTITUENT] set
      [KEYNAME] = @CONTACT_LASTNAME,
      [FIRSTNAME] = @CONTACT_FIRSTNAME,
      [MIDDLENAME] = @CONTACT_MIDDLENAME,
      [NICKNAME] = @CONTACT_NICKNAME,
      [TITLECODEID] = @CONTACT_TITLECODEID,
      [SUFFIXCODEID] = @CONTACT_SUFFIXCODEID,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE,
      [TITLE2CODEID] = @CONTACT_TITLE2CODEID,
      [SUFFIX2CODEID] = @CONTACT_SUFFIX2CODEID
    where [ID] = @CONTACTID;

    select @ADDRESSID = [ADDRESS].[ID]
    from dbo.[ADDRESS]
    where [CONSTITUENTID] = @CONTACTID and [ISPRIMARY] = 1;

    if @ADDRESSID is not null
      update dbo.[ADDRESS] set
        [ADDRESSTYPECODEID] = @CONTACT_ADDRESS_TYPECODEID,
        [COUNTRYID] = @CONTACT_ADDRESS_COUNTRYID,
        [ADDRESSBLOCK] = @CONTACT_ADDRESS_ADDRESSBLOCK,
        [CITY] = @CONTACT_ADDRESS_CITY,
        [STATEID] = @CONTACT_ADDRESS_STATEID,
        [POSTCODE] = @CONTACT_ADDRESS_POSTCODE,
        [DONOTMAIL] = isnull(@CONTACT_ADDRESS_DONOTMAIL, 0),
        [DONOTMAILREASONCODEID] = @CONTACT_ADDRESS_DONOTMAILREASONCODEID,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      where [ID] = @ADDRESSID;
    else
      if @CONTACT_ADDRESS_COUNTRYID is not null or
         isnull(@CONTACT_ADDRESS_ADDRESSBLOCK, '') <> '' or
         isnull(@CONTACT_ADDRESS_CITY, '') <> '' or
         @CONTACT_ADDRESS_STATEID is not null or
         isnull(@CONTACT_ADDRESS_POSTCODE, '') <> '' or
         isnull(@CONTACT_ADDRESS_DONOTMAIL, 0) <> 0 or
         @CONTACT_ADDRESS_DONOTMAILREASONCODEID is not null
        insert into dbo.[ADDRESS] (
          [CONSTITUENTID], 
          [ISPRIMARY],
          [ADDRESSTYPECODEID],
          [COUNTRYID],
          [ADDRESSBLOCK],
          [CITY],
          [STATEID],
          [POSTCODE],
          [DONOTMAIL],
          [DONOTMAILREASONCODEID],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        ) values (
          @CONTACTID,
1,
          @CONTACT_ADDRESS_TYPECODEID,
          @CONTACT_ADDRESS_COUNTRYID,
          @CONTACT_ADDRESS_ADDRESSBLOCK,
          @CONTACT_ADDRESS_CITY,
          @CONTACT_ADDRESS_STATEID,
          @CONTACT_ADDRESS_POSTCODE,
          @CONTACT_ADDRESS_DONOTMAIL,
          @CONTACT_ADDRESS_DONOTMAILREASONCODEID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

    select @PHONEID = [ID]
    from dbo.[PHONE]
    where [CONSTITUENTID] = @CONTACTID and [ISPRIMARY] = 1;

    if @PHONEID is not null
      update dbo.[PHONE] set
        [PHONETYPECODEID] = @CONTACT_PHONE_PHONETYPECODEID,
        [NUMBER] = @CONTACT_PHONE_NUMBER,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      where [ID] = @PHONEID;
    else
      if @CONTACT_PHONE_PHONETYPECODEID is not null or 
         isnull(@CONTACT_PHONE_NUMBER, '') <> ''
        insert into dbo.[PHONE] (
          [CONSTITUENTID],
          [PHONETYPECODEID],
          [NUMBER],
          [ISPRIMARY],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        ) values (
          @CONTACTID,
          @CONTACT_PHONE_PHONETYPECODEID,
          @CONTACT_PHONE_NUMBER,
          1,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

    select @EMAILADDRESSID = [ID]
    from dbo.[EMAILADDRESS]
    where [CONSTITUENTID] = @CONTACTID and [ISPRIMARY] = 1;

    if @EMAILADDRESSID is not null
      update dbo.[EMAILADDRESS] set
        [EMAILADDRESSTYPECODEID] = @CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID,
        [EMAILADDRESS] = @CONTACT_EMAILADDRESS_EMAILADDRESS,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      where [ID] = @EMAILADDRESSID;
    else
      if @CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID is not null or 
         isnull(@CONTACT_EMAILADDRESS_EMAILADDRESS, '') <> ''
        insert into dbo.[EMAILADDRESS] (
          [CONSTITUENTID],
          [EMAILADDRESSTYPECODEID],
          [EMAILADDRESS],
          [ISPRIMARY],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        ) values (
          @CONTACTID,
          @CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID,
          @CONTACT_EMAILADDRESS_EMAILADDRESS,
          1,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

    if @ISPRIMARYCONTACT = 1
      update dbo.[RELATIONSHIP]
      set
        [ISPRIMARYCONTACT] = 0,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      where [RELATIONSHIPCONSTITUENTID] = @VENDORID and [ISCONTACT] = 1;

  declare @RELATIONSHIPSETID uniqueidentifier;

  select @RELATIONSHIPSETID = [RELATIONSHIPSETID]
  from dbo.[RELATIONSHIP] where [ID] = @ID;

  if @RELATIONSHIPSETID is null exec dbo.[USP_RELATIONSHIPSET_RETROCREATE] @RELATIONSHIPSETID output, @CHANGEAGENTID, @ID

  declare @JOBINFOID uniqueidentifier;
  declare @JOBCATEGORYCODEID uniqueidentifier;
  declare @CAREERLEVELCODEID uniqueidentifier;
  declare @JOBDIVISION nvarchar(100);
  declare @JOBDEPARTMENT nvarchar(100);
  declare @JOBSCHEDULECODEID uniqueidentifier;

  select 
    @JOBINFOID = [ID],
    @JOBCATEGORYCODEID = [JOBCATEGORYCODEID],
    @CAREERLEVELCODEID = [CAREERLEVELCODEID],
    @JOBDIVISION = [JOBDIVISION],
    @JOBDEPARTMENT = [JOBDEPARTMENT],
    @JOBSCHEDULECODEID = [JOBSCHEDULECODEID]
  from dbo.[RELATIONSHIPJOBINFO] 
  where [RELATIONSHIPSETID] = @RELATIONSHIPSETID
    and ([RELATIONSHIPJOBINFO].[STARTDATE] <= @CURRENTDATE or [RELATIONSHIPJOBINFO].[STARTDATE] is null)
    and ([RELATIONSHIPJOBINFO].[ENDDATE] >= @CURRENTDATE or [RELATIONSHIPJOBINFO].[ENDDATE] is null)

  if @JOBINFOID is not null
    begin
      --if any of these fields still contains data then we want to update the record

      if @JOBCATEGORYCODEID is not null or 
         @CAREERLEVELCODEID is not null or 
         len(@JOBDIVISION) > 0 or 
         len(@JOBDEPARTMENT) > 0 or 
         @JOBSCHEDULECODEID is not null or 
         len(@CONTACT_POSITION) > 0
        begin
          update dbo.[RELATIONSHIPJOBINFO] set
            [JOBTITLE] = coalesce(@CONTACT_POSITION,''),
            [CHANGEDBYID] = @CHANGEAGENTID,
            [DATECHANGED] = @CURRENTDATE
          where [RELATIONSHIPSETID] = @RELATIONSHIPSETID
            and ([ENDDATE] is null or [ENDDATE] >= @CURRENTDATE)
            and ([STARTDATE] is null or [STARTDATE] < @CURRENTDATE);
        end
      else
        --If all of the relevant job info record data is null the record is no longer needed

        delete from dbo.[RELATIONSHIPJOBINFO] where [ID] = @JOBINFOID
    end
  else 
    if len(@CONTACT_POSITION) > 0 
      --If the record does not yet exist and we have relevant information to populate it with (ie JOBTILE) create it.

      insert into dbo.[RELATIONSHIPJOBINFO]
      (
        [RELATIONSHIPSETID],
        [JOBTITLE],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED]
      ) values (
        @RELATIONSHIPSETID,
        @CONTACT_POSITION,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      )

    update dbo.[RELATIONSHIP] set
      [RELATIONSHIPTYPECODEID] = @CONTACT_RELATIONSHIPTYPECODEID,
      [RECIPROCALTYPECODEID] = @CONTACT_RECIPROCALTYPECODEID,
      [CONTACTTYPECODEID] = @CONTACTTYPECODEID,
      [ISPRIMARYCONTACT] = @ISPRIMARYCONTACT,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @ID;


  exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE 
    @VENDORID
    @CONTACTID
    @CONTACT_RELATIONSHIPTYPECODEID
    @CONTACT_RECIPROCALTYPECODEID
    @CHANGEAGENTID
    @CURRENTDATE    

  end try

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

  return 0;