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.

404 lines
12 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_rateMask] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_rateMask]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_rateMask] 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_rateMask]') AND TYPE IN (N'P', N'PC'))
  13. DROP PROCEDURE [dbo].proc_rateMask
  14. GO
  15. */
  16. --select * from rateMask
  17. --EXEC proc_rateMask @flag = 's',@user = 'admin'
  18. CREATE proc [dbo].[proc_rateMask]
  19. @flag VARCHAR(50) = NULL
  20. ,@user VARCHAR(30) = NULL
  21. ,@rmID INT = NULL
  22. ,@baseCurrency VARCHAR(3) = NULL
  23. ,@currency VARCHAR(3) = NULL
  24. ,@rateMaskMulBd INT = NULL
  25. ,@rateMaskMulAd INT = NULL
  26. ,@rateMaskDivBd INT = NULL
  27. ,@rateMaskDivAd INT = NULL
  28. ,@cMin FLOAT = NULL
  29. ,@cMax FLOAT = NULL
  30. ,@pMin FLOAT = NULL
  31. ,@pMax FLOAT = NULL
  32. --,@factor CHAR(1) = NULL
  33. ,@isEnable CHAR(1) = NULL
  34. ,@isActive CHAR(1) = NULL
  35. ,@sortBy VARCHAR(50) = NULL
  36. ,@sortOrder VARCHAR(5) = NULL
  37. ,@pageSize INT = NULL
  38. ,@pageNumber INT = NULL
  39. AS
  40. SET NOCOUNT ON
  41. SET XACT_ABORT ON
  42. BEGIN TRY
  43. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  44. DECLARE
  45. @sql VARCHAR(MAX)
  46. ,@oldValue VARCHAR(MAX)
  47. ,@newValue VARCHAR(MAX)
  48. ,@module VARCHAR(10)
  49. ,@tableAlias VARCHAR(100)
  50. ,@logIdentifier VARCHAR(50)
  51. ,@logParamMod VARCHAR(100)
  52. ,@logParamMain VARCHAR(100)
  53. ,@table VARCHAR(MAX)
  54. ,@select_field_list VARCHAR(MAX)
  55. ,@extra_field_list VARCHAR(MAX)
  56. ,@sql_filter VARCHAR(MAX)
  57. ,@id VARCHAR(10)
  58. ,@modType VARCHAR(6)
  59. ,@ApprovedFunctionId INT
  60. SELECT
  61. @ApprovedFunctionId = 20111030
  62. ,@logIdentifier = 'rmId'
  63. ,@logParamMain = 'rateMask'
  64. ,@logParamMod = 'rateMaskHistory'
  65. ,@module = '20'
  66. ,@tableAlias = 'Rate Mask Detail'
  67. IF @currency is null
  68. select @currency=currency from rateMask WITH(NOLOCK) where rmId=@rmID
  69. IF @flag = 'i'
  70. BEGIN
  71. IF EXISTS (
  72. SELECT 'X' FROM rateMask WITH(NOLOCK)
  73. WHERE rmId = @rmId AND ( createdBy <> @user AND approvedBy IS NULL)
  74. )
  75. BEGIN
  76. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @rmID
  77. RETURN
  78. END
  79. IF EXISTS (
  80. SELECT 'X' FROM rateMask WITH(NOLOCK)
  81. WHERE currency = @currency AND baseCurrency = @baseCurrency
  82. )
  83. BEGIN
  84. EXEC proc_errorHandler 1, 'Sorry this currency is already added.', @rmID
  85. RETURN
  86. END
  87. IF EXISTS (
  88. SELECT 'X' FROM rateMaskHistory WITH(NOLOCK)
  89. WHERE rmId = @rmID AND ( createdBy <> @user AND approvedBy IS NULL)
  90. )
  91. BEGIN
  92. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @rmID
  93. RETURN
  94. END
  95. BEGIN TRANSACTION
  96. INSERT INTO rateMask (
  97. baseCurrency,currency,rateMaskMulBd,rateMaskMulAd,rateMaskDivBd,rateMaskDivAd,cMin
  98. ,cMax,pMin,pMax,isActive,createdBy,createdDate
  99. )
  100. SELECT
  101. @baseCurrency,@currency,@rateMaskMulBd,@rateMaskMulAd,@rateMaskDivBd,@rateMaskDivAd,@cMin
  102. ,@cMax,@pMin,@pMax,'Y',@user,GETDATE()
  103. SET @rmID = SCOPE_IDENTITY()
  104. SET @modType = 'Insert'
  105. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID , @newValue OUTPUT
  106. INSERT INTO #msg(errorCode, msg, id)
  107. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rmID, @user, @oldValue, @newValue
  108. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  109. BEGIN
  110. IF @@TRANCOUNT > 0
  111. ROLLBACK TRANSACTION
  112. EXEC proc_errorHandler 1, 'Failed to add new record.', @rmID
  113. RETURN
  114. END
  115. IF @@TRANCOUNT > 0
  116. COMMIT TRANSACTION
  117. EXEC proc_errorHandler 0, 'Record has been added successfully.', @rmID
  118. END
  119. ELSE IF @flag = 'a'
  120. BEGIN
  121. IF EXISTS (
  122. SELECT 'X' FROM rateMaskHistory WITH(NOLOCK)
  123. WHERE rmId = @rmID AND createdBy = @user AND approvedBy IS NULL
  124. )
  125. BEGIN
  126. SELECT
  127. mode.*
  128. FROM rateMaskHistory mode WITH(NOLOCK)
  129. INNER JOIN rateMask main WITH(NOLOCK) ON mode.rmId = main.rmId
  130. WHERE mode.rmId= @rmID AND mode.approvedBy IS NULL
  131. END
  132. ELSE
  133. BEGIN
  134. SELECT * FROM rateMask WITH(NOLOCK) WHERE rmId = @rmID
  135. END
  136. END
  137. ELSE IF @flag = 'u'
  138. BEGIN
  139. BEGIN TRANSACTION
  140. UPDATE rateMask SET
  141. rateMaskMulBd = @rateMaskMulBd
  142. ,rateMaskMulAd = @rateMaskMulAd
  143. ,rateMaskDivBd = @rateMaskDivBd
  144. ,rateMaskDivAd = @rateMaskDivAd
  145. ,cMin = @cMin
  146. ,cMax = @cMax
  147. ,pMin = @pMin
  148. ,pMax = @pMax
  149. ,modifiedBy = @user
  150. ,modifiedDate = GETDATE()
  151. WHERE rmId = @rmID
  152. INSERT INTO rateMaskHistory(
  153. baseCurrency,currency,rateMaskMulBd,rateMaskMulAd,rateMaskDivBd,rateMaskDivAd
  154. ,cMin,cMax,pMin,pMax,createdBy,createdDate,approvedBy,approvedDate,modType
  155. )
  156. SELECT
  157. baseCurrency,currency,@rateMaskMulBd,@rateMaskMulAd,@rateMaskDivBd,@rateMaskDivAd
  158. ,@cMin,@cMax,@pMin,@pMax,@user,GETDATE(),@user,GETDATE(),'U'
  159. FROM rateMask WITH(NOLOCK) WHERE rmId = @rmID
  160. SET @modType = 'Update'
  161. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @newValue OUTPUT
  162. INSERT INTO #msg(errorCode, msg, id)
  163. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rmID, @user, @oldValue, @newValue
  164. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  165. BEGIN
  166. IF @@TRANCOUNT > 0
  167. ROLLBACK TRANSACTION
  168. EXEC proc_errorHandler 1, 'Failed to update record.', @rmID
  169. RETURN
  170. END
  171. IF @@TRANCOUNT > 0
  172. COMMIT TRANSACTION
  173. EXEC proc_errorHandler 0, 'Record updated successfully.', @rmID
  174. END
  175. ELSE IF @flag IN ('s', 'p')
  176. BEGIN
  177. IF @sortBy IS NULL
  178. SET @sortBy = 'currency'
  179. IF @sortOrder IS NULL
  180. SET @sortOrder = 'ASC'
  181. SET @table = '(
  182. SELECT
  183. rmID = main.rmId
  184. ,baseCurrency = main.baseCurrency
  185. ,currency = cM.currencyCode
  186. ,currencyName = cM.currencyName
  187. ,rateMaskMulBd = main.rateMaskMulBd
  188. ,rateMaskMulAd = main.rateMaskMulAd
  189. ,rateMaskDivBd = main.rateMaskDivBd
  190. ,rateMaskDivAd = main.rateMaskDivAd
  191. ,cMin = main.cMin
  192. ,cMax = main.cMax
  193. ,pMin = main.pMin
  194. ,pMax = main.pMax
  195. ,main.createdBy
  196. ,main.createdDate
  197. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  198. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  199. ,hasChanged = ''N''
  200. FROM rateMask main WITH(NOLOCK)
  201. INNER JOIN currencyMaster cM ON cM.currencyCode = main.currency
  202. WHERE 1 = 1
  203. ) x'
  204. SET @sql_filter = ''
  205. IF @currency IS NOT NULL
  206. SET @sql_filter = @sql_filter + ' AND currency = ''' + @currency + ''''
  207. SET @select_field_list ='
  208. rmID
  209. ,baseCurrency
  210. ,currency
  211. ,currencyName
  212. ,rateMaskMulBd
  213. ,rateMaskMulAd
  214. ,rateMaskDivBd
  215. ,rateMaskDivAd
  216. ,cMin
  217. ,cMax
  218. ,pMin
  219. ,pMax
  220. ,createdBy
  221. ,createdDate
  222. ,modifiedBy
  223. ,modifiedDate
  224. ,hasChanged
  225. '
  226. EXEC dbo.proc_paging
  227. @table
  228. ,@sql_filter
  229. ,@select_field_list
  230. ,@extra_field_list
  231. ,@sortBy
  232. ,@sortOrder
  233. ,@pageSize
  234. ,@pageNumber
  235. PRINT(@table)
  236. END
  237. ELSE IF @flag = 'reject'
  238. BEGIN
  239. IF NOT EXISTS (
  240. SELECT 'X' FROM rateMask WITH(NOLOCK)
  241. WHERE rmId = @rmID
  242. )
  243. AND
  244. NOT EXISTS (
  245. SELECT 'X' FROM rateMask WITH(NOLOCK)
  246. WHERE rmId = @rmID AND approvedBy IS NULL
  247. )
  248. BEGIN
  249. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rmID
  250. RETURN
  251. END
  252. IF EXISTS (SELECT 'X' FROM rateMask WHERE approvedBy IS NULL AND rmId = @rmID)
  253. BEGIN --New record
  254. BEGIN TRANSACTION
  255. SET @modType = 'Reject'
  256. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @oldValue OUTPUT
  257. INSERT INTO #msg(errorCode, msg, id)
  258. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rmId, @user, @oldValue, @newValue
  259. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  260. BEGIN
  261. IF @@TRANCOUNT > 0
  262. ROLLBACK TRANSACTION
  263. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rmID
  264. RETURN
  265. END
  266. DELETE FROM rateMask WHERE rmId = @rmID
  267. IF @@TRANCOUNT > 0
  268. COMMIT TRANSACTION
  269. END
  270. ELSE
  271. BEGIN
  272. BEGIN TRANSACTION
  273. SET @modType = 'Reject'
  274. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @oldValue OUTPUT
  275. INSERT INTO #msg(errorCode, msg, id)
  276. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rmId, @user, @oldValue, @newValue
  277. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  278. BEGIN
  279. IF @@TRANCOUNT > 0
  280. ROLLBACK TRANSACTION
  281. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rmID
  282. RETURN
  283. END
  284. DELETE FROM rateMaskHistory WHERE rmId = @rmID AND approvedBy IS NULL
  285. IF @@TRANCOUNT > 0
  286. COMMIT TRANSACTION
  287. END
  288. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @rmID
  289. END
  290. ELSE IF @flag = 'approve'
  291. BEGIN
  292. IF NOT EXISTS (
  293. SELECT 'X' FROM rateMask WITH(NOLOCK)
  294. WHERE rmId = @rmID
  295. )
  296. AND
  297. NOT EXISTS (
  298. SELECT 'X' FROM rateMask WITH(NOLOCK)
  299. WHERE rmId = @rmID AND approvedBy IS NULL
  300. )
  301. BEGIN
  302. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rmID
  303. RETURN
  304. END
  305. BEGIN TRANSACTION
  306. IF EXISTS (SELECT 'X' FROM rateMask WHERE approvedBy IS NULL AND rmId = @rmID )
  307. SET @modType = 'I'
  308. ELSE
  309. SELECT @modType = modType FROM rateMaskHistory WHERE rmId = @rmID AND approvedBy IS NULL
  310. IF @modType = 'I'
  311. BEGIN --New record
  312. UPDATE rateMask SET
  313. isActive = 'Y'
  314. ,approvedBy = @user
  315. ,approvedDate= GETDATE()
  316. WHERE rmId = @rmID
  317. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @newValue OUTPUT
  318. END
  319. ELSE IF @modType = 'U'
  320. BEGIN
  321. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @oldValue OUTPUT
  322. UPDATE main SET
  323. main.rateMaskMulBd = mode.rateMaskMulBd
  324. ,main.rateMaskMulAd = mode.rateMaskMulAd
  325. ,main.rateMaskDivBd = mode.rateMaskDivBd
  326. ,main.rateMaskDivAd = mode.rateMaskDivAd
  327. ,main.cMin = mode.cMin
  328. ,main.cMax = mode.cMax
  329. ,main.pMin = mode.pMin
  330. ,main.pMax = mode.pMax
  331. --,main.factor = mode.factor
  332. ,main.modifiedDate = GETDATE()
  333. ,main.modifiedBy = @user
  334. FROM rateMask main
  335. INNER JOIN rateMaskHistory mode ON mode.rmId = main.rmId
  336. WHERE mode.rmId = @rmID AND mode.approvedBy IS NULL
  337. EXEC [dbo].proc_GetColumnToRow 'rateMask', 'rmId', @rmID, @newValue OUTPUT
  338. DELETE FROM rateMaskHistory WHERE rmId = @rmID AND approvedBy IS NULL
  339. END
  340. --ELSE IF @modType = 'D'
  341. --BEGIN
  342. -- EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rmID, @oldValue OUTPUT
  343. -- UPDATE dscDetail SET
  344. -- isDeleted = 'Y'
  345. -- ,modifiedDate = GETDATE()
  346. -- ,modifiedBy = @user
  347. -- WHERE dscDetailId = @dscDetailId
  348. --END
  349. INSERT INTO #msg(errorCode, msg, id)
  350. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rmId, @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, 'Could not approve the changes.', @rmID
  356. RETURN
  357. END
  358. IF @@TRANCOUNT > 0
  359. COMMIT TRANSACTION
  360. EXEC proc_errorHandler 0, 'Changes approved successfully.', @rmID
  361. END
  362. END TRY
  363. BEGIN CATCH
  364. IF @@TRANCOUNT > 0
  365. ROLLBACK TRANSACTION
  366. DECLARE @errorMessage VARCHAR(MAX)
  367. SET @errorMessage = ERROR_MESSAGE()
  368. EXEC proc_errorHandler 1, @errorMessage, @rmID
  369. END CATCH
  370. GO