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.

810 lines
50 KiB

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