UFN_GET_PROPERTYDETAILAUDIT_FROM_FTM
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_GET_PROPERTYDETAILAUDIT_FROM_FTM() returns table
return
WITH Audit_CTE
as (
select T.AUDITID
,T.AUDITRECORDID
,T.AUDITKEY
,T.AUDITTYPECODE
,T.FT_COUNT
,T.RE_COUNT
,DENSE_RANK() over (PARTITION by T.AUDITRECORDID order by T.RE_RECORDID asc) [RANK]
,T.AUDITCHANGEAGENTID
,T.AUDITDATE
,T.AUDITTYPE
,T.PROPERTYSUBTYPECODEID
,T.SALEDATE
,T.SALEAMOUNT
,T.BROKERFEE
,T.SALEPOSTDATE
,T.SALEPOSTSTATUSCODE
,T.ADDEDBYID
,T.CHANGEDBYID
,T.DATEADDED
,T.DATECHANGED
,T.ORGANIZATIONSALEAMOUNT
,T.ORGANIZATIONBROKERFEE
,T.TRANSACTIONSALEAMOUNT
,T.TRANSACTIONBROKERFEE
,T.BASECURRENCYID
,T.ORGANIZATIONEXCHANGERATEID
,T.TRANSACTIONCURRENCYID
,T.BASEEXCHANGERATEID
from (
select FT.AUDITID
,null [RE_RECORDID]
,FT.AUDITRECORDID
,FT.AUDITTYPECODE
,ROW_NUMBER() over (PARTITION by FT.AUDITRECORDID order by FT.AUDITDATE, FT.AUDITTYPECODE asc) [FT_COUNT]
,ROW_NUMBER() over (PARTITION by FT.AUDITRECORDID order by FT.AUDITDATE, FT.AUDITTYPECODE desc) [RE_COUNT]
,FT.AUDITKEY
,FT.AUDITCHANGEAGENTID
,FT.AUDITDATE
,FT.AUDITTYPE
,null [PROPERTYSUBTYPECODEID]
,null [SALEDATE]
,case PROPERTYDETAIL_EXT.ISNEGATIVE when 0 then FT.BASEAMOUNT else -1 * FT.BASEAMOUNT end as SALEAMOUNT
,null [BROKERFEE]
,FT.POSTDATE as SALEPOSTDATE
,isnull(cast(case FT.POSTSTATUSCODE when 2 then 0 when 1 then 1 when 3 then 2 end as tinyint), 2) as SALEPOSTSTATUSCODE
,FT.ADDEDBYID
,FT.CHANGEDBYID
,FT.DATEADDED
,FT.DATECHANGED
,case PROPERTYDETAIL_EXT.ISNEGATIVE when 0 then FT.ORGAMOUNT else -1 * FT.ORGAMOUNT end as ORGANIZATIONSALEAMOUNT
,null [ORGANIZATIONBROKERFEE]
,case PROPERTYDETAIL_EXT.ISNEGATIVE when 0 then FT.TRANSACTIONAMOUNT else -1 * FT.TRANSACTIONAMOUNT end as TRANSACTIONSALEAMOUNT
,null [TRANSACTIONBROKERFEE]
,CS.BASECURRENCYID
,FT.ORGEXCHANGERATEID as ORGANIZATIONEXCHANGERATEID
,FT.TRANSACTIONCURRENCYID
,FT.BASEEXCHANGERATEID
from dbo.FINANCIALTRANSACTIONAUDIT FT
left join dbo.PROPERTYDETAIL_EXT on FT.AUDITRECORDID = PROPERTYDETAIL_EXT.ID
left join dbo.PDACCOUNTSYSTEM S on FT.PDACCOUNTSYSTEMID = S.ID
left join dbo.CURRENCYSET CS on CS.ID = S.CURRENCYSETID
where FT.TYPECODE = 22
union all
select RE.AUDITID
,RE.AUDITRECORDID [RE_RECORDID]
,RE.AUDITRECORDID
,RE.AUDITTYPECODE
,ROW_NUMBER() over (PARTITION by RE.AUDITRECORDID order by RE.AUDITDATE, RE.AUDITTYPECODE asc) [FT_COUNT]
,ROW_NUMBER() over (PARTITION by RE.AUDITRECORDID order by RE.AUDITDATE, RE.AUDITTYPECODE desc) [RE_COUNT]
,RE.AUDITKEY
,RE.AUDITCHANGEAGENTID
,RE.AUDITDATE
,RE.AUDITTYPE
,RE.PROPERTYSUBTYPECODEID
,RE.SALEDATE
,null [SALEAMOUNT]
,RE.TRANSACTIONBROKERFEE as BROKERFEE
,null [SALEPOSTDATE]
,null [SALEPOSTSTATUSCODE]
,RE.ADDEDBYID
,RE.CHANGEDBYID
,RE.DATEADDED
,RE.DATECHANGED
,null [ORGANIZATIONSALEAMOUNT]
,RE.ORGANIZATIONBROKERFEE
,null [TRANSACTIONSALEAMOUNT]
,RE.BROKERFEE as TRANSACTIONBROKERFEE
,CS.BASECURRENCYID
,null [ORGANIZATIONEXCHANGERATEID]
,null [TRANSACTIONCURRENCYID]
,null [BASEEXCHANGERATEID]
from dbo.PROPERTYDETAIL_EXTAUDIT RE
left join dbo.FINANCIALTRANSACTION FT on FT.ID = RE.AUDITRECORDID
left join dbo.PDACCOUNTSYSTEM S on FT.PDACCOUNTSYSTEMID = S.ID
left join dbo.CURRENCYSET CS on CS.ID = S.CURRENCYSETID
) T
)
select CTE1.AUDITID
,CTE1.AUDITRECORDID
,CTE1.AUDITKEY
,CTE1.AUDITCHANGEAGENTID
,CTE1.AUDITDATE
,CTE1.AUDITTYPECODE
,CTE1.AUDITTYPE
,coalesce(CTE1.PROPERTYSUBTYPECODEID, CTE2.PROPERTYSUBTYPECODEID, CASE WHEN CTE2.AUDITID is null THEN RE.PROPERTYSUBTYPECODEID ELSE NULL END) PROPERTYSUBTYPECODEID
,coalesce(CTE1.SALEDATE, CTE2.SALEDATE, CASE WHEN CTE2.AUDITID is null THEN RE.SALEDATE ELSE NULL END) SALEDATE
,coalesce(CTE1.SALEAMOUNT, CTE2.SALEAMOUNT, CASE WHEN CTE2.AUDITID is null THEN case RE.ISNEGATIVE when 0 then FT.BASEAMOUNT else -1 * FT.BASEAMOUNT end ELSE NULL END) SALEAMOUNT
,coalesce(CTE1.BROKERFEE, CTE2.BROKERFEE, CASE WHEN CTE2.AUDITID is null THEN RE.TRANSACTIONBROKERFEE ELSE NULL END) BROKERFEE
,coalesce(CTE1.SALEPOSTDATE, CTE2.SALEPOSTDATE, CASE WHEN CTE2.AUDITID is null THEN FT.POSTDATE ELSE NULL END) SALEPOSTDATE
,coalesce(CTE1.SALEPOSTSTATUSCODE, CTE2.SALEPOSTSTATUSCODE, CASE WHEN CTE2.AUDITID is null THEN cast(case FT.POSTSTATUSCODE when 2 then 0 when 1 then 1 when 3 then 2 end as tinyint) ELSE NULL END) SALEPOSTSTATUSCODE
,CTE1.ADDEDBYID
,CTE1.CHANGEDBYID
,CTE1.DATEADDED
,CTE1.DATECHANGED
,coalesce(CTE1.ORGANIZATIONSALEAMOUNT, CTE2.ORGANIZATIONSALEAMOUNT, CASE WHEN CTE2.AUDITID is null THEN case RE.ISNEGATIVE when 0 then FT.ORGAMOUNT else -1 * FT.ORGAMOUNT end ELSE NULL END) ORGANIZATIONSALEAMOUNT
,coalesce(CTE1.ORGANIZATIONBROKERFEE, CTE2.ORGANIZATIONBROKERFEE, CASE WHEN CTE2.AUDITID is null THEN RE.ORGANIZATIONBROKERFEE ELSE NULL END) ORGANIZATIONBROKERFEE
,coalesce(CTE1.TRANSACTIONSALEAMOUNT, CTE2.TRANSACTIONSALEAMOUNT, CASE WHEN CTE2.AUDITID is null THEN case RE.ISNEGATIVE when 0 then FT.TRANSACTIONAMOUNT else -1 * FT.TRANSACTIONAMOUNT end ELSE NULL END) TRANSACTIONSALEAMOUNT
,coalesce(CTE1.TRANSACTIONBROKERFEE, CTE2.TRANSACTIONBROKERFEE, CASE WHEN CTE2.AUDITID is null THEN RE.BROKERFEE ELSE NULL END) TRANSACTIONBROKERFEE
,coalesce(CTE1.BASECURRENCYID, CTE2.BASECURRENCYID) BASECURRENCYID
,coalesce(CTE1.ORGANIZATIONEXCHANGERATEID, CTE2.ORGANIZATIONEXCHANGERATEID, CASE WHEN CTE2.AUDITID is null THEN FT.ORGEXCHANGERATEID ELSE NULL END) ORGANIZATIONEXCHANGERATEID
,coalesce(CTE1.TRANSACTIONCURRENCYID, CTE2.TRANSACTIONCURRENCYID, CASE WHEN CTE2.AUDITID is null THEN FT.TRANSACTIONCURRENCYID ELSE NULL END) TRANSACTIONCURRENCYID
,coalesce(CTE1.BASEEXCHANGERATEID, CTE2.BASEEXCHANGERATEID, CASE WHEN CTE2.AUDITID is null THEN FT.BASEEXCHANGERATEID ELSE NULL END) BASEEXCHANGERATEID
from Audit_CTE [CTE1]
left join Audit_CTE [CTE2] on (CTE1.AUDITRECORDID = CTE2.AUDITRECORDID) and (CTE1.AUDITTYPECODE != 2 and (((CTE1.[RANK] - 1 = CTE2.[RANK]) and (CTE2.RE_COUNT = 1)) or ((CTE1.[RANK] + 1 = CTE2.[RANK]) and (CTE2.FT_COUNT = 1))) or (CTE1.AUDITTYPECODE = 2 and CTE2.AUDITTYPECODE = 2 and CTE1.AUDITID != CTE2.AUDITID))
left join dbo.FINANCIALTRANSACTION FT on FT.ID = CTE1.AUDITRECORDID
left join dbo.PROPERTYDETAIL_EXT RE on RE.ID = CTE1.AUDITRECORDID;