Advertisement
mhamdani049

AKI-REFILL-1

Jun 29th, 2020
1,092
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.43 KB | None | 0 0
  1. USE SPEX_DB;
  2.  
  3. IF EXISTS (
  4. SELECT *
  5.     FROM INFORMATION_SCHEMA.ROUTINES
  6. WHERE SPECIFIC_SCHEMA = N'spex'
  7.     AND SPECIFIC_NAME = N'SP_AMANAH_RE_FILL_3_LIST'
  8.     AND ROUTINE_TYPE = N'PROCEDURE'
  9. )
  10. DROP PROCEDURE spex.SP_AMANAH_RE_FILL_3_LIST
  11. GO
  12.  
  13. CREATE PROCEDURE spex.SP_AMANAH_RE_FILL_3_LIST
  14.     @ZONE_CD VARCHAR(1)
  15. AS
  16. BEGIN
  17.     SELECT DISTINCT z.*
  18.         FROM
  19.             (
  20.                 SELECT DISTINCT  y.* FROM (
  21.                     SELECT
  22.                         a.[PART_NO]
  23.                         , c.RACK_ADDRESS_CD AS PRIMARY_LOC
  24.                         , ISNULL(b.[SOH], 0) AS SOH
  25.                         , ISNULL(b.[SOR], 0) AS SOR
  26.                         , ISNULL(c.[MAX_STOCK], 0) AS MAX_STOCK
  27.                         , ISNULL(b.[SODR], 0) AS SODR
  28.                         , ISNULL(b.[SONDR], 0) AS SONDR
  29.                         , 1 AS IS_PROBLEM_SHORTAGE
  30.                         , (
  31.                             SELECT TOP 1 z.RACK_ADDRESS
  32.                                 FROM [spex].[TB_R_BINNING] z
  33.                                 INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] y
  34.                                     ON z.PART_NO = y.PART_NO
  35.                                 WHERE z.PART_NO = b.PART_NO
  36.                                     AND ( z.SOURCE = 'NON-DIRECT')
  37.                                     AND ISNULL(y.SONDR, 0) > 0
  38.                                     AND ISNULL(z.QTY, 0) > 0
  39.                           ) AS RESERVE_LOC_TOP
  40.                         , (
  41.                             SELECT COUNT(*)
  42.                                 FROM [spex].[TB_R_BINNING] z
  43.                                 INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] y
  44.                                     ON z.PART_NO = y.PART_NO
  45.                                 WHERE z.PART_NO = b.PART_NO
  46.                                     AND ( z.SOURCE = 'NON-DIRECT')
  47.                                     AND ISNULL(y.SONDR, 0) > 0
  48.                                     AND ISNULL(z.QTY, 0) > 0
  49.                           ) AS RESERVE_LOC_COUNT
  50.                             FROM [SPEX_DB].[spex].[TB_R_REPORT_PROBLEM] a
  51.                             INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] b ON a.[PART_NO] = b.[PART_NO]
  52.                             INNER JOIN [SPEX_DB].[spex].[TB_M_PART_STOCK] c ON a.[PART_NO] = c.[PART_NO]
  53.                                 WHERE a.[TYPE_PROBLEM] = 2
  54.                                     AND ISNULL(b.SOR, 0) < ISNULL(c.MAX_STOCK, 0)
  55.                                     AND (ISNULL(b.SONDR, 0) > 0)
  56.                                     AND LEFT(c.RACK_ADDRESS_CD, 1) = @ZONE_CD
  57.                                     AND ISNULL(a.REFILL_QTY, 0) < ISNULL(a.QTY, 0)
  58.                                     --AND a.MANIFEST_NO IS NOT NULL
  59.                 ) y
  60.                 UNION
  61.                 SELECT
  62.                     b.[PART_NO]
  63.                     , b.RACK_ADDRESS_CD AS PRIMARY_LOC
  64.                     , ISNULL(b.[SOH], 0) AS SOH
  65.                     , ISNULL(b.[SOR], 0) AS SOR
  66.                     , ISNULL(b.[MAX_STOCK], 0) AS MAX_STOCK
  67.                     , ISNULL(b.[SODR], 0) AS SODR
  68.                     , ISNULL(b.[SONDR], 0) AS SONDR
  69.                     , 0 AS IS_PROBLEM_SHORTAGE
  70.                     , (
  71.                         SELECT TOP 1 z.RACK_ADDRESS
  72.                             FROM [spex].[TB_R_BINNING] z
  73.                             INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] y
  74.                                 ON z.PART_NO = y.PART_NO
  75.                             WHERE z.PART_NO = b.PART_NO
  76.                                 AND ( z.SOURCE = 'NON-DIRECT')
  77.                                 AND ISNULL(y.SONDR, 0) > 0
  78.                                 AND ISNULL(z.QTY, 0) > 0
  79.                       ) AS RESERVE_LOC_TOP
  80.                     , (
  81.                         SELECT COUNT(*)
  82.                             FROM [spex].[TB_R_BINNING] z
  83.                             INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] y
  84.                                 ON z.PART_NO = y.PART_NO
  85.                             WHERE z.PART_NO = b.PART_NO
  86.                                 AND ( z.SOURCE = 'NON-DIRECT')
  87.                                 AND ISNULL(y.SONDR, 0) > 0
  88.                                 AND ISNULL(z.QTY, 0) > 0
  89.                       ) AS RESERVE_LOC_COUNT
  90.                         FROM (
  91.                             SELECT
  92.                                 R_PART_STOCK_INFO.[PART_NO]
  93.                                 , M_PART_STOCK.RACK_ADDRESS_CD
  94.                                 , R_PART_STOCK_INFO.[SOH]
  95.                                 , R_PART_STOCK_INFO.[SOR]
  96.                                 , M_PART_STOCK.[MAX_STOCK]
  97.                                 , R_PART_STOCK_INFO.[SODR]
  98.                                 , R_PART_STOCK_INFO.[SONDR]
  99.                                     FROM [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] R_PART_STOCK_INFO
  100.                                     INNER JOIN [SPEX_DB].[spex].[TB_M_PART_STOCK] AS M_PART_STOCK
  101.                                         ON R_PART_STOCK_INFO.PART_NO = M_PART_STOCK.PART_NO
  102.                             WHERE ISNULL(R_PART_STOCK_INFO.SOR, 0) < ISNULL(M_PART_STOCK.MAX_STOCK, 0)
  103.                             AND (ISNULL(R_PART_STOCK_INFO.SONDR, 0) > 0)
  104.                             AND LEFT(M_PART_STOCK.RACK_ADDRESS_CD, 1) = @ZONE_CD
  105.                             AND R_PART_STOCK_INFO.PART_NO NOT IN (
  106.                                 SELECT
  107.                                     a.[PART_NO]
  108.                                     FROM [SPEX_DB].[spex].[TB_R_REPORT_PROBLEM] a
  109.                                     INNER JOIN [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] b ON a.[PART_NO] = b.[PART_NO]
  110.                                     INNER JOIN [SPEX_DB].[spex].[TB_M_PART_STOCK] c ON a.[PART_NO] = c.[PART_NO]
  111.                                         WHERE a.[TYPE_PROBLEM] = 2
  112.                                             AND ISNULL(b.SOR, 0) < ISNULL(c.MAX_STOCK, 0)
  113.                                             AND (ISNULL(b.SONDR, 0) > 0)
  114.                                             AND LEFT(c.RACK_ADDRESS_CD, 1) = @ZONE_CD
  115.                                             AND ISNULL(a.REFILL_QTY, 0) < ISNULL(a.QTY, 0)
  116.                             )
  117.                     ) b
  118.                 --WHERE NOT EXISTS (SELECT 1 FROM [SPEX_DB].[spex].[TB_R_REPORT_PROBLEM] w where w.PART_NO = b.PART_NO)
  119.             ) AS z
  120.             WHERE ISNULL(z.RESERVE_LOC_COUNT, 0) > 0
  121.             ORDER BY z.[IS_PROBLEM_SHORTAGE] DESC, z.RESERVE_LOC_COUNT DESC
  122.  
  123. END
  124. GO
  125.  
  126. EXECUTE spex.SP_AMANAH_RE_FILL_3_LIST 'M'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement