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.

671 lines
21 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_sendTranLimit] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_sendTranLimit]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_sendTranLimit] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[proc_sendTranLimit]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(30) = NULL
  14. ,@stlId VARCHAR(30) = NULL
  15. ,@agentId INT = NULL
  16. ,@countryId INT = NULL
  17. ,@userId INT = NULL
  18. ,@receivingCountry INT = NULL
  19. ,@receivingAgent INT = NULL
  20. ,@maxLimitAmt MONEY = NULL
  21. ,@minLimitAmt MONEY = NULL
  22. ,@currency VARCHAR(3) = NULL
  23. ,@collMode INT = NULL
  24. ,@tranType INT = NULL
  25. ,@customerType INT = NULL
  26. ,@sortBy VARCHAR(50) = NULL
  27. ,@sortOrder VARCHAR(5) = NULL
  28. ,@pageSize INT = NULL
  29. ,@pageNumber INT = NULL
  30. AS
  31. SET NOCOUNT ON
  32. SET XACT_ABORT ON
  33. BEGIN TRY
  34. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  35. DECLARE
  36. @sql VARCHAR(MAX)
  37. ,@oldValue VARCHAR(MAX)
  38. ,@newValue VARCHAR(MAX)
  39. ,@module VARCHAR(10)
  40. ,@tableAlias VARCHAR(100)
  41. ,@logIdentifier VARCHAR(50)
  42. ,@logParamMod VARCHAR(100)
  43. ,@logParamMain VARCHAR(100)
  44. ,@table VARCHAR(MAX)
  45. ,@select_field_list VARCHAR(MAX)
  46. ,@extra_field_list VARCHAR(MAX)
  47. ,@sql_filter VARCHAR(MAX)
  48. ,@functionId INT
  49. ,@id VARCHAR(10)
  50. ,@modType VARCHAR(6)
  51. ,@ApproveFunctionId1 INT
  52. ,@ApproveFunctionId2 INT
  53. SELECT
  54. @functionId = 30011400
  55. ,@logIdentifier = 'stlId'
  56. ,@logParamMain = 'sendTranLimit'
  57. ,@logParamMod = 'sendTranLimitMod'
  58. ,@module = '20'
  59. ,@tableAlias = 'Send Per Transaction Limit'
  60. ,@ApproveFunctionId1 = 30011430
  61. ,@ApproveFunctionId2 = 30011430
  62. DECLARE @maxLimit MONEY = 0
  63. ,@agentCountryId INT
  64. IF @flag = 'i'
  65. BEGIN
  66. IF EXISTS(SELECT 'X' FROM sendTranLimit WHERE
  67. ISNULL(agentId, 0) = ISNULL(@agentId, 0) AND
  68. ISNULL(countryId, 0) = ISNULL(@countryId, 0) AND
  69. ISNULL(userId, 0) = ISNULL(@userId, 0) AND
  70. ISNULL(receivingCountry, 0) = ISNULL(@receivingCountry, 0) AND
  71. currency = @currency AND
  72. ISNULL(collMode, 0) = ISNULL(@collMode, 0) AND
  73. ISNULL(tranType, 0) = ISNULL(@tranType, 0) AND
  74. ISNULL(customerType, 0) = ISNULL(@customerType, 0) AND
  75. ----inExListType = @inExListType AND
  76. ISNULL(isDeleted, 'N') <> 'Y'
  77. )
  78. BEGIN
  79. EXEC proc_errorHandler 1, 'Record already exists', @stlId
  80. RETURN
  81. END
  82. IF(ISNULL(@minLimitAmt, 0) > @maxLimitAmt)
  83. BEGIN
  84. EXEC proc_errorHandler 1, 'Min Collection Limit exceeds Max Collection Limit', NULL
  85. RETURN
  86. END
  87. IF(@agentId IS NOT NULL)
  88. BEGIN
  89. SELECT @countryId = agentCountryId FROM agentMaster WHERE agentId = @agentId
  90. SELECT @maxLimit = ISNULL(maxLimitAmt, 0) FROM sendTranLimit WHERE
  91. countryId = @countryId AND
  92. currency = @currency AND
  93. ISNULL(receivingCountry, 0) = ISNULL(@receivingCountry, 0) AND
  94. ISNULL(customerType, 0) = ISNULL(@customerType, 0) AND
  95. ISNULL(tranType, 0) = ISNULL(@tranType, 0) AND
  96. ISNULL(collMode, 0) = ISNULL(@collMode, 0) AND
  97. ISNULL(isDeleted, 'N') <> 'Y' AND
  98. ISNULL(isActive, 'N') = 'Y'
  99. IF(@maxLimitAmt > @maxLimit)
  100. BEGIN
  101. EXEC proc_errorHandler 1, 'Limit exceeded more than Country Transaction Limit', @stlId
  102. RETURN
  103. END
  104. END
  105. BEGIN TRANSACTION
  106. INSERT INTO sendTranLimit (
  107. agentId
  108. ,countryId
  109. ,userId
  110. ,receivingCountry
  111. ,receivingAgent
  112. ,maxLimitAmt
  113. ,minLimitAmt
  114. ,currency
  115. ,collMode
  116. ,tranType
  117. ,customerType
  118. ,createdBy
  119. ,createdDate
  120. )
  121. SELECT
  122. @agentId
  123. ,@countryId
  124. ,@userId
  125. ,@receivingCountry
  126. ,@receivingAgent
  127. ,ISNULL(@maxLimitAmt,0)
  128. ,ISNULL(@minLimitAmt,0)
  129. ,@currency
  130. ,@collMode
  131. ,@tranType
  132. ,@customerType
  133. ,@user
  134. ,GETDATE()
  135. SET @id = SCOPE_IDENTITY()
  136. COMMIT TRANSACTION
  137. EXEC proc_errorHandler 0, 'Record has been added successfully.', @stlId
  138. END
  139. ELSE IF @flag = 'iall' --Apply For all Country
  140. BEGIN
  141. --BEGIN TRANSACTION
  142. CREATE TABLE #tempTable(
  143. agentId INT
  144. ,countryId INT
  145. ,userId INT
  146. ,receivingCountry INT
  147. ,maxLimitAmt MONEY
  148. ,minLimitAmt MONEY
  149. ,currency VARCHAR(3)
  150. ,collMode INT
  151. ,tranType INT
  152. ,customerType INT
  153. ,createdBy VARCHAR(50)
  154. ,createdDate DATETIME
  155. )
  156. INSERT INTO #tempTable(agentId,countryId,userId,receivingCountry,maxLimitAmt,minLimitAmt,currency,collMode,tranType,customerType,createdBy,createdDate)
  157. SELECT
  158. @agentId
  159. ,@countryId
  160. ,@userId
  161. ,countryId
  162. ,ISNULL(@maxLimitAmt,0)
  163. ,ISNULL(@minLimitAmt,0)
  164. ,@currency
  165. ,@collMode
  166. ,@tranType
  167. ,@customerType
  168. ,@user
  169. ,GETDATE()
  170. FROM countryMaster WITH(NOLOCK)
  171. WHERE ISNULL(isDeleted, 'N') = 'N'
  172. AND operationType IN ('B','R')
  173. AND countryId NOT IN(
  174. SELECT receivingCountry FROM sendTranLimit WITH(NOLOCK)
  175. WHERE countryId = @countryId
  176. AND ISNULL(tranType,0) = ISNULL(@tranType,0)
  177. AND ISNULL(collMode,0) = ISNULL(@collMode,0)
  178. AND ISNULL(isDeleted, 'N') = 'N'
  179. )
  180. AND countryId <> @countryId
  181. DELETE T FROM #tempTable T INNER JOIN sendTranLimit STL ON T.countryId=STL.countryId
  182. AND T.receivingCountry=STL.receivingCountry
  183. AND ISNULL(T.tranType,'')=ISNULL(STL.tranType,'')
  184. INSERT INTO sendTranLimit(agentId,countryId,userId,receivingCountry,maxLimitAmt,minLimitAmt,currency,tranType,collMode,customerType,createdBy,createdDate)
  185. SELECT t.agentId, t.countryId,t.userId,t.receivingCountry,t.maxLimitAmt,t.minLimitAmt,t.currency,t.tranType,t.collMode,t.customerType,t.createdBy,t.createdDate FROM #tempTable t
  186. /*
  187. EXEC proc_sendTranLimit @flag = 'iall', @user = 'admin', @agentId = null,
  188. @countryId = 'Malaysia', @userId = null, @receivingCountry = 'Bangladesh',
  189. @minLimitAmt = '10.00', @maxLimitAmt = '50,000.00', @currency = 'MYR - Ringgit',
  190. @tranType = null, @paymentType = null, @customerType = null
  191. */
  192. --COMMIT TRANSACTION
  193. EXEC proc_errorHandler 0, 'Setup has been applied for all receiving country', @stlId
  194. END
  195. ELSE IF @flag = 'a'
  196. BEGIN
  197. IF EXISTS (SELECT 'X' FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId = @stlId AND createdBy = @user)
  198. BEGIN
  199. SELECT
  200. *
  201. FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId= @stlId
  202. END
  203. ELSE
  204. BEGIN
  205. SELECT
  206. *
  207. FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId
  208. END
  209. END
  210. ELSE IF @flag = 'u'
  211. BEGIN
  212. IF EXISTS (SELECT 'X' FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId AND ( createdBy <> @user AND approvedBy IS NULL))
  213. BEGIN
  214. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @stlId
  215. RETURN
  216. END
  217. IF EXISTS (SELECT 'X' FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId = @stlId AND createdBy<> @user)
  218. BEGIN
  219. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @stlId
  220. RETURN
  221. END
  222. IF EXISTS(SELECT 'X' FROM sendTranLimit WHERE
  223. stlId <> @stlId AND
  224. ISNULL(agentId, 0) = ISNULL(@agentId, 0) AND
  225. ISNULL(countryId, 0) = ISNULL(@countryId, 0) AND
  226. ISNULL(userId, 0) = ISNULL(@userId, 0) AND
  227. ISNULL(receivingCountry, 0) = ISNULL(@receivingCountry, 0) AND
  228. ISNULL(receivingAgent, 0) = ISNULL(@receivingAgent, 0) AND
  229. currency = @currency AND
  230. ISNULL(tranType, 0) = ISNULL(@tranType, 0) AND
  231. ISNULL(collMode, 0) = ISNULL(@collMode, '') AND
  232. ISNULL(customerType, 0) = ISNULL(@customerType, 0) AND
  233. ISNULL(isDeleted, 'N') <> 'Y'
  234. )
  235. BEGIN
  236. EXEC proc_errorHandler 1, 'Record already exists', @stlId
  237. RETURN
  238. END
  239. IF(ISNULL(@minLimitAmt, 0) > @maxLimitAmt)
  240. BEGIN
  241. EXEC proc_errorHandler 1, 'Min Collection Limit exceeds Max Collection Limit', NULL
  242. RETURN
  243. END
  244. IF(@agentId IS NOT NULL)
  245. BEGIN
  246. SELECT @countryId = agentCountryId FROM agentMaster WHERE agentId = @agentId
  247. SELECT @maxLimit = ISNULL(maxLimitAmt, 0) FROM sendTranLimit WHERE
  248. countryId = @countryId AND
  249. currency = @currency AND
  250. ISNULL(receivingCountry, 0) = ISNULL(@receivingCountry, 0) AND
  251. ISNULL(customerType, 0) = ISNULL(@customerType, 0) AND
  252. ISNULL(tranType, 0) = ISNULL(@tranType, 0) AND
  253. ISNULL(collMode, 0) = ISNULL(@collMode, 0) AND
  254. ISNULL(isDeleted, 'N') <> 'Y' AND
  255. ISNULL(isActive, 'N') = 'Y'
  256. IF(@maxLimitAmt > @maxLimit)
  257. BEGIN
  258. EXEC proc_errorHandler 1, 'Limit exceeded more than Country Transaction Limit', @stlId
  259. RETURN
  260. END
  261. END
  262. BEGIN TRANSACTION
  263. IF EXISTS (SELECT 'X' FROM sendTranLimit WHERE approvedBy IS NULL AND stlId = @stlId AND createdBy = @user)
  264. BEGIN
  265. UPDATE sendTranLimit SET
  266. agentId = @agentId
  267. ,countryId = @countryId
  268. ,userId = @userId
  269. ,receivingCountry = @receivingCountry
  270. ,receivingAgent = @receivingAgent
  271. ,maxLimitAmt = ISNULL(@maxLimitAmt,0)
  272. ,minLimitAmt = ISNULL(@minLimitAmt,0)
  273. ,currency = @currency
  274. ,tranType = @tranType
  275. ,collMode = @collMode
  276. ,customerType = @customerType
  277. WHERE stlId = @stlId
  278. END
  279. ELSE
  280. BEGIN
  281. DELETE FROM sendTranLimitMod WHERE stlId = @stlId
  282. INSERT INTO sendTranLimitMod(
  283. stlId
  284. ,agentId
  285. ,countryId
  286. ,userId
  287. ,receivingCountry
  288. ,receivingAgent
  289. ,maxLimitAmt
  290. ,minLimitAmt
  291. ,currency
  292. ,tranType
  293. ,collMode
  294. ,customerType
  295. ,createdBy
  296. ,createdDate
  297. ,modType
  298. )
  299. SELECT
  300. @stlId
  301. ,@agentId
  302. ,@countryId
  303. ,@userId
  304. ,@receivingCountry
  305. ,@receivingAgent
  306. ,ISNULL(@maxLimitAmt,0)
  307. ,ISNULL(@minLimitAmt,0)
  308. ,@currency
  309. ,@tranType
  310. ,@collMode
  311. ,@customerType
  312. ,@user
  313. ,GETDATE()
  314. ,'U'
  315. SET @modType = 'update'
  316. END
  317. COMMIT TRANSACTION
  318. EXEC proc_errorHandler 0, 'Record updated successfully.', @stlId
  319. END
  320. ELSE IF @flag = 'd'
  321. BEGIN
  322. IF EXISTS (SELECT 'X' FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId AND (createdBy <> @user AND approvedBy IS NULL))
  323. BEGIN
  324. EXEC proc_errorHandler 1, 'You can not delete this record. Previous Modification has not been approved yet.', @stlId
  325. RETURN
  326. END
  327. IF EXISTS (SELECT 'X' FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId = @stlId and createdBy <> @user)
  328. BEGIN
  329. EXEC proc_errorHandler 1, 'You can not delete this record. Previous Modification has not been approved yet.', @stlId
  330. RETURN
  331. END
  332. BEGIN TRANSACTION
  333. IF EXISTS (SELECT 'X' FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId AND approvedBy IS NULL AND createdBy = @user)
  334. BEGIN
  335. DELETE FROM sendTranLimit WHERE stlId = @stlId
  336. END
  337. ELSE
  338. BEGIN
  339. INSERT INTO sendTranLimitMod(
  340. stlId
  341. ,agentId
  342. ,countryId
  343. ,userId
  344. ,receivingCountry
  345. ,receivingAgent
  346. ,maxLimitAmt
  347. ,minLimitAmt
  348. ,currency
  349. ,tranType
  350. ,collMode
  351. ,customerType
  352. ,createdBy
  353. ,createdDate
  354. ,modType
  355. )
  356. SELECT
  357. stlId
  358. ,agentId
  359. ,countryId
  360. ,userId
  361. ,receivingCountry
  362. ,receivingAgent
  363. ,maxLimitAmt
  364. ,minLimitAmt
  365. ,currency
  366. ,tranType
  367. ,collMode
  368. ,customerType
  369. ,@user
  370. ,GETDATE()
  371. ,'D'
  372. FROM sendTranLimit WHERE stlId = @stlId
  373. SET @modType = 'delete'
  374. END
  375. COMMIT TRANSACTION
  376. EXEC proc_errorHandler 0, 'Record deleted successfully', @countryId
  377. END
  378. ELSE IF @flag = 's'
  379. BEGIN
  380. IF @sortBy IS NULL
  381. SET @sortBy = 'stlId'
  382. IF @sortOrder IS NULL
  383. SET @sortOrder = 'ASC'
  384. SET @table = '(
  385. SELECT
  386. stlId = ISNULL(mode.stlId, main.stlId)
  387. ,agentId = ISNULL(mode.agentId,main.agentId)
  388. ,countryId = ISNULL(mode.countryId,main.countryId)
  389. ,userId = ISNULL(mode.userId,main.userId)
  390. ,receivingCountry = ISNULL(mode.receivingCountry,main.receivingCountry)
  391. ,maxLimitAmt = ISNULL(mode.maxLimitAmt,main.maxLimitAmt)
  392. ,minLimitAmt = ISNULL(mode.minLimitAmt,main.minLimitAmt)
  393. ,currency = ISNULL(mode.currency,main.currency)
  394. ,tranType = ISNULL(mode.tranType,main.tranType)
  395. ,collMode = ISNULL(mode.collMode,main.collMode)
  396. ,customerType = ISNULL(mode.customerType,main.customerType)
  397. ,main.createdBy
  398. ,main.createdDate
  399. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE main.modifiedDate END
  400. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  401. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  402. (mode.stlId IS NOT NULL)
  403. THEN ''Y'' ELSE ''N'' END
  404. FROM sendTranLimit main WITH(NOLOCK)
  405. LEFT JOIN sendTranLimitMod mode ON main.stlId = mode.stlId
  406. AND (
  407. mode.createdBy = ''' + @user + '''
  408. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApproveFunctionId1 AS VARCHAR) + ')
  409. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApproveFunctionId2 AS VARCHAR) + ')
  410. )
  411. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  412. AND (
  413. main.approvedBy IS NOT NULL
  414. OR main.createdBy = ''' + @user + '''
  415. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApproveFunctionId1 AS VARCHAR) + ')
  416. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApproveFunctionId2 AS VARCHAR) + ')
  417. )
  418. --AND NOT(ISNULL(mode.modType, '''') = ''D'' AND mode.createdBy = ''' + @user + ''')
  419. ) '
  420. --PRINT(@table)
  421. SET @table = '(
  422. SELECT
  423. main.stlId
  424. ,main.agentId
  425. ,main.countryId
  426. ,sCountryName = ISNULL(scm.countryName, ''All'')
  427. ,main.userId
  428. ,main.receivingCountry
  429. ,rCountryName = ISNULL(rcm.countryName, ''All'')
  430. ,main.maxLimitAmt
  431. ,main.minLimitAmt
  432. ,main.currency
  433. ,currencyName = main.currency
  434. ,tranType = main.tranType
  435. ,tranTypeText = ISNULL(stm.typeTitle, ''Any'')
  436. ,collMode = main.collMode
  437. ,collModeText = ISNULL(col.detailTitle, ''Any'')
  438. ,customerType = ISNULL(ct.detailTitle, ''Any'')
  439. ,main.haschanged
  440. ,main.createdBy
  441. ,main.createdDate
  442. ,main.modifiedBy
  443. FROM ' + @table + ' main
  444. LEFT JOIN countryMaster scm WITH(NOLOCK) ON main.countryId = scm.countryId
  445. LEFT JOIN countryMaster rcm WITH(NOLOCK) ON main.receivingCountry = rcm.countryId
  446. LEFT JOIN serviceTypeMaster stm WITH(NOLOCK) ON main.tranType = stm.serviceTypeId
  447. LEFT JOIN staticDataValue col WITH(NOLOCK) ON main.collMode = col.valueId
  448. LEFT JOIN staticDataValue ct WITH(NOLOCK) ON main.customerType = ct.valueId
  449. ) x'
  450. SET @sql_filter = ''
  451. --PRINT (@table)
  452. IF @countryId IS NOT NULL
  453. SET @sql_filter = @sql_filter + ' AND ISNULL(countryId, '''') = ''' + CAST(@countryId AS VARCHAR) + ''' AND agentId IS NULL'
  454. IF @agentId IS NOT NULL
  455. SET @sql_filter = @sql_filter + ' AND ISNULL(agentId, '''') = ''' + CAST(@agentId AS VARCHAR) + ''''
  456. IF @userId IS NOT NULL
  457. SET @sql_filter = @sql_filter + ' AND ISNULL(userId, '''') = ''' + CAST(@userId AS VARCHAR) + ''''
  458. IF @receivingCountry IS NOT NULL
  459. SET @sql_filter = @sql_filter + ' AND ISNULL(receivingCountry, '''') = ''' + CAST(@receivingCountry AS VARCHAR) + ''''
  460. IF @tranType IS NOT NULL
  461. SET @sql_filter = @sql_filter + ' AND ISNULL(tranType, '''') = ''' + CAST(@tranType AS VARCHAR) + '%'''
  462. IF @collMode IS NOT NULL
  463. SET @sql_filter = @sql_filter + ' AND ISNULL(collMode, '''') = ''' + CAST(@collMode AS VARCHAR) + '%'''
  464. SET @select_field_list ='
  465. stlId
  466. ,agentId
  467. ,countryId
  468. ,userId
  469. ,sCountryName
  470. ,receivingCountry
  471. ,rCountryName
  472. ,maxLimitAmt
  473. ,minLimitAmt
  474. ,currency
  475. ,currencyName
  476. ,tranType
  477. ,tranTypeText
  478. ,collMode
  479. ,collModeText
  480. ,customerType
  481. ,haschanged
  482. ,createdBy
  483. ,createdDate
  484. ,modifiedBy
  485. '
  486. EXEC dbo.proc_paging
  487. @table
  488. ,@sql_filter
  489. ,@select_field_list
  490. ,@extra_field_list
  491. ,@sortBy
  492. ,@sortOrder
  493. ,@pageSize
  494. ,@pageNumber
  495. END
  496. ELSE IF @flag = 'reject'
  497. BEGIN
  498. IF NOT EXISTS (SELECT 'X' FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId and approvedBy IS NULL)
  499. AND
  500. NOT EXISTS (SELECT 'X' FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId = @stlId)
  501. BEGIN
  502. EXEC proc_errorHandler 1, 'Modification approval is not pending.', @stlId
  503. RETURN
  504. END
  505. IF EXISTS (SELECT 'X' FROM sendTranLimit WHERE approvedBy IS NULL AND stlId = @stlId)
  506. BEGIN --New record
  507. BEGIN TRANSACTION
  508. SET @modType = 'Reject'
  509. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @stlId, @oldValue OUTPUT
  510. INSERT INTO #msg(errorCode, msg, id)
  511. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @stlId, @user, @oldValue, @newValue
  512. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  513. BEGIN
  514. IF @@TRANCOUNT > 0
  515. ROLLBACK TRANSACTION
  516. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @stlId
  517. RETURN
  518. END
  519. DELETE FROM sendTranLimit WHERE stlId= @stlId
  520. IF @@TRANCOUNT > 0
  521. COMMIT TRANSACTION
  522. END
  523. ELSE
  524. BEGIN
  525. BEGIN TRANSACTION
  526. SET @modType = 'Reject'
  527. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @stlId, @oldValue OUTPUT
  528. INSERT INTO #msg(errorCode, msg, id)
  529. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @stlId, @user, @oldValue, @newValue
  530. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  531. BEGIN
  532. IF @@TRANCOUNT > 0
  533. ROLLBACK TRANSACTION
  534. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @stlId
  535. RETURN
  536. END
  537. DELETE FROM sendTranLimitMod WHERE stlId = @stlId
  538. IF @@TRANCOUNT > 0
  539. COMMIT TRANSACTION
  540. END
  541. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @stlId
  542. END
  543. ELSE IF @flag = 'approve'
  544. BEGIN
  545. IF NOT EXISTS (SELECT 'X' FROM sendTranLimit WITH(NOLOCK) WHERE stlId = @stlId AND approvedBy IS NULL)
  546. AND
  547. NOT EXISTS (SELECT 'X' FROM sendTranLimitMod WITH(NOLOCK) WHERE stlId = @stlId)
  548. BEGIN
  549. EXEC proc_errorHandler 1, 'Modification approval is not pending.', @stlId
  550. RETURN
  551. END
  552. BEGIN TRANSACTION
  553. IF EXISTS (SELECT 'X' FROM sendTranLimit WHERE approvedBy IS NULL AND stlId = @stlId )
  554. SET @modType = 'I'
  555. ELSE
  556. SELECT @modType = modType FROM sendTranLimitMod WHERE stlId = @stlId
  557. IF @modType = 'I'
  558. BEGIN --New record
  559. UPDATE sendTranLimit SET
  560. isActive = 'Y'
  561. ,approvedBy = @user
  562. ,approvedDate= GETDATE()
  563. WHERE stlId = @stlId
  564. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @stlId, @newValue OUTPUT
  565. END
  566. ELSE IF @modType = 'U'
  567. BEGIN
  568. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @stlId, @oldValue OUTPUT
  569. UPDATE main SET
  570. main.agentId = mode.agentId
  571. ,main.countryId = mode.countryId
  572. ,main.userId = mode.userId
  573. ,main.receivingCountry = mode.receivingCountry
  574. ,main.receivingAgent = mode.receivingAgent
  575. ,main.maxLimitAmt = mode.maxLimitAmt
  576. ,main.minLimitAmt = mode.minLimitAmt
  577. ,main.currency = mode.currency
  578. ,main.tranType = mode.tranType
  579. ,main.collMode = mode.collMode
  580. ,main.customerType = mode.customerType
  581. ,main.modifiedDate = GETDATE()
  582. ,main.modifiedBy = @user
  583. FROM sendTranLimit main
  584. INNER JOIN sendTranLimitMod mode ON mode.stlId = main.stlId
  585. WHERE mode.stlId = @stlId
  586. EXEC [dbo].proc_GetColumnToRow 'sendTranLimit', 'stlId', @stlId, @newValue OUTPUT
  587. END
  588. ELSE IF @modType = 'D'
  589. BEGIN
  590. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @stlId, @oldValue OUTPUT
  591. UPDATE sendTranLimit SET
  592. isDeleted = 'Y'
  593. ,isActive = 'N'
  594. ,modifiedDate = GETDATE()
  595. ,modifiedBy = @user
  596. WHERE stlId = @stlId
  597. END
  598. DELETE FROM sendTranLimitMod WHERE stlId = @stlId
  599. INSERT INTO #msg(errorCode, msg, id)
  600. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @stlId, @user, @oldValue, @newValue
  601. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  602. BEGIN
  603. IF @@TRANCOUNT > 0
  604. ROLLBACK TRANSACTION
  605. EXEC proc_errorHandler 1, 'Could not approve the changes.', @stlId
  606. RETURN
  607. END
  608. IF @@TRANCOUNT > 0
  609. COMMIT TRANSACTION
  610. EXEC proc_errorHandler 0, 'Changes approved successfully.', @stlId
  611. END
  612. END TRY
  613. BEGIN CATCH
  614. IF @@TRANCOUNT > 0
  615. ROLLBACK TRANSACTION
  616. DECLARE @errorMessage VARCHAR(MAX)
  617. SET @errorMessage = ERROR_MESSAGE()+ CAST( ERROR_LINE() as varchar)
  618. EXEC proc_errorHandler 1, @errorMessage, @stlId
  619. END CATCH
  620. GO