USP_DATAFORMTEMPLATE_ADD_CONSTITUENTRECOGNITIONHISTORY
The save procedure used by the add dataform template "Constituent Recognition History Add Data 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. |
@CONSTITUENTRECOGNITIONID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@RECOGNITIONLEVELID | uniqueidentifier | IN | Recognition level |
@DATEACHIEVED | datetime | IN | Date achieved |
@COMMENTS | nvarchar(1000) | IN | Comments |
@ISANONYMOUS | bit | IN | Anonymous |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_CONSTITUENTRECOGNITIONHISTORY
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@CONSTITUENTRECOGNITIONID uniqueidentifier,
@RECOGNITIONLEVELID uniqueidentifier = null,
@DATEACHIEVED datetime = null,
@COMMENTS nvarchar(1000) = null,
@ISANONYMOUS bit = 0
)
as
set nocount on;
begin try
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 @RECOGNITIONPROGRAMID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @EXPIRATIONDATE datetime;
select
@RECOGNITIONPROGRAMID = CR.RECOGNITIONPROGRAMID,
@CONSTITUENTID = CR.CONSTITUENTID,
@EXPIRATIONDATE =
case
when RP.TYPECODE = 1 then
null
else
case
when RP.EXPIRESONCODE = 0 then
dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATEACHIEVED,1)
when RP.EXPIRESONCODE = 1 then
dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@DATEACHIEVED,1)
end
end
from dbo.CONSTITUENTRECOGNITION CR
inner join dbo.RECOGNITIONPROGRAM RP on CR.RECOGNITIONPROGRAMID = RP.ID
where CR.ID = @CONSTITUENTRECOGNITIONID;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
select
@BASECURRENCYID = RP.BASECURRENCYID
from dbo.RECOGNITIONPROGRAM RP where ID = @RECOGNITIONPROGRAMID;
--If the program level is in the declined levels list, throw error.
declare @DENIEDID uniqueidentifier = (select ID from dbo.CONSTITUENTRECOGNITIONDECLINEDLEVEL where CONSTITUENTID = @CONSTITUENTID and RECOGNITIONLEVELID = @RECOGNITIONLEVELID and RECOGNITIONPROGRAMID = @RECOGNITIONPROGRAMID)
if @DENIEDID is not null
begin
raiserror('BBERR_RECOGNITIONLEVELISDECLINED',13,1)
end
insert into dbo.CONSTITUENTRECOGNITION
(ID,
RECOGNITIONPROGRAMID,
RECOGNITIONLEVELID,
JOINDATE,
COMMENTS,
CONSTITUENTID,
EXPIRATIONDATE,
ISANONYMOUS,
BASECURRENCYID,
DATEADDED,
DATECHANGED,
ADDEDBYID,
CHANGEDBYID)
values
(@ID,
@RECOGNITIONPROGRAMID,
@RECOGNITIONLEVELID,
@DATEACHIEVED,
@COMMENTS,
@CONSTITUENTID,
@EXPIRATIONDATE,
@ISANONYMOUS,
@BASECURRENCYID,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID)
-- Add the benefits associated with the new level
insert into dbo.CONSTITUENTRECOGNITIONBENEFIT (
CONSTITUENTRECOGNITIONID,
BENEFITID,
QUANTITY,
UNITVALUE,
ORGANIZATIONUNITVALUE,
ORGANIZATIONEXCHANGERATEID,
DETAILS,
BASECURRENCYID,
SEQUENCE,
DATEADDED,
DATECHANGED,
ADDEDBYID,
CHANGEDBYID
)
select
@ID,
RLB.BENEFITID,
RLB.QUANTITY,
UNITVALUE,
case RLB.BASECURRENCYID
when @ORGANIZATIONCURRENCYID then RLB.UNITVALUE
else dbo.UFN_CURRENCY_CONVERT(RLB.UNITVALUE, dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(RLB.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null))
end ORGANIZATIONUNITVALUE,
case RLB.BASECURRENCYID
when @ORGANIZATIONCURRENCYID then null
else RLB.ORGANIZATIONEXCHANGERATEID
end ORGANIZATIONEXCHANGERATEID,
RLB.DETAILS,
RLB.BASECURRENCYID,
RLB.SEQUENCE,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID
from dbo.RECOGNITIONLEVELBENEFIT RLB
where RECOGNITIONLEVELID = @RECOGNITIONLEVELID and
RLB.BENEFITID not in
(
select BCD.BENEFITID
from dbo.BENEFITCONSTITUENTDECLINED BCD
where BCD.CONSTITUENTID = @CONSTITUENTID
)
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0