USP_DATAFORM_ADD_MAILPREFERENCE

The save procedure used by the add dataform template "Mail Preference 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.
@MAILTYPECODE tinyint IN Mail type
@ACKNOWLEDGEMENTID uniqueidentifier IN Selected communication
@CORRESPONDENCEID uniqueidentifier IN Selected communication
@PLEDGEREMINDERID uniqueidentifier IN Selected communication
@BUSINESSUNITCODEID uniqueidentifier IN Business unit
@CATEGORYCODEID uniqueidentifier IN Category
@EVENTCATEGORYCODEID uniqueidentifier IN Category
@SITEID uniqueidentifier IN Site
@CORRESPONDENCECODEID uniqueidentifier IN Correspondence code
@RECEIPTTYPECODE int IN Receipt type
@SENDMAIL bit IN Send mail
@DELIVERYMETHODCODE tinyint IN Send by
@CONTACTTYPES xml IN Send to contact(s)
@ADDRESSID uniqueidentifier IN Selected address
@EMAILADDRESSID uniqueidentifier IN Selected address
@USESEASONALADDRESS bit IN Send to seasonal address when valid
@COMMENTS nvarchar(500) IN Comments
@GROUPCONTACTS xml IN
@PURPOSEID uniqueidentifier IN Fundraising Purpose
@DONOTSENDOTHERCHANNEL bit IN
@ISNOPREFERENCE bit IN
@LINKEDCONSTITUENTSOLICITCODEID uniqueidentifier IN
@HASINHERITEDCONSENT bit IN
@SOURCEEVIDENCECODEID uniqueidentifier IN
@SOURCEFILE nvarchar(260) IN
@PRIVACYPOLICY nvarchar(260) IN
@SUPPORTINGINFORMATION nvarchar(max) IN
@CONSENTSTATEMENT nvarchar(max) IN

Definition

