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_scSendDetailHub] 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_scSendDetailHub]
  9. @flag VARCHAR(50) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@scSendDetailHubId VARCHAR(30) = NULL
  12. ,@scSendMasterHubId 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 = 20131130
  45. ,@logIdentifier = 'scSendDetailHubId'
  46. ,@logParamMain = 'scSendDetailHub'
  47. ,@logParamMod = 'scSendDetailHubHistory'
  48. ,@module = '20'
  49. ,@tableAlias = 'Hub Custom Send Commission Detail'
  50. IF @flag IN ('i', 'u')
  51. BEGIN
  52. SET @sql = '
  53. SELECT
  54. fromAmt
  55. ,toAmt
  56. FROM scSendDetailHub
  57. WHERE scSendMasterHubId = '+ CAST(ISNULL(@scSendMasterHubId, 0) AS VARCHAR) + '
  58. AND scSendDetailHubId <> ' + CAST(ISNULL(@scSendDetailHubId, 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 = @scSendDetailHubId
  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!!!', @scSendDetailHubId
  72. RETURN
  73. END
  74. END
  75. IF @flag = 'i'
  76. BEGIN
  77. IF EXISTS (
  78. SELECT 'X' FROM scSendMasterHub WITH(NOLOCK)
  79. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  83. RETURN
  84. END
  85. IF EXISTS (
  86. SELECT 'X' FROM scSendMasterHubHistory WITH(NOLOCK)
  87. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  91. RETURN
  92. END
  93. BEGIN TRANSACTION
  94. INSERT INTO scSendDetailHub (
  95. scSendMasterHubId
  96. ,fromAmt
  97. ,toAmt
  98. ,pcnt
  99. ,minAmt
  100. ,maxAmt
  101. ,createdBy
  102. ,createdDate
  103. )
  104. SELECT
  105. @scSendMasterHubId
  106. ,@fromAmt
  107. ,@toAmt
  108. ,@pcnt
  109. ,@minAmt
  110. ,@maxAmt
  111. ,@user
  112. ,GETDATE()
  113. SET @scSendDetailHubId = SCOPE_IDENTITY()
  114. IF @@TRANCOUNT > 0
  115. COMMIT TRANSACTION
  116. EXEC proc_errorHandler 0, 'Record has been added successfully.', @scSendDetailHubId
  117. END
  118. ELSE IF @flag = 'a'
  119. BEGIN
  120. IF EXISTS (
  121. SELECT 'X' FROM scSendDetailHubHistory WITH(NOLOCK)
  122. WHERE scSendDetailHubId = @scSendDetailHubId AND createdBy = @user AND approvedBy IS NULL
  123. )
  124. BEGIN
  125. SELECT
  126. mode.*
  127. FROM scSendDetailHubHistory mode WITH(NOLOCK)
  128. INNER JOIN scSendDetailHub main WITH(NOLOCK) ON mode.scSendDetailHubId = main.scSendDetailHubId
  129. WHERE mode.scSendDetailHubId= @scSendDetailHubId and mode.approvedBy IS NULL
  130. END
  131. ELSE
  132. BEGIN
  133. SELECT * FROM scSendDetailHub WITH(NOLOCK) WHERE scSendDetailHubId = @scSendDetailHubId
  134. END
  135. END
  136. ELSE IF @flag = 'u'
  137. BEGIN
  138. IF EXISTS (
  139. SELECT 'X' FROM scSendMasterHub WITH(NOLOCK)
  140. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  144. RETURN
  145. END
  146. IF EXISTS (
  147. SELECT 'X' FROM scSendMasterHubHistory WITH(NOLOCK)
  148. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  152. RETURN
  153. END
  154. IF EXISTS (
  155. SELECT 'X' FROM scSendDetailHub WITH(NOLOCK)
  156. WHERE scSendDetailHubId = @scSendDetailHubId 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.', @scSendDetailHubId
  160. RETURN
  161. END
  162. IF EXISTS (
  163. SELECT 'X' FROM scSendDetailHubHistory WITH(NOLOCK)
  164. WHERE scSendDetailHubId = @scSendDetailHubId 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.', @scSendDetailHubId
  168. RETURN
  169. END
  170. BEGIN TRANSACTION
  171. IF EXISTS (SELECT 'X' FROM scSendDetailHub WHERE approvedBy IS NULL AND scSendDetailHubId = @scSendDetailHubId)
  172. BEGIN
  173. UPDATE scSendDetailHub SET
  174. scSendMasterHubId = @scSendMasterHubId
  175. ,fromAmt = @fromAmt
  176. ,toAmt = @toAmt
  177. ,pcnt = @pcnt
  178. ,minAmt = @minAmt
  179. ,maxAmt = @maxAmt
  180. ,modifiedBy = @user
  181. ,modifiedDate = GETDATE()
  182. WHERE scSendDetailHubId = @scSendDetailHubId
  183. END
  184. ELSE
  185. BEGIN
  186. DELETE FROM scSendDetailHubHistory WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  187. INSERT INTO scSendDetailHubHistory(
  188. scSendDetailHubId
  189. ,fromAmt
  190. ,toAmt
  191. ,pcnt
  192. ,minAmt
  193. ,maxAmt
  194. ,createdBy
  195. ,createdDate
  196. ,modType
  197. )
  198. SELECT
  199. @scSendDetailHubId
  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.', @scSendDetailHubId
  212. END
  213. ELSE IF @flag = 'd'
  214. BEGIN
  215. IF EXISTS (
  216. SELECT 'X' FROM scSendMasterHub WITH(NOLOCK)
  217. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  221. RETURN
  222. END
  223. IF EXISTS (
  224. SELECT 'X' FROM scSendMasterHubHistory WITH(NOLOCK)
  225. WHERE scSendMasterHubId = @scSendMasterHubId 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.', @scSendDetailHubId
  229. RETURN
  230. END
  231. IF EXISTS (
  232. SELECT 'X' FROM scSendDetailHub WITH(NOLOCK)
  233. WHERE scSendDetailHubId = @scSendDetailHubId 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.', @scSendDetailHubId
  237. RETURN
  238. END
  239. IF EXISTS (
  240. SELECT 'X' FROM scSendDetailHubHistory WITH(NOLOCK)
  241. WHERE scSendDetailHubId = @scSendDetailHubId 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.', @scSendDetailHubId
  245. RETURN
  246. END
  247. SELECT @scSendMasterHubId = scSendMasterHubId FROM scSendDetailHub WHERE scSendDetailHubId = @scSendDetailHubId
  248. IF EXISTS(SELECT 'X' FROM scSendDetailHub WITH(NOLOCK) WHERE scSendDetailHubId = @scSendDetailHubId AND createdBy = @user AND approvedBy IS NULL)
  249. BEGIN
  250. DELETE FROM scSendDetailHub WHERE scSendDetailHubId = @scSendDetailHubId
  251. EXEC proc_errorHandler 0, 'Record deleted successfully.', @scSendMasterHubId
  252. RETURN
  253. END
  254. INSERT INTO scSendDetailHubHistory(
  255. scSendDetailHubId
  256. ,fromAmt
  257. ,toAmt
  258. ,pcnt
  259. ,minAmt
  260. ,maxAmt
  261. ,createdBy
  262. ,createdDate
  263. ,modType
  264. )
  265. SELECT
  266. scSendDetailHubId
  267. ,fromAmt
  268. ,toAmt
  269. ,pcnt
  270. ,minAmt
  271. ,maxAmt
  272. ,@user
  273. ,GETDATE()
  274. ,'D'
  275. FROM scSendDetailHub
  276. WHERE scSendDetailHubId = @scSendDetailHubId
  277. SET @modType = 'delete'
  278. EXEC proc_errorHandler 0, 'Record deleted successfully.', @scSendMasterHubId
  279. END
  280. ELSE IF @flag IN ('s', 'p')
  281. BEGIN
  282. IF @sortBy IS NULL
  283. SET @sortBy = 'scSendDetailHubId'
  284. IF @sortOrder IS NULL
  285. SET @sortOrder = 'ASC'
  286. SET @table = '(
  287. SELECT
  288. scSendDetailHubId = ISNULL(mode.scSendDetailHubId, main.scSendDetailHubId)
  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.scSendDetailHubId IS NOT NULL)
  300. THEN ''Y'' ELSE ''N'' END
  301. FROM scSendDetailHub main WITH(NOLOCK)
  302. LEFT JOIN scSendDetailHubHistory mode ON main.scSendDetailHubId = mode.scSendDetailHubId 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.scSendMasterHubId = ' + CAST (@scSendMasterHubId 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 @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  317. SET @select_field_list ='
  318. scSendDetailHubId
  319. ,fromAmt
  320. ,toAmt
  321. ,pcnt
  322. ,minAmt
  323. ,maxAmt
  324. ,createdBy
  325. ,createdDate
  326. ,modifiedBy
  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 scSendDetailHub WITH(NOLOCK)
  343. WHERE scSendDetailHubId = @scSendDetailHubId
  344. )
  345. AND
  346. NOT EXISTS (
  347. SELECT 'X' FROM scSendDetailHub WITH(NOLOCK)
  348. WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  349. )
  350. BEGIN
  351. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @scSendDetailHubId
  352. RETURN
  353. END
  354. IF EXISTS (SELECT 'X' FROM scSendDetailHub WHERE approvedBy IS NULL AND scSendDetailHubId = @scSendDetailHubId)
  355. BEGIN --New record
  356. BEGIN TRANSACTION
  357. SET @modType = 'Reject'
  358. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scSendDetailHubId, @oldValue OUTPUT
  359. INSERT INTO #msg(errorCode, msg, id)
  360. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scSendDetailHubId, @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.', @scSendDetailHubId
  366. RETURN
  367. END
  368. DELETE FROM scSendDetailHub WHERE scSendDetailHubId = @scSendDetailHubId
  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, @scSendDetailHubId, @oldValue OUTPUT
  377. INSERT INTO #msg(errorCode, msg, id)
  378. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scSendDetailHubId, @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.', @scSendDetailHubId
  384. RETURN
  385. END
  386. DELETE FROM scSendDetailHubHistory WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  387. IF @@TRANCOUNT > 0
  388. COMMIT TRANSACTION
  389. END
  390. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @scSendDetailHubId
  391. END
  392. ELSE IF @flag = 'approve'
  393. BEGIN
  394. IF NOT EXISTS (
  395. SELECT 'X' FROM scSendDetailHub WITH(NOLOCK)
  396. WHERE scSendDetailHubId = @scSendDetailHubId
  397. )
  398. AND
  399. NOT EXISTS (
  400. SELECT 'X' FROM scSendDetailHub WITH(NOLOCK)
  401. WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  402. )
  403. BEGIN
  404. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @scSendDetailHubId
  405. RETURN
  406. END
  407. BEGIN TRANSACTION
  408. IF EXISTS (SELECT 'X' FROM scSendDetailHub WHERE approvedBy IS NULL AND scSendDetailHubId = @scSendDetailHubId )
  409. SET @modType = 'I'
  410. ELSE
  411. SELECT @modType = modType FROM scSendDetailHubHistory WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  412. IF @modType = 'I'
  413. BEGIN --New record
  414. UPDATE scSendDetailHub SET
  415. isActive = 'Y'
  416. ,approvedBy = @user
  417. ,approvedDate= GETDATE()
  418. WHERE scSendDetailHubId = @scSendDetailHubId
  419. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scSendDetailHubId, @newValue OUTPUT
  420. END
  421. ELSE IF @modType = 'U'
  422. BEGIN
  423. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scSendDetailHubId, @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 scSendDetailHub main
  433. INNER JOIN scSendDetailHubHistory mode ON mode.scSendDetailHubId = main.scSendDetailHubId
  434. WHERE mode.scSendDetailHubId = @scSendDetailHubId AND mode.approvedBy IS NULL
  435. EXEC [dbo].proc_GetColumnToRow 'scSendDetailHub', 'scSendDetailHubId', @scSendDetailHubId, @newValue OUTPUT
  436. END
  437. ELSE IF @modType = 'D'
  438. BEGIN
  439. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @scSendDetailHubId, @oldValue OUTPUT
  440. UPDATE scSendDetailHub SET
  441. isDeleted = 'Y'
  442. ,modifiedDate = GETDATE()
  443. ,modifiedBy = @user
  444. WHERE scSendDetailHubId = @scSendDetailHubId
  445. END
  446. UPDATE scSendDetailHubHistory SET
  447. approvedBy = @user
  448. ,approvedDate = GETDATE()
  449. WHERE scSendDetailHubId = @scSendDetailHubId AND approvedBy IS NULL
  450. INSERT INTO #msg(errorCode, msg, id)
  451. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @scSendDetailHubId, @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.', @scSendDetailHubId
  457. RETURN
  458. END
  459. IF @@TRANCOUNT > 0
  460. COMMIT TRANSACTION
  461. EXEC proc_errorHandler 0, 'Changes approved successfully.', @scSendDetailHubId
  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, @scSendDetailHubId
  470. END CATCH
  471. GO