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.

170 lines
14 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_UPDATE_BASERATE] Script Date: 9/27/2019 1:30:13 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE PROCEDURE [dbo].[EXCHANGE_PROC_UPDATE_BASERATE](
  9. @LiveRate FLOAT = NULL
  10. ,@requestXml VARCHAR(MAX) = NULL
  11. ,@responseXml VARCHAR(MAX) = NULL
  12. ,@FromCurr VARCHAR(3) = NULL
  13. ,@ToCurr VARCHAR(3) = NULL
  14. ,@user VARCHAR(30) = NULL
  15. )
  16. AS
  17. SET NOCOUNT ON;
  18. BEGIN TRY
  19. DECLARE @MSG VARCHAR(MAX)= '' , @Rate DECIMAL(16,4) = NULL
  20. SET @Rate = CONVERT(DECIMAL(16,4),@LiveRate)
  21. INSERT INTO tlbExrateApilogs(requestXml,responseXml,createdBy)
  22. SELECT @requestXml,@responseXml,@user
  23. IF @FromCurr = 'error'
  24. BEGIN
  25. EXEC proc_errorHandler 1,@responseXml, NULL
  26. ----## SEND SMS THROUGH KT NETWORK
  27. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  28. SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01074518940'
  29. UNION All
  30. SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01030436864'
  31. UNION All
  32. SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
  33. RETURN
  34. END
  35. IF ISNULL(@LiveRate, 0) = 0
  36. BEGIN
  37. SET @MSG = 'Sorry 0 ex rate for base currency ' + @FromCurr + 'and Quote Currency ' + @ToCurr + ' can not be updated';
  38. ----## SEND SMS THROUGH KT NETWORK
  39. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  40. SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','1^01074518940'
  41. UNION All
  42. SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','1^01030436864'
  43. UNION All
  44. SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
  45. EXEC proc_errorHandler 1, @MSG, NULL
  46. RETURN
  47. END
  48. IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
  49. DROP TABLE #Temp
  50. IF OBJECT_ID('tempdb..#tempChange') IS NOT NULL
  51. DROP TABLE #tempChange
  52. SELECT * INTO #tempChange FROM (
  53. SELECT buyChange = -19 ,sellChange = 19 ,FromCurr = 'USD' , ToCurr = 'KRW' UNION ALL
  54. SELECT buyChange = -0.18 ,sellChange = 0.18 ,FromCurr = 'JPY' , ToCurr = 'KRW' UNION ALL
  55. SELECT buyChange = -25 ,sellChange = 25 ,FromCurr = 'EUR' , ToCurr = 'KRW' UNION ALL
  56. SELECT buyChange = -8.5 ,sellChange = 8.5 ,FromCurr = 'CNY' , ToCurr = 'KRW' UNION ALL
  57. SELECT buyChange = -5 ,sellChange = 5 ,FromCurr = 'HKD' , ToCurr = 'KRW' UNION ALL
  58. SELECT buyChange = -16 ,sellChange = 16 ,FromCurr = 'AUD' , ToCurr = 'KRW' UNION ALL
  59. SELECT buyChange = -28 ,sellChange = 28 ,FromCurr = 'GBP' , ToCurr = 'KRW' UNION ALL
  60. SELECT buyChange = -17 ,sellChange = 17 ,FromCurr = 'CAD' , ToCurr = 'KRW'
  61. )x
  62. DECLARE @buyChange MONEY, @sellChange MONEY, @minRate MONEY, @maxRate MONEY
  63. SELECT @minRate = rateMin,@maxRate = rateMax
  64. FROM dbo.currencyMaster(NOLOCK)
  65. WHERE currencyCode = @FromCurr
  66. SELECT * INTO #Temp
  67. FROM EXCHANGE_CURRENCYRATE_SETUP(NOLOCK)
  68. WHERE baseCurrency = @FromCurr AND QuoteCurrency=@ToCurr
  69. SELECT @buyChange = buyChange,@sellChange = sellChange
  70. FROM #tempChange
  71. WHERE FromCurr = @FromCurr AND ToCurr = @ToCurr
  72. UPDATE #Temp SET
  73. revRate = @Rate
  74. ,buyRate = @Rate + @buyChange
  75. ,saleRate = @Rate + @sellChange
  76. WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  77. DECLARE @outOfTolerated BIGINT = 0
  78. SELECT @outOfTolerated = COUNT('x') FROM #Temp
  79. WHERE
  80. revRate < @minRate OR revRate > @maxRate OR
  81. buyRate < @minRate OR buyRate > @maxRate OR
  82. saleRate <@minRate OR saleRate > @maxRate
  83. AND baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  84. IF @outOfTolerated > 0
  85. BEGIN
  86. ----## SEND SMS THROUGH KT NETWORK
  87. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  88. SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01074518940'
  89. UNION All
  90. SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01030436864'
  91. UNION All
  92. SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
  93. --No do update from temp Table to main
  94. --PRINT @FromCurr +'-'+ @ToCurr +'beyond min rate and max rate'
  95. SELECT '1' ErrorCode, @FromCurr +'-'+ @ToCurr +'beyond min rate and max rate' Msg, NULL Id
  96. RETURN
  97. END
  98. BEGIN TRAN
  99. INSERT INTO dbo.EXCHANGE_CURRENCYRATE_SETUP_HISTORY(
  100. currencyRateId,baseCurrency,quoteCurrency,fixedCurUnit,revRate,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,active,createdBy,createdDate,modifiedBy,modifiedDate,buyLimit,sellLimit
  101. )SELECT
  102. currencyRateId,baseCurrency,quoteCurrency,fixedCurUnit,revRate,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,active,createdBy,createdDate,modifiedBy,modifiedDate,buyLimit,sellLimit
  103. FROM EXCHANGE_CURRENCYRATE_SETUP(NOLOCK)
  104. WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  105. INSERT INTO EXCHANGE_COSTRATE_SETUP_HISTORY(
  106. exCostRateId,baseCurrency,quoteCurrency,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,agentId,createdBy,createdDate,modifiedBy,modifiedDate
  107. )SELECT
  108. rowId,baseCurrency,quoteCurrency,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,agentId,createdBy,createdDate,modifiedBy,modifiedDate
  109. FROM EXCHANGE_COSTRATE_SETUP(NOLOCK)
  110. WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  111. UPDATE EXCHANGE_CURRENCYRATE_SETUP SET
  112. revRate = ROUND(@Rate,2)
  113. ,buyRate = ROUND(@Rate + @buyChange,2)
  114. ,saleRate = ROUND(@Rate + @sellChange,2)
  115. ,modifiedBy = 'system'
  116. ,modifiedDate = GETDATE()
  117. WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  118. UPDATE EXCHANGE_COSTRATE_SETUP SET
  119. buyRate = ROUND(@Rate + @buyChange,2)
  120. ,saleRate = ROUND(@Rate + @sellChange,2)
  121. ,modifiedBy = 'system'
  122. ,modifiedDate = GETDATE()
  123. WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
  124. COMMIT TRAN
  125. SELECT '0' ErrorCode, 'Successfully rate updated' Msg, NULL Id
  126. RETURN
  127. END TRY
  128. BEGIN CATCH
  129. IF @@TRANCOUNT>0
  130. ROLLBACK TRAN
  131. SELECT '1' ErrorCode, 'Exception occured.' Msg, NULL Id
  132. RETURN
  133. END CATCH
  134. GO