UFN_PLANNEDGIFTHISTORY_PLANNEDGIFTCHILDTABLES_AUDIT

Returns the audit information for planned gift child tables for a given planned gift record.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@PLANNEDGIFTID uniqueidentifier IN
@PLANNEDGIFTDATEADDED datetime IN
@ACTIONTYPECODE tinyint IN

Definition

Copy


CREATE function dbo.UFN_PLANNEDGIFTHISTORY_PLANNEDGIFTCHILDTABLES_AUDIT
(
  @PLANNEDGIFTID uniqueidentifier,
  @PLANNEDGIFTDATEADDED 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),
    GROUPONVALUE uniqueidentifier
  )
as
begin

  with CTE_REVENUEPAYMENT as 
  (
    select 
      FTLI.ID as FINANCIALTRANSACTIONLINEITEMID,
      'Payment ' + convert(nvarchar(max), row_number() over(partition by PLANNEDGIFTREVENUE.ID order by FTLI.DATEADDED)) as PAYMENTSTRING,
      FTLI.FINANCIALTRANSACTIONID
    from
      dbo.PLANNEDGIFTREVENUE
    inner join
      dbo.INSTALLMENTPAYMENT on INSTALLMENTPAYMENT.PLEDGEID = PLANNEDGIFTREVENUE.REVENUEID
    inner join
      dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = INSTALLMENTPAYMENT.PAYMENTID
    where
      PLANNEDGIFTREVENUE.ID = @PLANNEDGIFTID and
      FTLI.DELETEDON is null
  )
  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,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('DESIGNATIONID, AMOUNT', 'PLANNEDGIFTDESIGNATION', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, '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,
    40 as SEQUENCE,
    [ACTION],
    CHANGEDBYAPP,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('PLANNEDGIFTLETTERCODEID, ACKNOWLEDGEDATE, PROCESSDATE, PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID', 'PLANNEDGIFTLETTER', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Letter', '')

  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,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('ASSETTYPECODEID, DESCRIPTION, VALUE, COSTBASIS, ASSETVALUATIONMETHODCODEID, VALUATIONSOURCE, ADDRESSID', 'PLANNEDGIFTASSET', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, '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,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('BENEFICIARYCONSTITUENTID, BENEFICIARYTYPECODEID, PRIORITYCODE', 'PLANNEDGIFTBENEFICIARY', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Beneficiary', '')

  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,
    null  as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('RELATIONSHIPID', 'PLANNEDGIFTRELATIONSHIP', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Relationship', '')

  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,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('REVENUESPLITID', 'PLANNEDGIFTREVENUESPLIT', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Payment revenue', '')

  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,
    RECORDID as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('REVENUEID', 'PLANNEDGIFTREVENUE', 'ID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Revenue', '')

  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,
    70 as SEQUENCE,
    [ACTION],
    CHANGEDBYAPP,
    null  as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('SITEID', 'PLANNEDGIFTSITE', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Site', '')

  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,
    80 as SEQUENCE,
    [ACTION],
    CHANGEDBYAPP,
    null  as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('AUTHORID,PLANNEDGIFTNOTETYPECODEID,DATEENTERED,TEXTNOTE,TITLE', 'PLANNEDGIFTNOTE', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Note', '')

  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,
    90 as SEQUENCE,
    [ACTION],
    CHANGEDBYAPP,
    null  as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('AUTHORID,PLANNEDGIFTMEDIALINKTYPECODEID,DATEENTERED,MEDIAURL,TITLE', 'PLANNEDGIFTMEDIALINK', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Media link', '')

  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,
    100 as SEQUENCE,
    [ACTION],
    CHANGEDBYAPP,
    null as GROUPONVALUE
  from
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('AUTHORID,PLANNEDGIFTATTACHMENTTYPECODEID,DATEENTERED,FILENAME,TITLE', 'PLANNEDGIFTATTACHMENT', 'PLANNEDGIFTID', @PLANNEDGIFTID, @PLANNEDGIFTDATEADDED, 'Attachment', '')

  union all

  select
    PAYMENTS.RECORDID,
    case
      when PAYMENTS.[ACTION] = 'Insert'
        then PAYMENTS.DATEADDED
      when PAYMENTS.[ACTION] = 'Update'
        then PAYMENTS.DATECHANGED
      else
        PAYMENTS.AUDITDATE
    end as AUDITDATE,
    PAYMENTS.CHANGEDBYUSER,
    PAYMENTS.PROCESS,
    case
      --Compatibility with old REVENUE table column name

      when PAYMENTS.FIELD like '%BASEAMOUNT'
        then replace(PAYMENTS.FIELD, 'BASEAMOUNT', 'AMOUNT')
      else
        PAYMENTS.FIELD
    end as FIELD,
    PAYMENTS.OLD,
    PAYMENTS.NEW,
    110 as SEQUENCE,
    PAYMENTS.[ACTION],
    PAYMENTS.CHANGEDBYAPP,
    CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID as GROUPONVALUE
  from
    CTE_REVENUEPAYMENT
  cross apply
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('BASEAMOUNT', 'FINANCIALTRANSACTIONLINEITEM', 'ID', CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONLINEITEMID, @PLANNEDGIFTDATEADDED, CTE_REVENUEPAYMENT.PAYMENTSTRING, '') PAYMENTS
  where
    PAYMENTS.RECORDID = CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONLINEITEMID

  union all

  select
    PAYMENTS.RECORDID,
    case
      when PAYMENTS.[ACTION] = 'Insert'
        then PAYMENTS.DATEADDED
      when PAYMENTS.[ACTION] = 'Update'
        then PAYMENTS.DATECHANGED
      else
        PAYMENTS.AUDITDATE
    end as AUDITDATE,
    PAYMENTS.CHANGEDBYUSER,
    PAYMENTS.PROCESS,
    PAYMENTS.FIELD,
    PAYMENTS.OLD,
    PAYMENTS.NEW,
    111 as SEQUENCE,
    PAYMENTS.[ACTION],
    PAYMENTS.CHANGEDBYAPP,
    CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID as GROUPONVALUE
  from
    CTE_REVENUEPAYMENT
  cross apply
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('CONSTITUENTID', 'FINANCIALTRANSACTION', 'ID', CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID, @PLANNEDGIFTDATEADDED, CTE_REVENUEPAYMENT.PAYMENTSTRING, '') PAYMENTS
  where
    PAYMENTS.RECORDID = CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID

  union all

  select
    PAYMENTS.RECORDID,
    case
      when PAYMENTS.[ACTION] = 'Insert'
        then PAYMENTS.DATEADDED
      when PAYMENTS.[ACTION] = 'Update'
        then PAYMENTS.DATECHANGED
      else
        PAYMENTS.AUDITDATE
    end as AUDITDATE,
    PAYMENTS.CHANGEDBYUSER,
    PAYMENTS.PROCESS,
    PAYMENTS.FIELD,
    PAYMENTS.OLD,
    PAYMENTS.NEW,
    112 as SEQUENCE,
    PAYMENTS.[ACTION],
    PAYMENTS.CHANGEDBYAPP,
    CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID as GROUPONVALUE
  from
    CTE_REVENUEPAYMENT
  inner join
    dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID
  cross apply
    dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('PAYMENTMETHODCODE', 'REVENUEPAYMENTMETHOD', 'REVENUEID', CTE_REVENUEPAYMENT.FINANCIALTRANSACTIONID, @PLANNEDGIFTDATEADDED, CTE_REVENUEPAYMENT.PAYMENTSTRING, '') PAYMENTS
  where
    PAYMENTS.RECORDID = REVENUEPAYMENTMETHOD.ID

  declare @ASSETID uniqueidentifier;
  declare @ASSETDESCRIPTION nvarchar(128);

  declare ASSETCURSOR cursor local fast_forward for
  select
    ID,
    [DESCRIPTION]
  from
    dbo.PLANNEDGIFTASSET
  where
    PLANNEDGIFTID = @PLANNEDGIFTID;

  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,
      null as GROUPONVALUE
    from
      dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('HOLDERCONSTITUENTID', 'PLANNEDGIFTASSETHOLDER', 'PLANNEDGIFTASSETID', @ASSETID, @PLANNEDGIFTDATEADDED, 'Asset holder (' + @ASSETDESCRIPTION + ')', '');

    fetch next from ASSETCURSOR into @ASSETID, @ASSETDESCRIPTION;
  end

  close ASSETCURSOR;
  deallocate ASSETCURSOR;

  declare @DESIGNATIONID uniqueidentifier;

  declare DESIGNATIONCURSOR cursor local fast_forward for
  select
    ID
  from
    dbo.PLANNEDGIFTDESIGNATION
  where
    PLANNEDGIFTID = @PLANNEDGIFTID;

  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,
      null as GROUPONVALUE
    from
      dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('CAMPAIGNID, CAMPAIGNSUBPRIORITYID', 'PLANNEDGIFTDESIGNATIONCAMPAIGN', 'PLANNEDGIFTDESIGNATIONID', @DESIGNATIONID, @PLANNEDGIFTDATEADDED, 'Campaign', '');

    fetch next from DESIGNATIONCURSOR into @DESIGNATIONID;
  end

  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