USP_CONSTITUENCYDATERANGE_REFRESHLOYALDONORCONSTITUENCY

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@CONSTITUENCYREFRESHPROCESSID uniqueidentifier IN
@RECORDCOUNT int INOUT

Definition

Copy


CREATE procedure dbo.USP_CONSTITUENCYDATERANGE_REFRESHLOYALDONORCONSTITUENCY
(
    @CONSTITUENTID uniqueidentifier = null,
    @CONSTITUENCYREFRESHPROCESSID uniqueidentifier = null,
    @RECORDCOUNT int = 0 output
)
as
begin
    set nocount on;

    set @RECORDCOUNT = 0;

    declare @CURRENTDATE datetime = getdate();
    declare @LOYALDONORCONSTITUENCYDEFINITIONID uniqueidentifier = 'E5A0EA42-65BA-4B25-AFE2-9B709F99E72B';

    declare @LOYALDONORCONSTITUENCYDEFPERIOD integer;
    declare @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE smallint;
    declare @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION bit;
    declare @PERIODSFROMCURRENTDATE datetime;

    select
        @LOYALDONORCONSTITUENCYDEFPERIOD = LOYALDONORCONSTITUENCYDEFPERIOD,
        @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = LOYALDONORCONSTITUENCYDEFPERIODUNITCODE,
        @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION
    from
        dbo.CONSTITUENCYCRITERIASPOUSE

    if @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = 1
    begin
        set @PERIODSFROMCURRENTDATE = dateadd(mm, -@LOYALDONORCONSTITUENCYDEFPERIOD, @CURRENTDATE);
    end
    else
    begin
        set @PERIODSFROMCURRENTDATE = dateadd(yy, -@LOYALDONORCONSTITUENCYDEFPERIOD, @CURRENTDATE);
    end

    begin try
        if @CONSTITUENTID is not null and @CONSTITUENCYREFRESHPROCESSID is not null
        begin
            raiserror('ERR_REFRESH_CONSTITUENTANDSELECTION : A constituency refresh cannot be run with both a specific constituent and a selection.', 13, 1);
        end

        if object_id('tempdb..#LOYALDONORCONSTITUENTS') is not null
        begin
            drop table #LOYALDONORCONSTITUENTS;
        end

        create table #LOYALDONORCONSTITUENTS
        (
            CONSTITUENTID uniqueidentifier
        );

        if @CONSTITUENCYREFRESHPROCESSID is null and @CONSTITUENTID is null
        begin
            if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    from (
                        select distinct
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end as PERIOD
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                                on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                        where 
                            REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUE.DELETEDON is null and
                            FTLT.DELETEDON is null and
                            FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by 
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end

                        union all

                        select distinct
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT with (nolock)
                                on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                            inner join dbo.REVENUESPLIT_EXT with (nolock)
                                on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
                            inner join dbo.REVENUERECOGNITION with (nolock)
                                on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
                        where 
                            REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUESPLIT.DELETEDON is null and
                            REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
                            REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by 
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        ) as REVENUEANDRECOGNITION
                    group by
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    ) as SUBSQL
                group by 
                    SUBSQL.CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end
            else
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end as PERIOD
                    from
                        dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                        inner join dbo.REVENUE_EXT with (nolock)
                            on REVENUE.ID = REVENUE_EXT.ID
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                            on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                    where 
                        REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                        cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                        REVENUE.DELETEDON is null and
                        FTLT.DELETEDON is null and
                        FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                    group by 
                        CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end
                    ) as SUBSQL
                group by
                    CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                left join #LOYALDONORCONSTITUENTS as LOYALDONORCONSTITUENTS
                    on LOYALDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
            where
                LOYALDONORCONSTITUENTS.CONSTITUENTID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @LOYALDONORCONSTITUENCYDEFINITIONID;
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end
        else if @CONSTITUENCYREFRESHPROCESSID is null
        begin
            if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    from (
                        select distinct
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end as PERIOD
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                                on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                        where
                            REVENUE.CONSTITUENTID = @CONSTITUENTID and
                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUE.DELETEDON is null and
                            FTLT.DELETEDON is null and
                            FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by 
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end

                        union all

                        select distinct
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT with (nolock)
                                on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                            inner join dbo.REVENUESPLIT_EXT with (nolock)
                                on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
                            inner join dbo.REVENUERECOGNITION with (nolock)
                                on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
                        where
                            REVENUE.CONSTITUENTID = @CONSTITUENTID and
                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUESPLIT.DELETEDON is null and
                            REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
                            REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by 
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        ) as REVENUEANDRECOGNITION
                    group by
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    ) as SUBSQL
                group by 
                    SUBSQL.CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end
            else
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end as PERIOD
                    from
                        dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                        inner join dbo.REVENUE_EXT with (nolock)
                            on REVENUE.ID = REVENUE_EXT.ID
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                            on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                    where
                        REVENUE.CONSTITUENTID = @CONSTITUENTID and
                        cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                        REVENUE.DELETEDON is null and
                        FTLT.DELETEDON is null and
                        FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                    group by 
                        CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end
                    ) as SUBSQL
                group by
                    CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                left join #LOYALDONORCONSTITUENTS as LOYALDONORCONSTITUENTS
                    on LOYALDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
            where
                CONSTITUENCYDATERANGE.CONSTITUENTID = @CONSTITUENTID
                and LOYALDONORCONSTITUENTS.CONSTITUENTID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @LOYALDONORCONSTITUENCYDEFINITIONID;
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end
        else
        begin
            if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    from (
                        select distinct
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end as PERIOD
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                                on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                            inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                                on CONSTITUENTS.CONSTITUENTID = REVENUE.CONSTITUENTID
                                and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                        where 
                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUE.DELETEDON is null and
                            FTLT.DELETEDON is null and
                            FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by 
                            REVENUE.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end

                        union all

                        select distinct
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        from
                            dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                            inner join dbo.REVENUE_EXT with (nolock)
                                on REVENUE.ID = REVENUE_EXT.ID
                            inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT with (nolock)
                                on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                            inner join dbo.REVENUESPLIT_EXT with (nolock)
                                on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
                            inner join dbo.REVENUERECOGNITION with (nolock)
                                on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
                            inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                                on CONSTITUENTS.CONSTITUENTID = REVENUE.CONSTITUENTID
                                and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                        where
                            cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                            REVENUESPLIT.DELETEDON is null and
                            REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
                            REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                        group by
                            REVENUERECOGNITION.CONSTITUENTID,
                            case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                                when 1 then
                                    datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                                else
                                    datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            end
                        ) as REVENUEANDRECOGNITION
                    group by
                        REVENUEANDRECOGNITION.CONSTITUENTID,
                        REVENUEANDRECOGNITION.PERIOD
                    ) as SUBSQL
                group by
                    SUBSQL.CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end
            else
            begin
                insert into #LOYALDONORCONSTITUENTS
                (
                    CONSTITUENTID
                )
                select CONSTITUENTID
                from (
                    select distinct
                        REVENUE.CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end as PERIOD
                    from
                        dbo.FINANCIALTRANSACTION REVENUE with (nolock)
                        inner join dbo.REVENUE_EXT with (nolock)
                            on REVENUE.ID = REVENUE_EXT.ID
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock)
                            on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
                        inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                            on CONSTITUENTS.CONSTITUENTID = REVENUE.CONSTITUENTID
                            and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
                    where 
                        REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors

                        cast(REVENUE.DATE as datetime) >= @PERIODSFROMCURRENTDATE and
                        REVENUE.DELETEDON is null and
                        FTLT.DELETEDON is null and
                        FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
                    group by 
                        REVENUE.CONSTITUENTID,
                        case @LOYALDONORCONSTITUENCYDEFPERIODUNITCODE
                            when 1 then
                                datediff(mm, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                            else
                                datediff(yy, cast(REVENUE.DATE as datetime), @CURRENTDATE)
                        end
                    ) as SUBSQL
                group by
                    CONSTITUENTID
                having count(*) >= @LOYALDONORCONSTITUENCYDEFPERIOD
            end

            delete dbo.CONSTITUENCYDATERANGE
            from
                dbo.CONSTITUENCYDATERANGE
                left join #LOYALDONORCONSTITUENTS as LOYALDONORCONSTITUENTS
                    on LOYALDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
                inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
                    on CONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
                    and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
            where
                LOYALDONORCONSTITUENTS.CONSTITUENTID is null
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @LOYALDONORCONSTITUENCYDEFINITIONID;
            set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
        end

        insert into dbo.CONSTITUENCYDATERANGE
        (
            ID,
            CONSTITUENTID,
            CONSTITUENCYDEFINITIONID,
            REFRESHDATE
        )
        select
            newid(),
            LOYALDONORCONSTITUENTS.CONSTITUENTID,
            @LOYALDONORCONSTITUENCYDEFINITIONID,
            @CURRENTDATE
        from
            #LOYALDONORCONSTITUENTS as LOYALDONORCONSTITUENTS
            left join dbo.CONSTITUENCYDATERANGE
                on CONSTITUENCYDATERANGE.CONSTITUENTID = LOYALDONORCONSTITUENTS.CONSTITUENTID
                and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @LOYALDONORCONSTITUENCYDEFINITIONID
        where
            CONSTITUENCYDATERANGE.ID is null;
        set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

        update dbo.CONSTITUENCYDATERANGE
        set
            CONSTITUENCYDATERANGE.REFRESHDATE = @CURRENTDATE
        from
            dbo.CONSTITUENCYDATERANGE
            inner join #LOYALDONORCONSTITUENTS as LOYALDONORCONSTITUENTS
                on LOYALDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
        where
            CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @LOYALDONORCONSTITUENCYDEFINITIONID;
        set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;

        drop table #LOYALDONORCONSTITUENTS;
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;
end