STOCKSALEAUDIT

Fields

Field Field Type Null Description
AUDITID uniqueidentifier
AUDITRECORDID uniqueidentifier
AUDITKEY uniqueidentifier
AUDITCHANGEAGENTID uniqueidentifier
AUDITDATE datetime
AUDITTYPECODE tinyint
AUDITTYPE nvarchar(13) yes
STOCKDETAILID uniqueidentifier yes
SALEDATE datetime yes
SALEAMOUNT money yes
FEE money yes
NUMBEROFUNITS decimal(20, 3) yes
LOWPRICE decimal(19, 4) yes
MEDIANPRICE decimal(19, 4) yes
HIGHPRICE decimal(19, 4) yes
SALEPOSTDATE datetime yes
SALEPOSTSTATUSCODE tinyint yes
ADDEDBYID uniqueidentifier yes
CHANGEDBYID uniqueidentifier yes
DATEADDED datetime yes
DATECHANGED datetime yes
ORGANIZATIONSALEAMOUNT money yes
ORGANIZATIONFEE money yes
ORGANIZATIONLOWPRICE decimal(19, 4) yes
ORGANIZATIONMEDIANPRICE decimal(19, 4) yes
ORGANIZATIONHIGHPRICE decimal(19, 4) yes
TRANSACTIONSALEAMOUNT money yes
TRANSACTIONFEE money yes
TRANSACTIONLOWPRICE decimal(19, 4) yes
TRANSACTIONMEDIANPRICE decimal(19, 4) yes
TRANSACTIONHIGHPRICE decimal(19, 4) yes
BASECURRENCYID uniqueidentifier yes
ORGANIZATIONEXCHANGERATEID uniqueidentifier yes
TRANSACTIONCURRENCYID uniqueidentifier yes
BASEEXCHANGERATEID uniqueidentifier yes

Definition

Copy

