USP_DATAFORMTEMPLATE_ADD_ORGANIZATIONHIERARCHYPOSITIONFUNDRAISERADD
The save procedure used by the add dataform template "Organization Hierarchy Position Fundraiser Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@ORGANIZATIONPOSITIONID | 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. |
@CURRENTPOSITIONHOLDERID | uniqueidentifier | IN | CURRENTPOSITIONHOLDERID |
@CONSTITUENTID | uniqueidentifier | IN | Replace with |
@CURRENTDATETO | datetime | IN | End date |
@DATEFROM | datetime | IN | Start date |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ORGANIZATIONHIERARCHYPOSITIONFUNDRAISERADD
(
@ID uniqueidentifier output,
@ORGANIZATIONPOSITIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTPOSITIONHOLDERID uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@CURRENTDATETO datetime = null,
@DATEFROM datetime = null
)
as
begin
set nocount on;
declare @CURRENTDATE datetime;
declare @CURRENTDATEFROM datetime;
begin try
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
select
@CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate()),
@CURRENTDATETO = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATETO),
@DATEFROM = dbo.UFN_DATE_GETEARLIESTTIME(@DATEFROM)
if @CURRENTDATETO >= @CURRENTDATE
raiserror('ENDDATEMUSTBEBEFORETODAY', 13, 1)
if @DATEFROM > @CURRENTDATE
raiserror('FUTURESTARTDATE', 13, 1)
--Two vacancies are not allowed.
if @CONSTITUENTID is null
set @DATEFROM = dateadd(d, 1, @CURRENTDATETO)
if not (@CURRENTPOSITIONHOLDERID is null )
begin
select @CURRENTDATEFROM = DATEFROM
from dbo.ORGANIZATIONPOSITIONHOLDER
where ORGANIZATIONPOSITIONHOLDER.ID = @CURRENTPOSITIONHOLDERID;
--The current fundraiser can not end before it has started
if @CURRENTDATETO <= @CURRENTDATEFROM
raiserror('ENDDATEMUSTBEBEFORESTARTEDATE', 13, 1)
--The current fundraiser can not start before the previous
if @DATEFROM <= @CURRENTDATETO
raiserror('STARTDATE_PRECEDES_PREVIOUS', 13, 1)
update dbo.ORGANIZATIONPOSITIONHOLDER
set DATETO = @CURRENTDATETO,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @CURRENTPOSITIONHOLDERID;
--Add vacancy if necessary
if @DATEFROM > dateadd(d, 1, @CURRENTDATETO)
begin
insert into dbo.ORGANIZATIONPOSITIONHOLDER(ID, POSITIONID, CONSTITUENTID, DATEFROM, DATETO, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @ORGANIZATIONPOSITIONID, null, dateadd(d, 1, @CURRENTDATETO), dateadd(d, -1, @DATEFROM), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end
insert into dbo.ORGANIZATIONPOSITIONHOLDER(ID, POSITIONID, CONSTITUENTID, DATEFROM, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @ORGANIZATIONPOSITIONID, @CONSTITUENTID, @DATEFROM, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end