SP_Cust_PDA_GetPackageCompleteQty.sql 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. -- ================================================
  2. -- Template generated from Template Explorer using:
  3. -- Create Procedure (New Menu).SQL
  4. --
  5. -- Use the Specify Values for Template Parameters
  6. -- command (Ctrl-Shift-M) to fill in the parameter
  7. -- values below.
  8. --
  9. -- This block of comments will not be included in
  10. -- the definition of the procedure.
  11. -- ================================================
  12. SET ANSI_NULLS ON
  13. GO
  14. SET QUOTED_IDENTIFIER ON
  15. GO
  16. -- =============================================
  17. -- Author: ²Ü¼Î½Ü
  18. -- Create date: 2022/8/24
  19. -- Description: »ñÈ¡ÆëÌ×ÊýÁ¿
  20. -- =============================================
  21. IF (EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = 'SP_Cust_PDA_GetPackageCompleteQty'))
  22. DROP PROC SP_Cust_PDA_GetPackageCompleteQty
  23. GO
  24. CREATE PROCEDURE SP_Cust_PDA_GetPackageCompleteQty
  25. -- Add the parameters for the stored procedure here
  26. @BarCodes AS NVARCHAR(MAX),
  27. @OrgCode AS NVARCHAR(50)
  28. AS
  29. BEGIN
  30. -- SET NOCOUNT ON added to prevent extra result sets from
  31. -- interfering with SELECT statements.
  32. SET NOCOUNT ON;
  33. -- Insert statements for procedure here
  34. DECLARE @SQL NVARCHAR(MAX)
  35. DECLARE @OrgID BIGINT
  36. DECLARE @PackageQty INT
  37. DECLARE @LackQty INT
  38. DECLARE @UnPackageQty INT
  39. SET @PackageQty = 0
  40. SET @LackQty = 0
  41. SET @UnPackageQty = 0
  42. SELECT @OrgID = ID FROM Base_Organization WHERE Code = @OrgCode
  43. IF OBJECT_ID('tempdb..#TempBarCodeTable') IS NOT NULL
  44. BEGIN
  45. DROP TABLE #TempBarCodeTable
  46. END
  47. CREATE TABLE #TempBarCodeTable (
  48. BarCode NVARCHAR(500)
  49. )
  50. SET @SQL = 'INSERT INTO #TempBarCodeTable SELECT ''' + REPLACE (@BarCodes,',',''' AS BarCode UNION SELECT ''') + ''''
  51. EXEC(@SQL)
  52. IF OBJECT_ID('tempdb..#TempPackageCodeTable') IS NOT NULL
  53. BEGIN
  54. DROP TABLE #TempPackageCodeTable
  55. END
  56. CREATE TABLE #TempPackageCodeTable (
  57. PackageCode NVARCHAR(500),
  58. Segment77 NVARCHAR(50)
  59. )
  60. INSERT INTO #TempPackageCodeTable
  61. SELECT DISTINCT
  62. -- SUBSTRING(Code, 1, LEN(Code) - 5) AS PackageCode,
  63. CASE WHEN (SUBSTRING(Code, 1, 1) = 'C' AND LEN(Code) = 16) THEN SUBSTRING(Code, 1, 9) + '_' + SUBSTRING(Code, 12, 5) ELSE SUBSTRING(Code, 1, LEN(Code) - 5) END AS PackageCode,
  64. Segment77 AS Segment77
  65. FROM BC_BarCode
  66. WHERE Code IN (SELECT BarCode FROM #TempBarCodeTable)
  67. -- AND Org = @OrgID
  68. AND ISNULL(Segment78, 1) <> 1
  69. --SELECT * FROM #TempPackageCodeTable
  70. SELECT
  71. -- @UnPackageQty = COUNT(ID)
  72. @UnPackageQty = SUM(Qty)
  73. FROM BC_BarCode
  74. WHERE Code IN (SELECT BarCode FROM #TempBarCodeTable)
  75. -- AND Org = @OrgID
  76. AND ISNULL(Segment78, 1) = 1
  77. SELECT @LackQty = Count(DISTINCT CASE WHEN (SUBSTRING(Code, 1, 1) = 'C' AND LEN(Code) = 16) THEN SUBSTRING(Code, 1, 9) + '_' + SUBSTRING(Code, 12, 5) ELSE CASE WHEN LEN(Code) > 5 THEN SUBSTRING(Code, 1, LEN(Code) - 5) ELSE '' END END)
  78. FROM BC_BarCode T_BarCode
  79. -- INNER JOIN #TempPackageCodeTable T_PackageCode ON SUBSTRING(T_BarCode.Code, 1, LEN(T_BarCode.Code) - 5) = T_PackageCode.PackageCode AND T_BarCode.Segment77 = T_PackageCode.Segment77
  80. INNER JOIN #TempPackageCodeTable T_PackageCode ON CASE WHEN (SUBSTRING(Code, 1, 1) = 'C' AND LEN(Code) = 16) THEN SUBSTRING(Code, 1, 9) + '_' + SUBSTRING(Code, 12, 5) ELSE CASE WHEN LEN(Code) > 5 THEN SUBSTRING(Code, 1, LEN(Code) - 5) ELSE '' END END = T_PackageCode.PackageCode
  81. AND T_BarCode.Segment77 = T_PackageCode.Segment77
  82. WHERE T_BarCode.Code NOT IN (SELECT BarCode FROM #TempBarCodeTable)
  83. -- AND T_BarCode.Org = @OrgID
  84. AND ISNULL(T_BarCode.Segment78, 1) <> 1
  85. SELECT @PackageQty = COUNT(PackageCode) FROM #TempPackageCodeTable
  86. SELECT (ISNULL(@UnPackageQty, 0) + @PackageQty - @LackQty) AS PickQty
  87. END
  88. GO
  89. -- EXEC SP_Cust_PDA_GetPackageCompleteQty @BarCodes = '11019999-00012-11000000051110-MO-110-2209140008-00001,11019999-00012-11000000051110-MO-110-2209140008-00002,11019999-00012-11000000051110-MO-110-2209140008-00003,11019999-00012-11000000051110-MO-110-2209140008-00004', @OrgCode = '110'