USP_DATALIST_PLANNEDGIFTADDITIONHISTORY

Displays historic audit information for a planned gift addition.

Parameters

Parameter Parameter Type Mode Description
@PLANNEDGIFTADDITIONID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@USERID uniqueidentifier IN User
@ACTIONTYPECODE tinyint IN Actions
@SHOWCODE tinyint IN Show
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@GROUPCODE bit IN Group by revenue

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_PLANNEDGIFTADDITIONHISTORY
                (
                    @PLANNEDGIFTADDITIONID uniqueidentifier,
                    @USERID uniqueidentifier = null,
                    @ACTIONTYPECODE tinyint = 0,
                    @SHOWCODE tinyint = 1,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null,
                    @GROUPCODE bit = 0
                )
                as
                set nocount on;

                declare @USERNAME nvarchar(128);
                declare @PLANNEDGIFTADDITIONDATEADDED datetime;

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getdate();

                if @SHOWCODE in (1,2,3,4,5,6) begin
                    set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);

                    if @SHOWCODE = 1 --Last 30 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-29,@CURRENTDATE));
                    else if @SHOWCODE = 2 --Last 60 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-59,@CURRENTDATE));
                    else if @SHOWCODE = 3 --Last 90 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-89,@CURRENTDATE));
                    else if @SHOWCODE = 4 --Last 6 months

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,1,dateadd(month,-6,@CURRENTDATE)));
                    else if @SHOWCODE = 5 --Last year

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,1,dateadd(year,-1,@CURRENTDATE)));
                    else if @SHOWCODE = 6 --Last 5 years

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,1,dateadd(year,-5,@CURRENTDATE)));
                end
                else if @SHOWCODE = 0 begin
                    set @STARTDATE = null;
                    set @ENDDATE = null;
                end
                else if @SHOWCODE = 99 begin
                    set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
                    set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
                end

                if not @USERID is null
                    select 
                        @USERNAME = USERNAME 
                    from dbo.APPUSER 
                    where APPUSER.ID = @USERID;
                else
                    set @USERNAME = '';

                select @PLANNEDGIFTADDITIONDATEADDED = DATEADDED from dbo.PLANNEDGIFTADDITION where ID = @PLANNEDGIFTADDITIONID;

                declare @TEMP table
                (
                    RECORDID uniqueidentifier,
                    AUDITDATE datetime,
                    CHANGEDBYUSER nvarchar(128),
                    PROCESS nvarchar(255),
                    FIELD nvarchar(128),
                    OLD nvarchar(4000),
                    NEW nvarchar(4000),
                    SEQUENCE int,
                    ACTION nvarchar(8),
                    CHANGEDBYAPP nvarchar(200)
                )

                if @ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 1
                    insert into @TEMP(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                        select
                            RECORDID,
                            DATEADDED,
                            'Insert' as [ACTION],
                            FIELD,
                            OLD,
                            NEW,
                            CHANGEDBYUSER,
                            PROCESS,
                            CHANGEDBYAPP,
                            -1 as [SEQUENCE]
                        from dbo.UFN_AUDIT_GETINSERTS_FORTABLE('PLANNEDGIFTADDITION', 'ID', @PLANNEDGIFTADDITIONID, 0, null)
                        where @USERID is null or CHANGEDBYUSER = @USERNAME

                insert into @TEMP(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                    select
                        @PLANNEDGIFTADDITIONID as [RECORDID],
                        [CHANGES].DATECHANGED,
                        'Update' as [ACTION],
                        [DETAIL].FIELD,
                        [DETAIL].OLD,
                        [DETAIL].NEW,
                        [CHANGES].CHANGEDBYUSER,
                        '' as [PROCESS],
                        [CHANGES].CHANGEDBYAPP,
                        0 as [SEQUENCE]
                    from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('PLANNEDGIFTADDITION', 500, null, null, 0, 1, 0, null, null, @PLANNEDGIFTADDITIONID) as [CHANGES]
                    cross apply dbo.UFN_AUDIT_GETDETAIL('PLANNEDGIFTADDITIONAUDIT', [CHANGES].AUDITKEY, @PLANNEDGIFTADDITIONID) as [DETAIL]
                    where( [DETAIL].FIELD <> 'DATECHANGED' and [DETAIL].FIELD <> 'CHANGEDBYID' and [DETAIL].FIELD <> 'ADDEDBYID' and [DETAIL].FIELD <> 'DATEADDED')
                        and (@USERID is null or CHANGEDBYUSER = @USERNAME)
                        and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2)

                    union all

                    select
                        RECORDID,
                        AUDITDATE,
                        ACTION,
                        FIELD,
                        OLD,
                        NEW,
                        CHANGEDBYUSER,
                        PROCESS,
                        CHANGEDBYAPP,
                        SEQUENCE
                    from dbo.UFN_PLANNEDGIFTADDITIONHISTORY_PLANNEDGIFTADDITIONCHILDTABLES_AUDIT(@PLANNEDGIFTADDITIONID, @PLANNEDGIFTADDITIONDATEADDED, @ACTIONTYPECODE)
                    where @USERID is null or CHANGEDBYUSER = @USERNAME

                    if @STARTDATE is not null
                        begin
                            delete from @TEMP where AUDITDATE < @STARTDATE;
                        end
                    if @ENDDATE is not null
                        begin
                            delete from @TEMP where AUDITDATE > @ENDDATE;
                        end

                select
                    RECORDID,
                    AUDITDATE,
                    ACTION,
                    FIELD,
                    OLD,
                    NEW,
                    CHANGEDBYUSER,
                    PROCESS,
                    CHANGEDBYAPP,
                    SEQUENCE,
                    case when ACTION = 'Delete' then 0 when ACTION = 'Update' then 1 else 2 end as [ACTIONSORT]
                from @TEMP
                order by AUDITDATE desc, [ACTIONSORT] asc, SEQUENCE asc, RECORDID, FIELD