USP_DATAFORMTEMPLATE_EDIT_PROSPECTRESEARCHREQUESTCONSTITUENTCOMPLETE
The save procedure used by the edit dataform template "Prospect Research Request Constituent Complete Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@TIMESPENT | decimal(18, 2) | IN | Total research hours |
@SOURCES | xml | IN | Sources used |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PROSPECTRESEARCHREQUESTCONSTITUENTCOMPLETE (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@TIMESPENT decimal(18, 2),
@SOURCES xml,
@CURRENTAPPUSERID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
declare @CONSTITUENTID uniqueidentifier
select @CONSTITUENTID = CONSTITUENTID from dbo.APPUSER where ID = @CURRENTAPPUSERID
if coalesce((select ASSIGNEDTOID from dbo.PROSPECTRESEARCHREQUESTCONSTITUENT where ID = @ID), '00000000-0000-0000-0000-000000000000') <> @CONSTITUENTID begin
raiserror('BBERR_PROSPECTRESEARCHREQUESTCONSTITUENT_NOTASSIGNEE', 13, 1);
return 1;
end
if (select STATUSCODE from dbo.PROSPECTRESEARCHREQUESTCONSTITUENT where ID = @ID) <> 3 begin
raiserror('BBERR_PROSPECTRESEARCHREQUESTCONSTITUENT_BADCOMPLETESTATE', 13, 1);
return 1;
end
-- handle updating the data
update
dbo.PROSPECTRESEARCHREQUESTCONSTITUENT
set
TIMESPENT = @TIMESPENT,
STATUSCODE = 4,
DATECOMPLETED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
update PRRS
set
PRRS.TIME = coalesce(PRRCS.TIME, -1),
PRRS.USES = coalesce(PRRCS.USES, -1),
PRRS.COST = coalesce(PRRCS.COST, -1),
PRRS.CHANGEDBYID = @CHANGEAGENTID,
PRRS.DATECHANGED = @CURRENTDATE
from
dbo.UFN_PROSPECTRESEARCHREQUESTCONSTITUENT_GETSOURCES_FROMITEMLISTXML(@SOURCES) PRRCS
join
dbo.PROSPECTRESEARCHREQUESTSOURCE PRRS on PRRS.PROSPECTRESEARCHREQUESTCONSTITUENTID = @ID and PRRS.PROSPECTRESEARCHREQUESTSOURCECODEID = PRRCS.PROSPECTRESEARCHREQUESTSOURCECODEID
insert into dbo.PROSPECTRESEARCHREQUESTSOURCE
(
PROSPECTRESEARCHREQUESTCONSTITUENTID,
PROSPECTRESEARCHREQUESTSOURCECODEID,
TIME, USES, COST,
CHANGEDBYID, ADDEDBYID, DATECHANGED, DATEADDED
)
select
@ID,
PRRCS.PROSPECTRESEARCHREQUESTSOURCECODEID,
coalesce(PRRCS.TIME, -1),
coalesce(PRRCS.USES, -1),
coalesce(PRRCS.COST, -1),
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from
dbo.UFN_PROSPECTRESEARCHREQUESTCONSTITUENT_GETSOURCES_FROMITEMLISTXML(@SOURCES) PRRCS
where
not exists(select ID from PROSPECTRESEARCHREQUESTSOURCE where PROSPECTRESEARCHREQUESTSOURCECODEID = PRRCS.PROSPECTRESEARCHREQUESTSOURCECODEID and PROSPECTRESEARCHREQUESTCONSTITUENTID = @ID)
declare @PROSPECTRESEARCHREQUESTID uniqueidentifier
select @PROSPECTRESEARCHREQUESTID = PROSPECTRESEARCHREQUESTID from dbo.PROSPECTRESEARCHREQUESTCONSTITUENT where ID = @ID
--set parent request to complete if this is the last child completed
update
dbo.PROSPECTRESEARCHREQUEST
set
STATUSCODE = 4,
ASSIGNEDTOID = coalesce(ASSIGNEDTOID, @CONSTITUENTID), --JamesWill WI135116 2011-05-31 If the newly closed request doesn't have a researcher, set the researcher to the closer
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @PROSPECTRESEARCHREQUESTID
and not exists(select 1 from dbo.PROSPECTRESEARCHREQUESTCONSTITUENT where PROSPECTRESEARCHREQUESTID = @PROSPECTRESEARCHREQUESTID and STATUSCODE in (0, 1, 2, 3, 5))
exec dbo.USP_PROSPECTRESEARCHREQUESTCONSTITUENT_COMPLETEDALERT_SEND @CURRENTAPPUSERID, @ID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;