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.

451 lines
24 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_fundTransfer] 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. */
  10. CREATE proc [dbo].[proc_fundTransfer]
  11. @flag VARCHAR(50) = NULL
  12. ,@user VARCHAR(50) = NULL
  13. ,@fundTrxId VARCHAR(30) = NULL
  14. ,@sAgent VARCHAR(30) = NULL
  15. ,@agent varchar(200) = NULL
  16. ,@trnAmt Money = NULL
  17. ,@trnType CHAR(1) = NULL
  18. ,@trnDate DATETIME = NULL
  19. ,@remarks VARCHAR(1000) = NULL
  20. ,@isApproved CHAR(1) = NULL
  21. ,@approvedDate DATETIME = NULL
  22. ,@sortBy VARCHAR(50) = NULL
  23. ,@sortOrder VARCHAR(5) = NULL
  24. ,@pageSize INT = NULL
  25. ,@pageNumber INT = NULL
  26. AS
  27. SET NOCOUNT ON
  28. DECLARE @glcode VARCHAR(10), @acct_num VARCHAR(20);
  29. CREATE TABLE #tempACnum (acct_num VARCHAR(20));
  30. SET XACT_ABORT ON
  31. BEGIN TRY
  32. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  33. DECLARE
  34. @sql VARCHAR(MAX)
  35. ,@oldValue VARCHAR(MAX)
  36. ,@newValue VARCHAR(MAX)
  37. ,@tableName VARCHAR(50)
  38. ,@logIdentifier VARCHAR(100)
  39. ,@logParamMain VARCHAR(100)
  40. ,@tableAlias VARCHAR(100)
  41. ,@modType VARCHAR(6)
  42. ,@module INT
  43. ,@select_field_list VARCHAR(MAX)
  44. ,@extra_field_list VARCHAR(MAX)
  45. ,@table VARCHAR(MAX)
  46. ,@sql_filter VARCHAR(MAX)
  47. ,@ApprovedFunctionId INT
  48. SELECT
  49. @logIdentifier = 'fundTrxId'
  50. ,@logParamMain = 'fundTransfer'
  51. ,@tableAlias = 'fundTransfer'
  52. ,@module = 20
  53. ,@ApprovedFunctionId = 20102030
  54. IF @flag = 'a'
  55. BEGIN
  56. --IF EXISTS (SELECT 'X' FROM fundTransferMod WITH(NOLOCK) WHERE fundTrxId = @fundTrxId AND createdBy = @user)
  57. --BEGIN
  58. -- SELECT
  59. -- *
  60. -- FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  61. --END
  62. --ELSE
  63. BEGIN
  64. SELECT
  65. T.agent,
  66. T.trnAmt,
  67. trnDate = CONVERT(VARCHAR,T.trnDate ,101),
  68. T.remarks,
  69. T.createdBy,
  70. T.createdDate,
  71. T.trnType,
  72. AM.agentName
  73. FROM fundTransfer T WITH (NOLOCK)
  74. INNER JOIN agentMaster AM WITH (NOLOCK) ON T.agent = AM.agentId
  75. WHERE fundTrxId = @fundTrxId
  76. END
  77. END
  78. ELSE IF @flag = 'i'
  79. BEGIN
  80. BEGIN TRANSACTION
  81. INSERT INTO fundTransfer (
  82. sAgent
  83. ,Agent
  84. ,trnAmt
  85. ,trnType
  86. ,trnDate
  87. ,remarks
  88. ,createdBy
  89. ,createdDate
  90. )
  91. SELECT
  92. @sAgent
  93. ,@agent
  94. ,@trnAmt
  95. ,@trnType
  96. ,@trnDate
  97. ,@remarks
  98. ,@user
  99. ,GETDATE()
  100. SET @fundTrxId = SCOPE_IDENTITY()
  101. DELETE FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  102. INSERT INTO fundTransferMod (
  103. sAgent
  104. ,fundTrxId
  105. ,Agent
  106. ,trnAmt
  107. ,trnType
  108. ,trnDate
  109. ,remarks
  110. ,createdBy
  111. ,createdDate
  112. ,modType
  113. )
  114. SELECT
  115. @sAgent
  116. ,@fundTrxId
  117. ,@agent
  118. ,@trnAmt
  119. ,@trnType
  120. ,@trnDate
  121. ,@remarks
  122. ,@user
  123. ,GETDATE()
  124. ,'I'
  125. IF @@TRANCOUNT > 0
  126. COMMIT TRANSACTION
  127. EXEC proc_errorHandler 0, 'Record has been added successfully.', @fundTrxId
  128. END
  129. ELSE IF @flag = 'u'
  130. BEGIN
  131. IF EXISTS(SELECT 'A' FROM fundTransfer WHERE createdBy = @user AND approvedDate IS NULL)
  132. BEGIN
  133. EXEC proc_errorHandler 1, 'You can not modify this record.', @fundTrxId
  134. RETURN;
  135. END
  136. BEGIN TRANSACTION
  137. IF EXISTS (SELECT 'X' FROM fundTransfer WITH(NOLOCK) WHERE fundTrxId = @fundTrxId AND approvedDate IS NULL )
  138. BEGIN
  139. UPDATE fundTransfer SET
  140. sAgent = @sAgent
  141. ,Agent = @agent
  142. ,trnAmt = @trnAmt
  143. ,trnType = @trnType
  144. ,trnDate = @trnDate
  145. ,remarks = @remarks
  146. ,modifiedDate = GETDATE()
  147. ,modifiedBy = @user
  148. WHERE fundTrxId = @fundTrxId
  149. END
  150. ELSE
  151. BEGIN
  152. DELETE FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  153. INSERT INTO fundTransferMod (
  154. sAgent
  155. ,fundTrxId
  156. ,Agent
  157. ,trnAmt
  158. ,trnType
  159. ,trnDate
  160. ,remarks
  161. ,createdBy
  162. ,createdDate
  163. ,modType
  164. )
  165. SELECT
  166. @sAgent
  167. ,@fundTrxId
  168. ,@agent
  169. ,@trnAmt
  170. ,@trnType
  171. ,@trnDate
  172. ,@remarks
  173. ,@user
  174. ,GETDATE()
  175. ,'U'
  176. END
  177. IF @@TRANCOUNT > 0
  178. COMMIT TRANSACTION
  179. EXEC proc_errorHandler 0, 'Record updated successfully', @fundTrxId
  180. END
  181. ELSE IF @flag = 'd'
  182. BEGIN
  183. IF EXISTS (SELECT 'X' FROM fundTransfer WITH(NOLOCK)
  184. WHERE fundTrxId = @fundTrxId AND createdBy = @user)
  185. BEGIN
  186. UPDATE fundTransfer SET isDeleted='Y',approvedBy=@user,approvedDate=GETDATE() WHERE fundTrxId = @fundTrxId
  187. --DELETE FROM fundTransfer WHERE fundTrxId = @fundTrxId
  188. --DELETE FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  189. EXEC proc_errorHandler 0, 'Record deleted successfully', @fundTrxId
  190. return;
  191. END
  192. ELSE
  193. BEGIN
  194. EXEC proc_errorHandler 1, 'You can not delete this record!', @fundTrxId
  195. return;
  196. END
  197. END
  198. ELSE IF @flag = 's'
  199. BEGIN
  200. IF @sortBy IS NULL
  201. SET @sortBy = 'fundTrxId'
  202. IF @sortOrder IS NULL
  203. SET @sortOrder = 'ASC'
  204. SET @table = '(
  205. SELECT
  206. main.fundTrxId
  207. ,main.sAgent
  208. ,main.Agent
  209. ,main.trnAmt
  210. ,trnType = CASE WHEN main.trnType = ''T'' THEN ''Transfer'' WHEN main.trnType = ''R'' THEN ''Received'' END
  211. ,main.trnDate
  212. ,main.remarks
  213. ,am.agentName
  214. ,main.createdBy
  215. ,main.createdDate
  216. ,haschanged = CASE WHEN (main.approvedBy IS NULL) THEN ''Y'' ELSE ''N'' END
  217. ,modifiedby = case when main.modifiedBy is not null then main.modifiedBy else main.createdBy end
  218. FROM fundTransfer main WITH(NOLOCK)
  219. INNER JOIN agentMaster am WITH(NOLOCK) ON main.Agent = am.agentId
  220. WHERE
  221. main.approvedDate is null
  222. AND ISNULL(main.isDeleted, ''N'') <> ''Y''
  223. AND (
  224. main.approvedBy IS NOT NULL
  225. OR main.createdBy = ''' + @user + '''
  226. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  227. )
  228. )x '
  229. SET @sql_filter = ''
  230. IF(@agent IS NOT NULL)
  231. SET @sql_filter = @sql_filter + ' AND ISNULL(agentName, '''') LIKE ''%' + @agent + '%'''
  232. SET @select_field_list ='
  233. fundTrxId
  234. ,sAgent
  235. ,Agent
  236. ,trnAmt
  237. ,trnType
  238. ,trnDate
  239. ,remarks
  240. ,agentName
  241. ,createdBy
  242. ,createdDate
  243. ,haschanged
  244. ,modifiedby
  245. '
  246. PRINT @table
  247. EXEC dbo.proc_paging
  248. @table
  249. ,@sql_filter
  250. ,@select_field_list
  251. ,@extra_field_list
  252. ,@sortBy
  253. ,@sortOrder
  254. ,@pageSize
  255. ,@pageNumber
  256. END
  257. ELSE IF @flag = 's1'
  258. BEGIN
  259. IF @sortBy IS NULL
  260. SET @sortBy = 'fundTrxId'
  261. IF @sortOrder IS NULL
  262. SET @sortOrder = 'ASC'
  263. SET @table = '(
  264. SELECT
  265. main.fundTrxId
  266. ,main.sAgent
  267. ,main.Agent
  268. ,main.trnAmt
  269. ,trnType = CASE WHEN main.trnType = ''T'' THEN ''Transfer'' WHEN main.trnType = ''R'' THEN ''Received'' END
  270. ,main.trnDate
  271. ,main.remarks
  272. ,am.agentName
  273. ,main.createdBy
  274. ,main.createdDate
  275. ,haschanged = CASE WHEN (main.approvedBy IS NULL) THEN ''Y'' ELSE ''N'' END
  276. ,main.modifiedby
  277. ,main.modifiedDate
  278. ,trnStatus=case when isApproved=''N'' then ''Rejected'' else ''Approved'' end
  279. ,main.approvedBy
  280. ,main.approvedDate
  281. FROM fundTransfer main
  282. INNER JOIN agentMaster am WITH(NOLOCK) ON main.Agent = am.agentId
  283. WHERE main.approvedDate is not null
  284. ) x'
  285. SET @sql_filter = ''
  286. IF(@agent IS NOT NULL)
  287. SET @sql_filter = @sql_filter + ' AND ISNULL(agentName, '''') LIKE ''%' + @agent + '%'''
  288. SET @select_field_list ='
  289. fundTrxId
  290. ,sAgent
  291. ,Agent
  292. ,trnAmt
  293. ,trnType
  294. ,trnDate
  295. ,remarks
  296. ,agentName
  297. ,createdBy
  298. ,createdDate
  299. ,haschanged
  300. ,modifiedby
  301. ,modifiedDate
  302. ,trnStatus
  303. ,approvedBy
  304. ,approvedDate
  305. '
  306. PRINT @table
  307. EXEC dbo.proc_paging
  308. @table
  309. ,@sql_filter
  310. ,@select_field_list
  311. ,@extra_field_list
  312. ,@sortBy
  313. ,@sortOrder
  314. ,@pageSize
  315. ,@pageNumber
  316. END
  317. ELSE IF @flag = 'reject'
  318. BEGIN
  319. IF NOT EXISTS (SELECT 'X' FROM fundTransfer WITH(NOLOCK) WHERE fundTrxId = @fundTrxId AND approvedBy IS NULL)
  320. AND
  321. NOT EXISTS(SELECT 'X' FROM fundTransferMod WITH(NOLOCK) WHERE fundTrxId = @fundTrxId )
  322. BEGIN
  323. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @fundTrxId
  324. RETURN
  325. END
  326. IF EXISTS (SELECT 'X' FROM fundTransfer WHERE fundTrxId = @fundTrxId AND approvedBy IS NULL)
  327. BEGIN --New record
  328. BEGIN TRANSACTION
  329. SET @modType = 'Reject'
  330. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @fundTrxId, @oldValue OUTPUT
  331. INSERT INTO #msg(errorCode, msg, id)
  332. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @fundTrxId, @user, @oldValue, @newValue
  333. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  334. BEGIN
  335. IF @@TRANCOUNT > 0
  336. ROLLBACK TRANSACTION
  337. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @fundTrxId
  338. RETURN
  339. END
  340. UPDATE fundTransfer SET isApproved='N',approvedBy=@user,approvedDate=GETDATE() WHERE fundTrxId=@fundTrxId
  341. --DELETE FROM fundTransfer WHERE fundTrxId = @fundTrxId
  342. IF @@TRANCOUNT > 0
  343. COMMIT TRANSACTION
  344. END
  345. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @fundTrxId
  346. END
  347. ELSE IF @flag = 'approve'
  348. BEGIN
  349. IF NOT EXISTS (SELECT 'X' FROM fundTransfer WITH(NOLOCK) WHERE fundTrxId = @fundTrxId AND ISNULL(isApproved,'N') = 'N')
  350. AND
  351. NOT EXISTS(SELECT 'X' FROM fundTransferMod WITH(NOLOCK) WHERE fundTrxId = @fundTrxId )
  352. BEGIN
  353. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @fundTrxId
  354. RETURN
  355. END
  356. BEGIN TRANSACTION
  357. IF EXISTS (SELECT 'X' FROM fundTransfer WHERE isApproved IS NULL AND fundTrxId = @fundTrxId)
  358. SET @modType = 'I'
  359. ELSE
  360. SELECT @modType = modType FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  361. IF @modType IN('I','U')
  362. BEGIN --New record
  363. UPDATE fundTransfer SET
  364. isApproved = 'Y'
  365. ,approvedBy = @user
  366. ,approvedDate= GETDATE()
  367. WHERE fundTrxId = @fundTrxId
  368. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @fundTrxId, @newValue OUTPUT
  369. END
  370. DELETE FROM fundTransferMod WHERE fundTrxId = @fundTrxId
  371. INSERT INTO #msg(errorCode, msg, id)
  372. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @fundTrxId, @user, @oldValue, @newValue, @module
  373. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  374. BEGIN
  375. IF @@TRANCOUNT > 0
  376. ROLLBACK TRANSACTION
  377. EXEC proc_errorHandler 1, 'Could not approve the changes.', @fundTrxId
  378. RETURN
  379. END
  380. IF @@TRANCOUNT > 0
  381. COMMIT TRANSACTION
  382. EXEC proc_errorHandler 0, 'Changes approved successfully.', @fundTrxId
  383. END
  384. END TRY
  385. BEGIN CATCH
  386. IF @@TRANCOUNT > 0
  387. ROLLBACK TRANSACTION
  388. SELECT 1 error_code, ERROR_MESSAGE() mes, null id
  389. END CATCH
  390. GO