Copy


          CREATE procedure dbo.USP_DATAFORM_ADD_MAILPREFERENCE
          (
            @ID uniqueidentifier = null output,
            @CHANGEAGENTID uniqueidentifier = null,
            @CONSTITUENTID uniqueidentifier,
            @MAILTYPECODE tinyint = null,
            @ACKNOWLEDGEMENTID uniqueidentifier = null,
            @CORRESPONDENCEID uniqueidentifier = null,
            @PLEDGEREMINDERID uniqueidentifier = null,
            @BUSINESSUNITCODEID uniqueidentifier = null,
            @CATEGORYCODEID uniqueidentifier = null,
            @EVENTCATEGORYCODEID uniqueidentifier = null,
            @SITEID uniqueidentifier = null,
            @CORRESPONDENCECODEID uniqueidentifier = null,
            @RECEIPTTYPECODE int = 0,
            @SENDMAIL bit = 1,
            @DELIVERYMETHODCODE tinyint = 0,
            @CONTACTTYPES xml = null,
            @ADDRESSID uniqueidentifier = null,
            @EMAILADDRESSID uniqueidentifier = null,
            @USESEASONALADDRESS bit = 1,
            @COMMENTS nvarchar(500) = '',
            @GROUPCONTACTS xml = null,
            @PURPOSEID uniqueidentifier = null,
            @DONOTSENDOTHERCHANNEL bit = 0,
            @ISNOPREFERENCE bit = 0,
            @LINKEDCONSTITUENTSOLICITCODEID uniqueidentifier = null,
            @HASINHERITEDCONSENT bit = 0,
            @SOURCEEVIDENCECODEID uniqueidentifier = null,
            @SOURCEFILE nvarchar(260) = '',
            @PRIVACYPOLICY nvarchar(260) = '',
            @SUPPORTINGINFORMATION nvarchar(max) = '',
            @CONSENTSTATEMENT nvarchar(max) = ''
          )
          as
            set nocount on;

            if @ISNOPREFERENCE = 1
              return;

            declare @CURRENTDATE datetime;

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

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

            set @CURRENTDATE = getdate();    

            -- Note to future developers, please don't copy this pattern of using 00000000-0000-0000-0000-000000000001. There are better ways to do this, but since we want to minimize code churn, this implementation is still in place.

            declare @USEPRIMARYADDRESS bit
            if @ADDRESSID='00000000-0000-0000-0000-000000000001'
            begin
              set @USEPRIMARYADDRESS = 1;
              set @ADDRESSID = null;
            end
            else
            begin
              set @USEPRIMARYADDRESS = 0;
            end

            -- Note to future developers, please don't copy this pattern of using 00000000-0000-0000-0000-000000000001. There are better ways to do this, but since we want to minimize code churn, this implementation is still in place.

            declare @USEPRIMARYEMAIL bit
            if @EMAILADDRESSID='00000000-0000-0000-0000-000000000001'
            begin
              set @USEPRIMARYEMAIL = 1;
              set @EMAILADDRESSID = null;
            end
            else
            begin
              set @USEPRIMARYEMAIL = 0;
            end

            begin try
              --JamesWill WI144637 2011-04-07 Don't try to set site unless the preference type supports it

              if not @MAILTYPECODE in (1,2)
                set @SITEID = null;

              insert into dbo.MAILPREFERENCE
              (
                ID,
                CONSTITUENTID,
                MAILTYPECODE,
                ACKNOWLEDGEMENTID,
                CORRESPONDENCEID,
                PLEDGEREMINDERID,
                BUSINESSUNITCODEID,
                CATEGORYCODEID,
                EVENTCATEGORYCODEID,
                SITEID,
                CORRESPONDENCECODEID,
                RECEIPTTYPECODE,
                SENDMAIL,
                DELIVERYMETHODCODE,
                ADDRESSID,
                EMAILADDRESSID,
                USESEASONALADDRESS,
                USEPRIMARYADDRESS,
                USEPRIMARYEMAIL,
                COMMENTS,
                PURPOSEID,
                DONOTSENDOTHERCHANNEL,
                CONSTITUENTSOLICITCODEID,
                HASINHERITEDCONSENT,
                SOURCECODEID,
                SOURCEFILEPATH,
                PRIVACYPOLICYFILEPATH,
                SUPPORTINGINFORMATION,
                CONSENTSTATEMENT,
                ADDEDBYID,
                CHANGEDBYID,
                DATEADDED,
                DATECHANGED
              )
              values
              (
                @ID,
                @CONSTITUENTID,
                @MAILTYPECODE,
                @ACKNOWLEDGEMENTID,
                @CORRESPONDENCEID,
                @PLEDGEREMINDERID,
                @BUSINESSUNITCODEID,
                @CATEGORYCODEID,
                @EVENTCATEGORYCODEID,
                @SITEID,
                @CORRESPONDENCECODEID,
                @RECEIPTTYPECODE,
                @SENDMAIL,
                @DELIVERYMETHODCODE,
                @ADDRESSID,
                @EMAILADDRESSID,
                @USESEASONALADDRESS,
                @USEPRIMARYADDRESS,
                @USEPRIMARYEMAIL,
                @COMMENTS,
                @PURPOSEID,
                @DONOTSENDOTHERCHANNEL,
                @LINKEDCONSTITUENTSOLICITCODEID,
                @HASINHERITEDCONSENT,
                @SOURCEEVIDENCECODEID,
                @SOURCEFILE,
                @PRIVACYPOLICY,
                @SUPPORTINGINFORMATION,
                @CONSENTSTATEMENT,
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE
              );

              exec dbo.USP_MAILPREFERENCE_GETCONTACTTYPES_ADDFROMXML @ID, @CONTACTTYPES, @CHANGEAGENTID, @CURRENTDATE;
              exec dbo.USP_MAILPREFERENCE_GETGROUPCONTACTS_ADDFROMXML @ID, @GROUPCONTACTS, @CHANGEAGENTID, @CURRENTDATE;
            end try
            begin catch
              exec dbo.USP_RAISE_ERROR;
              return 1;
            end catch

            return 0;