UFN_AUDIT_GETDETAILSFORREVENUECATEGORY
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_AUDIT_GETDETAILSFORREVENUECATEGORY](@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 @IDs table (ID uniqueidentifier primary key)
insert into @IDs (ID)
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
,110 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 'Insert' end as [ACTION]
,'Revenue Category:' + case NUMS.NUM when 1 then 'GLREVENUECATEGORYMAPPINGID' end as FIELD
,case NUMS.NUM
when 1 then case V3.AUDITTYPECODE1 when -1 then 'n/a' else case when V3.GLREVENUECATEGORYMAPPINGID1 = V3.GLREVENUECATEGORYMAPPINGID2 then null else isnull(V3.REVENUECATEGORYNAME2,'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.GLREVENUECATEGORYMAPPINGID1 = V3.GLREVENUECATEGORYMAPPINGID2 then null else isnull(V3.REVENUECATEGORYNAME1,'n/a') 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.GLREVENUECATEGORYMAPPINGID as GLREVENUECATEGORYMAPPINGID1
,V2.GLREVENUECATEGORYMAPPINGID as GLREVENUECATEGORYMAPPINGID2
,GLREVENUECATEGORYMAPPING.REVENUECATEGORYNAME as REVENUECATEGORYNAME1
,GLREVENUECATEGORYMAPPING2.REVENUECATEGORYNAME as REVENUECATEGORYNAME2
from
(select
RRA.AUDITRECORDID
,RRA.AuditKey
,RRA.AuditChangeAgentID
,RRA.DATECHANGED as AUDITDATE
,RRA.AUDITTYPECODE
,RRA.GLREVENUECATEGORYMAPPINGID
from REVENUECATEGORYAUDIT RRA
inner join @IDs as IDs on RRA.AUDITRECORDID = IDs.ID
where RRA.AUDITTYPECODE = 1
union all
select
RR.ID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RR.ADDEDBYID
,RR.DATEADDED
,-1 as AUDITTYPECODE
,RR.GLREVENUECATEGORYMAPPINGID
from dbo.REVENUECATEGORY RR
inner join @IDs as IDs on RR.ID = IDs.ID
where RR.ID not in (select RRA.AUDITRECORDID
from dbo.REVENUECATEGORYAUDIT RRA
inner join @IDs as IDs on RRA.AUDITRECORDID = IDs.ID
where RRA.AUDITTYPECODE = 0)
union all
select
AUDITRECORDID
,AUDITKEY
,AUDITCHANGEAGENTID
,AUDITDATE
,AUDITTYPECODE
,GLREVENUECATEGORYMAPPINGID
from (
select
RRA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RRA.AUDITCHANGEAGENTID
,RRA.DATEADDED [AUDITDATE]
,RRA.AUDITTYPECODE
,RRA.GLREVENUECATEGORYMAPPINGID
,ROW_NUMBER() over (partition by RRA.AUDITRECORDID order by RRA.AUDITDATE asc) SEQUENCE
from REVENUECATEGORYAUDIT RRA
inner join @IDs as IDs on RRA.AUDITRECORDID = IDs.ID
where RRA.AUDITTYPECODE = 0) BEFOREUPDATES
where BEFOREUPDATES.SEQUENCE = 1
union all
select
RRA.AUDITRECORDID
,'00000000-0000-0000-0000-000000000000' as AUDITKEY
,RRA.AUDITCHANGEAGENTID
,RRA.DATEADDED [AUDITDATE]
,RRA.AUDITTYPECODE
,RRA.GLREVENUECATEGORYMAPPINGID
from REVENUECATEGORYAUDIT RRA
inner join @IDs as IDs on RRA.AUDITRECORDID = IDs.ID
where RRA.AUDITTYPECODE = 2 and RRA.AUDITRECORDID not in (
select ID from dbo.REVENUECATEGORY
union all
select AUDITRECORDID from REVENUECATEGORYAUDIT where REVENUECATEGORYAUDIT.AUDITTYPECODE != 2)
) V1
full outer join
(select
RRA.AUDITRECORDID
,RRA.AUDITKEY
,RRA.AUDITCHANGEAGENTID
,RRA.AUDITDATE
,RRA.AUDITTYPECODE
,RRA.GLREVENUECATEGORYMAPPINGID
from REVENUECATEGORYAUDIT RRA
inner join @IDs as IDs on RRA.AUDITRECORDID = IDs.ID
where RRA.AUDITTYPECODE in (0,2)) V2 on V1.AUDITRECORDID = V2.AUDITRECORDID and V1.AUDITKEY = V2.AUDITKEY
left join dbo.GLREVENUECATEGORYMAPPING on V1.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING.ID
left join dbo.GLREVENUECATEGORYMAPPING as GLREVENUECATEGORYMAPPING2 on V2.GLREVENUECATEGORYMAPPINGID = GLREVENUECATEGORYMAPPING2.ID
where
(V1.GLREVENUECATEGORYMAPPINGID != V2.GLREVENUECATEGORYMAPPINGID
or (V1.GLREVENUECATEGORYMAPPINGID is null and V2.GLREVENUECATEGORYMAPPINGID is not null)
or (V1.GLREVENUECATEGORYMAPPINGID is not null and V2.GLREVENUECATEGORYMAPPINGID 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