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.

500 lines
32 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_scPayDetailHub] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_scPayDetailHub]
  9. @flag VARCHAR(50) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@scPayDetailHubId VARCHAR(30) = NULL
  12. ,@scPayMasterHubId INT = NULL
  13. ,@fromAmt MONEY = NULL
  14. ,@toAmt MONEY = NULL
  15. ,@pcnt FLOAT = NULL
  16. ,@minAmt MONEY = NULL
  17. ,@maxAmt MONEY = NULL
  18. ,@sortBy VARCHAR(50) = NULL
  19. ,@sortOrder VARCHAR(5) = NULL
  20. ,@pageSize INT = NULL
  21. ,@pageNumber INT = NULL
  22. AS
  23. SET NOCOUNT ON
  24. SET XACT_ABORT ON
  25. BEGIN TRY
  26. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  27. DECLARE
  28. @sql VARCHAR(MAX)
  29. ,@oldValue VARCHAR(MAX)
  30. ,@newValue VARCHAR(MAX)
  31. ,@module VARCHAR(10)
  32. ,@tableAlias VARCHAR(100)
  33. ,@logIdentifier VARCHAR(50)
  34. ,@logParamMod VARCHAR(100)
  35. ,@logParamMain VARCHAR(100)
  36. ,@table VARCHAR(MAX)
  37. ,@select_field_list VARCHAR(MAX)
  38. ,@extra_field_list VARCHAR(MAX)
  39. ,@sql_filter VARCHAR(MAX)
  40. ,@id VARCHAR(10)
  41. ,@modType VARCHAR(6)
  42. ,@ApprovedFunctionId INT
  43. SELECT
  44. @ApprovedFunctionId = 20201330
  45. ,@logIdentifier = 'scPayDetailHubId'
  46. ,@logParamMain = 'scPayDetailHub'
  47. ,@logParamMod = 'scPayDetailHubHistory'
  48. ,@module = '20'
  49. ,@tableAlias = 'Hub Custom Pay Commission Detail'
  50. IF @flag IN ('i', 'u')
  51. BEGIN
  52. SET @sql = '
  53. SELECT
  54. fromAmt
  55. ,toAmt
  56. FROM scPayDetailHub
  57. WHERE scPayMasterHubId = '+ CAST(ISNULL(@scPayMasterHubId, 0) AS VARCHAR) + '
  58. AND scPayDetailHubId <> ' + CAST(ISNULL(@scPayDetailHubId, 0) AS VARCHAR) + ' AND ISNULL(isDeleted, ''N'') <> ''Y''
  59. '
  60. DECLARE @success INT
  61. EXEC dbo.proc_CheckRange
  62. @sql = @sql
  63. ,@from = @fromAmt
  64. ,@to = @toAmt
  65. ,@id = @scPayDetailHubId
  66. ,@success = @success OUTPUT
  67. IF ISNULL(@success, 0) = 0
  68. RETURN
  69. IF(@maxAmt < @minAmt)
  70. BEGIN
  71. EXEC proc_errorHandler 0, 'Min Amount is greater than Max Amount!!!', @scPayDetailHubId
  72. RETURN
  73. END
  74. END
  75. IF @flag = 'i'
  76. BEGIN
  77. IF EXISTS (
  78. SELECT 'X' FROM scPayMasterHub WITH(NOLOCK)
  79. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  80. )
  81. BEGIN
  82. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  83. RETURN
  84. END
  85. IF EXISTS (
  86. SELECT 'X' FROM scPayMasterHubHistory WITH(NOLOCK)
  87. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  88. )
  89. BEGIN
  90. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  91. RETURN
  92. END
  93. BEGIN TRANSACTION
  94. INSERT INTO scPayDetailHub (
  95. scPayMasterHubId
  96. ,fromAmt
  97. ,toAmt
  98. ,pcnt
  99. ,minAmt
  100. ,maxAmt
  101. ,createdBy
  102. ,createdDate
  103. )
  104. SELECT
  105. @scPayMasterHubId
  106. ,@fromAmt
  107. ,@toAmt
  108. ,@pcnt
  109. ,@minAmt
  110. ,@maxAmt
  111. ,@user
  112. ,GETDATE()
  113. SET @scPayDetailHubId = SCOPE_IDENTITY()
  114. IF @@TRANCOUNT > 0
  115. COMMIT TRANSACTION
  116. EXEC proc_errorHandler 0, 'Record has been added successfully.', @scPayDetailHubId
  117. END
  118. ELSE IF @flag = 'a'
  119. BEGIN
  120. IF EXISTS (
  121. SELECT 'X' FROM scPayDetailHubHistory WITH(NOLOCK)
  122. WHERE scPayDetailHubId = @scPayDetailHubId AND createdBy = @user AND approvedBy IS NULL
  123. )
  124. BEGIN
  125. SELECT
  126. mode.*
  127. FROM scPayDetailHubHistory mode WITH(NOLOCK)
  128. INNER JOIN scPayDetailHub main WITH(NOLOCK) ON mode.scPayDetailHubId = main.scPayDetailHubId
  129. WHERE mode.scPayDetailHubId= @scPayDetailHubId and mode.approvedBy IS NULL
  130. END
  131. ELSE
  132. BEGIN
  133. SELECT * FROM scPayDetailHub WITH(NOLOCK) WHERE scPayDetailHubId = @scPayDetailHubId
  134. END
  135. END
  136. ELSE IF @flag = 'u'
  137. BEGIN
  138. IF EXISTS (
  139. SELECT 'X' FROM scPayMasterHub WITH(NOLOCK)
  140. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  141. )
  142. BEGIN
  143. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  144. RETURN
  145. END
  146. IF EXISTS (
  147. SELECT 'X' FROM scPayMasterHubHistory WITH(NOLOCK)
  148. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  149. )
  150. BEGIN
  151. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  152. RETURN
  153. END
  154. IF EXISTS (
  155. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  156. WHERE scPayDetailHubId = @scPayDetailHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  157. )
  158. BEGIN
  159. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  160. RETURN
  161. END
  162. IF EXISTS (
  163. SELECT 'X' FROM scPayDetailHubHistory WITH(NOLOCK)
  164. WHERE scPayDetailHubId = @scPayDetailHubId AND (createdBy<> @user AND approvedBy IS NULL)
  165. )
  166. BEGIN
  167. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  168. RETURN
  169. END
  170. BEGIN TRANSACTION
  171. IF EXISTS (SELECT 'X' FROM scPayDetailHub WHERE approvedBy IS NULL AND scPayDetailHubId = @scPayDetailHubId)
  172. BEGIN
  173. UPDATE scPayDetailHub SET
  174. scPayMasterHubId = @scPayMasterHubId
  175. ,fromAmt = @fromAmt
  176. ,toAmt = @toAmt
  177. ,pcnt = @pcnt
  178. ,minAmt = @minAmt
  179. ,maxAmt = @maxAmt
  180. ,modifiedBy = @user
  181. ,modifiedDate = GETDATE()
  182. WHERE scPayDetailHubId = @scPayDetailHubId
  183. END
  184. ELSE
  185. BEGIN
  186. DELETE FROM scPayDetailHubHistory WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  187. INSERT INTO scPayDetailHubHistory(
  188. scPayDetailHubId
  189. ,fromAmt
  190. ,toAmt
  191. ,pcnt
  192. ,minAmt
  193. ,maxAmt
  194. ,createdBy
  195. ,createdDate
  196. ,modType
  197. )
  198. SELECT
  199. @scPayDetailHubId
  200. ,@fromAmt
  201. ,@toAmt
  202. ,@pcnt
  203. ,@minAmt
  204. ,@maxAmt
  205. ,@user
  206. ,GETDATE()
  207. ,'U'
  208. END
  209. IF @@TRANCOUNT > 0
  210. COMMIT TRANSACTION
  211. EXEC proc_errorHandler 0, 'Record updated successfully.', @scPayDetailHubId
  212. END
  213. ELSE IF @flag = 'd'
  214. BEGIN
  215. IF EXISTS (
  216. SELECT 'X' FROM scPayMasterHub WITH(NOLOCK)
  217. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  218. )
  219. BEGIN
  220. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  221. RETURN
  222. END
  223. IF EXISTS (
  224. SELECT 'X' FROM scPayMasterHubHistory WITH(NOLOCK)
  225. WHERE scPayMasterHubId = @scPayMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  226. )
  227. BEGIN
  228. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  229. RETURN
  230. END
  231. IF EXISTS (
  232. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  233. WHERE scPayDetailHubId = @scPayDetailHubId AND (createdBy <> @user AND approvedBy IS NULL)
  234. )
  235. BEGIN
  236. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  237. RETURN
  238. END
  239. IF EXISTS (
  240. SELECT 'X' FROM scPayDetailHubHistory WITH(NOLOCK)
  241. WHERE scPayDetailHubId = @scPayDetailHubId AND (createdBy <> @user AND approvedBy IS NULL)
  242. )
  243. BEGIN
  244. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @scPayDetailHubId
  245. RETURN
  246. END
  247. SELECT @scPayMasterHubId = scPayMasterHubId FROM scPayDetailHub WHERE scPayDetailHubId = @scPayDetailHubId
  248. IF EXISTS(SELECT 'X' FROM scPayDetailHub WITH(NOLOCK) WHERE scPayDetailHubId = @scPayDetailHubId AND createdBy = @user AND approvedBy IS NULL)
  249. BEGIN
  250. DELETE FROM scPayDetailHub WHERE scPayDetailHubId = @scPayDetailHubId
  251. EXEC proc_errorHandler 0, 'Record deleted successfully.', @scPayMasterHubId
  252. END
  253. INSERT INTO scPayDetailHubHistory(
  254. scPayDetailHubId
  255. ,fromAmt
  256. ,toAmt
  257. ,pcnt
  258. ,minAmt
  259. ,maxAmt
  260. ,createdBy
  261. ,createdDate
  262. ,modType
  263. )
  264. SELECT
  265. scPayDetailHubId
  266. ,fromAmt
  267. ,toAmt
  268. ,pcnt
  269. ,minAmt
  270. ,maxAmt
  271. ,@user
  272. ,GETDATE()
  273. ,'D'
  274. FROM scPayDetailHub
  275. WHERE scPayDetailHubId = @scPayDetailHubId
  276. SET @modType = 'delete'
  277. EXEC proc_errorHandler 0, 'Record deleted successfully.', @scPayMasterHubId
  278. END
  279. ELSE IF @flag IN ('s', 'p')
  280. BEGIN
  281. IF @sortBy IS NULL
  282. SET @sortBy = 'scPayDetailHubId'
  283. IF @sortOrder IS NULL
  284. SET @sortOrder = 'ASC'
  285. SET @table = '(
  286. SELECT
  287. scPayDetailHubId = ISNULL(mode.scPayDetailHubId, main.scPayDetailHubId)
  288. ,fromAmt = ISNULL(mode.fromAmt, main.fromAmt)
  289. ,toAmt = ISNULL(mode.toAmt, main.toAmt)
  290. ,pcnt = ISNULL(mode.pcnt, main.pcnt)
  291. ,minAmt = ISNULL(mode.minAmt, main.minAmt)
  292. ,maxAmt = ISNULL(mode.maxAmt, main.maxAmt)
  293. ,main.createdBy
  294. ,main.createdDate
  295. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  296. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  297. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  298. (mode.scPayDetailHubId IS NOT NULL)
  299. THEN ''Y'' ELSE ''N'' END
  300. FROM scPayDetailHub main WITH(NOLOCK)
  301. LEFT JOIN scPayDetailHubHistory mode ON main.scPayDetailHubId = mode.scPayDetailHubId AND mode.approvedBy IS NULL
  302. AND (
  303. mode.createdBy = ''' + @user + '''
  304. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  305. )
  306. WHERE main.scPayMasterHubId = ' + CAST (@scPayMasterHubId AS VARCHAR) + ' AND ISNULL(main.isDeleted, ''N'') <> ''Y''
  307. AND (
  308. main.approvedBy IS NOT NULL
  309. OR main.createdBy = ''' + @user + '''
  310. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  311. )
  312. --AND NOT(ISNULL(mode.modType, '''') = ''D'' AND mode.createdBy = ''' + @user + ''')
  313. ) x'
  314. SET @sql_filter = ''
  315. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  316. SET @select_field_list ='
  317. scPayDetailHubId
  318. ,fromAmt
  319. ,toAmt
  320. ,pcnt
  321. ,minAmt
  322. ,maxAmt
  323. ,createdBy
  324. ,createdDate
  325. ,modifiedBy
  326. ,hasChanged
  327. '
  328. EXEC dbo.proc_paging
  329. @table
  330. ,@sql_filter
  331. ,@select_field_list
  332. ,@extra_field_list
  333. ,@sortBy
  334. ,@sortOrder
  335. ,@pageSize
  336. ,@pageNumber
  337. END
  338. ELSE IF @flag = 'reject'
  339. BEGIN
  340. IF NOT EXISTS (
  341. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  342. WHERE scPayDetailHubId = @scPayDetailHubId
  343. )
  344. AND
  345. NOT EXISTS (
  346. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  347. WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  348. )
  349. BEGIN
  350. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @scPayDetailHubId
  351. RETURN
  352. END
  353. IF EXISTS (SELECT 'X' FROM scPayDetailHub WHERE approvedBy IS NULL AND scPayDetailHubId = @scPayDetailHubId)
  354. BEGIN --New record
  355. BEGIN TRANSACTION
  356. SET @modType = 'Reject'
  357. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scPayDetailHubId, @oldValue OUTPUT
  358. INSERT INTO #msg(errorCode, msg, id)
  359. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scPayDetailHubId, @user, @oldValue, @newValue
  360. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  361. BEGIN
  362. IF @@TRANCOUNT > 0
  363. ROLLBACK TRANSACTION
  364. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @scPayDetailHubId
  365. RETURN
  366. END
  367. DELETE FROM scPayDetailHub WHERE scPayDetailHubId = @scPayDetailHubId
  368. IF @@TRANCOUNT > 0
  369. COMMIT TRANSACTION
  370. END
  371. ELSE
  372. BEGIN
  373. BEGIN TRANSACTION
  374. SET @modType = 'Reject'
  375. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scPayDetailHubId, @oldValue OUTPUT
  376. INSERT INTO #msg(errorCode, msg, id)
  377. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scPayDetailHubId, @user, @oldValue, @newValue
  378. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  379. BEGIN
  380. IF @@TRANCOUNT > 0
  381. ROLLBACK TRANSACTION
  382. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @scPayDetailHubId
  383. RETURN
  384. END
  385. DELETE FROM scPayDetailHubHistory WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  386. IF @@TRANCOUNT > 0
  387. COMMIT TRANSACTION
  388. END
  389. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @scPayDetailHubId
  390. END
  391. ELSE IF @flag = 'approve'
  392. BEGIN
  393. IF NOT EXISTS (
  394. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  395. WHERE scPayDetailHubId = @scPayDetailHubId
  396. )
  397. AND
  398. NOT EXISTS (
  399. SELECT 'X' FROM scPayDetailHub WITH(NOLOCK)
  400. WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  401. )
  402. BEGIN
  403. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @scPayDetailHubId
  404. RETURN
  405. END
  406. BEGIN TRANSACTION
  407. IF EXISTS (SELECT 'X' FROM scPayDetailHub WHERE approvedBy IS NULL AND scPayDetailHubId = @scPayDetailHubId )
  408. SET @modType = 'I'
  409. ELSE
  410. SELECT @modType = modType FROM scPayDetailHubHistory WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  411. IF @modType = 'I'
  412. BEGIN --New record
  413. UPDATE scPayDetailHub SET
  414. isActive = 'Y'
  415. ,approvedBy = @user
  416. ,approvedDate= GETDATE()
  417. WHERE scPayDetailHubId = @scPayDetailHubId
  418. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scPayDetailHubId, @newValue OUTPUT
  419. END
  420. ELSE IF @modType = 'U'
  421. BEGIN
  422. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scPayDetailHubId, @oldValue OUTPUT
  423. UPDATE main SET
  424. main.fromAmt = mode.fromAmt
  425. ,main.toAmt = mode.toAmt
  426. ,main.pcnt = mode.pcnt
  427. ,main.minAmt = mode.minAmt
  428. ,main.maxAmt = mode.maxAmt
  429. ,main.modifiedDate = GETDATE()
  430. ,main.modifiedBy = @user
  431. FROM scPayDetailHub main
  432. INNER JOIN scPayDetailHubHistory mode ON mode.scPayDetailHubId = main.scPayDetailHubId
  433. WHERE mode.scPayDetailHubId = @scPayDetailHubId AND mode.approvedBy IS NULL
  434. EXEC [dbo].proc_GetColumnToRow 'scPayDetailHub', 'scPayDetailHubId', @scPayDetailHubId, @newValue OUTPUT
  435. END
  436. ELSE IF @modType = 'D'
  437. BEGIN
  438. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scPayDetailHubId, @oldValue OUTPUT
  439. UPDATE scPayDetailHub SET
  440. isDeleted = 'Y'
  441. ,modifiedDate = GETDATE()
  442. ,modifiedBy = @user
  443. WHERE scPayDetailHubId = @scPayDetailHubId
  444. END
  445. UPDATE scPayDetailHubHistory SET
  446. approvedBy = @user
  447. ,approvedDate = GETDATE()
  448. WHERE scPayDetailHubId = @scPayDetailHubId AND approvedBy IS NULL
  449. INSERT INTO #msg(errorCode, msg, id)
  450. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scPayDetailHubId, @user, @oldValue, @newValue
  451. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  452. BEGIN
  453. IF @@TRANCOUNT > 0
  454. ROLLBACK TRANSACTION
  455. EXEC proc_errorHandler 1, 'Could not approve the changes.', @scPayDetailHubId
  456. RETURN
  457. END
  458. IF @@TRANCOUNT > 0
  459. COMMIT TRANSACTION
  460. EXEC proc_errorHandler 0, 'Changes approved successfully.', @scPayDetailHubId
  461. END
  462. END TRY
  463. BEGIN CATCH
  464. IF @@TRANCOUNT > 0
  465. ROLLBACK TRANSACTION
  466. DECLARE @errorMessage VARCHAR(MAX)
  467. SET @errorMessage = ERROR_MESSAGE()
  468. EXEC proc_errorHandler 1, @errorMessage, @scPayDetailHubId
  469. END CATCH
  470. GO