CREATE view dbo.STOCKSALEAUDIT 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.STOCKDETAILID
            ,T.SALEDATE
            ,T.SALEAMOUNT
            ,T.FEE
            ,T.NUMBEROFUNITS
            ,T.LOWPRICE
            ,T.MEDIANPRICE
            ,T.HIGHPRICE
            ,T.SALEPOSTDATE
            ,T.SALEPOSTSTATUSCODE
            ,T.ADDEDBYID
            ,T.CHANGEDBYID
            ,T.DATEADDED
            ,T.DATECHANGED
            ,T.ORGANIZATIONSALEAMOUNT
            ,T.ORGANIZATIONFEE
            ,T.ORGANIZATIONLOWPRICE
            ,T.ORGANIZATIONMEDIANPRICE
            ,T.ORGANIZATIONHIGHPRICE
            ,T.TRANSACTIONSALEAMOUNT
            ,T.TRANSACTIONFEE
            ,T.TRANSACTIONLOWPRICE
            ,T.TRANSACTIONMEDIANPRICE
            ,T.TRANSACTIONHIGHPRICE
            ,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 [STOCKDETAILID]
                ,null [SALEDATE]
                ,FT.BASEAMOUNT as SALEAMOUNT
                ,null [FEE]
                ,null [NUMBEROFUNITS]
                ,null [LOWPRICE]
                ,null [MEDIANPRICE]
                ,null [HIGHPRICE]
                ,FT.POSTDATE as SALEPOSTDATE
                ,cast(case FT.POSTSTATUSCODE when 2 then 0 when 1 then 1 when 3 then 2 end as tinyint) as SALEPOSTSTATUSCODE
                ,FT.ADDEDBYID
                ,FT.CHANGEDBYID
                ,FT.DATEADDED
                ,FT.DATECHANGED
                ,FT.ORGAMOUNT as ORGANIZATIONSALEAMOUNT
                ,null as ORGANIZATIONFEE
                ,null as ORGANIZATIONLOWPRICE
                ,null as ORGANIZATIONMEDIANPRICE
                ,null as ORGANIZATIONHIGHPRICE
                ,FT.TRANSACTIONAMOUNT as TRANSACTIONSALEAMOUNT
                ,null as TRANSACTIONFEE
                ,null as TRANSACTIONLOWPRICE
                ,null as TRANSACTIONMEDIANPRICE
                ,null as TRANSACTIONHIGHPRICE
                ,CS.BASECURRENCYID
                ,FT.ORGEXCHANGERATEID as ORGANIZATIONEXCHANGERATEID
                ,FT.TRANSACTIONCURRENCYID
                ,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 = 21

            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.STOCKDETAILID
                ,RE.SALEDATE
                ,null as SALEAMOUNT
                ,RE.FEE
                ,RE.NUMBEROFUNITS
                ,RE.LOWPRICE
                ,RE.MEDIANPRICE
                ,RE.HIGHPRICE
                ,null as SALEPOSTDATE
                ,null as SALEPOSTSTATUSCODE
                ,RE.ADDEDBYID
                ,RE.CHANGEDBYID
                ,RE.DATEADDED
                ,RE.DATECHANGED
                ,null as ORGANIZATIONSALEAMOUNT
                ,RE.ORGANIZATIONFEE
                ,RE.ORGANIZATIONLOWPRICE
                ,RE.ORGANIZATIONMEDIANPRICE
                ,RE.ORGANIZATIONHIGHPRICE
                ,null as TRANSACTIONSALEAMOUNT
                ,RE.TRANSACTIONFEE
                ,RE.TRANSACTIONLOWPRICE
                ,RE.TRANSACTIONMEDIANPRICE
                ,RE.TRANSACTIONHIGHPRICE
                ,CS.BASECURRENCYID
                ,null [ORGANIZATIONEXCHANGERATEID]
                ,null [TRANSACTIONCURRENCYID]
                ,null [BASEEXCHANGERATEID]
            from dbo.STOCKSALE_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 A.AUDITID
        ,A.AUDITRECORDID
        ,A.AUDITKEY
        ,A.AUDITCHANGEAGENTID
        ,A.AUDITDATE
        ,A.AUDITTYPECODE
        ,A.AUDITTYPE
        ,A.STOCKDETAILID
        ,A.SALEDATE
        ,A.SALEAMOUNT
        ,A.FEE
        ,A.NUMBEROFUNITS
        ,A.LOWPRICE
        ,A.MEDIANPRICE
        ,A.HIGHPRICE
        ,A.SALEPOSTDATE
        ,A.SALEPOSTSTATUSCODE
        ,A.ADDEDBYID
        ,A.CHANGEDBYID
        ,A.DATEADDED
        ,A.DATECHANGED
        ,A.ORGANIZATIONSALEAMOUNT
        ,A.ORGANIZATIONFEE
        ,A.ORGANIZATIONLOWPRICE
        ,A.ORGANIZATIONMEDIANPRICE
        ,A.ORGANIZATIONHIGHPRICE
        ,A.TRANSACTIONSALEAMOUNT
        ,A.TRANSACTIONFEE
        ,A.TRANSACTIONLOWPRICE
        ,A.TRANSACTIONMEDIANPRICE
        ,A.TRANSACTIONHIGHPRICE
        ,A.BASECURRENCYID
        ,A.ORGANIZATIONEXCHANGERATEID
        ,A.TRANSACTIONCURRENCYID
        ,A.BASEEXCHANGERATEID
    from dbo.STOCKSALEAUDITORIGINAL A

    union all

    select CTE1.AUDITID
        ,CTE1.AUDITRECORDID
        ,CTE1.AUDITKEY
        ,CTE1.AUDITCHANGEAGENTID
        ,CTE1.AUDITDATE
        ,CTE1.AUDITTYPECODE
        ,CTE1.AUDITTYPE
        ,coalesce(CTE1.STOCKDETAILID, CTE2.STOCKDETAILID, CASE WHEN CTE2.AUDITID is null THEN RE.STOCKDETAILID ELSE NULL END) STOCKDETAILID
        ,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 FT.BASEAMOUNT ELSE null end) SALEAMOUNT
        ,coalesce(CTE1.FEE, CTE2.FEE, CASE WHEN CTE2.AUDITID is null THEN RE.FEE ELSE NULL END) FEE
        ,coalesce(CTE1.NUMBEROFUNITS, CTE2.NUMBEROFUNITS, CASE WHEN CTE2.AUDITID is null THEN RE.NUMBEROFUNITS ELSE NULL END) NUMBEROFUNITS
        ,coalesce(CTE1.LOWPRICE, CTE2.LOWPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.LOWPRICE ELSE NULL END) LOWPRICE
        ,coalesce(CTE1.MEDIANPRICE, CTE2.MEDIANPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.MEDIANPRICE ELSE NULL END) MEDIANPRICE
        ,coalesce(CTE1.HIGHPRICE, CTE2.HIGHPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.HIGHPRICE ELSE NULL END) HIGHPRICE
        ,cast(coalesce(CTE1.SALEPOSTDATE, CTE2.SALEPOSTDATE, CASE WHEN CTE2.AUDITID is null THEN FT.POSTDATE ELSE NULL END) as datetime) 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 FT.ORGAMOUNT ELSE NULL END) ORGANIZATIONSALEAMOUNT
        ,coalesce(CTE1.ORGANIZATIONFEE, CTE2.ORGANIZATIONFEE, CASE WHEN CTE2.AUDITID is null THEN RE.ORGANIZATIONFEE ELSE NULL END) ORGANIZATIONFEE
        ,coalesce(CTE1.ORGANIZATIONLOWPRICE, CTE2.ORGANIZATIONLOWPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.ORGANIZATIONLOWPRICE ELSE NULL END) ORGANIZATIONLOWPRICE
        ,coalesce(CTE1.ORGANIZATIONMEDIANPRICE, CTE2.ORGANIZATIONMEDIANPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.ORGANIZATIONMEDIANPRICE ELSE NULL END) ORGANIZATIONMEDIANPRICE
        ,coalesce(CTE1.ORGANIZATIONHIGHPRICE, CTE2.ORGANIZATIONHIGHPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.ORGANIZATIONHIGHPRICE ELSE NULL END) ORGANIZATIONHIGHPRICE
        ,coalesce(CTE1.TRANSACTIONSALEAMOUNT, CTE2.TRANSACTIONSALEAMOUNT, CASE WHEN CTE2.AUDITID is null THEN FT.TRANSACTIONAMOUNT ELSE NULL END) TRANSACTIONSALEAMOUNT
        ,coalesce(CTE1.TRANSACTIONFEE, CTE2.TRANSACTIONFEE, CASE WHEN CTE2.AUDITID is null THEN RE.TRANSACTIONFEE ELSE NULL END) TRANSACTIONFEE
        ,coalesce(CTE1.TRANSACTIONLOWPRICE, CTE2.TRANSACTIONLOWPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.TRANSACTIONLOWPRICE ELSE NULL END) TRANSACTIONLOWPRICE
        ,coalesce(CTE1.TRANSACTIONMEDIANPRICE, CTE2.TRANSACTIONMEDIANPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.TRANSACTIONMEDIANPRICE ELSE NULL END) TRANSACTIONMEDIANPRICE
        ,coalesce(CTE1.TRANSACTIONHIGHPRICE, CTE2.TRANSACTIONHIGHPRICE, CASE WHEN CTE2.AUDITID is null THEN RE.TRANSACTIONHIGHPRICE ELSE NULL END) TRANSACTIONHIGHPRICE
        ,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.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.FINANCIALTRANSACTION FT on FT.ID = CTE1.AUDITRECORDID
    left join dbo.STOCKSALE_EXT RE on RE.ID = CTE1.AUDITRECORDID;