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.

496 lines
16 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_sendingAmtThreshold] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_sendingAmtThreshold]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_sendingAmtThreshold] 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_sendingAmtThreshold]
  12. @flag VARCHAR(50) = NULL
  13. ,@sAmtThresholdId INT = NULL
  14. ,@user VARCHAR(30) = NULL
  15. ,@sCountryId VARCHAR(30) = NULL
  16. ,@sCountryName VARCHAR(50) = NULL
  17. ,@rCountryId VARCHAR(30) = NULL
  18. ,@rCountryName VARCHAR(50) = NULL
  19. ,@sAgent VARCHAR(30) = NULL
  20. ,@Amount MONEY = NULL
  21. ,@MessageTxt NVARCHAR(MAX) = NULL
  22. ,@isEnable CHAR(1) = NULL
  23. ,@isActive CHAR(1) = NULL
  24. ,@sortBy VARCHAR(50) = NULL
  25. ,@sortOrder VARCHAR(5) = NULL
  26. ,@pageSize INT = NULL
  27. ,@pageNumber INT = NULL
  28. AS
  29. SET NOCOUNT ON
  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. ,@module VARCHAR(10)
  38. ,@tableAlias VARCHAR(100)
  39. ,@logIdentifier VARCHAR(50)
  40. ,@logParamMod VARCHAR(100)
  41. ,@logParamMain VARCHAR(100)
  42. ,@table VARCHAR(MAX)
  43. ,@select_field_list VARCHAR(MAX)
  44. ,@extra_field_list VARCHAR(MAX)
  45. ,@sql_filter VARCHAR(MAX)
  46. ,@modType VARCHAR(6)
  47. ,@ApprovedFunctionId INT
  48. SELECT
  49. @ApprovedFunctionId = 2019520
  50. ,@logIdentifier = 'sAmtThresholdId'
  51. ,@logParamMain = 'sendingAmtThreshold'
  52. ,@logParamMod = 'sendingAmtThresholdHistory'
  53. ,@module = '20'
  54. ,@tableAlias = 'Sending Amt Threshold'
  55. IF @flag = 'i'
  56. BEGIN
  57. IF EXISTS(SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK) WHERE sCountryId = @sCountryId AND rCountryId = @rCountryId AND ISNULL(sAgent,'') = ISNULL(@sAgent,'') AND ISNULL(isActive, 'Y') <> 'N')
  58. BEGIN
  59. EXEC proc_errorHandler 1, 'Sending amount threshold rule already added for this country or agent.', NULL
  60. RETURN
  61. END
  62. BEGIN TRANSACTION
  63. INSERT INTO sendingAmtThreshold (
  64. sCountryId
  65. ,sCountryName
  66. ,rCountryId
  67. ,rCountryName
  68. ,sAgent
  69. ,Amount
  70. ,MessageTxt
  71. ,isActive
  72. ,createdBy
  73. ,createdDate
  74. )
  75. SELECT
  76. @sCountryId
  77. ,@sCountryName
  78. ,@rCountryId
  79. ,@rCountryName
  80. ,@sAgent
  81. ,@Amount
  82. ,@MessageTxt
  83. ,@isActive
  84. ,@user
  85. ,GETDATE()
  86. SET @sAmtThresholdId = SCOPE_IDENTITY()
  87. SET @modType = 'Insert'
  88. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId , @newValue OUTPUT
  89. INSERT INTO #msg(errorCode, msg, id)
  90. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @user, @oldValue, @newValue
  91. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  92. BEGIN
  93. IF @@TRANCOUNT > 0
  94. ROLLBACK TRANSACTION
  95. EXEC proc_errorHandler 1, 'Failed to add new record.', @sCountryId
  96. RETURN
  97. END
  98. IF @@TRANCOUNT > 0
  99. COMMIT TRANSACTION
  100. EXEC proc_errorHandler 0, 'Record has been added successfully.', @sCountryId
  101. END
  102. ELSE IF @flag = 'u'
  103. BEGIN
  104. IF EXISTS (SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK) WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL AND createdBy <> @user)
  105. BEGIN
  106. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @sAmtThresholdId
  107. RETURN
  108. END
  109. IF EXISTS (SELECT 'X' FROM sendingAmtThresholdHistory WITH(NOLOCK) WHERE sAmtThresholdId = @sAmtThresholdId AND createdBy <> @user)
  110. BEGIN
  111. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @sAmtThresholdId
  112. RETURN
  113. END
  114. BEGIN TRANSACTION
  115. IF EXISTS (SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK) WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL AND createdBy = @user)
  116. BEGIN
  117. UPDATE sendingAmtThreshold SET
  118. sCountryId = @sCountryId
  119. ,sCountryName = @sCountryName
  120. ,rCountryId = @rCountryId
  121. ,rCountryName = @rCountryName
  122. ,sAgent = @sAgent
  123. ,Amount = @Amount
  124. ,MessageTxt = @MessageTxt
  125. ,isActive=@isActive
  126. ,modifiedBy = @user
  127. ,modifiedDate = GETDATE()
  128. WHERE sAmtThresholdId = @sAmtThresholdId
  129. END
  130. ELSE
  131. BEGIN
  132. DELETE FROM sendingAmtThreshold WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  133. INSERT INTO sendingAmtThresholdHistory(
  134. sAmtThresholdId
  135. ,sCountryId
  136. ,sCountryName
  137. ,rCountryId
  138. ,rCountryName
  139. ,sAgent
  140. ,Amount
  141. ,MessageTxt
  142. ,isActive
  143. ,isEnable
  144. ,createdBy
  145. ,createdDate
  146. ,modType
  147. )
  148. SELECT
  149. @sAmtThresholdId
  150. ,@sCountryId
  151. ,@sCountryName
  152. ,@rCountryId
  153. ,@rCountryName
  154. ,@sAgent
  155. ,@Amount
  156. ,@MessageTxt
  157. ,@isActive
  158. ,@isEnable
  159. ,@user
  160. ,GETDATE()
  161. ,'U'
  162. END
  163. IF @@TRANCOUNT > 0
  164. COMMIT TRANSACTION
  165. EXEC proc_errorHandler 0, 'Record updated successfully.', @sAmtThresholdId
  166. END
  167. ELSE IF @flag = 'd'
  168. BEGIN
  169. BEGIN TRANSACTION
  170. UPDATE sendingAmtThreshold SET
  171. isDeleted = 'Y'
  172. ,modifiedDate = GETDATE()
  173. ,modifiedBy = @user
  174. WHERE sAmtThresholdId = @sAmtThresholdId
  175. SET @modType = 'Delete'
  176. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @oldValue OUTPUT
  177. INSERT INTO #msg(errorCode, msg, id)
  178. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @user, @oldValue, @newValue
  179. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  180. BEGIN
  181. IF @@TRANCOUNT > 0
  182. ROLLBACK TRANSACTION
  183. EXEC proc_errorHandler 1, 'Failed to delete record.', @sCountryId
  184. RETURN
  185. END
  186. IF @@TRANCOUNT > 0
  187. COMMIT TRANSACTION
  188. EXEC proc_errorHandler 0, 'Record deleted successfully.', @sCountryId
  189. END
  190. ELSE IF @flag = 'a'
  191. BEGIN
  192. SELECT sAmtThresholdId
  193. ,sCountryId
  194. ,sCountryName
  195. ,rCountryId
  196. ,rCountryName
  197. ,sAgent
  198. ,Amount
  199. ,MessageTxt
  200. ,isActive
  201. ,createdBy
  202. ,createdDate
  203. FROM sendingAmtThreshold WITH(NOLOCK)
  204. WHERE sAmtThresholdId = @sAmtThresholdId
  205. END
  206. ELSE IF @flag = 's'
  207. BEGIN
  208. IF @sortBy IS NULL
  209. SET @sortBy = 'sCountryId'
  210. IF @sortOrder IS NULL
  211. SET @sortOrder = 'ASC'
  212. DECLARE @m VARCHAR(MAX),@d VARCHAR(MAX)
  213. SET @m = '(
  214. SELECT
  215. sAmtThresholdId = ISNULL(mode.sAmtThresholdId, main.sAmtThresholdId)
  216. ,sCountryId = ISNULL(mode.sCountryId, main.sCountryId)
  217. ,sCountryName = ISNULL(mode.sCountryName, main.sCountryName)
  218. ,rCountryId = ISNULL(mode.rCountryId, main.rCountryId)
  219. ,rCountryName = ISNULL(mode.rCountryName, main.rCountryName)
  220. ,sAgent = ISNULL(mode.sAgent, main.sAgent)
  221. ,Amount = dbo.ShowDecimal(ISNULL(mode.Amount, main.Amount))
  222. ,MessageTxt = ISNULL(mode.MessageTxt, main.MessageTxt)
  223. ,isActive = CASE WHEN ISNULL(ISNULL(mode.isActive, main.isActive),''N'')=''Y'' then ''Active'' else ''Deactivate'' END
  224. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  225. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  226. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  227. (mode.sAmtThresholdId IS NOT NULL)
  228. THEN ''Y'' ELSE ''N'' END
  229. FROM sendingAmtThreshold main WITH(NOLOCK)
  230. LEFT JOIN sendingAmtThresholdHistory mode ON main.sAmtThresholdId = mode.sAmtThresholdId AND mode.approvedBy IS NULL
  231. AND (
  232. mode.createdBy = ''' + @user + '''
  233. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  234. )
  235. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  236. AND (
  237. main.approvedBy IS NOT NULL
  238. OR main.createdBy = ''' + @user + '''
  239. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  240. )
  241. ) '
  242. SET @table = '(
  243. SELECT m.sAmtThresholdId
  244. ,m.sCountryId
  245. ,m.sCountryName
  246. ,m.rCountryId
  247. ,m.rCountryName
  248. ,sAgent = ISNULL(agt.agentName,''All'')
  249. ,Amount = dbo.ShowDecimal(m.Amount)
  250. ,m.isActive
  251. ,modifiedBy = MAX(ISNULL(m.modifiedBy,''''))
  252. ,hasChanged = MAX(CASE WHEN m.hasChanged = ''Y'' THEN ''Y'' ELSE ''N'' END)
  253. FROM ' + @m + ' m
  254. LEFT JOIN agentMaster agt WITH(NOLOCK)
  255. ON m.sAgent=agt.agentId
  256. GROUP BY
  257. m.sAmtThresholdId
  258. ,m.sCountryId
  259. ,m.sCountryName
  260. ,m.rCountryId
  261. ,m.rCountryName
  262. ,agt.agentName
  263. ,m.Amount
  264. ,m.isActive
  265. ) x'
  266. PRINT @table
  267. SET @sql_filter = ''
  268. IF @sCountryName IS NOT NULL
  269. SET @sql_filter = @sql_filter + ' AND sCountryName LIKE ''%' + @sCountryName + '%'''
  270. IF @rCountryName IS NOT NULL
  271. SET @sql_filter = @sql_filter + 'AND rCountryName LIKE ''%' + @rCountryName + '%'' '
  272. SET @select_field_list ='
  273. sAmtThresholdId
  274. ,sCountryId
  275. ,sCountryName
  276. ,rCountryId
  277. ,rCountryName
  278. ,sAgent
  279. ,Amount
  280. ,isActive
  281. ,modifiedBy
  282. ,hasChanged'
  283. EXEC dbo.proc_paging
  284. @table
  285. ,@sql_filter
  286. ,@select_field_list
  287. ,@extra_field_list
  288. ,@sortBy
  289. ,@sortOrder
  290. ,@pageSize
  291. ,@pageNumber
  292. END
  293. ELSE IF @flag='getTA'
  294. BEGIN
  295. SELECT @sCountryID = agentCountryId from agentMaster WITH(NOLOCK) WHERE agentId = @sAgent
  296. IF EXISTS(SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK) WHERE sCountryId = @sCountryId AND rCountryId = @rCountryId AND ISNULL(sAgent,'') = ISNULL(@sAgent,'') AND ISNULL(isActive, 'Y') <> 'N' AND approvedBy IS NOT NULL)
  297. BEGIN
  298. SELECT TOP 1 Amount = dbo.ShowDecimal(Amount),MessageTxt from sendingAmtThreshold WITH(NOLOCK) WHERE sCountryId = @sCountryId AND rCountryId = @rCountryId AND ISNULL(sAgent,'') = ISNULL(@sAgent,'')
  299. AND ISNULL(isActive, 'Y') <> 'N' AND approvedBy IS NOT NULL
  300. ORDER BY createdDate DESC
  301. END
  302. ELSE
  303. BEGIN
  304. SELECT TOP 1 Amount = dbo.ShowDecimal(Amount),MessageTxt from sendingAmtThreshold WITH(NOLOCK) WHERE sCountryId = @sCountryId AND rCountryId = @rCountryId AND ISNULL(sAgent,'')=''
  305. AND ISNULL(isActive, 'Y') <> 'N' AND approvedBy IS NOT NULL
  306. ORDER BY createdDate DESC
  307. END
  308. --SELECT * from sendingAmtThreshold
  309. --select * from agentMaster where agentId='1226'
  310. END
  311. ELSE IF @flag IN ('reject')
  312. BEGIN
  313. IF NOT EXISTS (
  314. SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK)
  315. WHERE sAmtThresholdId = @sAmtThresholdId
  316. )
  317. AND
  318. NOT EXISTS (
  319. SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK)
  320. WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  321. )
  322. BEGIN
  323. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @sAmtThresholdId
  324. RETURN
  325. END
  326. IF EXISTS (SELECT 'X' FROM sendingAmtThreshold WHERE approvedBy IS NULL AND sAmtThresholdId = @sAmtThresholdId)
  327. BEGIN --New record
  328. BEGIN TRANSACTION
  329. SET @modType = 'Reject'
  330. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @oldValue OUTPUT
  331. INSERT INTO #msg(errorCode, msg, id)
  332. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @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 modification.', @sAmtThresholdId
  338. RETURN
  339. END
  340. DELETE FROM sendingAmtThreshold WHERE sAmtThresholdId = @sAmtThresholdId
  341. IF @@TRANCOUNT > 0
  342. COMMIT TRANSACTION
  343. END
  344. ELSE
  345. BEGIN
  346. BEGIN TRANSACTION
  347. SET @modType = 'Reject'
  348. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @oldValue OUTPUT
  349. INSERT INTO #msg(errorCode, msg, id)
  350. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @user, @oldValue, @newValue
  351. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  352. BEGIN
  353. IF @@TRANCOUNT > 0
  354. ROLLBACK TRANSACTION
  355. EXEC proc_errorHandler 1, 'Failed to reject the modification.', @sAmtThresholdId
  356. RETURN
  357. END
  358. DELETE FROM sendingAmtThresholdHistory WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  359. IF @@TRANCOUNT > 0
  360. COMMIT TRANSACTION
  361. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @sAmtThresholdId
  362. END
  363. END
  364. ELSE IF @flag IN ('approve')
  365. BEGIN
  366. IF NOT EXISTS (
  367. SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK)
  368. WHERE sAmtThresholdId = @sAmtThresholdId
  369. )
  370. AND
  371. NOT EXISTS (
  372. SELECT 'X' FROM sendingAmtThreshold WITH(NOLOCK)
  373. WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  374. )
  375. BEGIN
  376. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @sAmtThresholdId
  377. RETURN
  378. END
  379. BEGIN TRANSACTION
  380. IF EXISTS (SELECT 'X' FROM sendingAmtThreshold WHERE approvedBy IS NULL AND sAmtThresholdId = @sAmtThresholdId)
  381. SET @modType = 'I'
  382. ELSE
  383. SELECT @modType = modType FROM sendingAmtThresholdHistory WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  384. IF @modType = 'I'
  385. BEGIN --New record
  386. UPDATE sendingAmtThreshold SET
  387. isActive = 'Y'
  388. ,isEnable = 'Y'
  389. ,approvedBy = @user
  390. ,approvedDate= GETDATE()
  391. WHERE sAmtThresholdId = @sAmtThresholdId
  392. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @newValue OUTPUT
  393. END
  394. ELSE IF @modType = 'U'
  395. BEGIN
  396. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @oldValue OUTPUT
  397. -- SELECT * FROM sendingAmtThreshold
  398. UPDATE main SET
  399. main.sCountryId = mode.sCountryId
  400. ,main.sCountryName = mode.sCountryName
  401. ,main.rCountryId = mode.rCountryId
  402. ,main.rCountryName = mode.rCountryName
  403. ,main.sAgent = mode.sAgent
  404. ,main.Amount = mode.Amount
  405. ,main.MessageTxt = mode.MessageTxt
  406. ,main.isActive = mode.isActive
  407. ,main.modifiedDate = GETDATE()
  408. ,main.modifiedBy = @user
  409. FROM sendingAmtThreshold main
  410. INNER JOIN sendingAmtThresholdHistory mode ON mode.sAmtThresholdId = main.sAmtThresholdId
  411. WHERE mode.sAmtThresholdId = @sAmtThresholdId AND mode.approvedBy IS NULL
  412. EXEC [dbo].proc_GetColumnToRow 'sendingAmtThreshold', 'sAmtThresholdId', @sAmtThresholdId, @newValue OUTPUT
  413. END
  414. ELSE IF @modType = 'D'
  415. BEGIN
  416. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @sAmtThresholdId, @oldValue OUTPUT
  417. UPDATE sendingAmtThreshold SET
  418. isDeleted = 'Y'
  419. ,modifiedDate = GETDATE()
  420. ,modifiedBy = @user
  421. WHERE sAmtThresholdId = @sAmtThresholdId
  422. END
  423. UPDATE sendingAmtThresholdHistory SET
  424. approvedBy = @user
  425. ,approvedDate = GETDATE()
  426. WHERE sAmtThresholdId = @sAmtThresholdId AND approvedBy IS NULL
  427. INSERT INTO #msg(errorCode, msg, id)
  428. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @user, @oldValue, @newValue
  429. DELETE FROM sendingAmtThresholdHistory WHERE sAmtThresholdId = @sAmtThresholdId
  430. INSERT INTO #msg(errorCode, msg, id)
  431. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @sAmtThresholdId, @user, @oldValue, @newValue, @module
  432. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  433. BEGIN
  434. IF @@TRANCOUNT > 0
  435. ROLLBACK TRANSACTION
  436. EXEC proc_errorHandler 1, 'Could not approve the changes.', @sAmtThresholdId
  437. RETURN
  438. END
  439. IF @@TRANCOUNT > 0
  440. COMMIT TRANSACTION
  441. EXEC proc_errorHandler 0, 'All Changes approved successfully.', @sAmtThresholdId
  442. END
  443. END TRY
  444. BEGIN CATCH
  445. IF @@TRANCOUNT > 0
  446. ROLLBACK TRANSACTION
  447. DECLARE @errorMessage VARCHAR(MAX)
  448. SET @errorMessage = ERROR_MESSAGE()
  449. EXEC proc_errorHandler 1, @errorMessage, @sCountryId
  450. END CATCH
  451. GO