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.

571 lines
36 KiB

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