USP_DATAFORMTEMPLATE_ADD_PROSPECTRESEARCHREQUESTCONSTITUENT
The save procedure used by the add dataform template "Prospect Research Request Constituent Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CONTEXTID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@RECORDTYPECODE | tinyint | IN | Record type |
@STATUSCODE | tinyint | IN | Status |
@CONSTITUENTS | xml | IN | Prospects to add |
@CONSTITUENTNAMES | xml | IN | Prospects to add |
@PROSPECTRESEARCHREQUESTPRIORITYCODEID | uniqueidentifier | IN | Priority |
@DUEDATE | date | IN | Due date |
@PROSPECTRESEARCHREQUESTTYPECODEID | uniqueidentifier | IN | Research type |
@PROSPECTRESEARCHREQUESTREASONCODEID | uniqueidentifier | IN | Request reason |
@NOTES | nvarchar(max) | IN | Notes |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PROSPECTRESEARCHREQUESTCONSTITUENT
(
@ID uniqueidentifier = null output,
@CONTEXTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@RECORDTYPECODE tinyint = null,
@STATUSCODE tinyint = null,
@CONSTITUENTS xml = null,
@CONSTITUENTNAMES xml = null,
@PROSPECTRESEARCHREQUESTPRIORITYCODEID uniqueidentifier = null,
@DUEDATE date = null,
@PROSPECTRESEARCHREQUESTTYPECODEID uniqueidentifier = null,
@PROSPECTRESEARCHREQUESTREASONCODEID uniqueidentifier = null,
@NOTES nvarchar(max) = null,
@CURRENTAPPUSERID uniqueidentifier
)
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()
declare @REQUESTNO int
select @REQUESTNO = REQUESTNO from dbo.PROSPECTRESEARCHREQUEST PRR where PRR.ID = @CONTEXTID
declare @CURRENTCOUNT int
select @CURRENTCOUNT = count(PRRC.ID) from dbo.PROSPECTRESEARCHREQUESTCONSTITUENT PRRC where PRRC.PROSPECTRESEARCHREQUESTID = @CONTEXTID
set @STATUSCODE = 1
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_PROSPECTRESEARCHREQUESTCONSTITUENT_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_PROSPECTRESEARCHREQUESTCONSTITUENT_NOCONSTITUENTS', 13, 1);
return 1;
end
declare @CONSTITUENTSTOADD table (
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier
);
if @RECORDTYPECODE = 0 or @RECORDTYPECODE = 3
insert into @CONSTITUENTSTOADD (
ID,
CONSTITUENTID
)
select
ID,
CONSTITUENTID
from
dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTS_FROMITEMLISTXML(@CONSTITUENTS)
where
coalesce(CONSTITUENTID, '00000000-0000-0000-0000-000000000000') <> '00000000-0000-0000-0000-000000000000';
else
insert into @CONSTITUENTSTOADD (
ID,
CONSTITUENTID
)
select
ID,
CONSTITUENTID
from
dbo.UFN_PROSPECTRESEARCHREQUEST_GETCONSTITUENTNAMES_FROMITEMLISTXML(@CONSTITUENTNAMES)
where
coalesce(CONSTITUENTID, '00000000-0000-0000-0000-000000000000') <> '00000000-0000-0000-0000-000000000000';
insert into dbo.PROSPECTRESEARCHREQUESTCONSTITUENT
(ID, PROSPECTRESEARCHREQUESTID,
REQUESTNO, CONSTITUENTID, STATUSCODE, PROSPECTRESEARCHREQUESTPRIORITYCODEID, DUEDATE,
PROSPECTRESEARCHREQUESTTYPECODEID, PROSPECTRESEARCHREQUESTREASONCODEID, NOTES,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
ID, @CONTEXTID,
coalesce(convert(varchar, @REQUESTNO) + '-' + convert(varchar, row_number() over(order by CONSTITUENTID) + @CURRENTCOUNT), ''),
CONSTITUENTID, @STATUSCODE, @PROSPECTRESEARCHREQUESTPRIORITYCODEID, @DUEDATE,
@PROSPECTRESEARCHREQUESTTYPECODEID, @PROSPECTRESEARCHREQUESTREASONCODEID, @NOTES,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from
@CONSTITUENTSTOADD;
--Send alert for each constituent request added
declare @PROSPECTRESEARCHREQUESTCONSTITUENTID uniqueidentifier;
declare PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR cursor local fast_forward for
select
ID
from
@CONSTITUENTSTOADD;
open PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR;
fetch next from PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR into @PROSPECTRESEARCHREQUESTCONSTITUENTID;
while @@FETCH_STATUS = 0 begin
exec dbo.USP_PROSPECTRESEARCHREQUESTCONSTITUENT_CREATEDALERT_SEND @CURRENTAPPUSERID, @PROSPECTRESEARCHREQUESTCONSTITUENTID;
exec dbo.USP_PROSPECTRESEARCHREQUESTCONSTITUENT_UNASSIGNEDPENDINGALERT_SEND @CURRENTAPPUSERID, @PROSPECTRESEARCHREQUESTCONSTITUENTID;
fetch next from PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR into @PROSPECTRESEARCHREQUESTCONSTITUENTID;
end
close PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR;
deallocate PROSPECTRESEARCHREQUESTCONSTITUENTCURSOR;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0