USP_RELATIONSHIPCONFIGURATION_CONFIGURE

This procedure configures the relationship type settings for a pair of relationship types.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@RECIPROCALCONSTITUENTID uniqueidentifier IN
@RELATIONSHIPTYPECODEID uniqueidentifier IN
@RECIPROCALTYPECODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_RELATIONSHIPCONFIGURATION_CONFIGURE
            (
                @CONSTITUENTID uniqueidentifier,
                @RECIPROCALCONSTITUENTID uniqueidentifier,
                @RELATIONSHIPTYPECODEID uniqueidentifier,
                @RECIPROCALTYPECODEID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @CURRENTDATE datetime
            )
            as
            begin
                set nocount on;

                if @CHANGEAGENTID is null  
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                begin try
                    --declare configuration settings

                    declare @APPLIESTOINDIVIDUAL bit;
                    declare @APPLIESTOORG bit;
                    declare @APPLIESTOGROUP bit;
                    declare @APPLIESTOSTUDENT bit;
                    declare @RELATESTOINDIVIDUAL bit;
                    declare @RELATESTOORG bit;
                    declare @RELATESTOGROUP bit;
                    declare @RELATESTOSTUDENT bit;

                    --Get relationship constituent type

                    declare @RELATIONSHIPCONSTITUENTTYPE int;
                    select 
                        @RELATIONSHIPCONSTITUENTTYPE = 
                            case ISGROUP 
                                when 1 then 2
                                else 
                                    case ISORGANIZATION 
                                        when 1 then 1
                                        else 0
                                    end
                            end
                    from dbo.CONSTITUENT
                    where ID = @CONSTITUENTID;

                    --Get reciprocal relationship constituent type

                    declare @RECIPRICALCONSTITUENTTYPE int;
                    select 
                        @RECIPRICALCONSTITUENTTYPE = 
                            case ISGROUP 
                                when 1 then 2
                                else 
                                    case ISORGANIZATION 
                                        when 1 then 1
                                        else 0
                                    end
                            end
                    from dbo.CONSTITUENT
                    where ID = @RECIPROCALCONSTITUENTID;

                    --used for readability in conditionals below

                    declare @RELATIONSHIPTYPECONFIGEXISTS bit;
                    declare @RECIPROCALTYPECONFIGEXISTS bit;
                    declare @RELATIONSHIPTYPESMATCH bit;
                    select @RELATIONSHIPTYPECONFIGEXISTS = case when exists( select ID from dbo.RELATIONSHIPCONFIGURATION where ID = @RELATIONSHIPTYPECODEID ) then 1 else 0 end
                    select @RECIPROCALTYPECONFIGEXISTS = case when exists( select ID from dbo.RELATIONSHIPCONFIGURATION where ID = @RECIPROCALTYPECODEID ) then 1 else 0 end
                    select @RELATIONSHIPTYPESMATCH = case when (@RECIPROCALTYPECODEID = @RELATIONSHIPTYPECODEID) then 1 else 0 end


                    --if both match only insert one record else insert to

                    if @RELATIONSHIPTYPESMATCH = 1
                    begin

                        --if both spouse and org relationship types are being set in the calling form and both spouse

                        --and org reciprocal relationship types match, set the 'relates to' bool for both constituent types.

                        select @APPLIESTOINDIVIDUAL = case when @RELATIONSHIPCONSTITUENTTYPE = 0 or @RECIPRICALCONSTITUENTTYPE = 0 then 1 else 0 end
                        select @APPLIESTOORG = case when @RELATIONSHIPCONSTITUENTTYPE = 1 or @RECIPRICALCONSTITUENTTYPE = 1 then 1 else 0 end 
                        select @APPLIESTOGROUP = case when @RELATIONSHIPCONSTITUENTTYPE = 2 or @RECIPRICALCONSTITUENTTYPE = 2 then 1 else 0 end 
                        select @APPLIESTOSTUDENT = case when (dbo.UFN_CONSTITUENT_ISSTUDENT(@CONSTITUENTID) = 1) or (dbo.UFN_CONSTITUENT_ISSTUDENT(@RECIPROCALCONSTITUENTID) = 1) then 1 else 0 end
                        select @RELATESTOINDIVIDUAL = @APPLIESTOINDIVIDUAL
                        select @RELATESTOORG = @APPLIESTOORG
                        select @RELATESTOGROUP = @APPLIESTOGROUP
                        select @RELATESTOSTUDENT = @APPLIESTOSTUDENT

                        if @RELATIONSHIPTYPECONFIGEXISTS = 0
                            --union the two configs

                            insert into dbo.RELATIONSHIPCONFIGURATION
                            (
                                ID,
                                GENDERCODE,
                                APPLIESTOINDIVIDUALS,
                                APPLIESTOORGANIZATIONS,
                                APPLIESTOGROUPS,
                                APPLIESTOSTUDENTS,
                                RELATESTOINDIVIDUALS,
                                RELATESTOORGANIZATIONS,
                                RELATESTOGROUPS,
                                RELATESTOSTUDENTS,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )values(
                                @RELATIONSHIPTYPECODEID,
                                0,
                                @APPLIESTOINDIVIDUAL,
                                @APPLIESTOORG,
                                @APPLIESTOGROUP,
                                @APPLIESTOSTUDENT,
                                @RELATESTOINDIVIDUAL,
                                @RELATESTOORG,
                                @RELATESTOGROUP,
                                @RELATESTOSTUDENT,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            )
                        else
                            update dbo.RELATIONSHIPCONFIGURATION
                            set
                                APPLIESTOINDIVIDUALS = case when @APPLIESTOINDIVIDUAL = 1 then 1 else APPLIESTOINDIVIDUALS end,
                                APPLIESTOORGANIZATIONS = case when @APPLIESTOORG = 1 then 1 else APPLIESTOORGANIZATIONS end,
                                APPLIESTOGROUPS = case when @APPLIESTOGROUP = 1 then 1 else APPLIESTOGROUPS end,
                                APPLIESTOSTUDENTS = case when @APPLIESTOSTUDENT = 1 then 1 else APPLIESTOSTUDENTS end,
                                RELATESTOINDIVIDUALS =  case when @RELATESTOINDIVIDUAL = 1 then 1 else RELATESTOINDIVIDUALS end,
                                RELATESTOORGANIZATIONS = case when @RELATESTOORG = 1 then 1 else RELATESTOORGANIZATIONS end,
                                RELATESTOGROUPS = case when @RELATESTOGROUP = 1 then 1 else RELATESTOGROUPS end,
                                RELATESTOSTUDENTS = case when @RELATESTOSTUDENT = 1 then 1 else RELATESTOSTUDENTS end,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @RELATIONSHIPTYPECODEID

                    end
                    else
                    begin

                        --get config settings

                        select @APPLIESTOINDIVIDUAL = case when @RELATIONSHIPCONSTITUENTTYPE = 0 then 1 else 0 end
                        select @APPLIESTOORG = case when @RELATIONSHIPCONSTITUENTTYPE = 1 then 1 else 0 end 
                        select @APPLIESTOGROUP = case when @RELATIONSHIPCONSTITUENTTYPE = 2 then 1 else 0 end 
                        select @APPLIESTOSTUDENT = case when (dbo.UFN_CONSTITUENT_ISSTUDENT(@CONSTITUENTID) = 1) then 1 else 0 end
                        select @RELATESTOINDIVIDUAL = case when @RECIPRICALCONSTITUENTTYPE = 0 then 1 else 0 end
                        select @RELATESTOORG = case when @RECIPRICALCONSTITUENTTYPE = 1 then 1 else 0 end 
                        select @RELATESTOGROUP = case when @RECIPRICALCONSTITUENTTYPE = 2 then 1 else 0 end 
                        select @RELATESTOSTUDENT = case when (dbo.UFN_CONSTITUENT_ISSTUDENT(@RECIPROCALCONSTITUENTID) = 1) then 1 else 0 end

                        if @RELATIONSHIPTYPECONFIGEXISTS = 0
                            insert into dbo.RELATIONSHIPCONFIGURATION
                            (
                                ID,
                                GENDERCODE,
                                APPLIESTOINDIVIDUALS,
                                APPLIESTOORGANIZATIONS,
                                APPLIESTOGROUPS,
                                APPLIESTOSTUDENTs,
                                RELATESTOINDIVIDUALS,
                                RELATESTOORGANIZATIONS,
                                RELATESTOGROUPS,
                                RELATESTOSTUDENTS,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )values(
                                @RELATIONSHIPTYPECODEID,
                                0,
                                @APPLIESTOINDIVIDUAL,
                                @APPLIESTOORG,
                                @APPLIESTOGROUP,
                                @APPLIESTOSTUDENT,
                                @RELATESTOINDIVIDUAL,
                                @RELATESTOORG,
                                @RELATESTOGROUP,
                                @RELATESTOSTUDENT,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            )
                        else
                            update dbo.RELATIONSHIPCONFIGURATION
                            set
                                APPLIESTOINDIVIDUALS = case when @APPLIESTOINDIVIDUAL = 1 then 1 else APPLIESTOINDIVIDUALS end,
                                APPLIESTOORGANIZATIONS = case when @APPLIESTOORG = 1 then 1 else APPLIESTOORGANIZATIONS end,
                                APPLIESTOGROUPS = case when @APPLIESTOGROUP = 1 then 1 else APPLIESTOGROUPS end,
                                APPLIESTOSTUDENTS = case when @APPLIESTOSTUDENT = 1 then 1 else APPLIESTOSTUDENTS end,
                                RELATESTOINDIVIDUALS =  case when @RELATESTOINDIVIDUAL = 1 then 1 else RELATESTOINDIVIDUALS end,
                                RELATESTOORGANIZATIONS = case when @RELATESTOORG = 1 then 1 else RELATESTOORGANIZATIONS end,
                                RELATESTOGROUPS = case when @RELATESTOGROUP = 1 then 1 else RELATESTOGROUPS end,
                                RELATESTOSTUDENTS = case when @RELATESTOSTUDENT = 1 then 1 else RELATESTOSTUDENTS end,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @RELATIONSHIPTYPECODEID


                        if @RECIPROCALTYPECONFIGEXISTS = 0
                            insert into dbo.RELATIONSHIPCONFIGURATION
                            (
                                ID,
                                GENDERCODE,
                                APPLIESTOINDIVIDUALS,
                                APPLIESTOORGANIZATIONS,
                                APPLIESTOGROUPS,
                                APPLIESTOSTUDENTS,
                                RELATESTOINDIVIDUALS,
                                RELATESTOORGANIZATIONS,
                                RELATESTOGROUPS,
                                RELATESTOSTUDENTS,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )values(
                                @RECIPROCALTYPECODEID,
                                0,
                                @RELATESTOINDIVIDUAL,
                                @RELATESTOORG,
                                @RELATESTOGROUP,
                                @RELATESTOSTUDENT,
                                @APPLIESTOINDIVIDUAL,
                                @APPLIESTOORG,
                                @APPLIESTOGROUP,
                                @APPLIESTOSTUDENT,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            )
                        else
                            update dbo.RELATIONSHIPCONFIGURATION
                            set
                                APPLIESTOINDIVIDUALS =  case when @RELATESTOINDIVIDUAL = 1 then 1 else APPLIESTOINDIVIDUALS end,
                                APPLIESTOORGANIZATIONS = case when @RELATESTOORG = 1 then 1 else APPLIESTOORGANIZATIONS end,
                                APPLIESTOGROUPS = case when @RELATESTOGROUP = 1 then 1 else APPLIESTOGROUPS end,
                                APPLIESTOSTUDENTS = case when @RELATESTOSTUDENT = 1 then 1 else APPLIESTOSTUDENTS end,
                                RELATESTOINDIVIDUALS = case when @APPLIESTOINDIVIDUAL = 1 then 1 else RELATESTOINDIVIDUALS end,
                                RELATESTOORGANIZATIONS = case when @APPLIESTOORG = 1 then 1 else RELATESTOORGANIZATIONS end,
                                RELATESTOGROUPS = case when @APPLIESTOGROUP = 1 then 1 else RELATESTOGROUPS end,
                                RELATESTOSTUDENTS = case when @APPLIESTOSTUDENT= 1 then 1 else RELATESTOSTUDENTS end,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @RECIPROCALTYPECODEID
                    end
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch
            end