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.

302 lines
8.7 KiB

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