USP_HOUSEHOLDRECOGNITIONSETTINGS_OVERRIDEIFNEEDED

Stores that the global household recognition settings should be overridden if the two constituents passed in are members of the same household.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTONEID uniqueidentifier IN
@CONSTITUENTTWOID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_HOUSEHOLDRECOGNITIONSETTINGS_OVERRIDEIFNEEDED
            (
                @CONSTITUENTONEID uniqueidentifier,
                @CONSTITUENTTWOID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier                        
            )
            as
                set nocount on

                declare @HOUSEHOLDID uniqueidentifier

                -- Handle the two constituents being a part of the same group

                select @HOUSEHOLDID = GROUPMEMBERONE.GROUPID
                from dbo.GROUPMEMBER GROUPMEMBERONE
                inner join dbo.GROUPMEMBER GROUPMEMBERTWO on GROUPMEMBERONE.GROUPID = GROUPMEMBERTWO.GROUPID
                inner join dbo.GROUPDATA on GROUPMEMBERONE.GROUPID = GROUPDATA.ID
                where
                    GROUPMEMBERONE.MEMBERID = @CONSTITUENTONEID and
                    GROUPMEMBERTWO.MEMBERID = @CONSTITUENTTWOID and
                    GROUPDATA.GROUPTYPECODE = 0 -- Group is a household


                -- Handle one of the constituents being a household and the other a member

                if @HOUSEHOLDID is null
                begin
                    declare @CURRENTDATEEARLIEST date
                    set @CURRENTDATEEARLIEST = getdate()

                    select @HOUSEHOLDID = GROUPMEMBER.GROUPID
                    from dbo.GROUPMEMBER
                    inner join dbo.GROUPDATA on GROUPMEMBER.GROUPID = GROUPDATA.ID
                    left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
                    where
                        GROUPDATA.GROUPTYPECODE = 0 and -- Household

                        (
                            (GROUPMEMBER.MEMBERID = @CONSTITUENTONEID and GROUPMEMBER.GROUPID = @CONSTITUENTTWOID) or
                            (GROUPMEMBER.MEMBERID = @CONSTITUENTTWOID and GROUPMEMBER.GROUPID = @CONSTITUENTONEID)
                        ) and
                        -- Verify they are still active

                        ((GROUPMEMBERDATERANGE.DATEFROM is null and (GROUPMEMBERDATERANGE.DATETO is null or GROUPMEMBERDATERANGE.DATETO > @CURRENTDATEEARLIEST))
                            or (GROUPMEMBERDATERANGE.DATETO is null and (GROUPMEMBERDATERANGE.DATEFROM is null or GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATEEARLIEST)) 
                            or (GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATEEARLIEST and GROUPMEMBERDATERANGE.DATETO > @CURRENTDATEEARLIEST))
                end

                if @HOUSEHOLDID is not null
                begin
                    declare @CURRENTDATE datetime
                    set @CURRENTDATE = getdate()

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

                    -- Only copy the default settings if the household doesn't already have 

                    -- an override row.

                    if not exists (select 1 from dbo.HOUSEHOLDRECOGNITIONSETTINGS where ID = @HOUSEHOLDID)
                        insert into dbo.HOUSEHOLDRECOGNITIONSETTINGS 
                        (
                            ID,
                            HOUSEHOLDRECOGNIZEHOUSEHOLD,
                            HOUSEHOLDRECOGNIZEMEMBERSCODE,
                            MEMBERRECOGNIZEHOUSEHOLD,
                            MEMBERRECOGNIZEMEMBER,
                            MEMBERRECOGNIZEOTHERMEMBERSCODE,
                            HOUSEHOLDREVENUERECOGNITIONTYPECODEID,
                            MEMBERREVENUERECOGNITIONTYPECODEID,
                            MEMBERHOUSEHOLDREVENUERECOGNITIONTYPECODEID,
                            DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID
                        )
                        select top 1
                            @HOUSEHOLDID,
                            HOUSEHOLDRECOGNIZEHOUSEHOLD,
                            HOUSEHOLDRECOGNIZEMEMBERS,
                            MEMBERRECOGNIZEHOUSEHOLD,
                            MEMBERRECOGNIZEMEMBER,
                            MEMBERRECOGNIZEOTHERMEMBERS,
                            HOUSEHOLDREVENUERECOGNITIONTYPECODEID,
                            MEMBERREVENUERECOGNITIONTYPECODEID,
                            MEMBERHOUSEHOLDREVENUERECOGNITIONTYPECODEID,
                            @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID
                        from dbo.HOUSEHOLDINFO
                        order by DATEADDED
                end