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.

296 lines
9.2 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_countryCurrency] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_countryCurrency]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_countryCurrency] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. /*
  12. IF EXISTS (SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[proc_countryCurrency]') AND TYPE IN (N'P', N'PC'))
  13. DROP PROCEDURE [dbo].proc_countryCurrency
  14. GO
  15. */
  16. /*
  17. EXEC proc_countryCurrency @flag = 'lAll'
  18. */
  19. CREATE PROC [dbo].[proc_countryCurrency]
  20. @flag VARCHAR(50) = NULL
  21. ,@user VARCHAR(30) = NULL
  22. ,@countryCurrencyId VARCHAR(30) = NULL
  23. ,@countryId INT = NULL
  24. ,@currencyId INT = NULL
  25. ,@countryName VARCHAR(100) = NULL
  26. ,@applyToAgent CHAR(1) = NULL
  27. ,@spFlag CHAR(1) = NULL
  28. ,@isDefault CHAR(1) = NULL
  29. ,@sortBy VARCHAR(50) = NULL
  30. ,@sortOrder VARCHAR(5) = NULL
  31. ,@pageSize INT = NULL
  32. ,@pageNumber INT = NULL
  33. AS
  34. SET NOCOUNT ON
  35. SET XACT_ABORT ON
  36. BEGIN TRY
  37. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  38. DECLARE
  39. @sql VARCHAR(MAX)
  40. ,@oldValue VARCHAR(MAX)
  41. ,@newValue VARCHAR(MAX)
  42. ,@module VARCHAR(10)
  43. ,@tableAlias VARCHAR(100)
  44. ,@logIdentifier VARCHAR(50)
  45. ,@logParamMod VARCHAR(100)
  46. ,@logParamMain VARCHAR(100)
  47. ,@table VARCHAR(MAX)
  48. ,@select_field_list VARCHAR(MAX)
  49. ,@extra_field_list VARCHAR(MAX)
  50. ,@sql_filter VARCHAR(MAX)
  51. ,@modType VARCHAR(6)
  52. SELECT
  53. @logIdentifier = 'countryCurrencyId'
  54. ,@logParamMain = 'countryCurrency'
  55. ,@logParamMod = 'countryCurrencyMod'
  56. ,@module = '20'
  57. ,@tableAlias = 'Country Master'
  58. --EXEC proc_countryCurrency @flag = 'l', @countryId = '133'
  59. IF @flag = 'l' --Populate Currency according to Country(Include USD)
  60. BEGIN
  61. SELECT DISTINCT * FROM(
  62. SELECT
  63. currencyId = currencyCode
  64. ,currencyCode = ISNULL(curr.currencyCode, '') + ISNULL(' - ' + curr.currencyName, '')
  65. FROM countryCurrency cc WITH(NOLOCK)
  66. INNER JOIN currencyMaster curr WITH(NOLOCK) ON cc.currencyId = curr.currencyId
  67. WHERE ISNULL(cc.isDeleted, 'N') = 'N'
  68. AND cc.countryId = @countryId
  69. UNION ALL
  70. SELECT currencyCode, currencyCode + ' - ' + currencyName FROM currencyMaster WITH(NOLOCK) WHERE currencyCode = 'USD')x
  71. END
  72. ELSE IF @flag = 'cl'
  73. BEGIN
  74. SELECT
  75. currencyId = currencyCode
  76. ,currencyCode = currencyCode
  77. FROM countryCurrency cc WITH(NOLOCK)
  78. INNER JOIN currencyMaster curr WITH(NOLOCK) ON cc.currencyId = curr.currencyId
  79. WHERE ISNULL(cc.isDeleted, 'N') = 'N'
  80. AND cc.countryId = @countryId
  81. END
  82. ELSE IF @flag = 'l2' --Populate Currency according to Country
  83. BEGIN
  84. SELECT
  85. currencyId = currencyCode
  86. ,currencyCode = ISNULL(curr.currencyCode, '') + ISNULL(' - ' + curr.currencyName, '')
  87. FROM countryCurrency cc
  88. INNER JOIN currencyMaster curr ON cc.currencyId = curr.currencyId
  89. WHERE ISNULL(cc.isDeleted, 'N') = 'N'
  90. AND cc.countryId = @countryId
  91. END
  92. ELSE IF @flag = 'lbyname' --Populate Currency according to Country
  93. BEGIN
  94. --EXEC proc_countryCurrency @flag = 'lbyname', @countryName = 'United Kingdom'
  95. SELECT
  96. currencyId = currencyCode
  97. ,currencyCode = ISNULL(curr.currencyCode, '') + ISNULL(' - ' + curr.currencyName, '')
  98. FROM countryCurrency cc
  99. INNER JOIN currencyMaster curr ON cc.currencyId = curr.currencyId
  100. WHERE ISNULL(cc.isDeleted, 'N') = 'N'
  101. AND cc.countryId = (SELECT TOP 1 countryId
  102. FROM countryMaster WHERE countryName=@countryName)
  103. ORDER BY cc.isDefault DESC, currencyId ASC
  104. END
  105. ELSE IF @flag = 'lAll'
  106. BEGIN
  107. SELECT DISTINCT
  108. cc.currencyId
  109. ,currencyCode = ISNULL(curr.currencyCode, '') + ISNULL(' - ' + curr.currencyName, '')
  110. FROM countryCurrency cc
  111. INNER JOIN currencyMaster curr ON cc.currencyId = curr.currencyId
  112. INNER JOIN countryMaster cm ON cc.countryId = cm.countryId AND ISNULL(cm.isOperativeCountry, 'N') = 'Y'
  113. WHERE ISNULL(cc.isDeleted, 'N') = 'N'
  114. END
  115. ELSE IF @flag = 'i'
  116. BEGIN
  117. IF EXISTS(SELECT 'X' FROM countryCurrency WITH(NOLOCK) WHERE countryId = @countryId AND isDefault = 'Y' AND @isDefault = 'Y' AND ISNULL(isDeleted, 'N') = 'N')
  118. BEGIN
  119. EXEC proc_errorHandler 1, 'Default Currency already exists. Cannot add more than one default currency', NULL
  120. RETURN
  121. END
  122. BEGIN TRANSACTION
  123. INSERT INTO countryCurrency (
  124. countryId
  125. ,currencyId
  126. ,spFlag
  127. ,applyToAgent
  128. ,isDefault
  129. ,createdBy
  130. ,createdDate
  131. )
  132. SELECT
  133. @countryId
  134. ,@currencyId
  135. ,@spFlag
  136. ,@applyToAgent
  137. ,@isDefault
  138. ,@user
  139. ,GETDATE()
  140. SET @modType = 'Insert'
  141. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @countryCurrencyId , @newValue OUTPUT
  142. INSERT INTO #msg(errorCode, msg, id)
  143. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @countryCurrencyId, @user, @oldValue, @newValue
  144. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  145. BEGIN
  146. IF @@TRANCOUNT > 0
  147. ROLLBACK TRANSACTION
  148. EXEC proc_errorHandler 1, 'Failed to add new record.', @countryCurrencyId
  149. RETURN
  150. END
  151. IF @@TRANCOUNT > 0
  152. COMMIT TRANSACTION
  153. EXEC proc_errorHandler 0, 'Record has been added successfully.', @countryCurrencyId
  154. END
  155. ELSE IF @flag = 'a'
  156. BEGIN
  157. SELECT
  158. countryCurrencyId
  159. ,countryId
  160. ,currencyId
  161. ,spFlag
  162. ,isDefault = ISNULL(isDefault, 'N')
  163. ,isActive
  164. ,createdBy
  165. ,createdDate
  166. FROM countryCurrency WITH(NOLOCK) WHERE countryCurrencyId = @countryCurrencyId
  167. END
  168. ELSE IF @flag = 'u'
  169. BEGIN
  170. IF EXISTS(SELECT 'X' FROM countryCurrency WITH(NOLOCK) WHERE countryCurrencyId <> @countryCurrencyId AND countryId = @countryId AND isDefault = 'Y' AND @isDefault = 'Y' AND ISNULL(isDeleted, 'N') = 'N')
  171. BEGIN
  172. EXEC proc_errorHandler 1, 'Default Currency already exists. Cannot add more than one default currency', NULL
  173. RETURN
  174. END
  175. BEGIN TRANSACTION
  176. UPDATE countryCurrency SET
  177. currencyId = @currencyId
  178. ,spFlag = @spFlag
  179. ,applyToAgent = @applyToAgent
  180. ,isDefault = @isDefault
  181. ,modifiedBy = @user
  182. ,modifiedDate = GETDATE()
  183. WHERE countryCurrencyId = @countryCurrencyId
  184. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @countryCurrencyId, @newValue OUTPUT
  185. INSERT INTO #msg(errorCode, msg, id)
  186. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @countryCurrencyId, @user, @oldValue, @newValue
  187. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  188. BEGIN
  189. IF @@TRANCOUNT > 0
  190. ROLLBACK TRANSACTION
  191. EXEC proc_errorHandler 1, 'Failed to update record.', @countryCurrencyId
  192. RETURN
  193. END
  194. IF @@TRANCOUNT > 0
  195. COMMIT TRANSACTION
  196. EXEC proc_errorHandler 0, 'Record updated successfully.', @countryCurrencyId
  197. END
  198. ELSE IF @flag = 'd'
  199. BEGIN
  200. BEGIN TRANSACTION
  201. UPDATE countryCurrency SET
  202. isDeleted = 'Y'
  203. ,modifiedDate = GETDATE()
  204. ,modifiedBy = @user
  205. WHERE countryCurrencyId = @countryCurrencyId
  206. SET @modType = 'Delete'
  207. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @countryCurrencyId, @oldValue OUTPUT
  208. INSERT INTO #msg(errorCode, msg, id)
  209. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @countryCurrencyId, @user, @oldValue, @newValue
  210. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  211. BEGIN
  212. IF @@TRANCOUNT > 0
  213. ROLLBACK TRANSACTION
  214. EXEC proc_errorHandler 1, 'Failed to delete record.', @countryCurrencyId
  215. RETURN
  216. END
  217. IF @@TRANCOUNT > 0
  218. COMMIT TRANSACTION
  219. EXEC proc_errorHandler 0, 'Record deleted successfully.', @countryCurrencyId
  220. END
  221. ELSE IF @flag IN ('s')
  222. BEGIN
  223. IF @sortBy IS NULL
  224. SET @sortBy = 'countryCurrencyId'
  225. IF @sortOrder IS NULL
  226. SET @sortOrder = 'ASC'
  227. SET @table = '(
  228. SELECT
  229. main.countryCurrencyId
  230. ,main.countryId
  231. ,main.currencyId
  232. ,curr.currencyCode
  233. ,curr.currencyName
  234. ,spFlag = CASE WHEN main.spFlag = ''B'' THEN ''Both''
  235. WHEN main.spFlag = ''S'' THEN ''Send''
  236. WHEN main.spFlag = ''R'' THEN ''Receive'' END
  237. ,applyToAgent = CASE WHEN main.applyToAgent = ''N'' THEN ''No'' ELSE ''Yes'' END
  238. ,isDefault = CASE WHEN main.isDefault = ''Y'' THEN ''Yes'' ELSE ''No'' END
  239. ,main.createdBy
  240. ,main.createdDate
  241. ,main.isDeleted
  242. FROM countryCurrency main WITH(NOLOCK)
  243. LEFT JOIN currencyMaster curr ON main.currencyId = curr.currencyId
  244. --LEFT JOIN staticDataValue sdv ON main.spFlag = sdv.valueId
  245. WHERE main.countryId = ' + CAST(@countryId AS VARCHAR) + '
  246. ) x'
  247. SET @sql_filter = ''
  248. SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  249. SET @select_field_list ='
  250. countryCurrencyId
  251. ,countryId
  252. ,currencyId
  253. ,currencyCode
  254. ,currencyName
  255. ,spFlag
  256. ,applyToAgent
  257. ,isDefault
  258. ,createdBy
  259. ,createdDate
  260. ,isDeleted '
  261. EXEC dbo.proc_paging
  262. @table
  263. ,@sql_filter
  264. ,@select_field_list
  265. ,@extra_field_list
  266. ,@sortBy
  267. ,@sortOrder
  268. ,@pageSize
  269. ,@pageNumber
  270. END
  271. END TRY
  272. BEGIN CATCH
  273. IF @@TRANCOUNT > 0
  274. ROLLBACK TRANSACTION
  275. DECLARE @errorMessage VARCHAR(MAX)
  276. SET @errorMessage = ERROR_MESSAGE()
  277. EXEC proc_errorHandler 1, @errorMessage, @countryCurrencyId
  278. END CATCH
  279. GO