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.

306 lines
12 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP] 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].[EXCHANGE_PROC_CURRENCYRATE_SETUP]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(30) = NULL
  14. ,@currencyRateId VARCHAR(30) = NULL
  15. ,@baseCurrency CHAR(3) = NULL
  16. ,@quoteCurrency CHAR(3) = NULL
  17. ,@fixedCurUnit MONEY = NULL
  18. ,@revRate FLOAT = NULL
  19. ,@buyRate FLOAT = NULL
  20. ,@buyTolerancePlus FLOAT = NULL
  21. ,@buyToleranceMinus FLOAT = NULL
  22. ,@saleRate FLOAT = NULL
  23. ,@saleTolerancePlus FLOAT = NULL
  24. ,@saleToleranceMinus FLOAT = NULL
  25. ,@active CHAR(1) = NULL
  26. ,@agentId VARCHAR(30) = NULL
  27. ,@sortBy VARCHAR(50) = NULL
  28. ,@sortOrder VARCHAR(5) = NULL
  29. ,@pageSize INT = NULL
  30. ,@pageNumber INT = NULL
  31. AS
  32. SET NOCOUNT ON
  33. SET XACT_ABORT ON
  34. BEGIN TRY
  35. IF @flag = 'i'
  36. BEGIN
  37. IF EXISTS(select 'A' from currencyMaster (NOLOCK) where (isnull(rateMin,0) =0 or isnull(rateMax,0)=0 )AND currencyCode = @baseCurrency)
  38. BEGIN
  39. SELECT '1' errorCode,'MIN and MAX rate not defined for currency :' + @quoteCurrency MSG ,null id
  40. RETURN
  41. END
  42. IF @buyToleranceMinus IS NULL
  43. SET @buyToleranceMinus = 0
  44. IF @buyTolerancePlus IS NULL
  45. SET @buyTolerancePlus = 0
  46. IF @saleToleranceMinus IS NULL
  47. SET @saleToleranceMinus = 0
  48. IF @saleTolerancePlus IS NULL
  49. SET @saleTolerancePlus = 0
  50. IF EXISTS(SELECT 'A' FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId AND baseCurrency=@baseCurrency)
  51. BEGIN
  52. IF NOT EXISTS(
  53. SELECT 'A' FROM currencyMaster C WITH(NOLOCK)
  54. INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
  55. WHERE E.currencyrateId = @currencyRateId
  56. AND (@buyRate + ISNULL(@buyTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
  57. AND (@buyRate - ISNULL(@buyToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
  58. AND (@saleRate + ISNULL(@saleTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
  59. AND (@saleRate - ISNULL(@saleToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
  60. AND @revRate BETWEEN C.rateMin AND C.rateMax
  61. )
  62. BEGIN
  63. SELECT TOP 1 '1' errorCode,'MIN, MAX and Base rate must be lies between : '+CAST(C.rateMin AS VARCHAR)+' and '+CAST(C.rateMax AS VARCHAR)+' with Tolerance' MSG ,null id
  64. FROM dbo.currencyMaster C WITH(NOLOCK)
  65. INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
  66. WHERE E.currencyrateId = @currencyRateId
  67. RETURN;
  68. END
  69. BEGIN TRANSACTION
  70. INSERT INTO EXCHANGE_CURRENCYRATE_SETUP_HISTORY(currencyRateId,baseCurrency,quoteCurrency,FixedCurUnit,RevRate,BuyRate,Buytoleranceplus,Buytoleranceminus,
  71. SaleRate,Saletoleranceplus,Saletoleranceminus,Active,CreatedBy,CreatedDate,ModifiedBy,ModifiedDate,buyLimit,sellLimit)
  72. SELECT currencyRateId,baseCurrency,quoteCurrency,FixedCurUnit,RevRate,BuyRate,Buytoleranceplus,Buytoleranceminus,
  73. SaleRate,Saletoleranceplus,Saletoleranceminus,Active,CreatedBy,CreatedDate,@user,GETDATE(),buyLimit,sellLimit
  74. FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId
  75. UPDATE EXCHANGE_CURRENCYRATE_SETUP SET
  76. baseCurrency = @baseCurrency
  77. ,quoteCurrency = @quoteCurrency
  78. ,FixedCurUnit = @FixedCurUnit
  79. ,RevRate = @revRate
  80. ,BuyRate = @BuyRate
  81. ,Buytoleranceplus = @buyTolerancePlus
  82. ,Buytoleranceminus = @buyToleranceMinus
  83. ,SaleRate = @SaleRate
  84. ,Saletoleranceplus = @saleTolerancePlus
  85. ,Saletoleranceminus = @saleToleranceMinus
  86. ,active = @active
  87. ,modifiedBy = @user
  88. ,modifiedDate = GETDATE()
  89. --WHERE CurFixed = @curFixed AND CurVariable=@curVariable and RateCode = @rateCode
  90. WHERE currencyRateId = @currencyRateId
  91. -- update buy rate/ sale rate --
  92. UPDATE EXCHANGE_COSTRATE_SETUP
  93. SET buyRate=@buyRate
  94. ,saleRate=@saleRate
  95. WHERE baseCurrency=@baseCurrency
  96. SET @currencyRateId = SCOPE_IDENTITY()
  97. IF @@TRANCOUNT > 0
  98. COMMIT TRANSACTION
  99. Exec JobHistoryRecord 'u','ExRate updated',@baseCurrency,@quoteCurrency ,'',@currencyRateId,@user
  100. SELECT 0 errorCode,'Rate updated successfully' MSG,null id
  101. RETURN;
  102. END
  103. ELSE
  104. BEGIN
  105. IF EXISTS(select 'A' from EXCHANGE_CURRENCYRATE_SETUP (NOLOCK) WHERE baseCurrency=@baseCurrency AND quoteCurrency = @quoteCurrency)
  106. BEGIN
  107. SELECT '1' errorCode,'Rate already defined for currency :' + @quoteCurrency +' and ' + @baseCurrency MSG ,null id
  108. RETURN
  109. END
  110. IF NOT EXISTS(
  111. SELECT 'A' FROM currencyMaster C WITH(NOLOCK)
  112. WHERE C.currencyCode = @baseCurrency
  113. AND (@buyRate + ISNULL(@buyTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
  114. AND (@buyRate - ISNULL(@buyToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
  115. AND (@saleRate + ISNULL(@saleTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
  116. AND (@saleRate - ISNULL(@saleToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
  117. AND @revRate BETWEEN C.rateMin AND C.rateMax
  118. )
  119. BEGIN
  120. SELECT TOP 1 '1' CODE,'MIN,MAX and Base rate must be lies between : '+CAST(C.rateMin AS VARCHAR)+' and '+CAST(C.rateMax AS VARCHAR)+' with Tolerance' MSG ,null id
  121. FROM currencyMaster C WITH(NOLOCK)
  122. WHERE C.currencyCode = @baseCurrency
  123. RETURN;
  124. END
  125. BEGIN TRANSACTION
  126. INSERT INTO EXCHANGE_CURRENCYRATE_SETUP (
  127. baseCurrency
  128. ,quoteCurrency
  129. ,FixedCurUnit
  130. ,RevRate
  131. ,BuyRate
  132. ,Buytoleranceplus
  133. ,Buytoleranceminus
  134. ,SaleRate
  135. ,Saletoleranceplus
  136. ,Saletoleranceminus
  137. ,active
  138. ,createdBy
  139. ,createdDate
  140. )
  141. SELECT
  142. @baseCurrency
  143. ,@quoteCurrency
  144. ,@FixedCurUnit
  145. ,@revRate
  146. ,@BuyRate
  147. ,@buyTolerancePlus
  148. ,@buyToleranceMinus
  149. ,@SaleRate
  150. ,@saleTolerancePlus
  151. ,@saleToleranceMinus
  152. ,@active
  153. ,@user
  154. ,GETDATE()
  155. SET @currencyRateId = SCOPE_IDENTITY()
  156. INSERT INTO EXCHANGE_CURRENCYRATE_SETUP_HISTORY(currencyRateId,baseCurrency,quoteCurrency,FixedCurUnit,RevRate,BuyRate,Buytoleranceplus,Buytoleranceminus,
  157. SaleRate,Saletoleranceplus,Saletoleranceminus,Active,CreatedBy,CreatedDate,ModifiedBy,ModifiedDate,buyLimit,sellLimit)
  158. SELECT currencyRateId,baseCurrency,quoteCurrency,FixedCurUnit,RevRate,BuyRate,Buytoleranceplus,Buytoleranceminus,
  159. SaleRate,Saletoleranceplus,Saletoleranceminus,Active,CreatedBy,CreatedDate,@user,GETDATE(),buyLimit,sellLimit
  160. FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId
  161. /*assign branch currency and generate voucher*/
  162. DECLARE @totalRows INT, @Temp_Id INT,@agentName VARCHAR(500)
  163. CREATE TABLE #tempagentId (Temp_Id INT IDENTITY,agentid BIGINT,agentName VARCHAR(200))
  164. INSERT INTO #tempagentId(agentid,agentName) SELECT agentId ,agentName FROM dbo.agentMaster (NOLOCK)
  165. WHERE parentid='1008' AND agentGrp=11023 AND isActive='Y'
  166. SELECT @Temp_Id=max(temp_Id) from #tempagentId
  167. SET @totalRows=1
  168. WHILE @Temp_Id >= @totalRows
  169. BEGIN
  170. SELECT @agentId=agentid ,@agentName = agentName FROM #tempagentId WHERE Temp_Id=@totalRows
  171. INSERT INTO dbo.EXCHANGE_COSTRATE_SETUP
  172. (
  173. baseCurrency, quoteCurrency, buyRate, buyTolerancePlus, buyToleranceMinus,
  174. saleRate,saleTolerancePlus,saleToleranceMinus,agentId,modifiedBy,modifiedDate
  175. )
  176. SELECT cc.baseCurrency, cc.quoteCurrency, cc.buyRate, cc.buyTolerancePlus, cc.buyToleranceMinus,
  177. cc.saleRate,cc.saleTolerancePlus,cc.saleToleranceMinus,@agentId,@user,GETDATE()
  178. FROM EXCHANGE_CURRENCYRATE_SETUP cc
  179. LEFT JOIN EXCHANGE_COSTRATE_SETUP c ON cc.baseCurrency=c.baseCurrency AND c.agentId=@agentId
  180. WHERE c.baseCurrency IS NULL AND ISNULL(cc.active,'N')='Y'
  181. --IF NOT EXISTS(SELECT 'X' FROM FastMoneyPro_Account.dbo.GL_Group (NOLOCK) WHERE p_id='22' AND gl_Name=@agentName )
  182. --BEGIN
  183. -- EXEC FastMoneyPro_Account.dbo.procFindGLTreeShape @p_id='22',@gl_name = @agentName,@bal_grp='',@accountPrifix=''
  184. --END
  185. /*Account no */
  186. EXEC FastMoneyPro_Account.dbo.EXCHANGE_PROC_BRANCHCURR_ASSIGN @BRANCH_ID=@agentId,@user=@user
  187. SET @totalRows=@totalRows+1
  188. END
  189. IF @@TRANCOUNT > 0
  190. COMMIT TRANSACTION
  191. Exec JobHistoryRecord 'i','ExRate ADDED',@baseCurrency,@quoteCurrency ,'',@currencyRateId,@user
  192. SELECT 0 CODE,'Rate added successfully' MSG,null id
  193. RETURN;
  194. END
  195. END
  196. ELSE IF @flag = 'a'
  197. BEGIN
  198. --SELECT @baseCurrency = baseCurrency FROM EXCHANGE_CURRENCYRATE_SETUP with(nolock) WHERE currencyRateId = @currencyRateId
  199. --SELECT @revRate = CASE WHEN SUM(ISNULL(USD_AMT,0)) = 0 THEN CAST(0 AS FLOAT) ELSE CAST(SUM (ISNULL(CLR_BAL_AMT,0)) AS FLOAT) / CAST(SUM (ISNULL(USD_AMT,0)) AS FLOAT) END
  200. --FROM FastMoneyPro_Account.dbo.AC_MASTER A WITH (NOLOCK)
  201. --INNER JOIN AgentMaster B WITH (NOLOCK) ON A.BRANCH_ID=B.agentId
  202. --AND A.AC_CURRENCY = @baseCurrency --AND B.CASHID = @rateCode
  203. --SELECT *,CAST(@revRate AS DECIMAL(10,6)) avgRate FROM EXCHANGE_CURRENCYRATE_SETUP with(nolock) WHERE currencyRateId = @currencyRateId
  204. SELECT *,ISNULL(c.rateMin,0) AS minRate,ISNULL(c.rateMax,0) AS maxrate FROM dbo.currencyMaster C WITH(NOLOCK)
  205. INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
  206. WHERE e.currencyRateId = @currencyRateId
  207. RETURN
  208. END
  209. ELSE IF @FLAG = 'RateEdit'-->> TODAYS RATE FOR RATE MAINTENANCE
  210. BEGIN
  211. DECLARE @table VARCHAR(MAX),@sql_filter VARCHAR(100),@select_field_list VARCHAR(MAX),@extra_field_list VARCHAR(10)
  212. --IF @sortBy IS NULL
  213. SET @sortBy = 'currencyRateId'
  214. IF @sortOrder IS NULL
  215. SET @sortOrder = 'ASC'
  216. SET @table = '(SELECT E.currencyRateId,E.baseCurrency,E.quoteCurrency,E.FixedCurUnit,E.RevRate
  217. ,E.BuyRate,E.SaleRate,CAST(ISNULL(SaleRate,0)-ISNULL(BuyRate,0) AS Decimal(20,6)) as MARGIN,active
  218. ,ISNULL(e.ModifiedDate,E.CREATEDDATE) [moddate],ISNULL(e.ModifiedBy,E.CreatedBy) ModifiedBy
  219. FROM EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK)
  220. INNER JOIN dbo.currencyMaster (NOLOCK) cm ON cm.currencyCode=e.baseCurrency
  221. where 1=1 and E.Active=''Y''
  222. ) x'
  223. print @table
  224. SET @sql_filter = ''
  225. IF @baseCurrency IS NOT NULL
  226. SET @sql_filter = @sql_filter + ' AND CurFixed = '''+@baseCurrency+''''
  227. SET @select_field_list ='
  228. currencyRateId
  229. ,baseCurrency
  230. ,quoteCurrency
  231. ,FixedCurUnit
  232. ,RevRate
  233. ,BuyRate
  234. ,SaleRate
  235. ,MARGIN
  236. ,moddate
  237. ,ModifiedBy'
  238. EXEC dbo.proc_paging
  239. @table
  240. ,@sql_filter
  241. ,@select_field_list
  242. ,@extra_field_list
  243. ,@sortBy
  244. ,@sortOrder
  245. ,@pageSize
  246. ,@pageNumber
  247. END
  248. ELSE IF @flag = 'minmax'
  249. BEGIN
  250. SELECT ISNULL(c.rateMin,0) AS rateMin,ISNULL(c.rateMax,0) AS rateMax
  251. FROM dbo.currencyMaster C WITH(NOLOCK)
  252. WHERE c.currencyCode=@baseCurrency
  253. RETURN
  254. END
  255. END TRY
  256. BEGIN CATCH
  257. IF @@TRANCOUNT > 0
  258. ROLLBACK TRANSACTION
  259. SELECT 1 CODE, ERROR_MESSAGE() MSG
  260. END CATCH
  261. GO