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.

781 lines
51 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_dcSendMasterHub] 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_dcSendMasterHub]
  9. @flag VARCHAR(50) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@dcSendMasterHubId VARCHAR(30) = NULL
  12. ,@code VARCHAR(100) = NULL
  13. ,@description VARCHAR(200) = NULL
  14. ,@sCountry INT = NULL
  15. ,@rCountry INT = NULL
  16. ,@baseCurrency VARCHAR(3) = NULL
  17. ,@tranType INT = NULL
  18. ,@commissionBase INT = NULL
  19. ,@isEnable CHAR(1) = NULL
  20. ,@hasChanged CHAR(1) = NULL
  21. ,@sortBy VARCHAR(50) = NULL
  22. ,@sortOrder VARCHAR(5) = NULL
  23. ,@pageSize INT = NULL
  24. ,@pageNumber INT = NULL
  25. AS
  26. SET NOCOUNT ON
  27. SET XACT_ABORT ON
  28. BEGIN TRY
  29. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  30. DECLARE
  31. @sql VARCHAR(MAX)
  32. ,@oldValue VARCHAR(MAX)
  33. ,@newValue VARCHAR(MAX)
  34. ,@module VARCHAR(10)
  35. ,@tableAlias VARCHAR(100)
  36. ,@logIdentifier VARCHAR(50)
  37. ,@logParamMod VARCHAR(100)
  38. ,@logParamMain VARCHAR(100)
  39. ,@table VARCHAR(MAX)
  40. ,@select_field_list VARCHAR(MAX)
  41. ,@extra_field_list VARCHAR(MAX)
  42. ,@sql_filter VARCHAR(MAX)
  43. ,@id VARCHAR(10)
  44. ,@modType VARCHAR(6)
  45. ,@ApprovedFunctionId INT
  46. SELECT
  47. @ApprovedFunctionId = 20131030
  48. ,@logIdentifier = 'dcSendMasterHubId'
  49. ,@logParamMain = 'dcSendMasterHub'
  50. ,@logParamMod = 'dcSendMasterHubHistory'
  51. ,@module = '20'
  52. ,@tableAlias = 'Hub Default Sending Commission'
  53. DECLARE @DetailIdList TABLE(detailId BIGINT, modType VARCHAR(10))
  54. DECLARE @detailId BIGINT
  55. IF @flag = 'i'
  56. BEGIN
  57. IF EXISTS(SELECT 'x' FROM dcSendMasterHub WHERE
  58. sCountry = ISNULL(@sCountry, sCountry) AND
  59. rCountry = ISNULL(@rCountry, rCountry) AND
  60. tranType = ISNULL(@tranType, tranType) AND
  61. ISNULL(isDeleted,'N')<>'Y')
  62. BEGIN
  63. EXEC proc_errorHandler 1, 'Record already exist.', @dcSendMasterHubId
  64. RETURN
  65. END
  66. BEGIN TRANSACTION
  67. INSERT INTO dcSendMasterHub (
  68. code
  69. ,[description]
  70. ,sCountry
  71. ,rCountry
  72. ,baseCurrency
  73. ,tranType
  74. ,commissionBase
  75. ,isEnable
  76. ,createdBy
  77. ,createdDate
  78. )
  79. SELECT
  80. @code
  81. ,@description
  82. ,@sCountry
  83. ,@rCountry
  84. ,@baseCurrency
  85. ,@tranType
  86. ,@commissionBase
  87. ,@isEnable
  88. ,@user
  89. ,GETDATE()
  90. SET @dcSendMasterHubId = SCOPE_IDENTITY()
  91. IF @@TRANCOUNT > 0
  92. COMMIT TRANSACTION
  93. EXEC proc_errorHandler 0, 'Record has been added successfully.', @dcSendMasterHubId
  94. END
  95. ELSE IF @flag = 'a'
  96. BEGIN
  97. IF EXISTS (
  98. SELECT 'X' FROM dcSendMasterHubHistory WITH(NOLOCK)
  99. WHERE dcSendMasterHubId = @dcSendMasterHubId AND createdBy = @user AND approvedBy IS NULL
  100. )
  101. BEGIN
  102. SELECT
  103. mode.*
  104. FROM dcSendMasterHubHistory mode WITH(NOLOCK)
  105. INNER JOIN dcSendMasterHub main WITH(NOLOCK) ON mode.dcSendMasterHubId = main.dcSendMasterHubId
  106. WHERE mode.dcSendMasterHubId= @dcSendMasterHubId AND mode.approvedBy IS NULL
  107. END
  108. ELSE
  109. BEGIN
  110. SELECT * FROM dcSendMasterHub WITH(NOLOCK) WHERE dcSendMasterHubId = @dcSendMasterHubId
  111. END
  112. END
  113. ELSE IF @flag = 'u'
  114. BEGIN
  115. IF EXISTS (
  116. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  117. WHERE dcSendMasterHubId = @dcSendMasterHubId AND ( createdBy <> @user AND approvedBy IS NULL)
  118. )
  119. BEGIN
  120. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendMasterHubId
  121. RETURN
  122. END
  123. IF EXISTS (
  124. SELECT 'X' FROM dcSendMasterHubHistory WITH(NOLOCK)
  125. WHERE dcSendMasterHubId = @dcSendMasterHubId AND (createdBy<> @user OR modType = 'D') AND approvedBy IS NULL
  126. )
  127. BEGIN
  128. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendMasterHubId
  129. RETURN
  130. END
  131. IF EXISTS(SELECT 'x' FROM dcSendMasterHub WHERE
  132. dcSendMasterHubId <> @dcSendMasterHubId AND
  133. sCountry = ISNULL(@sCountry, sCountry) AND
  134. rCountry = ISNULL(@rCountry, rCountry) AND
  135. tranType = ISNULL(@tranType, tranType) AND
  136. ISNULL(isDeleted,'N')<>'Y')
  137. BEGIN
  138. EXEC proc_errorHandler 1, 'Record already exist.', @dcSendMasterHubId
  139. RETURN
  140. END
  141. BEGIN TRANSACTION
  142. IF EXISTS (SELECT 'X' FROM dcSendMasterHub WHERE approvedBy IS NULL AND dcSendMasterHubId = @dcSendMasterHubId)
  143. BEGIN
  144. UPDATE dcSendMasterHub SET
  145. code = @code
  146. ,[description] = @description
  147. ,sCountry = @sCountry
  148. ,rCountry = @rCountry
  149. ,baseCurrency = @baseCurrency
  150. ,tranType = @tranType
  151. ,commissionBase = @commissionBase
  152. ,isEnable = @isEnable
  153. WHERE dcSendMasterHubId = @dcSendMasterHubId
  154. END
  155. ELSE
  156. BEGIN
  157. DELETE FROM dcSendMasterHubHistory WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  158. INSERT INTO dcSendMasterHubHistory(
  159. dcSendMasterHubId
  160. ,code
  161. ,[description]
  162. ,sCountry
  163. ,rCountry
  164. ,baseCurrency
  165. ,tranType
  166. ,commissionBase
  167. ,isEnable
  168. ,createdBy
  169. ,createdDate
  170. ,modType
  171. )
  172. SELECT
  173. @dcSendMasterHubId
  174. ,@code
  175. ,@description
  176. ,@sCountry
  177. ,@rCountry
  178. ,@baseCurrency
  179. ,@tranType
  180. ,@commissionBase
  181. ,@isEnable
  182. ,@user
  183. ,GETDATE()
  184. ,'U'
  185. END
  186. IF @@TRANCOUNT > 0
  187. COMMIT TRANSACTION
  188. EXEC proc_errorHandler 0, 'Record updated successfully.', @dcSendMasterHubId
  189. END
  190. ELSE IF @flag = 'd'
  191. BEGIN
  192. IF EXISTS (
  193. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  194. WHERE dcSendMasterHubId = @dcSendMasterHubId AND (createdBy <> @user AND approvedBy IS NULL)
  195. )
  196. BEGIN
  197. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendMasterHubId
  198. RETURN
  199. END
  200. IF EXISTS (
  201. SELECT 'X' FROM dcSendMasterHubHistory WITH(NOLOCK)
  202. WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  203. )
  204. BEGIN
  205. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> Previous modification has not been approved yet.</center>', @dcSendMasterHubId
  206. RETURN
  207. END
  208. INSERT INTO dcSendMasterHubHistory(
  209. dcSendMasterHubId
  210. ,code
  211. ,[description]
  212. ,sCountry
  213. ,rCountry
  214. ,baseCurrency
  215. ,tranType
  216. ,commissionBase
  217. ,isEnable
  218. ,createdBy
  219. ,createdDate
  220. ,modType
  221. )
  222. SELECT
  223. dcSendMasterHubId
  224. ,code
  225. ,[description]
  226. ,sCountry
  227. ,rCountry
  228. ,baseCurrency
  229. ,tranType
  230. ,commissionBase
  231. ,isEnable
  232. ,@user
  233. ,GETDATE()
  234. ,'D'
  235. FROM dcSendMasterHub WHERE dcSendMasterHubId = @dcSendMasterHubId
  236. EXEC proc_errorHandler 0, 'Record deleted successfully.', @dcSendMasterHubId
  237. END
  238. ELSE IF @flag IN ('s', 'p')
  239. BEGIN
  240. IF @sortBy IS NULL
  241. SET @sortBy = 'dcSendMasterHubId'
  242. IF @sortOrder IS NULL
  243. SET @sortOrder = 'ASC'
  244. SET @table = '(
  245. SELECT
  246. dcSendMasterHubId = ISNULL(mode.dcSendMasterHubId, main.dcSendMasterHubId)
  247. ,code = ISNULL(mode.code, main.code)
  248. ,description = ISNULL(mode.description, main.description)
  249. ,sCountry = ISNULL(mode.sCountry, main.sCountry)
  250. ,rCountry = ISNULL(mode.rCountry, main.rCountry)
  251. ,baseCurrency = ISNULL(mode.baseCurrency, main.baseCurrency)
  252. ,tranType = ISNULL(mode.tranType, main.tranType)
  253. ,commissionBase = ISNULL(mode.commissionBase, main.commissionBase)
  254. ,isEnable = ISNULL(mode.isEnable, main.isEnable)
  255. ,main.createdBy
  256. ,main.createdDate
  257. ,modifiedDate = ISNULL(mode.createdDate, main.modifiedDate)
  258. ,modifiedBy = ISNULL(mode.createdBy, main.modifiedBy)
  259. ,hasChanged = CASE WHEN main.approvedBy IS NULL OR mode.dcSendMasterHubId IS NOT NULL THEN ''Y'' ELSE ''N'' END
  260. FROM dcSendMasterHub main WITH(NOLOCK)
  261. LEFT JOIN dcSendMasterHubHistory mode ON main.dcSendMasterHubId = mode.dcSendMasterHubId AND mode.approvedBy IS NULL
  262. AND (
  263. mode.createdBy = ''' + @user + '''
  264. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  265. )
  266. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  267. AND (
  268. main.approvedBy IS NOT NULL
  269. OR main.createdBy = ''' + @user + '''
  270. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  271. )
  272. ) x'
  273. --@sAgent
  274. SET @sql_filter = ''
  275. SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  276. IF @rCountry IS NOT NULL
  277. SET @sql_filter = @sql_filter + ' AND rCountry = ' + CAST(@rCountry AS VARCHAR(50))
  278. IF @sCountry IS NOT NULL
  279. SET @sql_filter = @sql_filter + ' AND sCountry = ' + CAST(@sCountry AS VARCHAR(50))
  280. IF @tranType IS NOT NULL
  281. SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
  282. SET @select_field_list = '
  283. dcSendMasterHubId
  284. ,code
  285. ,description
  286. ,sCountry
  287. ,rCountry
  288. ,baseCurrency
  289. ,tranType
  290. ,commissionBase
  291. ,isEnable
  292. ,createdBy
  293. ,createdDate
  294. ,isDeleted '
  295. EXEC dbo.proc_paging
  296. @table
  297. ,@sql_filter
  298. ,@select_field_list
  299. ,@extra_field_list
  300. ,@sortBy
  301. ,@sortOrder
  302. ,@pageSize
  303. ,@pageNumber
  304. END
  305. ELSE IF @flag = 'm'
  306. BEGIN
  307. DECLARE
  308. @m VARCHAR(MAX)
  309. ,@d VARCHAR(MAX)
  310. SET @m = '(
  311. SELECT
  312. dcSendMasterHubId = ISNULL(mode.dcSendMasterHubId, main.dcSendMasterHubId)
  313. ,code = ISNULL(mode.code, main.code)
  314. ,description = ISNULL(mode.description, main.description)
  315. ,sCountry = ISNULL(mode.sCountry, main.sCountry)
  316. ,rCountry = ISNULL(mode.rCountry, main.rCountry)
  317. ,baseCurrency = ISNULL(mode.baseCurrency, main.baseCurrency)
  318. ,tranType = ISNULL(mode.tranType, main.tranType)
  319. ,commissionBase = ISNULL(mode.commissionBase, main.commissionBase)
  320. ,isEnable = ISNULL(mode.isEnable, main.isEnable)
  321. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  322. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  323. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  324. (mode.dcSendMasterHubId IS NOT NULL)
  325. THEN ''Y'' ELSE ''N'' END
  326. FROM dcSendMasterHub main WITH(NOLOCK)
  327. LEFT JOIN dcSendMasterHubHistory mode ON main.dcSendMasterHubId = mode.dcSendMasterHubId AND mode.approvedBy IS NULL
  328. AND (
  329. mode.createdBy = ''' + @user + '''
  330. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  331. )
  332. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  333. AND (
  334. main.approvedBy IS NOT NULL
  335. OR main.createdBy = ''' + @user + '''
  336. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  337. )
  338. ) '
  339. SET @d = '(
  340. SELECT
  341. dcSendDetailHubId = main.dcSendDetailHubId
  342. ,dcSendMasterHubId = main.dcSendMasterHubId
  343. ,fromAmt = ISNULL(mode.fromAmt, main.fromAmt)
  344. ,toAmt = ISNULL(mode.toAmt, main.toAmt)
  345. ,pcnt = ISNULL(mode.pcnt, main.pcnt)
  346. ,minAmt = ISNULL(mode.minAmt, main.minAmt)
  347. ,maxAmt = ISNULL(mode.maxAmt, main.maxAmt)
  348. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  349. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  350. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  351. (mode.dcSendDetailHubId IS NOT NULL)
  352. THEN ''Y'' ELSE ''N'' END
  353. FROM dcSendDetailHub main WITH(NOLOCK)
  354. LEFT JOIN dcSendDetailHubHistory mode ON main.dcSendDetailHubId = mode.dcSendDetailHubId AND mode.approvedBy IS NULL
  355. AND (
  356. mode.createdBy = ''' + @user + '''
  357. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  358. )
  359. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  360. AND (
  361. main.approvedBy IS NOT NULL
  362. OR main.createdBy = ''' + @user + '''
  363. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  364. )
  365. ) '
  366. SET @table = '
  367. (
  368. SELECT
  369. m.dcSendMasterHubId
  370. ,m.description
  371. ,m.sCountry
  372. ,sCountryName = sc.countryName
  373. ,m.rCountry
  374. ,rCountryName = rc.countryName
  375. ,m.tranType
  376. ,tranTypeName = ISNULL(trn.typeTitle, ''All'')
  377. ,m.baseCurrency
  378. ,m.isEnable
  379. ,fromAmt = MIN(d.fromAmt)
  380. ,toAmt = MAX(d.toAmt)
  381. ,modifiedBy = MAX(ISNULL(m.modifiedBy, d.modifiedBy))
  382. ,hasChanged = MAX(CASE WHEN m.hasChanged = ''Y'' OR d.hasChanged = ''Y'' THEN ''Y'' ELSE ''N'' END)
  383. FROM ' + @m + ' m
  384. LEFT JOIN ' + @d + ' d ON m.dcSendMasterHubId = d.dcSendMasterHubId
  385. LEFT JOIN countryMaster rc WITH(NOLOCK) ON m.rCountry = rc.countryId
  386. LEFT JOIN countryMaster sc WITH(NOLOCK) ON m.sCountry = sc.countryId
  387. LEFT JOIN serviceTypeMaster trn WITH(NOLOCK) ON trn.serviceTypeId = m.tranType
  388. GROUP BY
  389. m.dcSendMasterHubId
  390. ,m.description
  391. ,m.sCountry
  392. ,sc.countryName
  393. ,m.rCountry
  394. ,rc.countryName
  395. ,m.tranType
  396. ,trn.typeTitle
  397. ,m.baseCurrency
  398. ,m.isEnable
  399. --,m.modifiedBy
  400. --,d.modifiedBy
  401. ) x
  402. '
  403. --print @table
  404. --
  405. SET @sql_filter = ' '
  406. IF @hasChanged IS NOT NULL
  407. SET @sql_filter = @sql_filter + ' AND hasChanged = '''+ @hasChanged +''''
  408. IF @rCountry IS NOT NULL
  409. SET @sql_filter = @sql_filter + ' AND rCountry = ' + CAST(@rCountry AS VARCHAR(50))
  410. IF @sCountry IS NOT NULL
  411. SET @sql_filter = @sql_filter + ' AND sCountry = ' + CAST(@sCountry AS VARCHAR(50))
  412. IF @tranType IS NOT NULL
  413. SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
  414. SET @select_field_list = '
  415. dcSendMasterHubId
  416. ,description
  417. ,sCountry
  418. ,sCountryName
  419. ,rCountry
  420. ,rCountryName
  421. ,tranType
  422. ,tranTypeName
  423. ,baseCurrency
  424. ,baseCurrencyName
  425. ,fromAmt
  426. ,toAmt
  427. ,modifiedBy
  428. ,hasChanged
  429. '
  430. SET @extra_field_list = ''
  431. IF @sortBy IS NULL
  432. SET @sortBy = 'dcSendMasterHubId'
  433. IF @sortOrder IS NULL
  434. SET @sortOrder = 'ASC'
  435. EXEC dbo.proc_paging
  436. @table
  437. ,@sql_filter
  438. ,@select_field_list
  439. ,@extra_field_list
  440. ,@sortBy
  441. ,@sortOrder
  442. ,@pageSize
  443. ,@pageNumber
  444. END
  445. ELSE IF @flag IN ('reject', 'rejectAll')
  446. BEGIN
  447. IF NOT EXISTS (
  448. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  449. WHERE dcSendMasterHubId = @dcSendMasterHubId
  450. )
  451. AND
  452. NOT EXISTS (
  453. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  454. WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  455. )
  456. BEGIN
  457. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @dcSendMasterHubId
  458. RETURN
  459. END
  460. IF EXISTS (SELECT 'X' FROM dcSendMasterHub WHERE approvedBy IS NULL AND dcSendMasterHubId = @dcSendMasterHubId)
  461. BEGIN --New record
  462. BEGIN TRANSACTION
  463. SET @modType = 'Reject'
  464. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendMasterHubId, @oldValue OUTPUT
  465. INSERT INTO #msg(errorCode, msg, id)
  466. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendMasterHubId, @user, @oldValue, @newValue
  467. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  468. BEGIN
  469. IF @@TRANCOUNT > 0
  470. ROLLBACK TRANSACTION
  471. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @dcSendMasterHubId
  472. RETURN
  473. END
  474. DELETE FROM dcSendMasterHub WHERE dcSendMasterHubId = @dcSendMasterHubId
  475. IF @@TRANCOUNT > 0
  476. COMMIT TRANSACTION
  477. END
  478. ELSE
  479. BEGIN
  480. BEGIN TRANSACTION
  481. SET @modType = 'Reject'
  482. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendMasterHubId, @oldValue OUTPUT
  483. INSERT INTO #msg(errorCode, msg, id)
  484. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendMasterHubId, @user, @oldValue, @newValue
  485. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  486. BEGIN
  487. IF @@TRANCOUNT > 0
  488. ROLLBACK TRANSACTION
  489. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @dcSendMasterHubId
  490. RETURN
  491. END
  492. DELETE FROM dcSendMasterHubHistory WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  493. END
  494. IF @flag = 'rejectAll'
  495. BEGIN
  496. INSERT @DetailIdList
  497. SELECT
  498. dcSendDetailHubId, 'I'
  499. FROM dcSendDetailHub
  500. WHERE
  501. dcSendMasterHubId = @dcSendMasterHubId
  502. AND approvedBy IS NULL
  503. INSERT @DetailIdList
  504. SELECT
  505. mode.dcSendDetailHubId, mode.modType
  506. FROM dcSendDetailHubHistory mode WITH(NOLOCK)
  507. INNER JOIN dcSendDetailHub main WITH(NOLOCK) ON mode.dcSendDetailHubId = main.dcSendDetailHubId
  508. WHERE
  509. main.dcSendMasterHubId = @dcSendMasterHubId
  510. AND mode.approvedBy IS NULL
  511. SELECT
  512. @logIdentifier = 'dcSendDetailHubId'
  513. ,@logParamMain = 'dcSendDetailHub'
  514. ,@logParamMod = 'dcSendDetailHubHistory'
  515. ,@module = '20'
  516. ,@tableAlias = 'Hub Default Send Commission Detail'
  517. WHILE EXISTS(SELECT 'X' FROM @DetailIdList)
  518. BEGIN
  519. SELECT TOP 1 @detailId = detailId, @ModType = modType FROM @DetailIdList
  520. IF EXISTS (SELECT 'X' FROM dcSendDetailHub WHERE approvedBy IS NULL AND dcSendDetailHubId = @detailId )
  521. SET @modType = 'I'
  522. ELSE
  523. SELECT @modType = modType FROM dcSendDetailHubHistory WHERE dcSendDetailHubId = @detailId AND approvedBy IS NULL
  524. IF @modType = 'I'
  525. BEGIN --New record
  526. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @oldValue OUTPUT
  527. INSERT INTO #msg(errorCode, msg, id)
  528. EXEC proc_applicationLogs 'i', NULL, 'Reject', @tableAlias, @detailId, @user, @oldValue, @newValue
  529. DELETE FROM dcSendDetailHub WHERE dcSendDetailHubId = @detailId
  530. END
  531. ELSE
  532. BEGIN
  533. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @oldValue OUTPUT
  534. INSERT INTO #msg(errorCode, msg, id)
  535. EXEC proc_applicationLogs 'i', NULL, 'Reject', @tableAlias, @detailId, @user, @oldValue, @newValue
  536. DELETE FROM dcSendDetailHubHistory WHERE dcSendDetailHubId = @detailId AND approvedBy IS NULL
  537. END
  538. DELETE FROM @DetailIdList WHERE detailId = @detailId
  539. END
  540. END
  541. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  542. BEGIN
  543. IF @@TRANCOUNT > 0
  544. ROLLBACK TRANSACTION
  545. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @detailId
  546. RETURN
  547. END
  548. IF @@TRANCOUNT > 0
  549. COMMIT TRANSACTION
  550. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @dcSendMasterHubId
  551. END
  552. ELSE IF @flag IN ('approve','approveAll')
  553. BEGIN
  554. IF NOT EXISTS (
  555. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  556. WHERE dcSendMasterHubId = @dcSendMasterHubId
  557. )
  558. AND
  559. NOT EXISTS (
  560. SELECT 'X' FROM dcSendMasterHub WITH(NOLOCK)
  561. WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  562. )
  563. BEGIN
  564. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @dcSendMasterHubId
  565. RETURN
  566. END
  567. BEGIN TRANSACTION
  568. IF EXISTS (SELECT 'X' FROM dcSendMasterHub WHERE approvedBy IS NULL AND dcSendMasterHubId = @dcSendMasterHubId )
  569. SET @modType = 'I'
  570. ELSE
  571. SELECT @modType = modType FROM dcSendMasterHubHistory WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  572. IF @modType = 'I'
  573. BEGIN --New record
  574. UPDATE dcSendMasterHub SET
  575. isActive = 'Y'
  576. ,approvedBy = @user
  577. ,approvedDate= GETDATE()
  578. WHERE dcSendMasterHubId = @dcSendMasterHubId
  579. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendMasterHubId, @newValue OUTPUT
  580. END
  581. ELSE IF @modType = 'U'
  582. BEGIN
  583. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendMasterHubId, @oldValue OUTPUT
  584. UPDATE main SET
  585. main.code = mode.code
  586. ,main.[description] = mode.[description]
  587. ,main.sCountry = mode.sCountry
  588. ,main.rCountry = mode.rCountry
  589. ,main.baseCurrency = mode.baseCurrency
  590. ,main.tranType = mode.tranType
  591. ,main.commissionBase = mode.commissionBase
  592. ,main.isEnable = mode.isEnable
  593. ,main.modifiedDate = GETDATE()
  594. ,main.modifiedBy = @user
  595. FROM dcSendMasterHub main
  596. INNER JOIN dcSendMasterHubHistory mode ON mode.dcSendMasterHubId = main.dcSendMasterHubId
  597. WHERE mode.dcSendMasterHubId = @dcSendMasterHubId AND mode.approvedBy IS NULL
  598. EXEC [dbo].proc_GetColumnToRow 'dcSendMasterHub', 'dcSendMasterHubId', @dcSendMasterHubId, @newValue OUTPUT
  599. END
  600. ELSE IF @modType = 'D'
  601. BEGIN
  602. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendMasterHubId, @oldValue OUTPUT
  603. UPDATE dcSendMasterHub SET
  604. isDeleted = 'Y'
  605. ,modifiedDate = GETDATE()
  606. ,modifiedBy = @user
  607. WHERE dcSendMasterHubId = @dcSendMasterHubId
  608. END
  609. UPDATE dcSendMasterHubHistory SET
  610. approvedBy = @user
  611. ,approvedDate = GETDATE()
  612. WHERE dcSendMasterHubId = @dcSendMasterHubId AND approvedBy IS NULL
  613. INSERT INTO #msg(errorCode, msg, id)
  614. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendMasterHubId, @user, @oldValue, @newValue
  615. IF @flag = 'approveAll'
  616. BEGIN
  617. INSERT @DetailIdList
  618. SELECT
  619. dcSendDetailHubId, 'I'
  620. FROM dcSendDetailHub
  621. WHERE
  622. dcSendMasterHubId = @dcSendMasterHubId
  623. AND approvedBy IS NULL
  624. INSERT @DetailIdList
  625. SELECT
  626. ddh.dcSendDetailHubId, ddh.modType
  627. FROM dcSendDetailHubHistory ddh WITH(NOLOCK)
  628. INNER JOIN dcSendDetailHub dd WITH(NOLOCK) ON ddh.dcSendDetailHubId = dd.dcSendDetailHubId
  629. WHERE
  630. dd.dcSendMasterHubId = @dcSendMasterHubId
  631. AND ddh.approvedBy IS NULL
  632. SELECT
  633. @logIdentifier = 'dcSendDetailHubId'
  634. ,@logParamMain = 'dcSendDetailHub'
  635. ,@logParamMod = 'dcSendDetailHubHistory'
  636. ,@module = '20'
  637. ,@tableAlias = 'Hub Default Send Commission Detail'
  638. WHILE EXISTS(SELECT 'X' FROM @DetailIdList)
  639. BEGIN
  640. SELECT TOP 1 @detailId = detailId, @ModType = modType FROM @DetailIdList
  641. IF EXISTS (SELECT 'X' FROM dcSendDetailHub WHERE approvedBy IS NULL AND dcSendDetailHubId = @detailId )
  642. SET @modType = 'I'
  643. ELSE
  644. SELECT @modType = modType FROM dcSendDetailHubHistory WHERE dcSendDetailHubId = @detailId AND approvedBy IS NULL
  645. IF @modType = 'I'
  646. BEGIN --New record
  647. UPDATE dcSendDetailHub SET
  648. isActive = 'Y'
  649. ,approvedBy = @user
  650. ,approvedDate= GETDATE()
  651. WHERE dcSendDetailHubId = @detailId
  652. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @newValue OUTPUT
  653. END
  654. ELSE IF @modType = 'U'
  655. BEGIN
  656. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @oldValue OUTPUT
  657. UPDATE main SET
  658. main.fromAmt = mode.fromAmt
  659. ,main.toAmt = mode.toAmt
  660. ,main.pcnt = mode.pcnt
  661. ,main.minAmt = mode.minAmt
  662. ,main.maxAmt = mode.maxAmt
  663. ,main.modifiedDate = GETDATE()
  664. ,main.modifiedBy = @user
  665. FROM dcSendDetailHub main
  666. INNER JOIN dcSendDetailHubHistory mode ON mode.dcSendDetailHubId = main.dcSendDetailHubId
  667. WHERE mode.dcSendDetailHubId = @detailId AND mode.approvedBy IS NULL
  668. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @newValue OUTPUT
  669. END
  670. ELSE IF @modType = 'D'
  671. BEGIN
  672. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @detailId, @oldValue OUTPUT
  673. UPDATE dcSendDetailHub SET
  674. isDeleted = 'Y'
  675. ,modifiedDate = GETDATE()
  676. ,modifiedBy = @user
  677. WHERE dcSendDetailHubId = @detailId
  678. END
  679. UPDATE dcSendDetailHubHistory SET
  680. approvedBy = @user
  681. ,approvedDate = GETDATE()
  682. WHERE dcSendDetailHubId = @detailId AND approvedBy IS NULL
  683. INSERT INTO #msg(errorCode, msg, id)
  684. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @detailId, @user, @oldValue, @newValue
  685. DELETE FROM @DetailIdList WHERE detailId = @detailId
  686. END
  687. END
  688. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  689. BEGIN
  690. IF @@TRANCOUNT > 0
  691. ROLLBACK TRANSACTION
  692. EXEC proc_errorHandler 1, 'Could not approve the changes.', @dcSendMasterHubId
  693. RETURN
  694. END
  695. IF @@TRANCOUNT > 0
  696. COMMIT TRANSACTION
  697. EXEC proc_errorHandler 0, 'All Changes approved successfully.', @dcSendMasterHubId
  698. END
  699. END TRY
  700. BEGIN CATCH
  701. IF @@TRANCOUNT > 0
  702. ROLLBACK TRANSACTION
  703. DECLARE @errorMessage VARCHAR(MAX)
  704. SET @errorMessage = ERROR_MESSAGE()
  705. EXEC proc_errorHandler 1, @errorMessage, @dcSendMasterHubId
  706. END CATCH
  707. GO