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.

767 lines
46 KiB

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