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

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_UPDATE_BASERATE] Script Date: 9/27/2019 1:30:13 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[EXCHANGE_PROC_UPDATE_BASERATE](
@LiveRate FLOAT = NULL
,@requestXml VARCHAR(MAX) = NULL
,@responseXml VARCHAR(MAX) = NULL
,@FromCurr VARCHAR(3) = NULL
,@ToCurr VARCHAR(3) = NULL
,@user VARCHAR(30) = NULL
)
AS
SET NOCOUNT ON;
BEGIN TRY
DECLARE @MSG VARCHAR(MAX)= '' , @Rate DECIMAL(16,4) = NULL
SET @Rate = CONVERT(DECIMAL(16,4),@LiveRate)
INSERT INTO tlbExrateApilogs(requestXml,responseXml,createdBy)
SELECT @requestXml,@responseXml,@user
IF @FromCurr = 'error'
BEGIN
EXEC proc_errorHandler 1,@responseXml, NULL
----## SEND SMS THROUGH KT NETWORK
INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01074518940'
UNION All
SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01030436864'
UNION All
SELECT 'globalmoney',0,'MEXXE',left(@responseXml,90),FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
RETURN
END
IF ISNULL(@LiveRate, 0) = 0
BEGIN
SET @MSG = 'Sorry 0 ex rate for base currency ' + @FromCurr + 'and Quote Currency ' + @ToCurr + ' can not be updated';
----## SEND SMS THROUGH KT NETWORK
INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','1^01074518940'
UNION All
SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','1^01030436864'
UNION All
SELECT 'globalmoney',0,'MEXXE',@MSG,FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
EXEC proc_errorHandler 1, @MSG, NULL
RETURN
END
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
DROP TABLE #Temp
IF OBJECT_ID('tempdb..#tempChange') IS NOT NULL
DROP TABLE #tempChange
SELECT * INTO #tempChange FROM (
SELECT buyChange = -19 ,sellChange = 19 ,FromCurr = 'USD' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -0.18 ,sellChange = 0.18 ,FromCurr = 'JPY' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -25 ,sellChange = 25 ,FromCurr = 'EUR' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -8.5 ,sellChange = 8.5 ,FromCurr = 'CNY' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -5 ,sellChange = 5 ,FromCurr = 'HKD' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -16 ,sellChange = 16 ,FromCurr = 'AUD' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -28 ,sellChange = 28 ,FromCurr = 'GBP' , ToCurr = 'KRW' UNION ALL
SELECT buyChange = -17 ,sellChange = 17 ,FromCurr = 'CAD' , ToCurr = 'KRW'
)x
DECLARE @buyChange MONEY, @sellChange MONEY, @minRate MONEY, @maxRate MONEY
SELECT @minRate = rateMin,@maxRate = rateMax
FROM dbo.currencyMaster(NOLOCK)
WHERE currencyCode = @FromCurr
SELECT * INTO #Temp
FROM EXCHANGE_CURRENCYRATE_SETUP(NOLOCK)
WHERE baseCurrency = @FromCurr AND QuoteCurrency=@ToCurr
SELECT @buyChange = buyChange,@sellChange = sellChange
FROM #tempChange
WHERE FromCurr = @FromCurr AND ToCurr = @ToCurr
UPDATE #Temp SET
revRate = @Rate
,buyRate = @Rate + @buyChange
,saleRate = @Rate + @sellChange
WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
DECLARE @outOfTolerated BIGINT = 0
SELECT @outOfTolerated = COUNT('x') FROM #Temp
WHERE
revRate < @minRate OR revRate > @maxRate OR
buyRate < @minRate OR buyRate > @maxRate OR
saleRate <@minRate OR saleRate > @maxRate
AND baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
IF @outOfTolerated > 0
BEGIN
----## SEND SMS THROUGH KT NETWORK
INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( [USER_ID], SCHEDULE_TYPE, [SUBJECT], SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01074518940'
UNION All
SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01030436864'
UNION All
SELECT 'globalmoney',0,'MEXXE',@FromCurr +'currency out of tolerance.',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864','gme^01021958106'
--No do update from temp Table to main
--PRINT @FromCurr +'-'+ @ToCurr +'beyond min rate and max rate'
SELECT '1' ErrorCode, @FromCurr +'-'+ @ToCurr +'beyond min rate and max rate' Msg, NULL Id
RETURN
END
BEGIN TRAN
INSERT INTO dbo.EXCHANGE_CURRENCYRATE_SETUP_HISTORY(
currencyRateId,baseCurrency,quoteCurrency,fixedCurUnit,revRate,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,active,createdBy,createdDate,modifiedBy,modifiedDate,buyLimit,sellLimit
)SELECT
currencyRateId,baseCurrency,quoteCurrency,fixedCurUnit,revRate,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,active,createdBy,createdDate,modifiedBy,modifiedDate,buyLimit,sellLimit
FROM EXCHANGE_CURRENCYRATE_SETUP(NOLOCK)
WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
INSERT INTO EXCHANGE_COSTRATE_SETUP_HISTORY(
exCostRateId,baseCurrency,quoteCurrency,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,agentId,createdBy,createdDate,modifiedBy,modifiedDate
)SELECT
rowId,baseCurrency,quoteCurrency,buyRate,buyTolerancePlus,buyToleranceMinus,saleRate,saleTolerancePlus,saleToleranceMinus,agentId,createdBy,createdDate,modifiedBy,modifiedDate
FROM EXCHANGE_COSTRATE_SETUP(NOLOCK)
WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
UPDATE EXCHANGE_CURRENCYRATE_SETUP SET
revRate = ROUND(@Rate,2)
,buyRate = ROUND(@Rate + @buyChange,2)
,saleRate = ROUND(@Rate + @sellChange,2)
,modifiedBy = 'system'
,modifiedDate = GETDATE()
WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
UPDATE EXCHANGE_COSTRATE_SETUP SET
buyRate = ROUND(@Rate + @buyChange,2)
,saleRate = ROUND(@Rate + @sellChange,2)
,modifiedBy = 'system'
,modifiedDate = GETDATE()
WHERE baseCurrency = @FromCurr AND QuoteCurrency = @ToCurr
COMMIT TRAN
SELECT '0' ErrorCode, 'Successfully rate updated' Msg, NULL Id
RETURN
END TRY
BEGIN CATCH
IF @@TRANCOUNT>0
ROLLBACK TRAN
SELECT '1' ErrorCode, 'Exception occured.' Msg, NULL Id
RETURN
END CATCH
GO