You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
4.9 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[PROC_CUSTOMER_APPROVE_USER_WISE] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[PROC_CUSTOMER_APPROVE_USER_WISE]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[PROC_CUSTOMER_APPROVE_USER_WISE] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[PROC_CUSTOMER_APPROVE_USER_WISE]
  12. (
  13. @flag VARCHAR(20) = NULL
  14. ,@startDate VARCHAR(30) = NULL
  15. ,@endDate VARCHAR(30) = NULL
  16. ,@user VARCHAR(30) = NULL
  17. ,@country VARCHAR(30) = NULL
  18. ,@approvedBy VARCHAR(80) = NULL
  19. )
  20. AS
  21. SET NOCOUNT ON;
  22. SET XACT_ABORT ON;
  23. BEGIN
  24. IF @flag = 'rpt'
  25. BEGIN
  26. --SELECT ALL CUSTOMER'S IN THAT RANGE
  27. SELECT CM.approvedBy APPROVED_BY, C.countryName NATIVE_COUNTRY, COUNT(1) QTY INTO #CUSTOMER_TEMP
  28. FROM customerMaster CM(NOLOCK)
  29. INNER JOIN countryMaster C(NOLOCK) ON C.countryId = CM.nativeCountry
  30. WHERE CM.approvedDate BETWEEN @startDate AND @endDate + ' 23:59:59'
  31. AND CM.approvedBy = ISNULL(@approvedBy, CM.approvedBy)
  32. AND CM.nativeCountry = ISNULL(@country, CM.nativeCountry)
  33. AND CM.approvedBy IS NOT NULL
  34. GROUP BY CM.approvedBy, C.countryName
  35. ALTER TABLE #CUSTOMER_TEMP ADD APPROVED_BY_FULL_NAME VARCHAR(150)
  36. UPDATE T SET T.APPROVED_BY_FULL_NAME = A.firstName + ISNULL(' ' + A.middleName, '') + ISNULL(' ' + A.lastName, '')
  37. FROM #CUSTOMER_TEMP T
  38. LEFT JOIN applicationUsers A(NOLOCK) ON A.userName = T.APPROVED_BY
  39. IF NOT EXISTS(SELECT TOP 1 * FROM #CUSTOMER_TEMP)
  40. BEGIN
  41. SELECT SNO = 1, [ERROR_MESSAGE] = 'NO DATA FOUND FOR THIS FILTER'
  42. RETURN
  43. END
  44. DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
  45. SET @columns = '';
  46. SELECT
  47. @columns += N', p.' + QUOTENAME(NATIVE_COUNTRY)
  48. FROM (SELECT DISTINCT NATIVE_COUNTRY FROM #CUSTOMER_TEMP) AS x;
  49. SET @columns = ', p.Country ' + @columns
  50. SET @sql = N'
  51. SELECT *
  52. FROM
  53. (
  54. SELECT APPROVED_BY_FULL_NAME, APPROVED_BY, NATIVE_COUNTRY, QTY = ISNULL(QTY, 0) FROM #CUSTOMER_TEMP
  55. ) AS j
  56. PIVOT
  57. (
  58. SUM(QTY) FOR NATIVE_COUNTRY IN ('
  59. + STUFF(REPLACE(REPLACE(REPLACE(@columns, 'p.Country ,', ''), ', p.[', ',['), 'p.', ''), 1, 1, '')
  60. + ')
  61. ) AS p;';
  62. EXEC sp_executesql @sql;
  63. END
  64. ELSE IF @flag = 'summary'
  65. BEGIN
  66. SELECT CM.approvedBy APPROVER_USER_NAME, COUNT(1) [NUMBER_OF_CUSTOMERS] INTO #TEMP
  67. FROM customerMaster CM(NOLOCK)
  68. LEFT JOIN countryMaster C(NOLOCK) ON C.countryId = CM.nativeCountry
  69. WHERE CM.approvedDate BETWEEN @startDate AND @endDate + ' 23:59:59'
  70. AND CM.approvedBy = ISNULL(@approvedBy, CM.approvedBy)
  71. AND CM.nativeCountry = ISNULL(@country, CM.nativeCountry)
  72. AND CM.approvedBy IS NOT NULL
  73. GROUP BY CM.approvedBy
  74. ALTER TABLE #TEMP ADD APPROVER_NAME VARCHAR(100),[BRANCH_NAME] VARCHAR(100)
  75. UPDATE T SET T.APPROVER_NAME = A.firstName + ISNULL(' ' + A.middleName, '') + ISNULL(' ' + A.lastName, ''),[BRANCH_NAME] = M.agentName
  76. FROM #TEMP T
  77. LEFT JOIN applicationUsers A(NOLOCK) ON A.userName = T.APPROVER_USER_NAME
  78. INNER JOIN agentMaster M (NOLOCK) ON M.agentId = A.agentId
  79. SELECT [BRANCH_NAME],APPROVER_NAME, APPROVER_USER_NAME, [NUMBER_OF_CUSTOMERS] FROM #TEMP
  80. ORDER BY [BRANCH_NAME]
  81. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  82. select 'Country' head, CASE WHEN @country IS NULL THEN 'All' ELSE (SELECT countryName FROM countryMaster (NOLOCK) WHERE countryId = @country) END UNION ALL
  83. select 'Approved By' head, ISNULL(@approvedBy, 'All') UNION ALL
  84. SELECT 'From Date' head, @startDate value UNION ALL
  85. SELECT 'To Date' head, @endDate value
  86. SELECT 'Customer Registration Summary' title
  87. END
  88. ELSE IF @flag = 'detail'
  89. BEGIN
  90. SELECT firstName [CUSTOMER_NAME], email [CUSTOMER_EMAIL], mobile [CUSTOMER_MOBILE], C.countryName [NATIVE_COUNTRY]
  91. FROM customerMaster CM(NOLOCK)
  92. INNER JOIN countryMaster C(NOLOCK) ON C.countryId = CM.nativeCountry
  93. WHERE CM.approvedDate BETWEEN @startDate AND @endDate + ' 23:59:59'
  94. AND CM.approvedBy = @approvedBy
  95. AND C.countryName = @country
  96. AND CM.approvedBy IS NOT NULL
  97. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  98. select 'Country' head, ISNULL(@country, 'All') UNION ALL
  99. select 'Approved By' head, ISNULL(@approvedBy, 'All') UNION ALL
  100. SELECT 'From Date' head, @startDate value UNION ALL
  101. SELECT 'To Date' head, @endDate value
  102. SELECT 'Customer Registration Detail Report' title
  103. END
  104. END
  105. --PROC_CUSTOMER_APPROVE_USER_WISE @flag = 'rpt',@startDate= '2018-01-01',@endDate = '2018-01-28',@user= 'ADMIN',@country= NULL,@approvedBy= NULL
  106. --proc_customerReport @flag = 'register-matrix',@startDate= '2018-01-01',@endDate = '2018-01-28',@user= 'ADMIN',@country= NULL,@branch= NULL
  107. --EXEC PROC_CUSTOMER_APPROVE_USER_WISE @flag = 'rpt',@user = 'admin',@startDate = '12/01/2017',@endDate = '7/10/2018',@country = null,@approvedBy = null
  108. --EXEC PROC_CUSTOMER_APPROVE_USER_WISE @flag = 'detail',@user = 'admin',@startDate = '04/01/2018',@endDate = '7/10/2018',@country = 'Cambodia',@approvedBy = 'anisham'
  109. GO