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.

784 lines
50 KiB

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