Advertisement
mhamdani049

AKI-REFILL-8

Jun 29th, 2020
1,460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 26.15 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_5_DO_RE_FILL'
  8.     AND ROUTINE_TYPE = N'PROCEDURE'
  9. )
  10. DROP PROCEDURE spex.SP_AMANAH_RE_FILL_5_DO_RE_FILL
  11. GO
  12.  
  13. CREATE PROCEDURE spex.SP_AMANAH_RE_FILL_5_DO_RE_FILL
  14. (
  15.     @PART_NO NVARCHAR(MAX),
  16.     @PRIMARY_LOC NVARCHAR(MAX),
  17.     @RESERVE_LOC NVARCHAR(MAX),
  18.     @ADD_QTY INT,
  19.     @SOR INT,
  20.     @MAX_STOCK INT,
  21.     @STOCK_REQ INT,
  22.     @RESERVE_CURRENT_QTY INT,
  23.     @SOURCE VARCHAR(MAX),
  24.     @BT_NO VARCHAR(MAX),
  25.     @IS_PROBLEM_SHORTAGE INT = 1,
  26.     @ZONE_CD VARCHAR(1),
  27.     @USERNAME VARCHAR(MAX) = ''
  28. )
  29. AS
  30. BEGIN
  31.  
  32.     DECLARE @MSG_TEXT VARCHAR(MAX) = ''
  33.  
  34.     CREATE TABLE #TB_T_DATA (
  35.         RESULT VARCHAR(MAX),
  36.         Message VARCHAR(MAX)
  37.     )
  38.  
  39.     DECLARE @@temp_AMANAH_PART_STOCK TABLE (
  40.         [PART_NO] VARCHAR(15) NOT NULL,
  41.         [PART_NAME] VARCHAR(100) NOT NULL,
  42.         [RACK_ADDRESS_CD] VARCHAR(12) NOT NULL,
  43.         [DOCK_CD] VARCHAR(2) NULL,
  44.         [DOCK_PRD] VARCHAR(2) NULL,
  45.         [DAD] DECIMAL(6,2)  NULL,
  46.         [MAD] INT  NOT NULL,
  47.         [ORDER_CYCLE] DECIMAL(6,2)  NOT NULL,
  48.         [PROCUREMENT_LT] DECIMAL(6,2)  NOT NULL,
  49.         [RECEIVING_LT] DECIMAL(6,2)  NOT NULL,
  50.         [ALFA] DECIMAL(6,2)  NOT NULL,
  51.         [ROP] INT  NOT NULL,
  52.         [MIN_STOCK] INT  NOT NULL,
  53.         [MAX_STOCK] INT  NOT NULL,
  54.         [KANBAN_QTY] DECIMAL(6) NOT NULL,
  55.         [PART_DIMENSION] VARCHAR(2) NULL)
  56.  
  57.     DECLARE @MaxQtyPart INT, @QtyRack INT, @RACK_ADDRESS_CD VARCHAR(22)
  58.     DECLARE @ERR_MSG VARCHAR(MAX), @isValid bit = 1
  59.  
  60.     DECLARE @transferNo VARCHAR(MAX)
  61.     DECLARE @counterBtTransExist INT = 0
  62.     DECLARE @counterBtTempExist INT = 0
  63.     DECLARE @rowCount INT = 0
  64.     DECLARE @rowCountRefill INT = 0
  65.     DECLARE @transferItemNo INT
  66.     DECLARE @successQtyRefill INT = 0
  67.  
  68.     DECLARE @SET_RESERVE_LOC_CURRENT VARCHAR(MAX) = '1'
  69.     DECLARE @SET_RESERVE_LOC_SCAN VARCHAR(MAX) = '0'
  70.  
  71.     SELECT @SET_RESERVE_LOC_CURRENT = VALUE FROM STRING_SPLIT(@RESERVE_LOC, ',') WHERE RTRIM(VALUE) <> '' ORDER BY (SELECT 0) OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
  72.     SELECT @SET_RESERVE_LOC_SCAN = VALUE FROM STRING_SPLIT(@RESERVE_LOC, ',') WHERE RTRIM(VALUE) <> '' ORDER BY (SELECT 0) OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY;
  73.     PRINT '@SET_RESERVE_LOC_CURRENT, @SET_RESERVE_LOC_SCAN:' + CONVERT(VARCHAR(MAX), @SET_RESERVE_LOC_CURRENT) + ', ' + CONVERT(VARCHAR(MAX), @SET_RESERVE_LOC_SCAN)
  74.  
  75.     IF (@SET_RESERVE_LOC_CURRENT = @SET_RESERVE_LOC_SCAN)
  76.     BEGIN
  77.  
  78.         EXEC spex.usp_CutPartNo @PART_NO OUTPUT
  79.  
  80.     --  [START]   backup at 16 april 2020 by yusup
  81.     --     IF EXISTS (SELECT TOP 1 ID FROM spex.TB_R_BINNING WHERE PART_NO = @PART_NO AND (SOURCE = 'NON-DIRECT') AND LEFT([RACK_ADDRESS], 1) = @ZONE_CD AND ISNULL(QTY, 0) > 0)
  82.     --  [END]
  83.         IF EXISTS (SELECT TOP 1 ID FROM spex.TB_R_BINNING WHERE PART_NO = @PART_NO AND RACK_ADDRESS = @SET_RESERVE_LOC_CURRENT AND ISNULL(QTY, 0) > 0)
  84.         BEGIN
  85.  
  86.             --     1. Cek jika add qty lebih dari reserve qty maka error.
  87.             IF (@ADD_QTY > @RESERVE_CURRENT_QTY)
  88.             BEGIN
  89.  
  90.                 SET @MSG_TEXT = 'Gagal, kamu menambahkan qty melebihi kapasitas qty yang tersedia di reserve lokasi. Saran coba ' +  CONVERT(VARCHAR(MAX), @RESERVE_CURRENT_QTY) + 'qty.'
  91.                 INSERT INTO #TB_T_DATA
  92.                 VALUES (
  93.                     'Failed'
  94.                     ,@MSG_TEXT
  95.                     )
  96.             END
  97.             ELSE
  98.             BEGIN
  99.  
  100.         --      2. Cek jika add qty lebih dari stock req untuk primary loc
  101.                 IF (@ADD_QTY > @STOCK_REQ)
  102.                 BEGIN
  103.  
  104.                     SET @MSG_TEXT = 'Gagal, kamu menambahkan qty melebihi maximal stock yang bisa disimpan di primary lokasi. Saran coba ' + CONVERT(VARCHAR(MAX), @STOCK_REQ) +' qty.' -- ID: Mohon maaf qty yang di scan melebihi stok yang bisa disimpan di primary location. Butuh 2000 qty.
  105.                     INSERT INTO #TB_T_DATA
  106.                     VALUES (
  107.                         'Failed'
  108.                         ,@MSG_TEXT
  109.                         )
  110.                 END
  111.                 ELSE
  112.                 BEGIN
  113.  
  114.                     SELECT @counterBtTransExist = COUNT(1)
  115.                     FROM   spex.TB_R_BUCKET_TRANSFER_H BTH
  116.                     WHERE  BTH.BT_NO = @BT_NO
  117.                     AND    CLOSE_BY IS NULL
  118.                     AND    CLOSE_DT IS NULL
  119.  
  120.                     IF (@counterBtTransExist = 0)
  121.                     BEGIN
  122.                         SELECT @transferNo = 'TR' + (CONVERT(VARCHAR, YEAR(CURRENT_TIMESTAMP)) +
  123.                                 CONVERT(VARCHAR, RIGHT('0' + RTRIM(MONTH(CURRENT_TIMESTAMP)), 2)) +
  124.                                 CONVERT(VARCHAR, RIGHT('0' + RTRIM(DAY(CURRENT_TIMESTAMP)), 2)) +
  125.                                 RIGHT('0000' + CONVERT(VARCHAR, RTRIM(ISNULL(MAX(SUBSTRING(TRANSFER_NO, 10, 13)), 0) + 1)), 5))
  126.                         FROM   spex.TB_R_BUCKET_TRANSFER_H
  127.                         WHERE  DAY(CREATED_DT) = DAY(CURRENT_TIMESTAMP)
  128.                         AND    MONTH(CREATED_DT) = MONTH(CURRENT_TIMESTAMP)
  129.                         AND    YEAR(CREATED_DT) = YEAR(CURRENT_TIMESTAMP)
  130.                     END
  131.                     ELSE
  132.                     BEGIN
  133.                         SELECT @transferNo = TRANSFER_NO
  134.                         FROM   spex.TB_R_BUCKET_TRANSFER_H BTH
  135.                         WHERE  BTH.BT_NO = @BT_NO
  136.                         AND    CLOSE_BY IS NULL
  137.                         AND    CLOSE_DT IS NULL
  138.                     END
  139.  
  140.                     SELECT @counterBtTempExist = COUNT(1)
  141.                     FROM   spex.TB_T_BUCKET_TRANSFER TBT
  142.                     WHERE  TBT.BT_NO = @BT_NO
  143.  
  144.                     IF (@counterBtTransExist = 0)
  145.                     BEGIN
  146.                         INSERT INTO spex.TB_R_BUCKET_TRANSFER_H
  147.                         (TRANSFER_NO, BT_NO, OPEN_BY, OPEN_DT, CLOSE_BY, CLOSE_DT, CREATED_BY, CREATED_DT)
  148.                         VALUES
  149.                         (@transferNo, @BT_NO, @USERNAME, CURRENT_TIMESTAMP, NULL, NULL, @USERNAME, CURRENT_TIMESTAMP)
  150.                     END
  151.  
  152.                     IF (@counterBtTempExist = 0)
  153.                     BEGIN
  154.                         INSERT INTO spex.TB_T_BUCKET_TRANSFER
  155.                         (TRANSFER_NO, BT_NO, OPEN_BY, OPEN_DT, CREATED_BY, CREATED_DT)
  156.                         VALUES
  157.                         (@transferNo, @BT_NO, @USERNAME, CURRENT_TIMESTAMP, @USERNAME, CURRENT_TIMESTAMP)
  158.                     END
  159.  
  160.                     PRINT 'IS_PROBLEM_SHORTAGE = ' + CONVERT(VARCHAR(MAX), @IS_PROBLEM_SHORTAGE)
  161.                     IF (@IS_PROBLEM_SHORTAGE = 1)
  162.                     BEGIN
  163.  
  164.                         IF OBJECT_ID('tempdb..#tmpReportProblem') IS NOT NULL
  165.                             DROP TABLE #tmpReportProblem
  166.  
  167.                         CREATE TABLE #tmpReportProblem
  168.                         (
  169.                             ID INT IDENTITY(1,1) PRIMARY KEY,
  170.                             PROBLEM_NO VARCHAR(MAX),
  171.                             TRANSFER_NO VARCHAR(MAX),
  172.                             MANIFEST_NO VARCHAR(MAX),
  173.                             BT_NO VARCHAR(MAX)
  174.                         )
  175.  
  176.                         INSERT INTO #tmpReportProblem
  177.                         SELECT
  178.                             PROBLEM_NO
  179.                             , TRANSFER_NO
  180.                             , MANIFEST_NO
  181.                             , BT_NO
  182.                                 FROM [SPEX_DB].[spex].[TB_R_REPORT_PROBLEM]
  183.                                     WHERE PART_NO = @PART_NO
  184.                                         AND TYPE_PROBLEM = 2
  185.     --                              [START]   backup at 17 april 2020 by yusup
  186.     --                                     AND MANIFEST_NO IS NOT NULL
  187.     --                             GROUP BY TRANSFER_NO, MANIFEST_NO, BT_NO
  188.     --                             [END]
  189.  
  190.                         DECLARE @LoopCenter INT, @problemNoTmpReportProblem VARCHAR(MAX), @MaxTmpReportProblem INT, @transferNoTmpReportProblem VARCHAR(MAX), @manifestNoTmpReportProblem VARCHAR(MAX), @btNoTmpReportProblem VARCHAR(MAX), @qtyTmpReportProblem INT = 0, @refillQtyTmpReportProblem INT = 0, @needQtyTmpReportProblem INT = 0, @isQtyTmpReportProblem INT = 0
  191.                         SELECT @LoopCenter = MIN(ID), @MaxTmpReportProblem = MAX(ID) FROM #tmpReportProblem
  192.  
  193.                         PRINT 'Check ADD_QTY, LoopCenter, MaxTmpReportProblem: ' + CONVERT(VARCHAR(MAX), @ADD_QTY) + ', ' +  CONVERT(VARCHAR(MAX), @LoopCenter) + ', ' + CONVERT(VARCHAR(MAX), @MaxTmpReportProblem)
  194.                         WHILE(@ADD_QTY > 0 AND @LoopCenter IS NOT NULL AND @LoopCenter <= @MaxTmpReportProblem)
  195.                         BEGIN
  196.  
  197.                             SET @MSG_TEXT = 'Update Problem Shortage \n '
  198.  
  199.                             SELECT
  200.                                 @problemNoTmpReportProblem = PROBLEM_NO
  201.                                 , @transferNoTmpReportProblem = TRANSFER_NO
  202.                                 , @manifestNoTmpReportProblem = MANIFEST_NO
  203.                                 , @btNoTmpReportProblem = BT_NO
  204.                                     FROM #tmpReportProblem
  205.                                         WHERE ID = @LoopCenter
  206.                             PRINT '@transferNoTmpReportProblem, @manifestNoTmpReportProblem, @btNoTmpReportProblem, @problemNoTmpReportProblem :' + CONVERT(VARCHAR(MAX), @transferNoTmpReportProblem) + ', ' + CONVERT(VARCHAR(MAX), @manifestNoTmpReportProblem) + ', ' + CONVERT(VARCHAR(MAX), @btNoTmpReportProblem) + ', ' + CONVERT(VARCHAR(MAX), @problemNoTmpReportProblem)
  207.  
  208.                             DECLARE @foundRowReportProblem INT = 0
  209.                             SELECT
  210.                                 @foundRowReportProblem = 1
  211.                                 , @qtyTmpReportProblem = ISNULL(QTY, 0)
  212.                                 , @refillQtyTmpReportProblem = ISNULL(REFILL_QTY, 0)
  213.                                 FROM spex.TB_R_REPORT_PROBLEM
  214.                                     WHERE TYPE_PROBLEM = 2
  215.                                         AND TRANSFER_NO = @transferNoTmpReportProblem
  216.                                         AND MANIFEST_NO = @manifestNoTmpReportProblem
  217.                                         AND BT_NO = @btNoTmpReportProblem
  218.                                         AND PART_NO = @PART_NO
  219.                                         AND PROBLEM_NO = @problemNoTmpReportProblem
  220.                                         AND ISNULL(REFILL_QTY, 0) < ISNULL(QTY, 0)
  221.                                     ORDER BY REFILL_QTY ASC
  222.                             PRINT '@foundRowReportProblem : ' + CONVERT(VARCHAR(MAX), @foundRowReportProblem)
  223.                             PRINT '@qtyTmpReportProblem, @refillQtyTmpReportProblem :' + CONVERT(VARCHAR(MAX), @qtyTmpReportProblem) + ', ' + CONVERT(VARCHAR(MAX), @refillQtyTmpReportProblem)
  224.  
  225.                             IF (@foundRowReportProblem > 0)
  226.                             BEGIN
  227.  
  228.                                 SET @needQtyTmpReportProblem = @qtyTmpReportProblem - @refillQtyTmpReportProblem
  229.                                 PRINT '@needQtyTmpReportProblem : ' + CONVERT(VARCHAR(MAX), @needQtyTmpReportProblem)
  230.  
  231.                                 SET @isQtyTmpReportProblem = @ADD_QTY
  232.                                 IF (@ADD_QTY >= @needQtyTmpReportProblem)
  233.                                 BEGIN
  234.                                     SET @isQtyTmpReportProblem = @needQtyTmpReportProblem
  235.                                 END
  236.                                 PRINT '@isQtyTmpReportProblem : ' + CONVERT(VARCHAR(MAX), @isQtyTmpReportProblem)
  237.  
  238.                                 SET NOCOUNT ON;
  239.                                 BEGIN TRY
  240.                                     BEGIN TRANSACTION
  241.                                         UPDATE spex.TB_R_REPORT_PROBLEM SET REFILL_QTY = ISNULL(REFILL_QTY, 0) + @isQtyTmpReportProblem, CHANGED_BY = @USERNAME, CHANGED_DT = CURRENT_TIMESTAMP WHERE TYPE_PROBLEM = 2 AND TRANSFER_NO = @transferNoTmpReportProblem AND MANIFEST_NO = @manifestNoTmpReportProblem AND BT_NO = @btNoTmpReportProblem AND PART_NO = @PART_NO AND PROBLEM_NO = @problemNoTmpReportProblem
  242.                                         --SELECT * FROM spex.TB_R_REPORT_PROBLEM WHERE TYPE_PROBLEM = 2 AND TRANSFER_NO = @transferNoTmpReportProblem AND MANIFEST_NO = @manifestNoTmpReportProblem AND BT_NO = @btNoTmpReportProblem AND PART_NO = @PART_NO
  243.                                         PRINT 'Update REFILL_QTY In TB_R_REPORT_PROBLEM Success'
  244.  
  245.                                         SET @MSG_TEXT = @MSG_TEXT + 'TRANSFER_NO@' + CONVERT(VARCHAR(MAX), @transferNoTmpReportProblem) + ' MANIFEST_NO@' + CONVERT(VARCHAR(MAX), @manifestNoTmpReportProblem) + ' BT_NO@' + CONVERT(VARCHAR(MAX), @btNoTmpReportProblem) + ' PART_NO@' + CONVERT(VARCHAR(MAX), @PART_NO) + ' REFILLQTY@' + CONVERT(VARCHAR(MAX), @isQtyTmpReportProblem) + ' \n '
  246.  
  247.                                         SET @successQtyRefill = @successQtyRefill + @isQtyTmpReportProblem
  248.  
  249.                                     COMMIT TRANSACTION
  250.                                 END TRY
  251.                                 BEGIN CATCH
  252.                                     PRINT 'Update REFILL_QTY In TB_R_REPORT_PROBLEM Error'
  253.                                 END CATCH
  254.  
  255.  
  256.                                 SET @ADD_QTY = @ADD_QTY - @isQtyTmpReportProblem
  257.                                 PRINT '@ADD_QTY, @LoopCenter ' + CONVERT(VARCHAR(MAX), @ADD_QTY) + ', ' + CONVERT(VARCHAR(MAX), @LoopCenter)
  258.  
  259.                             END
  260.  
  261.                             SET @LoopCenter = @LoopCenter + 1
  262.                         END
  263.                         PRINT '@successQtyRefill ' + CONVERT(VARCHAR(MAX), @successQtyRefill)
  264.  
  265.                     END
  266.  
  267.                     DECLARE @addQtyRefill INT = 0
  268.  
  269.                     IF (@IS_PROBLEM_SHORTAGE = 1)
  270.                     BEGIN
  271.                         SET @addQtyRefill = @successQtyRefill + ISNULL(@ADD_QTY, 0)
  272.                     END
  273.                     ELSE
  274.                     BEGIN
  275.                         SET @addQtyRefill = @ADD_QTY
  276.                     END
  277.                     PRINT '@addQtyRefill ' + CONVERT(VARCHAR(MAX), @addQtyRefill)
  278.  
  279.                     DECLARE @getCurrentQtyNonDirect INT = 0, @setRefillQtyNonDirect INT = @addQtyRefill, @getCurrentQtyDirect INT = 0, @setRefillQtyDirect INT = @addQtyRefill, @setLeftQtyRefill INT  = 0
  280.                     IF (EXISTS(SELECT PART_NO FROM [spex].[TB_R_PART_STOCK_INFO] WHERE PART_NO = @PART_NO AND SONDR > 0))
  281.                     BEGIN
  282.  
  283.                         SELECT @getCurrentQtyNonDirect = SONDR FROM [spex].[TB_R_PART_STOCK_INFO] WHERE PART_NO = @PART_NO
  284.                         IF (@SOURCE = 'NON-DIRECT')
  285.                         BEGIN
  286.                             IF (@addQtyRefill >= @getCurrentQtyNonDirect)
  287.                             BEGIN
  288.                                 SET @setRefillQtyNonDirect = @getCurrentQtyNonDirect
  289.                                 SET @setLeftQtyRefill = @addQtyRefill - @getCurrentQtyNonDirect
  290.                             END
  291.                             ELSE
  292.                                 BEGIN
  293.                                     SET @setRefillQtyNonDirect = @addQtyRefill
  294.                                     IF (@addQtyRefill >= @getCurrentQtyNonDirect)
  295.                                     BEGIN
  296.                                         SET @setRefillQtyNonDirect = @getCurrentQtyNonDirect
  297.                                         SET @setLeftQtyRefill = @addQtyRefill - @getCurrentQtyNonDirect
  298.                                     END
  299.                                 END
  300.                                 UPDATE [spex].[TB_R_PART_STOCK_INFO]
  301.                                 SET
  302.                                     SOH = SOH - @setRefillQtyNonDirect
  303.                                     ,SONDR = SONDR - @setRefillQtyNonDirect
  304.                                     ,CHANGED_BY = @USERNAME
  305.                                     ,CHANGED_DT = CURRENT_TIMESTAMP
  306.                                 WHERE PART_NO = @PART_NO
  307.                                 PRINT 'Update NON-DIRECT ' + CONVERT(VARCHAR(MAX), @getCurrentQtyNonDirect) + ', Refill Qty = ' + CONVERT(VARCHAR(MAX), @setRefillQtyNonDirect) + ', Left Qty = ' + CONVERT(VARCHAR(MAX), @setLeftQtyRefill)
  308.  
  309.                                 SET @rowCount = 0
  310.  
  311.                                 SELECT @rowCount = COUNT(1)
  312.                                 FROM   spex.TB_R_BUCKET_TRANSFER_D
  313.                                 WHERE  TRANSFER_NO = @transferNo
  314.                                 AND    PART_NO = @PART_NO
  315.  
  316.                                 IF (@rowCount > 0)
  317.                                 BEGIN
  318.                                     UPDATE spex.TB_R_BUCKET_TRANSFER_D
  319.                                     SET    KANBAN_QTY = isnull(KANBAN_QTY, 0) + @setRefillQtyNonDirect,
  320.                                         CHANGED_BY = @USERNAME,
  321.                                         CHANGED_DT = CURRENT_TIMESTAMP
  322.                                     WHERE  TRANSFER_NO = @transferNo
  323.                                     AND    PART_NO = @PART_NO
  324.                                     PRINT 'Update KANBAN_QTY In TB_R_BUCKET_TRANSFER_D'
  325.                                 END
  326.                                 ELSE
  327.                                 BEGIN
  328.                                     SELECT @transferItemNo = ISNULL(MAX(TRANSFER_ITEM_NO), 0) + 1
  329.                                     FROM   spex.TB_R_BUCKET_TRANSFER_D
  330.                                     WHERE  TRANSFER_NO = @transferNo
  331.  
  332.                                     INSERT INTO spex.TB_R_BUCKET_TRANSFER_D
  333.                                     (
  334.                                         TRANSFER_NO
  335.                                         , TRANSFER_ITEM_NO
  336.                                         , PART_NO
  337.                                         , KANBAN_QTY
  338.                                         , DELIVERED_QTY
  339.                                         , PROBLEM_FLAG
  340.                                         , CREATED_BY
  341.                                         , CREATED_DT
  342.                                     )
  343.                                     SELECT
  344.                                         @transferNo
  345.                                         , @transferItemNo
  346.                                         , R_PART_STOCK_INFO.PART_NO
  347.                                         , @setRefillQtyNonDirect
  348.                                         , 0
  349.                                         , NULL
  350.                                         , @USERNAME
  351.                                         , CURRENT_TIMESTAMP
  352.                                     FROM [SPEX_DB].[spex].[TB_R_PART_STOCK_INFO] R_PART_STOCK_INFO
  353.                                         INNER JOIN [SPEX_DB].[spex].[TB_M_PART_STOCK] AS M_PART_STOCK
  354.                                             ON R_PART_STOCK_INFO.PART_NO = M_PART_STOCK.PART_NO
  355.                                         WHERE ISNULL(R_PART_STOCK_INFO.SOR, 0) < ISNULL(M_PART_STOCK.MAX_STOCK, 0)
  356.                                             AND (ISNULL(R_PART_STOCK_INFO.SODR, 0) > 0 OR ISNULL(R_PART_STOCK_INFO.SONDR, 0) > 0)
  357.                                             AND R_PART_STOCK_INFO.PART_NO = @PART_NO
  358.                                     PRINT 'Insert New KANBAN_QTY In TB_R_BUCKET_TRANSFER_D'
  359.                                 END
  360.  
  361.                                 SET @rowCountRefill = 0
  362.                                 SELECT @rowCountRefill = COUNT(1) FROM dbo.TB_R_REFILL WHERE TRANSFER_NO = @transferNo AND PART_NO = @PART_NO AND SOURCE = @SOURCE AND STATUS <> 3 AND RACK_ADDRESS = @SET_RESERVE_LOC_SCAN
  363.  
  364.                                 IF(@rowCountRefill > 0)
  365.                                 BEGIN
  366.                                     UPDATE dbo.TB_R_REFILL SET
  367.                                         QTY = ISNULL(QTY, 0) + @addQtyRefill
  368.                                         , CHANGED_BY = @USERNAME
  369.                                         , CHANGED_DT = CURRENT_TIMESTAMP
  370.                                             WHERE TRANSFER_NO = @transferNo AND PART_NO = @PART_NO AND RACK_ADDRESS = @SET_RESERVE_LOC_SCAN
  371.                                     PRINT 'Update QTY In TB_R_REFILL ' + CONVERT(VARCHAR(MAX), @addQtyRefill)
  372.                                 END
  373.                                 ELSE
  374.                                 BEGIN
  375.                                     INSERT INTO dbo.TB_R_REFILL
  376.                                         (TRANSFER_NO, BT_NO, PART_NO, QTY, CREATED_BY, CREATED_DT, SOURCE, STATUS, RACK_ADDRESS)
  377.                                         VALUES
  378.                                         (@transferNo, @BT_NO, @PART_NO, @addQtyRefill, @USERNAME, CURRENT_TIMESTAMP, @SOURCE, 0, @SET_RESERVE_LOC_SCAN)
  379.                                     PRINT 'Insert New QTY In TB_R_REFILL ' + CONVERT(VARCHAR(MAX), @addQtyRefill)
  380.                                 END
  381.  
  382.                                 PRINT '@transferNo:' + CONVERT(VARCHAR(MAX), @transferNo)
  383.  
  384.                                 UPDATE spex.TB_R_BINNING SET QTY = QTY - @addQtyRefill, CHANGED_BY = @USERNAME, CHANGED_DT = CURRENT_TIMESTAMP WHERE ID IN (SELECT TOP 1 ID FROM spex.TB_R_BINNING WHERE PART_NO = @PART_NO AND RACK_ADDRESS = @SET_RESERVE_LOC_CURRENT AND LEFT([RACK_ADDRESS], 1) = @ZONE_CD AND ISNULL(QTY, 0) > 0)
  385.                                 IF NOT EXISTS(SELECT 1 FROM spex.TB_R_STOCK_CARD WHERE PART_NO = @PART_NO AND CONVERT ( DATE, [DATE] ) = CONVERT ( DATE, CURRENT_TIMESTAMP ) AND FLAG = '0' )
  386.                                 BEGIN
  387.                                     INSERT INTO spex.TB_R_STOCK_CARD (
  388.                                         [DATE],
  389.                                         [FLAG],
  390.                                         [SEQ],
  391.                                         [PART_NO],
  392.                                         [PART_NAME],
  393.                                         [SUPPLIER_CD],
  394.                                         [SUB_SUPPLIER_CD],
  395.                                         [SUPPLIER_PLANT],
  396.                                         [SUB_SUPPLIER_PLANT],
  397.                                         [QTY],
  398.                                         [BEGIN_STOCK],
  399.                                         [END_STOCK],
  400.                                         [REF_FILE],
  401.                                         [CREATED_BY],
  402.                                         [CREATED_DT],
  403.                                         [CHANGED_BY],
  404.                                         [CHANGED_DT]
  405.                                     ) SELECT
  406.                                         CURRENT_TIMESTAMP AS [DATE],
  407.                                         0,
  408.                                         ( SELECT ISNULL( MAX ( SEQ ), 0 ) + 1 AS SEQ  FROM spex.TB_R_STOCK_CARD A  WHERE CONVERT ( DATE, A.DATE ) = CONVERT ( DATE, CURRENT_TIMESTAMP ) ),
  409.                                         @PART_NO,
  410.                                         P.PART_NAME,
  411.                                         P.SUPPLIER_CD,
  412.                                         P.SUB_SUPPLIER_CD,
  413.                                         P.SUPPLIER_PLANT,
  414.                                         P.SUB_SUPPLIER_PLANT,
  415.                                         @addQtyRefill,
  416.                                         SOH,
  417.                                         SOH + @addQtyRefill,
  418.                                         NULL,
  419.                                         @USERNAME,
  420.                                         CURRENT_TIMESTAMP,
  421.                                         @addQtyRefill,
  422.                                         CURRENT_TIMESTAMP
  423.                                     FROM spex.TB_M_PACKING_PART P
  424.                                     JOIN spex.TB_R_PART_STOCK_INFO S ON P.PART_NO = S.PART_NO
  425.                                     WHERE P.PART_NO = @PART_NO
  426.                                 END
  427.                                 ELSE
  428.                                 BEGIN
  429.                                     UPDATE A
  430.                                     SET A.QTY = A.QTY + @addQtyRefill,
  431.                                     END_STOCK = B.SOH + @addQtyRefill,
  432.                                     CHANGED_BY = @USERNAME,
  433.                                     CHANGED_DT = CURRENT_TIMESTAMP
  434.                                     FROM spex.TB_R_STOCK_CARD A
  435.                                     JOIN spex.TB_R_PART_STOCK_INFO B ON A.PART_NO = B.PART_NO
  436.                                     WHERE A.PART_NO = @PART_NO
  437.                                     AND CONVERT ( DATE, [DATE] ) = CONVERT ( DATE, CURRENT_TIMESTAMP )
  438.                                     AND FLAG = 0
  439.                                 END
  440.  
  441.                                 SET @MSG_TEXT = @MSG_TEXT + ' | Remaining qty refilled @' +  CONVERT(VARCHAR(MAX), @ADD_QTY)
  442.                                 INSERT INTO #TB_T_DATA
  443.                                 VALUES ('Success', @MSG_TEXT)
  444.  
  445.                             END
  446.                     END
  447.  
  448.                 END
  449.  
  450.             END
  451.  
  452.         END
  453.         ELSE
  454.         BEGIN
  455.             SET @MSG_TEXT = 'Part No ' + @PART_NO + ' on Reserve Location ' + @SET_RESERVE_LOC_CURRENT + ' not found or All done'
  456.             INSERT INTO #TB_T_DATA
  457.             VALUES ('Failed', @MSG_TEXT)
  458.         END
  459.  
  460.     END
  461.     ELSE
  462.     BEGIN
  463.         SET @MSG_TEXT = 'INVALID RESERVE ADDRESS!'
  464.         INSERT INTO #TB_T_DATA
  465.         VALUES ('Failed', @MSG_TEXT)
  466.     END
  467.  
  468.     SELECT RESULT
  469.         ,Message
  470.     FROM #TB_T_DATA
  471.  
  472. END
  473. GO
  474.  
  475. -- https://pastebin.com/Hnr7T7G4
  476. -- EXECUTE spex.SP_AMANAH_RE_FILL_5_DO_RE_FILL '851430D030', 'S0104-3-B', 'S-UPARMAN-001,S-UPARMAN-001', 2, 1006, 2020, 994, 3, 'NON-DIRECT', 'REBI-S-240220-001', 1, 'S', 'AMANAH.Yusup';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement