USP_DATALIST_STOCKDETAILANDSALESHIERARCHY

Returns a hierarchical list of the stock details and sales for a payment.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_STOCKDETAILANDSALESHIERARCHY
(
    @REVENUEID uniqueidentifier
)
as
set nocount on

-- Select the base stock information

select
    STOCKDETAIL.ID,
    null as PARENTID,
    'Stock' as TYPE,
    REVENUE.DATE as [DATE],
    REVENUE.TRANSACTIONAMOUNT as AMOUNT,
    null as GAINLOSS,
    null as FEE,
    null as NETPROCEEDS,
    STOCKDETAIL.NUMBEROFUNITS,
    STOCKDETAIL.TRANSACTIONLOWPRICE as LOWPRICE,
    STOCKDETAIL.TRANSACTIONMEDIANPRICE as MEDIANPRICE,
    STOCKDETAIL.TRANSACTIONHIGHPRICE as HIGHPRICE,
    null as SALEPOSTSTATUSCODE,
    null as STOCKDETAILID,
    0 as LISTORDER,
    REVENUE.TRANSACTIONCURRENCYID
from dbo.REVENUEPAYMENTMETHOD
inner join dbo.STOCKDETAIL on REVENUEPAYMENTMETHOD.ID = STOCKDETAIL.ID
inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
where REVENUEID = @REVENUEID

union all

-- Select the sales made for the stock

select
    STOCKSALE.ID,
    REVENUEPAYMENTMETHOD.ID as PARENTID,
    'Sold stock' as TYPE,
    STOCKSALE.SALEDATE as [DATE],
    STOCKSALE.TRANSACTIONSALEAMOUNT as [AMOUNT],
    STOCKSALE.TRANSACTIONSALEAMOUNT - (REVENUEPAYMENTMETHOD.AMOUNT/coalesce(nullif(STOCKDETAIL.NUMBEROFUNITS,0), 1)) * STOCKSALE.NUMBEROFUNITS as GAINLOSS,
    STOCKSALE.TRANSACTIONFEE,
    STOCKSALE.TRANSACTIONSALEAMOUNT - STOCKSALE.TRANSACTIONFEE as NETPROCEEDS,
    STOCKSALE.NUMBEROFUNITS,
    STOCKSALE.TRANSACTIONLOWPRICE,
    STOCKSALE.TRANSACTIONMEDIANPRICE,
    STOCKSALE.TRANSACTIONHIGHPRICE,
    STOCKSALE.SALEPOSTSTATUSCODE,
    STOCKSALE.STOCKDETAILID,
    1 as LISTORDER,
    STOCKSALE.TRANSACTIONCURRENCYID
from dbo.REVENUEPAYMENTMETHOD
inner join dbo.REVENUE on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.STOCKDETAIL on REVENUEPAYMENTMETHOD.ID = STOCKDETAIL.ID
inner join dbo.STOCKSALE on STOCKDETAIL.ID = STOCKSALE.STOCKDETAILID
where REVENUEID = @REVENUEID

order by LISTORDER, [DATE]