USP_DATAFORMTEMPLATE_ADD_MKTVENDORCONTACT

The save procedure used by the add dataform template "Marketing Vendor Contact Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@VENDORID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CONTACTID uniqueidentifier IN Full name
@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_ADD_MKTVENDORCONTACT]
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @VENDORID uniqueidentifier,
  @CONTACTID uniqueidentifier = null,
  @CONTACT_LASTNAME nvarchar(100) = '',
  @CONTACT_FIRSTNAME nvarchar(50) = '',
  @CONTACT_MIDDLENAME nvarchar(50) = '',
  @CONTACT_TITLECODEID uniqueidentifier = null,
  @CONTACT_SUFFIXCODEID uniqueidentifier = null,
  @CONTACT_NICKNAME nvarchar(50) = '',
  @CONTACT_ADDRESS_TYPECODEID uniqueidentifier = null,
  @CONTACT_ADDRESS_COUNTRYID uniqueidentifier = null,
  @CONTACT_ADDRESS_ADDRESSBLOCK nvarchar(150) = '',
  @CONTACT_ADDRESS_CITY nvarchar(50) = '',
  @CONTACT_ADDRESS_STATEID uniqueidentifier = null,
  @CONTACT_ADDRESS_POSTCODE nvarchar(12) = '',
  @CONTACT_ADDRESS_DONOTMAIL bit = 0,
  @CONTACT_ADDRESS_DONOTMAILREASONCODEID uniqueidentifier = null,
  @CONTACT_PHONE_PHONETYPECODEID uniqueidentifier = null,
  @CONTACT_PHONE_NUMBER nvarchar(100) = '',
  @CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier = null,
  @CONTACT_EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
  @CONTACT_RELATIONSHIPTYPECODEID uniqueidentifier = null,
  @CONTACT_RECIPROCALTYPECODEID uniqueidentifier = null,
  @CONTACTTYPECODEID uniqueidentifier = null,
  @CONTACT_POSITION nvarchar(100) = '',
  @ISPRIMARYCONTACT bit = 0,
  @CONTACT_TITLE2CODEID uniqueidentifier = null,
  @CONTACT_SUFFIX2CODEID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @SITES xml;

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

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

    set @CURRENTDATE = getdate();

    if @CONTACTID is null
      begin
        set @CONTACTID = newid();

        -- insert the contact's base constituent information

        insert into dbo.[CONSTITUENT]
        (
          [ID],
          [ISORGANIZATION],
          [KEYNAME],
          [FIRSTNAME],
          [MIDDLENAME],
          [NICKNAME],
          [TITLECODEID],
          [TITLE2CODEID],
          [SUFFIXCODEID],
          [SUFFIX2CODEID],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        ) values (
          @CONTACTID,
          0,
          @CONTACT_LASTNAME,
          @CONTACT_FIRSTNAME,
          @CONTACT_MIDDLENAME,
          @CONTACT_NICKNAME,
          @CONTACT_TITLECODEID,
          @CONTACT_TITLE2CODEID,
          @CONTACT_SUFFIXCODEID,
          @CONTACT_SUFFIX2CODEID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

        -- insert the contact's primary address (only if one was specified)

        if @CONTACT_ADDRESS_TYPECODEID is not null or 
           @CONTACT_ADDRESS_COUNTRYID is not null or
           @CONTACT_ADDRESS_ADDRESSBLOCK <> '' or
           @CONTACT_ADDRESS_CITY <> '' or
           @CONTACT_ADDRESS_STATEID is not null or
           @CONTACT_ADDRESS_POSTCODE <> '' or
           @CONTACT_ADDRESS_DONOTMAIL <> 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
          );

        -- insert the contact's primary phone (only if one was specified)

        if (@CONTACT_PHONE_PHONETYPECODEID is not null) or (@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
          );

        -- insert the primary email address (only if one was specified)

        if (@CONTACT_EMAILADDRESS_EMAILADDRESSTYPECODEID is not null) or (@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
          );

        -- start security groups

        exec dbo.[USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD]
            @APPUSERID = @CURRENTAPPUSERID,
            @DATAFORMTEMPLATEID = 'D6DCE820-315F-4eb3-A673-63103C0ECB63',
            @CONSTITUENTID = @CONTACTID,
            @DATEADDEDTOUSE = @CURRENTDATE,
            @CHANGEAGENTID = @CHANGEAGENTID;
        -- end security groups


        -- start sites

        -- copy sites from vendor to contact

        set @SITES = dbo.[UFN_CONSTITUENT_GETSITES_TOITEMLISTXML](@VENDORID);

        if @SITES is not null
          begin
            set @SITES.modify('delete /SITES/ITEM/ID');
            exec dbo.[USP_CONSTITUENT_GETSITES_ADDFROMXML] @CONTACTID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
          end
        -- end sites    

      end;

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

    -- create the contact relationship


    declare @RELATIONSHIPSETID uniqueidentifier = newid();

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

    insert into dbo.[RELATIONSHIP]
    (
      [ID],
      [RELATIONSHIPCONSTITUENTID],
      [RECIPROCALCONSTITUENTID],
      [RELATIONSHIPTYPECODEID],
      [RECIPROCALTYPECODEID],
      [ISCONTACT],
      [ISPRIMARYCONTACT],
      [CONTACTTYPECODEID],
      [RELATIONSHIPSETID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    ) values (
      @ID,
      @VENDORID,
      @CONTACTID,
      @CONTACT_RELATIONSHIPTYPECODEID,
      @CONTACT_RECIPROCALTYPECODEID,
      1,
      @ISPRIMARYCONTACT,
      @CONTACTTYPECODEID,
      @RELATIONSHIPSETID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    exec dbo.[USP_RELATIONSHIPCONFIGURATION_CONFIGURE] @VENDORID, @CONTACTID, @CONTACT_RELATIONSHIPTYPECODEID, @CONTACT_RECIPROCALTYPECODEID, @CHANGEAGENTID, @CURRENTDATE;

    if (len(@CONTACT_POSITION) > 0)
      insert into dbo.[RELATIONSHIPJOBINFO]
      (
        [RELATIONSHIPSETID],
        [JOBTITLE],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED]
      ) values (
        @RELATIONSHIPSETID,
        @CONTACT_POSITION,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      );
  end try

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

  return 0;