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.

502 lines
32 KiB

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