UFN_PLANNEDGIFTADDITIONHISTORY_PLANNEDGIFTADDITIONCHILDTABLES_AUDIT
Returns the audit information for planned gift addition child tables for a given planned gift addition record.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLANNEDGIFTADDITIONID | uniqueidentifier | IN | |
@PLANNEDGIFTADDITIONDATEADDED | datetime | IN | |
@ACTIONTYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_PLANNEDGIFTADDITIONHISTORY_PLANNEDGIFTADDITIONCHILDTABLES_AUDIT
(
@PLANNEDGIFTADDITIONID uniqueidentifier,
@PLANNEDGIFTADDITIONDATEADDED datetime,
@ACTIONTYPECODE tinyint
)
returns @RESULTS 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)
)
as
begin
insert into @RESULTS
select
RECORDID,
case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
CHANGEDBYUSER,
PROCESS,
FIELD,
OLD,
NEW,
30 as [SEQUENCE],
ACTION,
CHANGEDBYAPP
from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('DESIGNATIONID, AMOUNT', 'PLANNEDGIFTADDITIONDESIGNATION', 'PLANNEDGIFTADDITIONID', @PLANNEDGIFTADDITIONID, @PLANNEDGIFTADDITIONDATEADDED, 'Designation', '')
union all
select
RECORDID,
case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
CHANGEDBYUSER,
PROCESS,
FIELD,
OLD,
NEW,
50 as [SEQUENCE],
ACTION,
CHANGEDBYAPP
from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('ASSETTYPECODEID, DESCRIPTION, VALUE, COSTBASIS, ASSETVALUATIONMETHODCODEID, VALUATIONSOURCE, ADDRESSID', 'PLANNEDGIFTADDITIONASSET', 'PLANNEDGIFTADDITIONID', @PLANNEDGIFTADDITIONID, @PLANNEDGIFTADDITIONDATEADDED, 'Asset', '')
union all
select
RECORDID,
case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
CHANGEDBYUSER,
PROCESS,
FIELD,
OLD,
NEW,
60 as [SEQUENCE],
ACTION,
CHANGEDBYAPP
from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('REVENUEID', 'PLANNEDGIFTADDITIONREVENUE', 'ID', @PLANNEDGIFTADDITIONID, @PLANNEDGIFTADDITIONDATEADDED, 'Revenue', '')
declare @ASSETID uniqueidentifier;
declare @ASSETDESCRIPTION nvarchar(128);
declare ASSETCURSOR cursor local fast_forward for
select ID, DESCRIPTION from dbo.PLANNEDGIFTADDITIONASSET where PLANNEDGIFTADDITIONID = @PLANNEDGIFTADDITIONID;
open ASSETCURSOR;
fetch next from ASSETCURSOR into @ASSETID, @ASSETDESCRIPTION;
while @@FETCH_STATUS = 0
begin
insert into @RESULTS
select
RECORDID,
case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
CHANGEDBYUSER,
PROCESS,
FIELD,
OLD,
NEW,
51 as [SEQUENCE],
ACTION,
CHANGEDBYAPP
from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('HOLDERCONSTITUENTID', 'PLANNEDGIFTADDITIONASSETHOLDER', 'PLANNEDGIFTADDITIONASSETID', @ASSETID, @PLANNEDGIFTADDITIONDATEADDED, 'Asset holder (' + @ASSETDESCRIPTION + ')', '');
fetch next from ASSETCURSOR into @ASSETID, @ASSETDESCRIPTION;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close ASSETCURSOR;
deallocate ASSETCURSOR;
declare @DESIGNATIONID uniqueidentifier;
declare DESIGNATIONCURSOR cursor local fast_forward for
select ID from dbo.PLANNEDGIFTADDITIONDESIGNATION where PLANNEDGIFTADDITIONID = @PLANNEDGIFTADDITIONID;
open DESIGNATIONCURSOR;
fetch next from DESIGNATIONCURSOR into @DESIGNATIONID;
while @@FETCH_STATUS = 0
begin
insert into @RESULTS
select
RECORDID,
case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
CHANGEDBYUSER,
PROCESS,
FIELD,
OLD,
NEW,
70 as [SEQUENCE],
ACTION,
CHANGEDBYAPP
from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('CAMPAIGNID, CAMPAIGNSUBPRIORITYID', 'PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN', 'PLANNEDGIFTADDITIONDESIGNATIONID', @DESIGNATIONID, @PLANNEDGIFTADDITIONDATEADDED, 'Campaign', '');
fetch next from DESIGNATIONCURSOR into @DESIGNATIONID;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close DESIGNATIONCURSOR;
deallocate DESIGNATIONCURSOR;
if @ACTIONTYPECODE = 1
delete from @RESULTS where ACTION = 'Delete' or ACTION = 'Update';
if @ACTIONTYPECODE = 2
delete from @RESULTS where ACTION = 'Insert' or ACTION = 'Delete';
if @ACTIONTYPECODE = 3
delete from @RESULTS where ACTION = 'Insert' or ACTION = 'Update';
return;
end