UFN_REVENUEBATCH_GETMATCHINGGIFTCONDITIONS

Returns the matching gift relationships and condition information for a constituent from revenue batch.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_REVENUEBATCH_GETMATCHINGGIFTCONDITIONS
            (
                @CONSTITUENTID uniqueidentifier
            )
            returns @R table
            (
                RELATIONSHIPID uniqueidentifier,
                ORGANIZATIONID uniqueidentifier,
                MATCHINGGIFTCONDITIONID uniqueidentifier,
                MATCHINGFACTOR decimal(5,2),
                MINMATCHPERGIFT money,
                MAXMATCHPERGIFT money,
                MAXMATCHANNUAL money,
                MAXMATCHTOTAL money,
                MATCHTYPECODE tinyint,
                REVENUETYPECODE tinyint
            )
            as
            begin
                declare @RELATIONSHIPID uniqueidentifier;
                declare @ORGID uniqueidentifier;
                declare @EXISTINGORGID uniqueidentifier;
                declare @RELATIONSHIPTYPECODEID uniqueidentifier;
                declare @JOBSCHEDULECODEID uniqueidentifier;
                declare @CAREERLEVELCODEID uniqueidentifier;
                declare @ISBATCHRELATIONSHIP bit;

                declare @MATCHINGGIFTCONDITIONID uniqueidentifier;
                declare @MATCHINGGIFTCONDITIONTYPECODEID uniqueidentifier;
                declare @CONDITIONCOUNT int;
                declare @MATCHINGGIFTAMOUNT money;
                declare @MATCHINGGIFTMINAMOUNT money;
                declare @MATCHINGGIFTMAXAMOUNT money;
                declare @MATCHINGGIFTMAXMATCHANNUAL money;
                declare @MATCHINGGIFTMAXMATCHTOTAL money;
                declare @MATCHINGGIFTFACTOR decimal(30,2);
                declare @MATCHTYPECODE tinyint;
                declare @REVENUETYPECODE tinyint;

                declare CUR_MATCHINGGIFTRELATIONSHIPS cursor local fast_forward for
                    select    RELATIONSHIP.ID,                            --@RELATIONSHIPID

                            RELATIONSHIP.RELATIONSHIPTYPECODEID,        --@RELATIONSHIPTYPECODEID

                            RELATIONSHIP.RECIPROCALCONSTITUENTID,        --@ORGID

                            RELATIONSHIP.RECIPROCALCONSTITUENTID,        --@EXISTINGORGID

                            RELATIONSHIPJOBINFO.JOBSCHEDULECODEID,      --@JOBSCHEDULECODEID

                            RELATIONSHIPJOBINFO.CAREERLEVELCODEID,      --@CAREERLEVELCODEID

                            0                                            --@ISBATCHRELATIONSHIP

                    from dbo.RELATIONSHIP
                    left join dbo.RELATIONSHIPJOBINFO
                        on RELATIONSHIPJOBINFO.RELATIONSHIPSETID = RELATIONSHIP.RELATIONSHIPSETID
                        and ((RELATIONSHIPJOBINFO.STARTDATE is null or RELATIONSHIPJOBINFO.STARTDATE < getdate()) and
                            (RELATIONSHIPJOBINFO.ENDDATE is null or RELATIONSHIPJOBINFO.ENDDATE > getdate()))
                    where RELATIONSHIPCONSTITUENTID = @CONSTITUENTID 
                        and ISMATCHINGGIFTRELATIONSHIP = 1
                        and ((RELATIONSHIP.STARTDATE is null or RELATIONSHIP.STARTDATE < getdate()) and
                            (RELATIONSHIP.ENDDATE is null or RELATIONSHIP.ENDDATE > getdate()))
                    union
                    select    BATCHREVENUECONSTITUENTRELATION.ID,                        --@RELATIONSHIPID

                            BATCHREVENUECONSTITUENTRELATION.RELATIONSHIPTYPECODEID,    --@RELATIONSHIPTYPECODEID

                            BATCHREVENUECONSTITUENTRELATION.RELATIONID,                --@ORGID

                            [ORG].EXISTINGCONSTITUENTID,                            --@EXISTINGORGID

                            null,                                                    --@JOBSCHEDULECODEID

                            null,                                                    --@CAREERLEVELCODEID

                            1                                                        --@ISBATCHRELATIONSHIP

                    from dbo.BATCHREVENUECONSTITUENTRELATION
                    inner join dbo.BATCHREVENUECONSTITUENT as [ORG] on [ORG].ID = BATCHREVENUECONSTITUENTRELATION.RELATIONID
                    where CONSTITUENTID = @CONSTITUENTID
                        and ISMATCHINGGIFTRELATIONSHIP = 1;

                open CUR_MATCHINGGIFTRELATIONSHIPS;
                fetch next from CUR_MATCHINGGIFTRELATIONSHIPS into @RELATIONSHIPID, @RELATIONSHIPTYPECODEID, @ORGID, @EXISTINGORGID, @JOBSCHEDULECODEID, @CAREERLEVELCODEID, @ISBATCHRELATIONSHIP
                while @@FETCH_STATUS = 0
                begin

                    --check if there are any mg conditions for the current relationship

                    select @CONDITIONCOUNT = count(*
                    from dbo.MATCHINGGIFTCONDITION
                    inner join dbo.MATCHINGGIFTCONDITIONRELATIONSHIP
                    on MATCHINGGIFTCONDITION.ID = MATCHINGGIFTCONDITIONRELATIONSHIP.MATCHINGGIFTCONDITIONID
                    where ORGANIZATIONID = @EXISTINGORGID
                    and RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID
                    and (JOBSCHEDULECODEID is null or JOBSCHEDULECODEID = @JOBSCHEDULECODEID)
                    and (CAREERLEVELCODEID is null or CAREERLEVELCODEID = @CAREERLEVELCODEID);

                    if @CONDITIONCOUNT > 0 --matching gift conditions exist for the specific relationship type

                    begin

                        insert into @R(RELATIONSHIPID, ORGANIZATIONID, MATCHINGGIFTCONDITIONID, MATCHINGFACTOR, MINMATCHPERGIFT, MAXMATCHPERGIFT, MAXMATCHANNUAL, MAXMATCHTOTAL, MATCHTYPECODE, REVENUETYPECODE)
                            select  
                                    @RELATIONSHIPID,
                                    @EXISTINGORGID,
                                    ID,
                                    MATCHINGFACTOR,
                                    MINMATCHPERGIFT,
                                    MAXMATCHPERGIFT,
                                    MAXMATCHANNUAL,
                                    MAXMATCHTOTAL,
                                    MATCHTYPECODE,
                                    REVENUETYPECODE
                            from (
                                select
                                    MATCHINGGIFTCONDITION.ID,
                                    MATCHINGGIFTCONDITION.MATCHINGFACTOR,
                                    MATCHINGGIFTCONDITION.MINMATCHPERGIFT,
                                    MATCHINGGIFTCONDITION.MAXMATCHPERGIFT,
                                    MATCHINGGIFTCONDITION.MAXMATCHANNUAL,
                                    MATCHINGGIFTCONDITION.MAXMATCHTOTAL,
                                    MATCHINGGIFTCONDITION.MATCHTYPECODE,
                                    MATCHINGGIFTCONDITION.REVENUETYPECODE,
                                    row_number() over(partition by MATCHINGGIFTCONDITION.REVENUETYPE, MATCHINGGIFTCONDITION.BASECURRENCYID order by MATCHINGGIFTCONDITION.SEQUENCE) as ROWNUM
                                from
                                    dbo.MATCHINGGIFTCONDITION
                                inner join dbo.MATCHINGGIFTCONDITIONRELATIONSHIP on MATCHINGGIFTCONDITIONRELATIONSHIP.MATCHINGGIFTCONDITIONID = MATCHINGGIFTCONDITION.ID
                                where MATCHINGGIFTCONDITION.ORGANIZATIONID = @EXISTINGORGID
                                and MATCHINGGIFTCONDITIONRELATIONSHIP.RELATIONSHIPTYPECODEID = @RELATIONSHIPTYPECODEID
                                and (MATCHINGGIFTCONDITIONRELATIONSHIP.JOBSCHEDULECODEID is null or MATCHINGGIFTCONDITIONRELATIONSHIP.JOBSCHEDULECODEID = @JOBSCHEDULECODEID)
                                and (MATCHINGGIFTCONDITIONRELATIONSHIP.CAREERLEVELCODEID is null or MATCHINGGIFTCONDITIONRELATIONSHIP.CAREERLEVELCODEID = @CAREERLEVELCODEID)
                                ) as SUBQ
                            where ROWNUM = 1
                    end

                    fetch next from CUR_MATCHINGGIFTRELATIONSHIPS into @RELATIONSHIPID, @RELATIONSHIPTYPECODEID, @ORGID, @EXISTINGORGID, @JOBSCHEDULECODEID, @CAREERLEVELCODEID, @ISBATCHRELATIONSHIP
                end
                close CUR_MATCHINGGIFTRELATIONSHIPS;
                deallocate CUR_MATCHINGGIFTRELATIONSHIPS;

                return;
            end