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.

609 lines
33 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_fundDepositRequest] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. select * from fundDeposit
  10. */
  11. CREATE proc [dbo].[proc_fundDepositRequest]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(200) = NULL
  14. ,@rowId VARCHAR(50) = NULL
  15. ,@agentId VARCHAR(50) = NULL
  16. ,@bankId VARCHAR(50) = NULL
  17. ,@branchId VARCHAR(50) = NULL
  18. ,@amount MONEY = NULL
  19. ,@depositedDate varchar(50) = NULL
  20. ,@remarks VARCHAR(MAX) = NULL
  21. ,@sessionAgentId VARCHAR(50) = NULL
  22. ,@sortBy VARCHAR(50) = NULL
  23. ,@sortOrder VARCHAR(5) = NULL
  24. ,@pageSize INT = NULL
  25. ,@pageNumber INT = NULL
  26. ,@Msg VARCHAR(20) = NULL
  27. AS
  28. SET NOCOUNT ON
  29. SET XACT_ABORT ON
  30. BEGIN TRY
  31. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  32. DECLARE
  33. @sql VARCHAR(MAX)
  34. ,@oldValue VARCHAR(MAX)
  35. ,@newValue VARCHAR(MAX)
  36. ,@module VARCHAR(10)
  37. ,@tableAlias VARCHAR(100)
  38. ,@logIdentifier VARCHAR(50)
  39. ,@logParamMod VARCHAR(100)
  40. ,@logParamMain VARCHAR(100)
  41. ,@table VARCHAR(MAX)
  42. ,@select_field_list VARCHAR(MAX)
  43. ,@extra_field_list VARCHAR(MAX)
  44. ,@sql_filter VARCHAR(MAX)
  45. ,@id VARCHAR(10)
  46. ,@modType VARCHAR(6)
  47. ,@ApprovedFunctionId INT
  48. ,@tranAmount MONEY
  49. SELECT
  50. @ApprovedFunctionId = 20122330
  51. ,@logIdentifier = 'rowId'
  52. ,@logParamMain = 'fundDeposit'
  53. ,@logParamMod = 'fundDepositMod'
  54. ,@module = '20'
  55. ,@tableAlias = 'Fund Deposit Request'
  56. IF @flag IN ('s')
  57. BEGIN
  58. SET @table = '(
  59. SELECT
  60. rowId = ISNULL(mode.rowId, main.rowId)
  61. ,agentId =dbo.GetAgentNameFromId(ISNULL(mode.agentId, main.agentId))
  62. ,bankId =dbo.GetAgentNameFromId(ISNULL(mode.bankId, main.bankId))
  63. ,branchId = dbo.GetAgentNameFromId(ISNULL(mode.branchId, main.branchId))
  64. ,amount = ISNULL(mode.amount, main.amount)
  65. ,depositedDate=convert(varchar,ISNULL(mode.depositedDate, main.depositedDate),107)
  66. ,remarks = ISNULL(mode.remarks, main.remarks)
  67. ,main.createdBy
  68. ,main.createdDate
  69. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE ISNULL(mode.createdDate, main.modifiedDate) END
  70. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE ISNULL(mode.createdBy, main.modifiedBy) END
  71. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  72. (mode.rowId IS NOT NULL)
  73. THEN ''Y'' ELSE '''' END
  74. FROM fundDeposit main WITH(NOLOCK)
  75. LEFT JOIN fundDepositMod mode ON main.rowId = mode.rowId AND mode.approvedBy IS NULL
  76. AND (
  77. mode.createdBy = ''' + @user + '''
  78. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  79. )
  80. WHERE
  81. main.approvedDate is null
  82. AND ISNULL(main.isDeleted, ''N'') <> ''Y''
  83. AND (
  84. main.approvedBy IS NOT NULL
  85. OR main.createdBy = ''' + @user + '''
  86. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  87. )
  88. ) '
  89. END
  90. IF @flag = 'i'
  91. BEGIN
  92. BEGIN TRANSACTION
  93. --alter table fundDeposit add depositedDate datetime
  94. --alter table fundDepositMod add depositedDate datetime
  95. INSERT INTO fundDeposit (
  96. agentId
  97. ,bankId
  98. ,branchId
  99. ,amount
  100. ,depositedDate
  101. ,remarks
  102. ,createdBy
  103. ,createdDate
  104. )
  105. SELECT
  106. @agentId
  107. ,@bankId
  108. ,@branchId
  109. ,@amount
  110. ,@depositedDate
  111. ,@remarks
  112. ,@user
  113. ,GETDATE()
  114. SET @rowId = SCOPE_IDENTITY()
  115. DECLARE @MESSAGE AS VARCHAR(MAX)
  116. SET @MESSAGE='Fund Deposit has been requested!'
  117. EXEC proc_transactionLogs 'i', @user, @rowId, @message
  118. IF @@TRANCOUNT > 0
  119. COMMIT TRANSACTION
  120. EXEC proc_errorHandler 0, 'Record has been added successfully.', @rowId
  121. END
  122. ELSE IF @flag = 'a'
  123. BEGIN
  124. IF EXISTS (
  125. SELECT 'X' FROM fundDepositMod WITH(NOLOCK)
  126. WHERE rowId = @rowId AND createdBy = @user AND approvedBy IS NULL
  127. )
  128. BEGIN
  129. SELECT mode.rowId,mode.bankId,mode.agentId,dbo.ShowDecimalExceptComma(mode.amount) amount,mode.remarks,
  130. convert(varchar,depositedDate,101) depositedDate,agent.agentName,mode.createdBy,convert(varchar,mode.createdDate,107) createdDate
  131. FROM fundDepositMod mode WITH(NOLOCK)
  132. INNER JOIN agentMaster bank WITH(NOLOCK) ON mode.bankId = bank.agentId
  133. INNER JOIN agentMaster agent WITH (NOLOCK) ON mode.agentId = agent.agentId
  134. WHERE mode.rowId= @rowId AND mode.approvedBy IS NULL
  135. END
  136. ELSE
  137. BEGIN
  138. SELECT main.rowId,main.bankId,main.agentId,dbo.ShowDecimalExceptComma(main.amount) amount,main.remarks,
  139. convert(varchar,depositedDate,101) depositedDate,agent.agentName,main.createdBy,convert(varchar,main.createdDate,107) createdDate
  140. FROM fundDeposit main WITH(NOLOCK)
  141. INNER JOIN agentMaster bank WITH (NOLOCK) ON main.bankId = bank.agentId
  142. INNER JOIN agentMaster agent WITH (NOLOCK) ON main.agentId = agent.agentId
  143. WHERE rowId = @rowId
  144. END
  145. END
  146. ELSE IF @flag = 'u'
  147. BEGIN
  148. IF EXISTS (
  149. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  150. WHERE rowId = @rowId AND ( createdBy <> @user AND approvedBy IS NULL)
  151. )
  152. BEGIN
  153. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @rowId
  154. RETURN
  155. END
  156. IF EXISTS (
  157. SELECT 'X' FROM fundDepositMod WITH(NOLOCK)
  158. WHERE rowId = @rowId AND (createdBy<> @user AND approvedBy IS NULL)
  159. )
  160. BEGIN
  161. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @rowId
  162. RETURN
  163. END
  164. BEGIN TRANSACTION
  165. IF EXISTS (SELECT 'X' FROM fundDeposit WHERE approvedBy IS NULL AND rowId = @rowId)
  166. BEGIN
  167. --select * from fundDeposit
  168. UPDATE fundDeposit SET
  169. bankId = @bankId
  170. ,branchId = @branchId
  171. ,amount = @amount
  172. ,depositedDate= @depositedDate
  173. ,remarks=@remarks
  174. ,modifiedBy = @user
  175. ,modifiedDate = GETDATE()
  176. WHERE rowId = @rowId
  177. END
  178. ELSE
  179. BEGIN
  180. DELETE FROM fundDepositMod WHERE rowId=@rowId AND approvedBy IS NULL
  181. INSERT INTO fundDepositMod
  182. (
  183. rowId
  184. ,agentId
  185. ,bankId
  186. ,branchId
  187. ,amount
  188. ,depositedDate
  189. ,remarks
  190. ,modifiedBy
  191. ,modifiedDate
  192. ,modType
  193. )
  194. SELECT
  195. @rowId
  196. ,@agentId
  197. ,@bankId
  198. ,@branchId
  199. ,@amount
  200. ,@depositedDate
  201. ,@remarks
  202. ,@user
  203. ,GETDATE()
  204. ,'U'
  205. END
  206. IF @@TRANCOUNT > 0
  207. COMMIT TRANSACTION
  208. EXEC proc_errorHandler 0, 'Record updated successfully.', @rowId
  209. END
  210. ELSE IF @flag = 'd'
  211. BEGIN
  212. IF EXISTS (
  213. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  214. WHERE rowId = @rowId AND (createdBy <> @user AND approvedBy IS NULL)
  215. )
  216. BEGIN
  217. EXEC proc_errorHandler 1, 'You can not delete this record. Previous modification has not been approved yet.', @rowId
  218. RETURN
  219. END
  220. IF EXISTS (
  221. SELECT 'X' FROM fundDepositMod WITH(NOLOCK)
  222. WHERE rowId = @rowId AND approvedBy IS NULL
  223. )
  224. BEGIN
  225. EXEC proc_errorHandler 1, 'You can not delete this record. Previous modification has not been approved yet.', @rowId
  226. RETURN
  227. END
  228. IF EXISTS (
  229. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  230. WHERE rowId = @rowId AND approvedDate is not null
  231. )
  232. BEGIN
  233. EXEC proc_errorHandler 1, 'You can not delete this record. Record has been already approved.', @rowId
  234. RETURN
  235. END
  236. IF EXISTS(SELECT 'X' FROM fundDeposit WITH(NOLOCK) WHERE rowId = @rowId AND approvedBy IS NULL AND createdBy = @user)
  237. BEGIN
  238. UPDATE fundDeposit SET
  239. isDeleted = 'Y'
  240. ,modifiedBy = @user
  241. ,modifiedDate = GETDATE()
  242. WHERE rowId = @rowId
  243. EXEC proc_errorHandler 0, 'Record deleted successfully.', @rowId
  244. RETURN
  245. END
  246. INSERT INTO fundDepositMod(
  247. rowid
  248. ,agentId
  249. ,bankId
  250. ,branchId
  251. ,amount
  252. ,depositedDate
  253. ,remarks
  254. ,createdBy
  255. ,createdDate
  256. ,modType
  257. )
  258. SELECT
  259. rowId
  260. ,agentId
  261. ,bankId
  262. ,branchId
  263. ,amount
  264. ,depositedDate
  265. ,remarks
  266. ,@user
  267. ,GETDATE()
  268. ,'D'
  269. FROM fundDeposit
  270. WHERE rowid = @rowId
  271. SET @modType = 'delete'
  272. EXEC proc_errorHandler 0, 'Record deleted successfully.', @rowId
  273. END
  274. ELSE IF @flag = 's'
  275. BEGIN
  276. IF @sortBy IS NULL
  277. SET @sortBy = 'rowId'
  278. IF @sortOrder IS NULL
  279. SET @sortOrder = 'ASC'
  280. --print @table
  281. --return;
  282. SET @table = '(
  283. SELECT
  284. main.rowId
  285. ,main.agentId
  286. ,main.bankId
  287. ,main.branchId
  288. ,main.amount
  289. ,main.depositedDate
  290. ,main.remarks
  291. ,main.createdBy
  292. ,main.createdDate
  293. ,main.modifiedBy
  294. ,haschanged
  295. FROM ' + @table + ' main
  296. ) x
  297. '
  298. SET @sql_filter = ''
  299. IF @bankId IS NOT NULL
  300. SET @sql_filter = @sql_filter + ' AND ISNULL(bankId, '''') LIKE ''%' + @bankId + '%'''
  301. IF @agentId IS NOT NULL
  302. SET @sql_filter = @sql_filter + ' AND ISNULL(agentId, '''') LIKE ''%' + @agentId + '%'''
  303. SET @select_field_list ='
  304. rowId
  305. ,agentId
  306. ,bankId
  307. ,branchId
  308. ,amount
  309. ,depositedDate
  310. ,remarks
  311. ,createdBy
  312. ,createdDate
  313. ,modifiedBy
  314. ,haschanged
  315. '
  316. EXEC dbo.proc_paging
  317. @table
  318. ,@sql_filter
  319. ,@select_field_list
  320. ,@extra_field_list
  321. ,@sortBy
  322. ,@sortOrder
  323. ,@pageSize
  324. ,@pageNumber
  325. END
  326. ELSE IF @flag = 'reject'
  327. BEGIN
  328. IF NOT EXISTS (
  329. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  330. WHERE rowId = @rowId
  331. )
  332. AND
  333. NOT EXISTS (
  334. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  335. WHERE rowId = @rowId AND approvedBy IS NULL
  336. )
  337. BEGIN
  338. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rowId
  339. RETURN
  340. END
  341. IF EXISTS (SELECT 'X' FROM fundDeposit WHERE approvedBy IS NULL AND rowId = @rowId)
  342. BEGIN --New record
  343. BEGIN TRANSACTION
  344. SET @modType = 'Reject'
  345. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
  346. INSERT INTO #msg(errorCode, msg, id)
  347. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
  348. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  349. BEGIN
  350. IF @@TRANCOUNT > 0
  351. ROLLBACK TRANSACTION
  352. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rowId
  353. RETURN
  354. END
  355. DELETE FROM fundDeposit WHERE rowId = @rowId
  356. IF @@TRANCOUNT > 0
  357. COMMIT TRANSACTION
  358. END
  359. ELSE
  360. BEGIN
  361. BEGIN TRANSACTION
  362. SET @modType = 'Reject'
  363. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
  364. INSERT INTO #msg(errorCode, msg, id)
  365. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
  366. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  367. BEGIN
  368. IF @@TRANCOUNT > 0
  369. ROLLBACK TRANSACTION
  370. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rowId
  371. RETURN
  372. END
  373. DELETE FROM fundDepositMod WHERE rowId = @rowId AND approvedBy IS NULL
  374. IF @@TRANCOUNT > 0
  375. COMMIT TRANSACTION
  376. END
  377. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @rowId
  378. END
  379. ELSE IF @flag = 'approve'
  380. BEGIN
  381. IF NOT EXISTS (
  382. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  383. WHERE rowId = @rowId
  384. )
  385. AND
  386. NOT EXISTS (
  387. SELECT 'X' FROM fundDeposit WITH(NOLOCK)
  388. WHERE rowId = @rowId AND approvedBy IS NULL
  389. )
  390. BEGIN
  391. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rowId
  392. RETURN
  393. END
  394. BEGIN TRANSACTION
  395. IF EXISTS (SELECT 'X' FROM fundDeposit WHERE approvedBy IS NULL AND rowId = @rowId )
  396. SET @modType = 'I'
  397. ELSE
  398. SELECT @modType = modType FROM fundDepositMod WHERE rowId = @rowId AND approvedBy IS NULL
  399. IF @modType = 'I'
  400. BEGIN --New record
  401. UPDATE fundDeposit SET
  402. isActive = 'Y'
  403. ,approvedBy = @user
  404. ,approvedDate= GETDATE()
  405. WHERE rowId = @rowId
  406. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @newValue OUTPUT
  407. --END
  408. END
  409. ELSE IF @modType = 'U'
  410. BEGIN
  411. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
  412. UPDATE main SET
  413. main.agentId = mode.agentid
  414. ,main.bankId = mode.bankId
  415. ,main.branchId = mode.branchId
  416. ,main.amount = mode.amount
  417. ,main.depositedDate = mode.depositedDate
  418. ,main.remarks= mode.remarks
  419. ,main.modifiedDate = GETDATE()
  420. ,main.modifiedBy = @user
  421. FROM fundDeposit main
  422. INNER JOIN fundDepositMod mode ON mode.rowId = main.rowId
  423. WHERE mode.rowId = @rowId AND mode.approvedBy IS NULL
  424. EXEC [dbo].proc_GetColumnToRow 'errPaidTran', 'trnId', @rowId, @newValue OUTPUT
  425. END
  426. ELSE IF @modType = 'D'
  427. BEGIN
  428. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
  429. UPDATE fundDeposit SET
  430. isDeleted = 'Y'
  431. ,modifiedDate = GETDATE()
  432. ,modifiedBy = @user
  433. WHERE rowId = @rowId
  434. END
  435. UPDATE fundDepositMod SET
  436. approvedBy = @user
  437. ,approvedDate = GETDATE()
  438. WHERE rowId = @rowId AND approvedBy IS NULL
  439. INSERT INTO #msg(errorCode, msg, id)
  440. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
  441. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  442. BEGIN
  443. IF @@TRANCOUNT > 0
  444. ROLLBACK TRANSACTION
  445. EXEC proc_errorHandler 1, 'Could not approve the changes.', @rowId
  446. RETURN
  447. END
  448. IF @@TRANCOUNT > 0
  449. COMMIT TRANSACTION
  450. EXEC proc_errorHandler 0, 'Changes approved successfully.', @rowId
  451. END
  452. ELSE IF @flag='sA'
  453. BEGIN
  454. SELECT agentName FROM agentMaster WHERE agentId=@agentId
  455. END
  456. ELSE IF @flag='bank'
  457. BEGIN
  458. SELECT agentId,agentName FROM agentMaster WHERE agentType=2905
  459. --select distinct agentType from agentMaster
  460. --select * from staticDataValue where valueId=2905
  461. END
  462. ELSE IF @flag ='agentGrid'
  463. BEGIN
  464. SET @table = '(
  465. SELECT
  466. rowId = ISNULL(mode.rowId, main.rowId)
  467. ,agentId =dbo.GetAgentNameFromId(ISNULL(mode.agentId, main.agentId))
  468. ,bankId =dbo.GetAgentNameFromId(ISNULL(mode.bankId, main.bankId))
  469. ,branchId = dbo.GetAgentNameFromId(ISNULL(mode.branchId, main.branchId))
  470. ,amount = ISNULL(mode.amount, main.amount)
  471. ,depositedDate=convert(varchar,ISNULL(mode.depositedDate, main.depositedDate),107)
  472. ,remarks = ISNULL(mode.remarks, main.remarks)
  473. ,main.createdBy
  474. ,main.createdDate
  475. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE ISNULL(mode.createdDate, main.modifiedDate) END
  476. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE ISNULL(mode.createdBy, main.modifiedBy) END
  477. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  478. (mode.rowId IS NOT NULL)
  479. THEN ''Y'' ELSE '''' END
  480. FROM fundDeposit main WITH(NOLOCK)
  481. LEFT JOIN fundDepositMod mode ON main.rowId = mode.rowId WHERE main.approvedDate IS NULL
  482. AND main.agentId='''+@sessionAgentId+'''
  483. ) '
  484. IF @sortBy IS NULL
  485. SET @sortBy = 'rowId'
  486. IF @sortOrder IS NULL
  487. SET @sortOrder = 'ASC'
  488. --print @table
  489. --return;
  490. SET @table = '(
  491. SELECT
  492. main.rowId
  493. ,main.agentId
  494. ,main.bankId
  495. ,main.branchId
  496. ,main.amount
  497. ,main.depositedDate
  498. ,main.remarks
  499. ,main.createdBy
  500. ,main.createdDate
  501. ,main.modifiedBy
  502. ,haschanged
  503. FROM ' + @table + ' main
  504. ) x
  505. '
  506. SET @sql_filter = ''
  507. IF @bankId IS NOT NULL
  508. SET @sql_filter = @sql_filter + ' AND ISNULL(bankId, '''') LIKE ''%' + @bankId + '%'''
  509. IF @agentId IS NOT NULL
  510. SET @sql_filter = @sql_filter + ' AND ISNULL(agentId, '''') LIKE ''%' + @agentId + '%'''
  511. SET @select_field_list ='
  512. rowId
  513. ,agentId
  514. ,bankId
  515. ,branchId
  516. ,amount
  517. ,depositedDate
  518. ,remarks
  519. ,createdBy
  520. ,createdDate
  521. ,modifiedBy
  522. ,haschanged
  523. '
  524. EXEC dbo.proc_paging
  525. @table
  526. ,@sql_filter
  527. ,@select_field_list
  528. ,@extra_field_list
  529. ,@sortBy
  530. ,@sortOrder
  531. ,@pageSize
  532. ,@pageNumber
  533. END
  534. END TRY
  535. BEGIN CATCH
  536. IF @@TRANCOUNT > 0
  537. ROLLBACK TRANSACTION
  538. DECLARE @errorMessage VARCHAR(MAX)
  539. SET @errorMessage = ERROR_MESSAGE()
  540. EXEC proc_errorHandler 1, @errorMessage, @rowId
  541. END CATCH
  542. GO