USP_SMARTFIELD_RECURRINGGIFTNEXTTRANSACTIONDATE

Parameters

Parameter Parameter Type Mode Description
@RECURRINGGIFTSELECTIONID uniqueidentifier IN
@ASOF datetime IN

Definition

Copy


            CREATE procedure dbo.USP_SMARTFIELD_RECURRINGGIFTNEXTTRANSACTIONDATE
            (
                @RECURRINGGIFTSELECTIONID uniqueidentifier,
                @ASOF datetime
            )
            as
                set nocount on;

                declare @FTSELECTCLAUSE as nvarchar(max) = N'select FINANCIALTRANSACTION.ID' + char(13);
                declare @FTFROMCLAUSE as nvarchar(max) = N'from dbo.FINANCIALTRANSACTION' + char(13);
                declare @FTWHERECLAUSE as nvarchar(max) = N'where FINANCIALTRANSACTION.TYPECODE = 2 and FINANCIALTRANSACTION.DELETEDON is null' + char(13); -- TYPECODE = 2 is for recurring gifts


                declare @RGCTEPRESQL as nvarchar(50) = N'with RECURRINGGIFT_CTE as (' + char(13);
                declare @RGCTEPOSTSQL as nvarchar(100) = N')' + char(13);
                declare @RGCTESQL as nvarchar(max);

                declare @ASOFSTRING as nvarchar(50) = convert(nvarchar(50), @ASOF, 121);
                declare @ASOFSQL as nvarchar(500) =
                    N'select RECURRINGGIFT_CTE.ID' + char(13) +
                    N'from RECURRINGGIFT_CTE' + char(13) +
                    N'where RECURRINGGIFT_CTE.DATECHANGED > ''' + @ASOFSTRING + '''' + char(13) +
                    N'union' + char(13) +
                    N'select RECURRINGGIFT_CTE.ID' + char(13) +
                    N'from RECURRINGGIFT_CTE' + char(13) +
                    N'left join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = RECURRINGGIFT_CTE.ID' + char(13) +
                    N'where REVENUESPLIT.DATECHANGED > ''' + @ASOFSTRING + '''' + char(13)
                ;

                declare @RGNTDPREWRAPSQL as nvarchar(500) =
                    N'select' + char(13) +
                    N'  RECURRINGGIFT.ID,' + char(13) +
                    N'  case RGS.FIRSTINSTALLMENTCODE' + char(13) +
                    N'    when 0 then SCHEDULE.NEXTTRANSACTIONDATE' + char(13) +
                    N'    else (select DATE from dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(RECURRINGGIFT.ID,null))' + char(13) +
                    N'  end NEXTTRANSACTIONDATE' + char(13) +
                    N'from (' + char(13)
                ;
                declare @RGNTDPOSTWRAPSQL as nvarchar(500) =
                    N') as RECURRINGGIFT' + char(13) +
                    N'left join dbo.REVENUESCHEDULE as SCHEDULE on SCHEDULE.ID = RECURRINGGIFT.ID' + char(13) +
                    N'outer apply dbo.UFN_RECURRINGGIFTSETTING_GETCURRENT() RGS' + char(13)
                ;

                declare @SQL nvarchar(max);
                declare @ENDSTATEMENT nvarchar(5) = N';' + char(13);

                if @RECURRINGGIFTSELECTIONID is not null
                begin
                    set @FTFROMCLAUSE += N'inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(''' + convert(nvarchar(50), @RECURRINGGIFTSELECTIONID) + ''') S on S.ID = FINANCIALTRANSACTION.ID' + char(13);
                end

                if @ASOF is null
                begin
                    set @SQL = @RGNTDPREWRAPSQL + @FTSELECTCLAUSE + @FTFROMCLAUSE + @FTWHERECLAUSE + @RGNTDPOSTWRAPSQL + @ENDSTATEMENT;
                end
                else
                begin
                    set @FTSELECTCLAUSE += N',FINANCIALTRANSACTION.DATECHANGED' + char(13);

                    set @RGCTESQL = @RGCTEPRESQL + @FTSELECTCLAUSE + @FTFROMCLAUSE + @FTWHERECLAUSE + @RGCTEPOSTSQL;
                    set @SQL = @RGCTESQL + @RGNTDPREWRAPSQL + @ASOFSQL + @RGNTDPOSTWRAPSQL + @ENDSTATEMENT;
                end

                exec sp_executesql @SQL;