UFN_AUDIT_GETDETAILSFORREVENUESPLIT
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_AUDIT_GETDETAILSFORREVENUESPLIT](@REVENUEID uniqueidentifier)
returns @RESULTS table
(RECORDID uniqueidentifier
,AUDITDATE datetime
,CHANGEDBYUSER varchar(128)
,PROCESS varchar(255)
,FIELD varchar(128)
,OLD varchar(4000)
,NEW varchar(4000)
,SEQUENCE int
,[ACTION] varchar(8)
,CHANGEDBYAPP varchar(200))
as
begin
declare @LineItems table (ID uniqueidentifier, primary key(ID));
insert into @LineItems
select distinct T.ID from (
select LI.ID
from dbo.FINANCIALTRANSACTIONLINEITEM LI
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = LI.ID
where LI.FINANCIALTRANSACTIONID = @REVENUEID
and LI.REVERSEDLINEITEMID is null
union all
select LI.AUDITRECORDID
from dbo.FINANCIALTRANSACTIONLINEITEMAUDIT LI
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = LI.AUDITRECORDID
where LI.FINANCIALTRANSACTIONID = @REVENUEID
and LI.REVERSEDLINEITEMID is null
union all
select LI.AUDITRECORDID
from dbo.FINANCIALTRANSACTIONLINEITEMAUDIT LI
inner join dbo.REVENUESPLIT_EXTAUDIT RSEA on RSEA.AUDITRECORDID = LI.AUDITRECORDID
where LI.FINANCIALTRANSACTIONID = @REVENUEID
and LI.REVERSEDLINEITEMID is null) T
insert into @RESULTS
(RECORDID
,AUDITDATE
,CHANGEDBYUSER
,PROCESS
,FIELD
,OLD
,NEW
,SEQUENCE
,[ACTION]
,CHANGEDBYAPP)
select
V4.RECORDID
,V4.AUDITDATE
,CHANGEAGENT.USERNAME as CHANGEDBYUSER
,CHANGEAGENT.PROCESSDISPLAYNAME as PROCESS
,V4.FIELD
,V4.OLD
,V4.NEW
,30 as SEQUENCE
,V4.[ACTION]
,CHANGEAGENT.APPLICATIONNAME as CHANGEDBYAPP
from
(select
V3.RECORDID
,V3.AUDITDATE
,case V3.AUDITTYPECODE2 when 2 then 'Delete' when 0 then 'Update' else case when V3.AUDITTYPECODE1 = 999 then 'Delete' else 'Insert' end end as [ACTION]
,'Application details:' + case NUMS.NUM when 1 then 'AMOUNT' end as FIELD
,case NUMS.NUM
when 1 then case V3.AUDITTYPECODE1 when -1 then 'n/a' when 999 then isnull(convert(varchar,V3.AMOUNT1,1),'n/a') else case when V3.AMOUNT1 = V3.AMOUNT2 then null else isnull(convert(varchar,V3.AMOUNT2,1),'n/a') end end
end as OLD
,case NUMS.NUM
when 1 then case V3.AUDITTYPECODE2 when 2 then 'n/a' else case when V3.AUDITTYPECODE1 = 999 then 'n/a' else case when V3.AMOUNT1 = V3.AMOUNT2 then null else isnull(convert(varchar,V3.AMOUNT1,1),'n/a') end end end
end as NEW
,ChangeAgentID
from
(select
isnull(V1.AUDITRECORDID, V2.AUDITRECORDID) as RECORDID
,isnull(V1.AUDITCHANGEAGENTID,V2.AUDITCHANGEAGENTID) as CHANGEAGENTID
,isnull(V1.AUDITDATE, V2.AUDITDATE) as AUDITDATE
,V1.AUDITTYPECODE as AUDITTYPECODE1
,V2.AUDITTYPECODE as AUDITTYPECODE2
,V1.BASEAMOUNT as AMOUNT1
,V2.BASEAMOUNT as AMOUNT2
from
(select
LIA.AUDITRECORDID
,LIA.AUDITKEY
,LIA.AUDITCHANGEAGENTID
,LIA.DATECHANGED as AUDITDATE
,LIA.AUDITTYPECODE
,LIA.BASEAMOUNT
from FINANCIALTRANSACTIONLINEITEMAUDIT LIA
inner join @LineItems LI on LI.ID = LIA.AUDITRECORDID
where LIA.AUDITTYPECODE = 1
union all
select
LI.ID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,LI.ADDEDBYID
,LI.DATEADDED
,-1 as AUDITTYPECODE
,LI.BASEAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM LI
inner join @LineItems L on LI.ID = L.ID
where LI.ID not in (select LIA.AUDITRECORDID
from dbo.FINANCIALTRANSACTIONLINEITEMAUDIT LIA
where LIA.FINANCIALTRANSACTIONID = @REVENUEID and LIA.AUDITTYPECODE = 0)
union all
select
AUDITRECORDID
,AUDITKEY
,ADDEDBYID
,AUDITDATE
,AUDITTYPECODE
,BASEAMOUNT
from (
select
LIA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,LIA.ADDEDBYID
,LIA.DATEADDED [AUDITDATE]
,-1 as AUDITTYPECODE
,LIA.BASEAMOUNT
,ROW_NUMBER() over (partition by LIA.AUDITRECORDID order by LIA.AUDITDATE asc) SEQUENCE
from FINANCIALTRANSACTIONLINEITEMAUDIT LIA
inner join @LineItems LI on LI.ID = LIA.AUDITRECORDID
where LIA.AUDITTYPECODE = 0) BEFOREUPDATES
where BEFOREUPDATES.SEQUENCE = 1
union all
select
LIA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,LIA.AUDITCHANGEAGENTID
,LIA.DATEADDED [AUDITDATE]
,LIA.AUDITTYPECODE
,LIA.BASEAMOUNT
from FINANCIALTRANSACTIONLINEITEMAUDIT LIA
inner join @LineItems LI on LI.ID = LIA.AUDITRECORDID
where LIA.AUDITTYPECODE = 2 and LIA.AUDITRECORDID not in (
select ID from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = @REVENUEID
union all
select AUDITRECORDID from FINANCIALTRANSACTIONLINEITEMAUDIT where FINANCIALTRANSACTIONLINEITEMAUDIT.AUDITTYPECODE != 2 and FINANCIALTRANSACTIONLINEITEMAUDIT.FINANCIALTRANSACTIONID = @REVENUEID)
union all
select
LI.ID [AUDITRECORDID]
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,LI.CHANGEDBYID [AUDITCHANGEAGENTID]
,LI.DELETEDON [AUDITDATE]
,999 [AUDITTYPECODE]
,LI.BASEAMOUNT
from @LineItems Filter
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = Filter.ID
where LI.DELETEDON is not null
) V1
full outer join
(select
LIA.AUDITRECORDID
,LIA.AUDITKEY
,LIA.AUDITCHANGEAGENTID
,LIA.AUDITDATE
,LIA.AUDITTYPECODE
,LIA.BASEAMOUNT
from FINANCIALTRANSACTIONLINEITEMAUDIT LIA
inner join @LineItems LI on LI.ID = LIA.AUDITRECORDID
where LIA.AUDITTYPECODE in (0,2)) V2 on V1.AUDITRECORDID = V2.AUDITRECORDID and V1.AUDITKEY = V2.AUDITKEY
where
(V1.BASEAMOUNT != V2.BASEAMOUNT
or (V1.BASEAMOUNT is null and V2.BASEAMOUNT is not null)
or (V1.BASEAMOUNT is not null and V2.BASEAMOUNT is null)
)
) V3
cross join (
select 1 as NUM) as NUMS) V4
inner join dbo.CHANGEAGENT on V4.CHANGEAGENTID = CHANGEAGENT.ID
where OLD is not null
union all
select
V4.RECORDID
,V4.AUDITDATE
,CHANGEAGENT.USERNAME as CHANGEDBYUSER
,CHANGEAGENT.PROCESSDISPLAYNAME as PROCESS
,V4.FIELD
,V4.OLD
,V4.NEW
,30 as SEQUENCE
,V4.[ACTION]
,CHANGEAGENT.APPLICATIONNAME as CHANGEDBYAPP
from
(select
V3.RECORDID
,V3.AUDITDATE
,case V3.AUDITTYPECODE2 when 2 then 'Delete' when 0 then 'Update' else case when V3.AUDITTYPECODE1 = 999 then 'Delete' else 'Insert' end end as [ACTION]
,'Application details:' + case NUMS.NUM when 1 then 'DESIGNATIONID' end as FIELD
,case NUMS.NUM
when 1 then case V3.AUDITTYPECODE1 when -1 then 'n/a' when 999 then isnull(V3.DESIGNATIONNAME1,'n/a') else case when V3.DESIGNATIONID1 = V3.DESIGNATIONID2 then null else isnull(V3.DESIGNATIONNAME2,'n/a') end end
end as OLD
,case NUMS.NUM
when 1 then case V3.AUDITTYPECODE2 when 2 then 'n/a' else case when V3.AUDITTYPECODE1 = 999 then 'n/a' else case when V3.DESIGNATIONID1 = V3.DESIGNATIONID2 then null else isnull(V3.DESIGNATIONNAME1,'n/a') end end end
end as NEW
,ChangeAgentID
from
(select
isnull(V1.AUDITRECORDID, V2.AUDITRECORDID) as RECORDID
,isnull(V1.AUDITCHANGEAGENTID,V2.AUDITCHANGEAGENTID) as CHANGEAGENTID
,isnull(V1.AUDITDATE, V2.AUDITDATE) as AUDITDATE
,V1.AUDITTYPECODE as AUDITTYPECODE1
,V2.AUDITTYPECODE as AUDITTYPECODE2
,V1.DESIGNATIONID as DESIGNATIONID1
,V2.DESIGNATIONID as DESIGNATIONID2
,DESIGNATION.NAME as DESIGNATIONNAME1
,DESIGNATION2.NAME as DESIGNATIONNAME2
from
(select
RSA.AUDITRECORDID
,RSA.AUDITKEY
,RSA.AUDITCHANGEAGENTID
,RSA.DATECHANGED as AUDITDATE
,RSA.AUDITTYPECODE
,RSA.DESIGNATIONID
from REVENUESPLIT_EXTAUDIT RSA
inner join @LineItems LI on LI.ID = RSA.AUDITRECORDID
where RSA.AUDITTYPECODE = 1
union all
select
RS.ID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RS.ADDEDBYID
,RS.DATEADDED
,-1 as AUDITTYPECODE
,RS.DESIGNATIONID
from REVENUESPLIT_EXT RS
inner join @LineItems LI on LI.ID = RS.ID
where RS.ID not in (select RSA.AUDITRECORDID
from dbo.REVENUESPLIT_EXTAUDIT RSA
inner join @LineItems LI on LI.ID = RSA.AUDITRECORDID
where RSA.AUDITTYPECODE = 0)
union all
select
AUDITRECORDID
,AUDITKEY
,AUDITCHANGEAGENTID
,AUDITDATE
,AUDITTYPECODE
,DESIGNATIONID
from (
select
RSA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RSA.AUDITCHANGEAGENTID
,RSA.DATEADDED [AUDITDATE]
,-1 as AUDITTYPECODE
,RSA.DESIGNATIONID
,ROW_NUMBER() over (partition by RSA.AUDITRECORDID order by RSA.AUDITDATE asc) SEQUENCE
from REVENUESPLIT_EXTAUDIT RSA
inner join @LineItems LI on LI.ID = RSA.AUDITRECORDID
where RSA.AUDITTYPECODE = 0) BEFOREUPDATES
where BEFOREUPDATES.SEQUENCE = 1
union all
select
RSA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RSA.AUDITCHANGEAGENTID
,RSA.DATEADDED [AUDITDATE]
,RSA.AUDITTYPECODE
,RSA.DESIGNATIONID
from REVENUESPLIT_EXTAUDIT RSA
inner join @LineItems LI on LI.ID = RSA.AUDITRECORDID
where RSA.AUDITTYPECODE = 2 and RSA.AUDITRECORDID not in (
select ID from dbo.FINANCIALTRANSACTIONLINEITEM where FINANCIALTRANSACTIONID = @REVENUEID
union all
select AUDITRECORDID
from REVENUESPLIT_EXTAUDIT
inner join @LineItems LI on LI.ID = AUDITRECORDID
where AUDITTYPECODE != 2)
union all
select
LI.ID [AUDITRECORDID]
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,LI.CHANGEDBYID [AUDITCHANGEAGENTID]
,LI.DELETEDON [AUDITDATE]
,999 [AUDITTYPECODE]
,RSE.DESIGNATIONID
from @LineItems Filter
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = Filter.ID
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = LI.ID
where LI.DELETEDON is not null
) V1
full outer join
(select
RSA.AUDITRECORDID
,RSA.AUDITKEY
,RSA.AUDITCHANGEAGENTID
,RSA.AUDITDATE
,RSA.AUDITTYPECODE
,RSA.DESIGNATIONID
from REVENUESPLIT_EXTAUDIT RSA
inner join @LineItems LI on LI.ID = RSA.AUDITRECORDID
where RSA.AUDITTYPECODE in (0,2)) V2 on V1.AUDITRECORDID = V2.AUDITRECORDID and V1.AUDITKEY = V2.AUDITKEY
left join dbo.DESIGNATION on V1.DESIGNATIONID = DESIGNATION.ID
left join dbo.DESIGNATION as DESIGNATION2 on V2.DESIGNATIONID = DESIGNATION2.ID
where
(V1.DESIGNATIONID != V2.DESIGNATIONID
or (V1.DESIGNATIONID is null and V2.DESIGNATIONID is not null)
or (V1.DESIGNATIONID is not null and V2.DESIGNATIONID is null)
)
) V3
cross join (
select 1 as NUM) as NUMS) V4
inner join dbo.CHANGEAGENT on V4.CHANGEAGENTID = CHANGEAGENT.ID
where OLD is not null;
return;
end