USP_DATAFORMTEMPLATE_EDIT_REMOVESPOUSE
The save procedure used by the edit dataform template "Constituent Spouse Remove 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. |
@REMOVEDATE | date | IN | End date |
@DISSOLVEREASONCODEID | uniqueidentifier | IN | Reason |
@DISSOLVE | bit | IN | Dissolve household? |
@RELATIONSHIPTYPECODEID | uniqueidentifier | IN | Relationship type |
@RECIPROCALTYPECODEID | uniqueidentifier | IN | Reciprocal relationship type |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REMOVESPOUSE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@REMOVEDATE date,
@DISSOLVEREASONCODEID uniqueidentifier,
@DISSOLVE bit,
@RELATIONSHIPTYPECODEID uniqueidentifier,
@RECIPROCALTYPECODEID uniqueidentifier
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @REMOVEDATE > getdate()
begin
raiserror ('ERR_REMOVEDATE_CANNOT_BE_IN_FUTURE',13,1);
return 1;
end
declare @SPOUSEID uniqueidentifier;
set @SPOUSEID = null;
--Update spouse relationship
begin try
update
dbo.RELATIONSHIP
set
@SPOUSEID = RECIPROCALCONSTITUENTID,
ISSPOUSE = 0,
ENDDATE = @REMOVEDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE,
RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID
from
dbo.RELATIONSHIP
where
RELATIONSHIPCONSTITUENTID = @ID
and ISSPOUSE = 1;
exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID = @ID, @RECIPROCALCONSTITUENTID = @SPOUSEID,
@ENDDATE = @REMOVEDATE, @CHANGEAGENTID = @CHANGEAGENTID;
declare @HOUSEHOLDID uniqueidentifier;
set @HOUSEHOLDID = null;
--Get household
select top(1)
@HOUSEHOLDID = GM.GROUPID
from
dbo.GROUPMEMBER as GM
inner join dbo.GROUPDATA as GD on GD.ID = GM.GROUPID
where
GM.MEMBERID = @ID
and dbo.UFN_GROUPMEMBER_ISCURRENTMEMBER(GM.ID) = 1
and GD.GROUPTYPECODE = 0;
if @DISSOLVE = 1
begin
set @DISSOLVE = 0;
if not @HOUSEHOLDID is null
begin
set @DISSOLVE = 1;
--Check that the household isn't already dissolved
select
@DISSOLVE = 0
from
dbo.DISSOLVEDGROUP
where
ID = @HOUSEHOLDID;
--If the household is not dissolved check that the constituent
--and spouse are in the household and that the constituent or spouse is the primary member
declare @CONSTITSPOUSEHOUSEHOLD tinyint;
set @CONSTITSPOUSEHOUSEHOLD = 0;
declare @CONSTITSPOUSEISPRIMARY tinyint;
set @CONSTITSPOUSEISPRIMARY = 0;
if @DISSOLVE = 1
select
@CONSTITSPOUSEHOUSEHOLD = count(GROUPMEMBER.ID),
@CONSTITSPOUSEISPRIMARY = count(distinct ISPRIMARY)
from
dbo.GROUPMEMBER
inner join
dbo.GROUPMEMBERDATERANGE
on
GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
where
GROUPID = @HOUSEHOLDID
and GROUPMEMBERDATERANGE.DATETO is null
and (MEMBERID = @ID
or MEMBERID = @SPOUSEID);
set @DISSOLVE = 0;
if @CONSTITSPOUSEHOUSEHOLD = 2
if @CONSTITSPOUSEISPRIMARY = 2
set @DISSOLVE = 1;
end
if @DISSOLVE = 1
begin
insert into dbo.DISSOLVEDGROUP
(
ID,
DISSOLVEDDATE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
DISSOLVEREASONCODEID
)
values
(
@HOUSEHOLDID,
@REMOVEDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@DISSOLVEREASONCODEID
);
exec dbo.USP_GROUP_DISSOLVE @HOUSEHOLDID, @REMOVEDATE, @CHANGEAGENTID
end
end
-- Update Household name
update
dbo.[CONSTITUENT]
set
[KEYNAME] = left(dbo.UFN_NAMEFORMAT_FROMID(dbo.GROUPDATA.NAMEFORMATFUNCTIONID, PM.MEMBERID), 100),
[DATECHANGED] = @CURRENTDATE,
[CHANGEDBYID] = @CHANGEAGENTID
from dbo.GROUPDATA
inner join dbo.GROUPMEMBER PM on dbo.GROUPDATA.ID = PM.GROUPID and PM.ISPRIMARY <>0
where
[GROUPDATA].ID = @HOUSEHOLDID and [CONSTITUENT].ID = @HOUSEHOLDID
and dbo.GROUPDATA.NAMEFORMATFUNCTIONID is not null;
exec dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE
@ID,
@SPOUSEID,
@RELATIONSHIPTYPECODEID,
@RECIPROCALTYPECODEID,
@CHANGEAGENTID,
@CURRENTDATE
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;