USP_DATAFORMTEMPLATE_ADD_MKTVENDOR

The save procedure used by the add dataform template "Marketing Vendor 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.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@WEBADDRESS UDT_WEBADDRESS IN Web site address
@PICTURE varbinary IN Logo
@PICTURETHUMBNAIL varbinary IN Logo thumbnail
@ADDRESS_TYPECODEID uniqueidentifier IN Address type
@ADDRESS_COUNTRYID uniqueidentifier IN Country
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN Address
@ADDRESS_CITY nvarchar(50) IN City
@ADDRESS_STATEID uniqueidentifier IN State
@ADDRESS_POSTCODE nvarchar(12) IN Post code
@ADDRESS_CART nvarchar(10) IN CART
@ADDRESS_DPC nvarchar(8) IN DPC
@ADDRESS_LOT nvarchar(5) IN LOT
@PHONE_PHONETYPECODEID uniqueidentifier IN Phone type
@PHONE_NUMBER nvarchar(100) IN Phone number
@EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier IN Email type
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN Email address
@ADDRESS_DONOTMAIL bit IN Do not send mail to this address
@ADDRESS_DONOTMAILREASONCODEID uniqueidentifier IN Reason
@CONTACTID uniqueidentifier IN Contact ID
@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
@VENDORSERVICETYPES xml IN Service types provided
@VENDORSERVICES xml IN Services provided
@SERVICETYPECODE tinyint IN Input parameter indicating the context ID for the record being added.
@CONTACT_TITLE2CODEID uniqueidentifier IN Title 2
@CONTACT_SUFFIX2CODEID uniqueidentifier IN Suffix 2
@SITES xml IN Sites

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_MKTVENDOR]
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,    
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255) = '',
  @WEBADDRESS dbo.UDT_WEBADDRESS = '',
  @PICTURE varbinary(max) = null,
  @PICTURETHUMBNAIL varbinary(max) = null,
  @ADDRESS_TYPECODEID uniqueidentifier = null,
  @ADDRESS_COUNTRYID uniqueidentifier = null,
  @ADDRESS_ADDRESSBLOCK nvarchar(150) = '',
  @ADDRESS_CITY nvarchar(50) = '',
  @ADDRESS_STATEID uniqueidentifier = null,
  @ADDRESS_POSTCODE nvarchar(12) = '',
  @ADDRESS_CART nvarchar(10) = '',
  @ADDRESS_DPC nvarchar(8) = '',
  @ADDRESS_LOT nvarchar(5) = '',
  @PHONE_PHONETYPECODEID uniqueidentifier = null,
  @PHONE_NUMBER nvarchar(100) = '',
  @EMAILADDRESS_EMAILADDRESSTYPECODEID uniqueidentifier = null,
  @EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS = '',
  @ADDRESS_DONOTMAIL bit = 0,
  @ADDRESS_DONOTMAILREASONCODEID uniqueidentifier = null,
  @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) = '',
  @VENDORSERVICETYPES xml = null,
  @VENDORSERVICES xml = null,
  @SERVICETYPECODE tinyint,
  @CONTACT_TITLE2CODEID uniqueidentifier = null,
  @CONTACT_SUFFIX2CODEID uniqueidentifier = null,
  @SITES xml = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @KEYNAME nvarchar(100);
  declare @KEYNAMEPREFIX nvarchar(50);

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

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

    set @CURRENTDATE = getdate();

    ---------------------------------------------------------------------

    -- vendor

    ---------------------------------------------------------------------


    exec dbo.[USP_PARSE_ORGANIZATION_NAME] @NAME, @KEYNAME output, @KEYNAMEPREFIX output;

    -- insert the base constituent information

    insert into dbo.[CONSTITUENT] (
      [ID], 
      [ISORGANIZATION], 
      [KEYNAME], 
      [KEYNAMEPREFIX], 
      [WEBADDRESS], 
      [PICTURE], 
      [PICTURETHUMBNAIL], 
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    ) values (
      @ID,
      -1,
      @KEYNAME,
      @KEYNAMEPREFIX,
      @WEBADDRESS,
      @PICTURE,
      @PICTURETHUMBNAIL,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    -- insert the vendor information

    insert into dbo.[VENDOR] (
      [ID],
      [DESCRIPTION],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [ALLOWPAYMENTS],
      [ALLOWTOCREATEINVOICES]
    ) values (
      @ID,
      @DESCRIPTION,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      0, -- By default Marketing vendors cannot be paid or their invoices created in AP

      0  
    );

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

    if @ADDRESS_COUNTRYID is not null or
       @ADDRESS_ADDRESSBLOCK <> '' or
       @ADDRESS_CITY <> '' or
       @ADDRESS_STATEID is not null or
       @ADDRESS_POSTCODE <> '' or
       @ADDRESS_DONOTMAIL <> 0 or
       @ADDRESS_DONOTMAILREASONCODEID is not null or
       @ADDRESS_CART <> '' or
       @ADDRESS_DPC <> '' or
       @ADDRESS_LOT <> ''
      insert into dbo.[ADDRESS] (
        [CONSTITUENTID], 
        [ISPRIMARY],
        [ADDRESSTYPECODEID],
        [COUNTRYID],
        [ADDRESSBLOCK],
        [CITY],
        [STATEID],
        [POSTCODE],
        [CART],
        [DPC],
        [LOT],
        [DONOTMAIL],
        [DONOTMAILREASONCODEID],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED]
      ) values (
        @ID,
        1,
        @ADDRESS_TYPECODEID,
        @ADDRESS_COUNTRYID,
        @ADDRESS_ADDRESSBLOCK,
        @ADDRESS_CITY,
        @ADDRESS_STATEID,
        @ADDRESS_POSTCODE,
        @ADDRESS_CART,
        @ADDRESS_DPC,
        @ADDRESS_LOT,
        @ADDRESS_DONOTMAIL,
        @ADDRESS_DONOTMAILREASONCODEID,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      );

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

    if (@PHONE_PHONETYPECODEID is not null) or (@PHONE_NUMBER <> '')
      insert into dbo.[PHONE] (
        [CONSTITUENTID],
        [PHONETYPECODEID],
        [NUMBER],
        [ISPRIMARY],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED]
      ) values (
        @ID,
        @PHONE_PHONETYPECODEID,
        @PHONE_NUMBER,
        1,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      );

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

    if (@EMAILADDRESS_EMAILADDRESSTYPECODEID is not null) or (@EMAILADDRESS_EMAILADDRESS <> '')
      begin
        insert into dbo.[EMAILADDRESS]
        (
          [CONSTITUENTID],
          [EMAILADDRESSTYPECODEID],
          [EMAILADDRESS],
          [ISPRIMARY],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        )
        values
        (
          @ID,
          @EMAILADDRESS_EMAILADDRESSTYPECODEID,
          @EMAILADDRESS_EMAILADDRESS,
          1,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );
      end

    -- start security groups

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


    -- start sites

    if @SITES is null and dbo.[UFN_SITEREQUIREDFORUSERONFEATURE](@CURRENTAPPUSERID, '05dc9052-4d2d-499b-a037-9726445c7842', 1) = 1
      begin
        raiserror('ERR_MKTVENDOR_SITEISREQUIRED', 13, 1);
        return 1;
      end

    exec dbo.[USP_CONSTITUENTSITE_VALIDATESITES] @SITES;                        

    exec dbo.[USP_CONSTITUENT_GETSITES_ADDFROMXML] @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
    -- end sites    


    ---------------------------------------------------------------------

    -- contact

    ---------------------------------------------------------------------


    if @CONTACTID is null
      if @CONTACT_LASTNAME <> ''
        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_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

          -- sites were validated above

          exec dbo.[USP_CONSTITUENT_GETSITES_ADDFROMXML] @CONTACTID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
          -- end sites    

        end;

    if @CONTACTID is not null
      begin
        -- create the primary 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
        (
          newid(),
          @ID,
          @CONTACTID,
          @CONTACT_RELATIONSHIPTYPECODEID,
          @CONTACT_RECIPROCALTYPECODEID,
          1,
          1,
          @CONTACTTYPECODEID,
          @RELATIONSHIPSETID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

        exec dbo.[USP_RELATIONSHIPCONFIGURATION_CONFIGURE] @ID, @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

    ---------------------------------------------------------------------

    -- services

    ---------------------------------------------------------------------


    exec dbo.[USP_MKTVENDOR_GETVENDORSERVICETYPES_ADDFROMXML] @ID, @VENDORSERVICETYPES, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.[USP_MKTVENDOR_GETVENDORSERVICES_ADDFROMXML] @ID, @VENDORSERVICES, @CHANGEAGENTID, @CURRENTDATE;

  end try

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

  return 0;