UFN_GET_REVENUEAUDIT_FROM_FTM

Return

Return Type
table

Definition

Copy


CREATE function dbo.UFN_GET_REVENUEAUDIT_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.CONSTITUENTID
            ,T.[DATE]
            ,T.BATCHNUMBER
            ,T.POSTDATE
            ,T.DONOTPOST
            ,T.DONOTRECEIPT
            ,T.RECEIPTAMOUNT
            ,T.AMOUNT
            ,T.SOURCECODE
            ,T.FINDERNUMBER
            ,T.APPEALID
            ,T.MAILINGID
            ,T.CHANNELCODEID
            ,T.GIVENANONYMOUSLY
            ,T.DONOTACKNOWLEDGE
            ,T.BENEFITSWAIVED
            ,T.ADDEDBYID
            ,T.CHANGEDBYID
            ,T.DATEADDED
            ,T.DATECHANGED
            ,T.RECEIPTTYPECODE
            ,T.NEEDSRERECEIPT
            ,T.TRANSACTIONTYPECODE
            ,T.ELIGIBLEFORMATCHINGGIFTCLAIM
            ,T.CUSTOMIDENTIFIER
            ,T.SEQUENCEID
            ,T.ISREIMBURSABLE
            ,T.BASECURRENCYID
            ,T.ORGANIZATIONAMOUNT
            ,T.TRANSACTIONAMOUNT
            ,T.TRANSACTIONCURRENCYID
            ,T.ORGANIZATIONEXCHANGERATEID
            ,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
                ,FT.CONSTITUENTID
                ,cast(FT.[DATE] as datetime) [DATE]
                ,null [BATCHNUMBER]
                ,FT.POSTDATE
                ,CASE WHEN FT.POSTSTATUSCODE = 3 THEN 1 ELSE 0 END [DONOTPOST]
                ,null [DONOTRECEIPT]
                ,null [RECEIPTAMOUNT]
                ,FT.BASEAMOUNT [AMOUNT]
                ,null [SOURCECODE]
                ,null [FINDERNUMBER]
                ,null [APPEALID]
                ,null [MAILINGID]
                ,null [CHANNELCODEID]
                ,null [GIVENANONYMOUSLY]
                ,null [DONOTACKNOWLEDGE]
                ,null [BENEFITSWAIVED]
                ,FT.ADDEDBYID
                ,FT.CHANGEDBYID
                ,FT.DATEADDED
                ,FT.DATECHANGED
                ,null [RECEIPTTYPECODE]
                ,null [NEEDSRERECEIPT]
                ,FT.TYPECODE [TRANSACTIONTYPECODE]
                ,null [ELIGIBLEFORMATCHINGGIFTCLAIM]
                ,FT.USERDEFINEDID [CUSTOMIDENTIFIER]
                ,null [SEQUENCEID]
                ,null [ISREIMBURSABLE]
                ,CS.BASECURRENCYID
                ,FT.ORGAMOUNT [ORGANIZATIONAMOUNT]
                ,FT.TRANSACTIONAMOUNT [TRANSACTIONAMOUNT]
                ,FT.TRANSACTIONCURRENCYID
                ,FT.ORGEXCHANGERATEID [ORGANIZATIONEXCHANGERATEID]
                ,FT.BASEEXCHANGERATEID
            from dbo.FINANCIALTRANSACTIONAUDIT FT
            left join dbo.PDACCOUNTSYSTEM S on FT.PDACCOUNTSYSTEMID = S.ID
            left join dbo.CURRENCYSET CS on CS.ID = S.CURRENCYSETID
            where FT.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15)

            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
                ,null [CONSTITUENTID]
                ,null [DATE]
                ,RE.BATCHNUMBER
                ,null [POSTDATE]
                ,null [DONOTPOST]
                ,RE.DONOTRECEIPT
                ,RE.RECEIPTAMOUNT
                ,FT.BASEAMOUNT [AMOUNT]
                ,RE.SOURCECODE
                ,RE.FINDERNUMBER
                ,RE.APPEALID
                ,RE.MAILINGID
                ,RE.CHANNELCODEID
                ,RE.GIVENANONYMOUSLY
                ,RE.DONOTACKNOWLEDGE
                ,RE.BENEFITSWAIVED
                ,RE.ADDEDBYID
                ,RE.CHANGEDBYID
                ,RE.DATEADDED
                ,RE.DATECHANGED
                ,RE.RECEIPTTYPECODE
                ,RE.NEEDSRERECEIPT
                ,null [TRANSACTIONTYPECODE]
                ,RE.ELIGIBLEFORMATCHINGGIFTCLAIM
                ,FT.USERDEFINEDID
                ,1
                ,RE.ISREIMBURSABLE
                ,CS.BASECURRENCYID
                ,FT.ORGAMOUNT [ORGANIZATIONAMOUNT]
                ,null [TRANSACTIONAMOUNT]
                ,null TRANSACTIONCURRENCYID
                ,null [ORGANIZATIONEXCHANGERATEID]
                ,null [BASEEXCHANGERATEID]
            from dbo.REVENUE_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.CONSTITUENTID, CTE2.CONSTITUENTID, CASE WHEN CTE2.AUDITID is null THEN FT.CONSTITUENTID ELSE NULL END) CONSTITUENTID
        ,coalesce(CTE1.[DATE], CTE2.[DATE], CASE WHEN CTE2.AUDITID is null THEN cast(FT.[DATE] as datetime) ELSE NULL END) [DATE]
        ,coalesce(CTE1.BATCHNUMBER, CTE2.BATCHNUMBER, CASE WHEN CTE2.AUDITID is null THEN RE.BATCHNUMBER ELSE NULL END) BATCHNUMBER
        ,coalesce(CTE1.POSTDATE, CTE2.POSTDATE, CASE WHEN CTE2.AUDITID is null THEN FT.POSTDATE ELSE NULL END) POSTDATE
        ,coalesce(CTE1.DONOTPOST, CTE2.DONOTPOST, CASE WHEN CTE2.AUDITID is null THEN CASE WHEN FT.POSTSTATUSCODE = 3 THEN 1 ELSE 0 END ELSE NULL END) DONOTPOST
        ,coalesce(CTE1.DONOTRECEIPT, CTE2.DONOTRECEIPT, CASE WHEN CTE2.AUDITID is null THEN RE.DONOTRECEIPT ELSE NULL END) DONOTRECEIPT
        ,coalesce(CTE1.RECEIPTAMOUNT, CTE2.RECEIPTAMOUNT, CASE WHEN CTE2.AUDITID is null THEN RE.RECEIPTAMOUNT ELSE NULL END) RECEIPTAMOUNT
        ,coalesce(CTE1.AMOUNT, CTE2.AMOUNT, CASE WHEN CTE2.AUDITID is null THEN FT.BASEAMOUNT ELSE NULL END) AMOUNT
        ,coalesce(CTE1.SOURCECODE, CTE2.SOURCECODE, CASE WHEN CTE2.AUDITID is null THEN RE.SOURCECODE ELSE NULL END) SOURCECODE
        ,coalesce(CTE1.FINDERNUMBER, CTE2.FINDERNUMBER, CASE WHEN CTE2.AUDITID is null THEN RE.FINDERNUMBER ELSE NULL END) FINDERNUMBER
        ,coalesce(CTE1.APPEALID, CTE2.APPEALID, CASE WHEN CTE2.AUDITID is null THEN RE.APPEALID ELSE NULL END) APPEALID
        ,coalesce(CTE1.MAILINGID, CTE2.MAILINGID, CASE WHEN CTE2.AUDITID is null THEN RE.MAILINGID ELSE NULL END) MAILINGID
        ,coalesce(CTE1.CHANNELCODEID, CTE2.CHANNELCODEID, CASE WHEN CTE2.AUDITID is null THEN RE.CHANNELCODEID ELSE NULL END) CHANNELCODEID
        ,coalesce(CTE1.GIVENANONYMOUSLY, CTE2.GIVENANONYMOUSLY, CASE WHEN CTE2.AUDITID is null THEN RE.GIVENANONYMOUSLY ELSE NULL END) GIVENANONYMOUSLY
        ,coalesce(CTE1.DONOTACKNOWLEDGE, CTE2.DONOTACKNOWLEDGE, CASE WHEN CTE2.AUDITID is null THEN RE.DONOTACKNOWLEDGE ELSE NULL END) DONOTACKNOWLEDGE
        ,coalesce(CTE1.BENEFITSWAIVED, CTE2.BENEFITSWAIVED, CASE WHEN CTE2.AUDITID is null THEN RE.BENEFITSWAIVED ELSE NULL END) BENEFITSWAIVED
        ,CTE1.ADDEDBYID
        ,CTE1.CHANGEDBYID
        ,CTE1.DATEADDED
        ,CTE1.DATECHANGED
        ,coalesce(CTE1.RECEIPTTYPECODE, CTE2.RECEIPTTYPECODE, CASE WHEN CTE2.AUDITID is null THEN RE.RECEIPTTYPECODE ELSE NULL END) RECEIPTTYPECODE
        ,coalesce(CTE1.NEEDSRERECEIPT, CTE2.NEEDSRERECEIPT, CASE WHEN CTE2.AUDITID is null THEN RE.NEEDSRERECEIPT ELSE NULL END) NEEDSRERECEIPT
        ,coalesce(CTE1.TRANSACTIONTYPECODE, CTE2.TRANSACTIONTYPECODE, CASE WHEN CTE2.AUDITID is null THEN FT.TYPECODE ELSE NULL END) TRANSACTIONTYPECODE
        ,coalesce(CTE1.ELIGIBLEFORMATCHINGGIFTCLAIM, CTE2.ELIGIBLEFORMATCHINGGIFTCLAIM, CASE WHEN CTE2.AUDITID is null THEN RE.ELIGIBLEFORMATCHINGGIFTCLAIM ELSE NULL END) ELIGIBLEFORMATCHINGGIFTCLAIM
        ,coalesce(CTE1.CUSTOMIDENTIFIER, CTE2.CUSTOMIDENTIFIER, CASE WHEN CTE2.AUDITID is null THEN FT.USERDEFINEDID ELSE NULL END) CUSTOMIDENTIFIER
        ,coalesce(CTE1.SEQUENCEID, CTE2.SEQUENCEID, CASE WHEN CTE2.AUDITID is null THEN 1 ELSE NULL END) SEQUENCEID
        ,coalesce(CTE1.ISREIMBURSABLE, CTE2.ISREIMBURSABLE, CASE WHEN CTE2.AUDITID is null THEN RE.ISREIMBURSABLE ELSE NULL END) ISREIMBURSABLE
        ,coalesce(CTE1.BASECURRENCYID, CTE2.BASECURRENCYID) BASECURRENCYID
        ,coalesce(CTE1.ORGANIZATIONAMOUNT, CTE2.ORGANIZATIONAMOUNT, CASE WHEN CTE2.AUDITID is null THEN FT.ORGAMOUNT ELSE NULL END) ORGANIZATIONAMOUNT
        ,coalesce(CTE1.TRANSACTIONAMOUNT, CTE2.TRANSACTIONAMOUNT, CASE WHEN CTE2.AUDITID is null THEN FT.TRANSACTIONAMOUNT ELSE NULL END) TRANSACTIONAMOUNT
        ,coalesce(CTE1.TRANSACTIONCURRENCYID, CTE2.TRANSACTIONCURRENCYID, CASE WHEN CTE2.AUDITID is null THEN FT.TRANSACTIONCURRENCYID ELSE NULL END) TRANSACTIONCURRENCYID
        ,coalesce(CTE1.ORGANIZATIONEXCHANGERATEID, CTE2.ORGANIZATIONEXCHANGERATEID, CASE WHEN CTE2.AUDITID is null THEN FT.ORGEXCHANGERATEID ELSE NULL END) ORGANIZATIONEXCHANGERATEID
        ,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.REVENUE_EXT RE on RE.ID = CTE1.AUDITRECORDID;