Monday, November 20, 2017

Stock Calculate in SQL

If you want calulcate how many stock we have or how many stock sold or how many stock are holding

Status Table:

1 Upload
2 Pending
3 Reserved
4 Sold
5 Rejected

StockActivity : In which I upload all the stock with status accordingly
Product_Name: In this table I have all the prodcut


CREATE PROCEDURE Getstockholding @FromDate DATETIME, 
                                 @ToDate   DATETIME 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT product_name.product_name 
             AS 
             'Product Name', 
             ( (SELECT Isnull(Sum(qty), 0) 
                FROM   stockactivity 
                WHERE  status_id IN( 1 ) 
                       AND product_id = product_name.product_id) - (SELECT 
               Isnull(Sum(qty), 0) 
                                                                    FROM 
               stockactivity 
                                                                    WHERE 
                 customer_id IS NOT NULL 
                 AND status_id IN( 4 ) 
                 AND product_id = shop_products.product_id) ) 
             AS 'Current Stock', 
             ( (SELECT Isnull(Sum(qty), 0) 
                FROM   stockactivity 
                WHERE  status_id IN( 1 ) 
                       AND product_id = product_name.product_id 
                       AND stockactivity.entry_datetime >= @ToDate) - (SELECT 
               Isnull(Sum(qty), 0) 
                                                                       FROM 
               stockactivity 
                                                                       WHERE 
                 customer_id IS NOT NULL 
                 AND status_id IN( 4 ) 
                 AND product_id = product_name.product_id 
                 AND stockactivity.entry_datetime >= @ToDate) ) 
             AS 'On Date Stock', 
             (SELECT Isnull(Sum(qty), 0) 
              FROM   stockactivity 
              WHERE  customer_id IS NOT NULL 
                     AND status_id IN( 4 ) 
                     AND product_id = product_name.product_id 
                     AND stockactivity.entry_datetime BETWEEN 
                         @FromDate AND @ToDate) 
             AS 
             'Stock Sold', 
             (SELECT Isnull(Sum(qty), 0) 
              FROM   stockactivity 
              WHERE  customer_id IS NOT NULL 
                     AND status_id IN( 3 ) 
                     AND product_id = product_name.product_id 
                     AND stockactivity.entry_datetime BETWEEN 
                         @FromDate AND @ToDate) 
             AS 
             'Stock Hold' 
      FROM   product_name 
      WHERE  product_name.product_id IN ( 1, 2, 3 ) 
      ORDER  BY product_name.product_name 
  END 

No comments:

Post a Comment