USP_DATAFORMTEMPLATE_EDITSAVE_CONSTITUENTRECOGNITIONBENEFIT
The save procedure used by the edit dataform template "Constituent Recognition Benefits 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. |
@BENEFITS | xml | IN | Benefits |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_CONSTITUENTRECOGNITIONBENEFIT
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@BENEFITS xml
) as
set nocount on;
begin try
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@BASECURRENCYID = CR.BASECURRENCYID,
@ORGANIZATIONEXCHANGERATEID = CR.ORGANIZATIONEXCHANGERATEID
from
dbo.CONSTITUENTRECOGNITION CR
where
CR.ID = @ID;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @OLDBENEFITS xml
declare @CONSTITUENTID uniqueidentifier
select
@OLDBENEFITS = dbo.UFN_CONSTITUENTRECOGNITION_GETBENEFITS_TOITEMLISTXML(@ID),
@CONSTITUENTID = CR.CONSTITUENTID
from dbo.CONSTITUENTRECOGNITION CR
where CR.ID = @ID
insert into dbo.BENEFITCONSTITUENTDECLINED
(
BENEFITID,
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
T.c.value('(BENEFITID)[1]','uniqueidentifier') as BENEFITID,
@CONSTITUENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @OLDBENEFITS.nodes('/BENEFITS/ITEM') T(c)
where
-- Benefit has been deleted
T.c.value('(BENEFITID)[1]','uniqueidentifier') not in
(
select
T.benefits.value('(BENEFITID)[1]','uniqueidentifier')
from @BENEFITS.nodes('/BENEFITS/ITEM') T(benefits)
)
and
-- Record does not already exist
T.c.value('(BENEFITID)[1]','uniqueidentifier') not in
(
select BCD.BENEFITID
from dbo.BENEFITCONSTITUENTDECLINED BCD
where BCD.CONSTITUENTID = @CONSTITUENTID
)
-- If benefit is added constituent is no longer declining it
delete from dbo.BENEFITCONSTITUENTDECLINED
where
CONSTITUENTID = @CONSTITUENTID
and BENEFITID in
(
select T.c.value('(BENEFITID)[1]','uniqueidentifier')
from @BENEFITS.nodes('/BENEFITS/ITEM') T(c)
)
and BENEFITID not in
(
select T.c.value('(BENEFITID)[1]','uniqueidentifier')
from @OLDBENEFITS.nodes('/BENEFITS/ITEM') T(c)
)
set @BENEFITS = dbo.UFN_CONSTITUENTRECOGNITIONBENEFITS_CONVERTAMOUNTSINXML(@BENEFITS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID, @CURRENTDATE);
exec dbo.USP_CONSTITUENTRECOGNITION_GETBENEFITS_2_UPDATEFROMXML @ID, @BENEFITS, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;