USP_DATAFORMTEMPLATE_ADD_PROSPECTRESEARCHREQUEST

The save procedure used by the add dataform template "Prospect Research Request 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.
@STATUSCODE tinyint IN Status
@RECORDTYPECODE tinyint IN Record type
@CONSTITUENTS xml IN Prospects to research
@CONSTITUENTNAMES xml IN Prospects to research
@EVENTID uniqueidentifier IN Event to include in request
@RESEARCHGROUPID uniqueidentifier IN Research group to include in request
@PROSPECTRESEARCHREQUESTPRIORITYCODEID uniqueidentifier IN Priority
@DUEDATE date IN Due date
@PROSPECTRESEARCHREQUESTTYPECODEID uniqueidentifier IN Research type
@PROSPECTRESEARCHREQUESTREASONCODEID uniqueidentifier IN Request reason
@REQUESTEDBYID uniqueidentifier IN Requested by
@SUBMITTEDBYID uniqueidentifier IN Submitted by
@NOTES nvarchar(max) IN Notes
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SITES xml IN Sites
@APPUSERGRANTEDRESEARCHGROUPS bit IN
@APPUSERGRANTEDEVENTS bit IN

Definition

Copy


          CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PROSPECTRESEARCHREQUEST
          (
            @ID uniqueidentifier = null output,
            @CHANGEAGENTID uniqueidentifier,
            @STATUSCODE tinyint = 0,
            @RECORDTYPECODE tinyint = 0,
            @CONSTITUENTS xml = null,
            @CONSTITUENTNAMES xml = null,
            @EVENTID uniqueidentifier = null,
            @RESEARCHGROUPID uniqueidentifier = null,
            @PROSPECTRESEARCHREQUESTPRIORITYCODEID uniqueidentifier = null,
            @DUEDATE date = null,
            @PROSPECTRESEARCHREQUESTTYPECODEID uniqueidentifier = null,
            @PROSPECTRESEARCHREQUESTREASONCODEID uniqueidentifier = null,
            @REQUESTEDBYID uniqueidentifier = null,
            @SUBMITTEDBYID uniqueidentifier = null,
            @NOTES nvarchar(max) = null,
            @CURRENTAPPUSERID uniqueidentifier,
            @SITES xml = null,
            @APPUSERGRANTEDRESEARCHGROUPS bit = null,
            @APPUSERGRANTEDEVENTS bit = null
          )
          as

          set nocount on;

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

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

          declare @CURRENTDATE datetime;
          set @CURRENTDATE = getdate();

          set @STATUSCODE = 1;

          declare @REQUESTNO int;

          update dbo.PROSPECTRESEARCHREQUESTCONFIGURATION
          set REQUESTNO = REQUESTNO + 1;

          select @REQUESTNO = REQUESTNO from dbo.PROSPECTRESEARCHREQUESTCONFIGURATION;
          if @REQUESTNO is null
          begin
            insert into dbo.PROSPECTRESEARCHREQUESTCONFIGURATION
            (REQUESTNO, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
            values
            (1, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID);

            set @REQUESTNO = 1;
          end

          begin try
            if coalesce((select count(distinct CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)), 0)
               <> coalesce((select count(CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)), 0) or
               coalesce((select count(distinct CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES)), 0)
               <> coalesce((select count(CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES)), 0)
            begin
              raiserror('BBERR_PROSPECTRESEARCHREQUEST_DUPLICATECONSTITUENTS', 13, 1);
              return 1;
            end
            else if (select count(CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)) = 0 and 
              (select count(CONSTITUENTID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES)) = 0 begin
              raiserror('BBERR_PROSPECTRESEARCHREQUEST_NOCONSTITUENTS', 13, 1);
              return 1;
            end

            exec dbo.USP_PROSPECTRESEARCHREQUEST_VALIDATESITES @SITES, @CURRENTAPPUSERID, '7a968ff9-8e1b-483c-af13-2f55dcb14e50', 1, 0, @REQUESTEDBYID, @SUBMITTEDBYID;

            if (select count(ID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)) < 501 and (select count(ID) from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES)) < 501
            begin
              insert into dbo.PROSPECTRESEARCHREQUEST
                (ID, 
                STATUSCODE, RECORDTYPECODE, EVENTID, RESEARCHGROUPID, PROSPECTRESEARCHREQUESTPRIORITYCODEID, 
                DUEDATE, PROSPECTRESEARCHREQUESTTYPECODEID, PROSPECTRESEARCHREQUESTREASONCODEID, REQUESTEDBYID, 
                SUBMITTEDBYID, NOTES, REQUESTNO, 
                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
              values
                (@ID
                @STATUSCODE, @RECORDTYPECODE, @EVENTID, @RESEARCHGROUPID, @PROSPECTRESEARCHREQUESTPRIORITYCODEID
                @DUEDATE, @PROSPECTRESEARCHREQUESTTYPECODEID, @PROSPECTRESEARCHREQUESTREASONCODEID, @REQUESTEDBYID
                @SUBMITTEDBYID, @NOTES, @REQUESTNO
                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

              if not @SITES is null
              begin
                exec dbo.USP_PROSPECTRESEARCHREQUEST_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
              end

              if @RECORDTYPECODE = 0 or @RECORDTYPECODE = 3
                insert into dbo.PROSPECTRESEARCHREQUESTCONSTITUENT
                  (PROSPECTRESEARCHREQUESTID, 
                  REQUESTNO, CONSTITUENTID, STATUSCODE, PROSPECTRESEARCHREQUESTPRIORITYCODEID, DUEDATE, 
                  PROSPECTRESEARCHREQUESTTYPECODEID, PROSPECTRESEARCHREQUESTREASONCODEID, NOTES, 
                  ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                select
                  @ID
                  convert(varchar, @REQUESTNO) + '-' + convert(varchar, row_number() over(order by CONSTITUENTID)), 
                  CONSTITUENTID, @STATUSCODE, @PROSPECTRESEARCHREQUESTPRIORITYCODEID, @DUEDATE
                  @PROSPECTRESEARCHREQUESTTYPECODEID, @PROSPECTRESEARCHREQUESTREASONCODEID, @NOTES
                  @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                from dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)
                where coalesce(CONSTITUENTID, '00000000-0000-0000-0000-000000000000') <> '00000000-0000-0000-0000-000000000000';
              else
                insert into dbo.PROSPECTRESEARCHREQUESTCONSTITUENT
                  (PROSPECTRESEARCHREQUESTID, 
                  REQUESTNO, CONSTITUENTID, STATUSCODE, PROSPECTRESEARCHREQUESTPRIORITYCODEID, DUEDATE, 
                  PROSPECTRESEARCHREQUESTTYPECODEID, PROSPECTRESEARCHREQUESTREASONCODEID, NOTES, 
                  ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                select
                  @ID
                  convert(varchar, @REQUESTNO) + '-' + convert(varchar, row_number() over(order by CONSTITUENTID)), 
                  CONSTITUENTID, @STATUSCODE, @PROSPECTRESEARCHREQUESTPRIORITYCODEID, @DUEDATE
                  @PROSPECTRESEARCHREQUESTTYPECODEID, @PROSPECTRESEARCHREQUESTREASONCODEID, @NOTES
                  @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                from
                  dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES);

              exec dbo.USP_PROSPECTRESEARCHREQUEST_CREATEDALERT_SEND @CURRENTAPPUSERID, @ID;
              exec dbo.USP_PROSPECTRESEARCHREQUEST_UNASSIGNEDPENDINGALERT_SEND @CURRENTAPPUSERID, @ID;
            end
            else begin
              raiserror('There may only be 500 prospects per request.', 13, 1);
              return 1;
            end

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

          return 0;