REVENUEBENEFITAUDIT

Fields

Field Field Type Null Description
AUDITID uniqueidentifier
AUDITRECORDID uniqueidentifier
AUDITKEY uniqueidentifier
AUDITCHANGEAGENTID uniqueidentifier
AUDITDATE datetime
AUDITTYPECODE tinyint
AUDITTYPE nvarchar(13) yes
REVENUEID uniqueidentifier yes
BENEFITID uniqueidentifier yes
QUANTITY int yes
UNITVALUE money yes
DETAILS nvarchar(700) yes
SEQUENCE int yes
ADDEDBYID uniqueidentifier yes
CHANGEDBYID uniqueidentifier yes
DATEADDED datetime yes
DATECHANGED datetime yes
SENDBENEFIT tinyint yes
PERCENTAPPLICABLEAMOUNT money yes
VALUEPERCENT decimal(20, 4) yes
TRANSACTIONTOTALVALUE money yes
ORGANIZATIONTOTALVALUE money yes
BASECURRENCYID uniqueidentifier yes
TRANSACTIONCURRENCYID int yes
BASEEXCHANGERATEID int yes
ORGANIZATIONEXCHANGERATEID int yes
REVENUESPLITID uniqueidentifier yes

Definition

Copy

CREATE view [dbo].[REVENUEBENEFITAUDIT] as 
        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.REVENUEID
            ,T.BENEFITID
            ,T.QUANTITY
            ,T.UNITVALUE
            ,T.DETAILS
            ,T.SEQUENCE
            ,T.ADDEDBYID
            ,T.CHANGEDBYID
            ,T.DATEADDED
            ,T.DATECHANGED
            ,T.SENDBENEFIT
            ,T.PERCENTAPPLICABLEAMOUNT
            ,T.VALUEPERCENT
            ,T.TRANSACTIONTOTALVALUE
            ,T.ORGANIZATIONTOTALVALUE
            ,T.BASECURRENCYID
            ,T.TRANSACTIONCURRENCYID
            ,T.BASEEXCHANGERATEID
            ,T.ORGANIZATIONEXCHANGERATEID
            ,T.REVENUESPLITID
        from (
            select FTLI.AUDITID
                ,null [RE_RECORDID]
                ,FTLI.AUDITRECORDID
                ,FTLI.AUDITTYPECODE
                ,ROW_NUMBER() over (PARTITION by FTLI.AUDITRECORDID order by FTLI.AUDITDATE, FTLI.AUDITTYPECODE asc) [FT_COUNT]
                ,ROW_NUMBER() over (PARTITION by FTLI.AUDITRECORDID order by FTLI.AUDITDATE, FTLI.AUDITTYPECODE desc) [RE_COUNT]
                ,FTLI.AUDITKEY
                ,FTLI.AUDITCHANGEAGENTID
                ,FTLI.AUDITDATE
                ,FTLI.AUDITTYPE
                ,FTLI.FINANCIALTRANSACTIONID as REVENUEID
                ,null as BENEFITID
                ,FTLI.QUANTITY
                ,FTLI.UNITVALUE
                ,FTLI.DESCRIPTION as DETAILS
                ,FTLI.SEQUENCE
                ,FTLI.ADDEDBYID
                ,FTLI.CHANGEDBYID
                ,FTLI.DATEADDED
                ,FTLI.DATECHANGED
                ,null as SENDBENEFIT
                ,null as PERCENTAPPLICABLEAMOUNT
                ,null as VALUEPERCENT
                ,FTLI.TRANSACTIONAMOUNT as TRANSACTIONTOTALVALUE
                ,FTLI.ORGAMOUNT as ORGANIZATIONTOTALVALUE
                ,NULL as BASECURRENCYID-- Currency exchange rates are now in the parent table, so we won't do the history here.
                ,NULL as TRANSACTIONCURRENCYID
                ,NULL as BASEEXCHANGERATEID
                ,NULL as ORGANIZATIONEXCHANGERATEID
                ,null as REVENUESPLITID
            from dbo.FINANCIALTRANSACTIONLINEITEMAUDIT FTLI
            where FTLI.TYPECODE = 3

            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 as REVENUEID
                ,RE.BENEFITID
                ,null as QUANTITY
                ,null as UNITVALUE
                ,null as DETAILS
                ,null as SEQUENCE
                ,RE.ADDEDBYID
                ,RE.CHANGEDBYID
                ,RE.DATEADDED
                ,RE.DATECHANGED
                ,RE.SENDBENEFIT
                ,RE.PERCENTAPPLICABLEAMOUNT
                ,RE.VALUEPERCENT
                ,null as TRANSACTIONTOTALVALUE
                ,null as ORGANIZATIONTOTALVALUE
                ,CS.BASECURRENCYID
                ,null as TRANSACTIONCURRENCYID
                ,null as BASEEXCHANGERATEID
                ,null as ORGANIZATIONEXCHANGERATEID
                ,RE.REVENUESPLITID
            from dbo.REVENUEBENEFIT_EXTAUDIT RE
            left join dbo.FINANCIALTRANSACTIONLINEITEM on RE.AUDITRECORDID = FINANCIALTRANSACTIONLINEITEM.ID
            left join dbo.FINANCIALTRANSACTION FT on FT.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
            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.REVENUEID, CTE2.REVENUEID, CASE WHEN CTE2.AUDITID is null THEN FT.FINANCIALTRANSACTIONID ELSE NULL END) REVENUEID
        ,coalesce(CTE1.BENEFITID, CTE2.BENEFITID, CASE WHEN CTE2.AUDITID is null THEN RE.BENEFITID ELSE NULL END) BENEFITID
        ,cast(coalesce(CTE1.QUANTITY, CTE2.QUANTITY, CASE WHEN CTE2.AUDITID is null THEN FT.QUANTITY ELSE null end) as int) QUANTITY
        ,coalesce(CTE1.UNITVALUE, CTE2.UNITVALUE, CASE WHEN CTE2.AUDITID is null THEN FT.UNITVALUE ELSE null end) UNITVALUE
        ,coalesce(CTE1.DETAILS, CTE2.DETAILS, CASE WHEN CTE2.AUDITID is null THEN FT.DESCRIPTION ELSE NULL END) DETAILS
        ,coalesce(CTE1.SEQUENCE, CTE2.SEQUENCE, CASE WHEN CTE2.AUDITID is null THEN FT.SEQUENCE ELSE NULL END) SEQUENCE
        ,CTE1.ADDEDBYID
        ,CTE1.CHANGEDBYID
        ,CTE1.DATEADDED
        ,CTE1.DATECHANGED
        ,coalesce(CTE1.SENDBENEFIT, CTE2.SENDBENEFIT, CASE WHEN CTE2.AUDITID is null THEN RE.SENDBENEFIT ELSE NULL END) SENDBENEFIT
        ,coalesce(CTE1.PERCENTAPPLICABLEAMOUNT, CTE2.PERCENTAPPLICABLEAMOUNT, CASE WHEN CTE2.AUDITID is null THEN RE.PERCENTAPPLICABLEAMOUNT ELSE NULL END) PERCENTAPPLICABLEAMOUNT
        ,coalesce(CTE1.VALUEPERCENT, CTE2.VALUEPERCENT, CASE WHEN CTE2.AUDITID is null THEN RE.VALUEPERCENT ELSE NULL END) VALUEPERCENT
        ,coalesce(CTE1.TRANSACTIONTOTALVALUE, CTE2.TRANSACTIONTOTALVALUE, CASE WHEN CTE2.AUDITID is null THEN FT.TRANSACTIONAMOUNT ELSE NULL END) TRANSACTIONTOTALVALUE
        ,coalesce(CTE1.ORGANIZATIONTOTALVALUE, CTE2.ORGANIZATIONTOTALVALUE, CASE WHEN CTE2.AUDITID is null THEN FT.ORGAMOUNT ELSE NULL END) ORGANIZATIONTOTALVALUE
        ,coalesce(CTE1.BASECURRENCYID, CTE2.BASECURRENCYID) BASECURRENCYID
        ,coalesce(CTE1.TRANSACTIONCURRENCYID, CTE2.TRANSACTIONCURRENCYID) TRANSACTIONCURRENCYID
        ,coalesce(CTE1.BASEEXCHANGERATEID, CTE2.BASEEXCHANGERATEID) BASEEXCHANGERATEID
        ,coalesce(CTE1.ORGANIZATIONEXCHANGERATEID, CTE2.ORGANIZATIONEXCHANGERATEID) ORGANIZATIONEXCHANGERATEID
        ,coalesce(CTE1.REVENUESPLITID, CTE2.REVENUESPLITID, CASE WHEN CTE2.AUDITID is null THEN RE.REVENUESPLITID ELSE NULL END) REVENUESPLITID
    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.FT_COUNT = 1)) or ((CTE1.[RANK] + 1 = CTE2.[RANK]) and (CTE2.RE_COUNT = 2))) or (CTE1.AUDITTYPECODE = 2 and CTE2.AUDITTYPECODE = 2 and CTE1.AUDITID != CTE2.AUDITID))
    left join dbo.FINANCIALTRANSACTIONLINEITEM FT on FT.ID = CTE1.AUDITRECORDID    
    left join dbo.REVENUEBENEFIT_EXT RE on RE.ID = CTE1.AUDITRECORDID;