USP_DATALIST_PLANNEDGIFTHISTORY
Displays historic audit information for a planned gift.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLANNEDGIFTID | 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_PLANNEDGIFTHISTORY
(
@PLANNEDGIFTID uniqueidentifier,
@USERID uniqueidentifier = null,
@ACTIONTYPECODE tinyint = 0,
@SHOWCODE tinyint = 1,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@GROUPCODE bit = 0
)
as
set nocount on;
declare @CURRENTDATE datetime = 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
declare @USERNAME nvarchar(128);
if not @USERID is null
select
@USERNAME = USERNAME
from
dbo.APPUSER
where
APPUSER.ID = @USERID;
else
set @USERNAME = '';
declare @PLANNEDGIFTDATEADDED datetime;
select
@PLANNEDGIFTDATEADDED = DATEADDED
from
dbo.PLANNEDGIFT
where
ID = @PLANNEDGIFTID;
declare @AUDIT 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),
GROUPONVALUE uniqueidentifier
);
if @ACTIONTYPECODE in (0, 1)
insert into @AUDIT
(
RECORDID,
AUDITDATE,
[ACTION],
FIELD,
OLD,
NEW,
CHANGEDBYUSER,
PROCESS,
CHANGEDBYAPP,
SEQUENCE,
GROUPONVALUE
)
select
RECORDID,
DATEADDED,
'Insert' as [ACTION],
FIELD,
OLD,
NEW,
CHANGEDBYUSER,
PROCESS,
CHANGEDBYAPP,
-1 as SEQUENCE,
null as GROUPONVALUE
from
dbo.UFN_AUDIT_GETINSERTS_FORTABLE('PLANNEDGIFT', 'ID', @PLANNEDGIFTID, 0, null)
where
@USERID is null or CHANGEDBYUSER = @USERNAME;
insert into @AUDIT
(
RECORDID,
AUDITDATE,
[ACTION],
FIELD,
OLD,
NEW,
CHANGEDBYUSER,
PROCESS,
CHANGEDBYAPP,
SEQUENCE,
GROUPONVALUE
)
select
@PLANNEDGIFTID as [RECORDID],
[CHANGES].DATECHANGED,
'Update' as [ACTION],
DETAIL.FIELD,
DETAIL.OLD,
DETAIL.NEW,
[CHANGES].CHANGEDBYUSER,
'' as PROCESS,
[CHANGES].CHANGEDBYAPP,
0 as SEQUENCE,
null as GROUPONVALUE
from
dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('PLANNEDGIFT', 500, null, null, 0, 1, 0, null, null, @PLANNEDGIFTID) as [CHANGES]
cross apply
dbo.UFN_AUDIT_GETDETAIL('PLANNEDGIFTAUDIT', [CHANGES].AUDITKEY, @PLANNEDGIFTID) 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,
GROUPONVALUE
from
dbo.UFN_PLANNEDGIFTHISTORY_PLANNEDGIFTCHILDTABLES_AUDIT(@PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, @ACTIONTYPECODE)
where
@USERID is null or CHANGEDBYUSER = @USERNAME;
if @STARTDATE is not null
delete from @AUDIT where AUDITDATE < @STARTDATE;
if @ENDDATE is not null
delete from @AUDIT where AUDITDATE > @ENDDATE;
-- Added 12/17/2010 by SlyyMu
-- The following block removes all records that do not have a revenue ID.
-- In essence, when the bit value of "1" is used it removes all non payment records with the exception of the planned gift itself.
-- In order to remove the planned gift, add the following to the delete statement below: or GROUPONVALUE = RECORDID
if @GROUPCODE = 1
delete from @AUDIT where GROUPONVALUE is null;
select
AUDIT.RECORDID,
AUDIT.AUDITDATE,
AUDIT.[ACTION],
AUDIT.FIELD,
AUDIT.OLD,
AUDIT.NEW,
AUDIT.CHANGEDBYUSER,
AUDIT.PROCESS,
AUDIT.CHANGEDBYAPP,
AUDIT.SEQUENCE,
case
when AUDIT.[ACTION] = 'Delete'
then 0
when AUDIT.[ACTION] = 'Update'
then 1
else
2
end as ACTIONSORT,
case
when @GROUPCODE = 0
then 'Date'
else
case
when FT.ID is null
then 'Planned gift'
else
--The following block reconstructs the "Field" column to a value by which we can sort chronologically --
replace(dbo.UFN_PAYMENT_GETDESCRIPTION(FT.ID), '(Payment)', '(Payment ' + substring(AUDIT.FIELD, 9, charindex(':', AUDIT.FIELD, 1) - charindex(' ', AUDIT.FIELD, 1) - 1) + ')')
end
end as GROUPONVALUE
from
@AUDIT as AUDIT
left join
dbo.FINANCIALTRANSACTION FT on FT.ID = AUDIT.GROUPONVALUE
order by
AUDITDATE desc,
FIELD desc,
[ACTIONSORT] asc,
SEQUENCE asc,
RECORDID