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
306 lines
12 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE PROC [dbo].[EXCHANGE_PROC_CURRENCYRATE_SETUP]
|
|
@flag VARCHAR(50) = NULL
|
|
,@user VARCHAR(30) = NULL
|
|
,@currencyRateId VARCHAR(30) = NULL
|
|
,@baseCurrency CHAR(3) = NULL
|
|
,@quoteCurrency CHAR(3) = NULL
|
|
,@fixedCurUnit MONEY = NULL
|
|
,@revRate FLOAT = NULL
|
|
,@buyRate FLOAT = NULL
|
|
,@buyTolerancePlus FLOAT = NULL
|
|
,@buyToleranceMinus FLOAT = NULL
|
|
,@saleRate FLOAT = NULL
|
|
,@saleTolerancePlus FLOAT = NULL
|
|
,@saleToleranceMinus FLOAT = NULL
|
|
,@active CHAR(1) = NULL
|
|
,@agentId VARCHAR(30) = NULL
|
|
,@sortBy VARCHAR(50) = NULL
|
|
,@sortOrder VARCHAR(5) = NULL
|
|
,@pageSize INT = NULL
|
|
,@pageNumber INT = NULL
|
|
|
|
|
|
AS
|
|
SET NOCOUNT ON
|
|
SET XACT_ABORT ON
|
|
BEGIN TRY
|
|
|
|
IF @flag = 'i'
|
|
BEGIN
|
|
|
|
IF EXISTS(select 'A' from currencyMaster (NOLOCK) where (isnull(rateMin,0) =0 or isnull(rateMax,0)=0 )AND currencyCode = @baseCurrency)
|
|
BEGIN
|
|
SELECT '1' errorCode,'MIN and MAX rate not defined for currency :' + @quoteCurrency MSG ,null id
|
|
RETURN
|
|
END
|
|
|
|
IF @buyToleranceMinus IS NULL
|
|
SET @buyToleranceMinus = 0
|
|
IF @buyTolerancePlus IS NULL
|
|
SET @buyTolerancePlus = 0
|
|
|
|
IF @saleToleranceMinus IS NULL
|
|
SET @saleToleranceMinus = 0
|
|
IF @saleTolerancePlus IS NULL
|
|
SET @saleTolerancePlus = 0
|
|
|
|
|
|
IF EXISTS(SELECT 'A' FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId AND baseCurrency=@baseCurrency)
|
|
BEGIN
|
|
IF NOT EXISTS(
|
|
SELECT 'A' FROM currencyMaster C WITH(NOLOCK)
|
|
INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
|
|
WHERE E.currencyrateId = @currencyRateId
|
|
AND (@buyRate + ISNULL(@buyTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@buyRate - ISNULL(@buyToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@saleRate + ISNULL(@saleTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@saleRate - ISNULL(@saleToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND @revRate BETWEEN C.rateMin AND C.rateMax
|
|
)
|
|
BEGIN
|
|
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
|
|
FROM dbo.currencyMaster C WITH(NOLOCK)
|
|
INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
|
|
WHERE E.currencyrateId = @currencyRateId
|
|
RETURN;
|
|
END
|
|
|
|
|
|
BEGIN TRANSACTION
|
|
INSERT INTO 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,@user,GETDATE(),buyLimit,sellLimit
|
|
FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId
|
|
|
|
UPDATE EXCHANGE_CURRENCYRATE_SETUP SET
|
|
|
|
baseCurrency = @baseCurrency
|
|
,quoteCurrency = @quoteCurrency
|
|
,FixedCurUnit = @FixedCurUnit
|
|
,RevRate = @revRate
|
|
,BuyRate = @BuyRate
|
|
,Buytoleranceplus = @buyTolerancePlus
|
|
,Buytoleranceminus = @buyToleranceMinus
|
|
,SaleRate = @SaleRate
|
|
,Saletoleranceplus = @saleTolerancePlus
|
|
,Saletoleranceminus = @saleToleranceMinus
|
|
,active = @active
|
|
,modifiedBy = @user
|
|
,modifiedDate = GETDATE()
|
|
--WHERE CurFixed = @curFixed AND CurVariable=@curVariable and RateCode = @rateCode
|
|
WHERE currencyRateId = @currencyRateId
|
|
|
|
-- update buy rate/ sale rate --
|
|
UPDATE EXCHANGE_COSTRATE_SETUP
|
|
SET buyRate=@buyRate
|
|
,saleRate=@saleRate
|
|
WHERE baseCurrency=@baseCurrency
|
|
|
|
SET @currencyRateId = SCOPE_IDENTITY()
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
Exec JobHistoryRecord 'u','ExRate updated',@baseCurrency,@quoteCurrency ,'',@currencyRateId,@user
|
|
SELECT 0 errorCode,'Rate updated successfully' MSG,null id
|
|
RETURN;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF EXISTS(select 'A' from EXCHANGE_CURRENCYRATE_SETUP (NOLOCK) WHERE baseCurrency=@baseCurrency AND quoteCurrency = @quoteCurrency)
|
|
BEGIN
|
|
SELECT '1' errorCode,'Rate already defined for currency :' + @quoteCurrency +' and ' + @baseCurrency MSG ,null id
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(
|
|
SELECT 'A' FROM currencyMaster C WITH(NOLOCK)
|
|
WHERE C.currencyCode = @baseCurrency
|
|
AND (@buyRate + ISNULL(@buyTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@buyRate - ISNULL(@buyToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@saleRate + ISNULL(@saleTolerancePlus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND (@saleRate - ISNULL(@saleToleranceMinus,0)) BETWEEN C.rateMin AND C.rateMax
|
|
AND @revRate BETWEEN C.rateMin AND C.rateMax
|
|
)
|
|
BEGIN
|
|
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
|
|
FROM currencyMaster C WITH(NOLOCK)
|
|
WHERE C.currencyCode = @baseCurrency
|
|
RETURN;
|
|
END
|
|
|
|
BEGIN TRANSACTION
|
|
INSERT INTO EXCHANGE_CURRENCYRATE_SETUP (
|
|
baseCurrency
|
|
,quoteCurrency
|
|
,FixedCurUnit
|
|
,RevRate
|
|
,BuyRate
|
|
,Buytoleranceplus
|
|
,Buytoleranceminus
|
|
,SaleRate
|
|
,Saletoleranceplus
|
|
,Saletoleranceminus
|
|
,active
|
|
,createdBy
|
|
,createdDate
|
|
)
|
|
SELECT
|
|
@baseCurrency
|
|
,@quoteCurrency
|
|
,@FixedCurUnit
|
|
,@revRate
|
|
,@BuyRate
|
|
,@buyTolerancePlus
|
|
,@buyToleranceMinus
|
|
,@SaleRate
|
|
,@saleTolerancePlus
|
|
,@saleToleranceMinus
|
|
,@active
|
|
,@user
|
|
,GETDATE()
|
|
SET @currencyRateId = SCOPE_IDENTITY()
|
|
|
|
INSERT INTO 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,@user,GETDATE(),buyLimit,sellLimit
|
|
FROM EXCHANGE_CURRENCYRATE_SETUP WHERE currencyRateId = @currencyRateId
|
|
|
|
/*assign branch currency and generate voucher*/
|
|
|
|
|
|
DECLARE @totalRows INT, @Temp_Id INT,@agentName VARCHAR(500)
|
|
|
|
CREATE TABLE #tempagentId (Temp_Id INT IDENTITY,agentid BIGINT,agentName VARCHAR(200))
|
|
|
|
INSERT INTO #tempagentId(agentid,agentName) SELECT agentId ,agentName FROM dbo.agentMaster (NOLOCK)
|
|
WHERE parentid='1008' AND agentGrp=11023 AND isActive='Y'
|
|
|
|
SELECT @Temp_Id=max(temp_Id) from #tempagentId
|
|
SET @totalRows=1
|
|
WHILE @Temp_Id >= @totalRows
|
|
BEGIN
|
|
SELECT @agentId=agentid ,@agentName = agentName FROM #tempagentId WHERE Temp_Id=@totalRows
|
|
INSERT INTO dbo.EXCHANGE_COSTRATE_SETUP
|
|
(
|
|
baseCurrency, quoteCurrency, buyRate, buyTolerancePlus, buyToleranceMinus,
|
|
saleRate,saleTolerancePlus,saleToleranceMinus,agentId,modifiedBy,modifiedDate
|
|
)
|
|
SELECT cc.baseCurrency, cc.quoteCurrency, cc.buyRate, cc.buyTolerancePlus, cc.buyToleranceMinus,
|
|
cc.saleRate,cc.saleTolerancePlus,cc.saleToleranceMinus,@agentId,@user,GETDATE()
|
|
FROM EXCHANGE_CURRENCYRATE_SETUP cc
|
|
LEFT JOIN EXCHANGE_COSTRATE_SETUP c ON cc.baseCurrency=c.baseCurrency AND c.agentId=@agentId
|
|
WHERE c.baseCurrency IS NULL AND ISNULL(cc.active,'N')='Y'
|
|
|
|
|
|
--IF NOT EXISTS(SELECT 'X' FROM FastMoneyPro_Account.dbo.GL_Group (NOLOCK) WHERE p_id='22' AND gl_Name=@agentName )
|
|
--BEGIN
|
|
-- EXEC FastMoneyPro_Account.dbo.procFindGLTreeShape @p_id='22',@gl_name = @agentName,@bal_grp='',@accountPrifix=''
|
|
--END
|
|
/*Account no */
|
|
EXEC FastMoneyPro_Account.dbo.EXCHANGE_PROC_BRANCHCURR_ASSIGN @BRANCH_ID=@agentId,@user=@user
|
|
|
|
SET @totalRows=@totalRows+1
|
|
END
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
Exec JobHistoryRecord 'i','ExRate ADDED',@baseCurrency,@quoteCurrency ,'',@currencyRateId,@user
|
|
SELECT 0 CODE,'Rate added successfully' MSG,null id
|
|
RETURN;
|
|
END
|
|
|
|
|
|
END
|
|
ELSE IF @flag = 'a'
|
|
BEGIN
|
|
--SELECT @baseCurrency = baseCurrency FROM EXCHANGE_CURRENCYRATE_SETUP with(nolock) WHERE currencyRateId = @currencyRateId
|
|
|
|
--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
|
|
--FROM FastMoneyPro_Account.dbo.AC_MASTER A WITH (NOLOCK)
|
|
--INNER JOIN AgentMaster B WITH (NOLOCK) ON A.BRANCH_ID=B.agentId
|
|
--AND A.AC_CURRENCY = @baseCurrency --AND B.CASHID = @rateCode
|
|
|
|
--SELECT *,CAST(@revRate AS DECIMAL(10,6)) avgRate FROM EXCHANGE_CURRENCYRATE_SETUP with(nolock) WHERE currencyRateId = @currencyRateId
|
|
|
|
SELECT *,ISNULL(c.rateMin,0) AS minRate,ISNULL(c.rateMax,0) AS maxrate FROM dbo.currencyMaster C WITH(NOLOCK)
|
|
INNER JOIN EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK) ON C.currencyCode = E.baseCurrency
|
|
WHERE e.currencyRateId = @currencyRateId
|
|
|
|
RETURN
|
|
END
|
|
|
|
ELSE IF @FLAG = 'RateEdit'-->> TODAYS RATE FOR RATE MAINTENANCE
|
|
BEGIN
|
|
DECLARE @table VARCHAR(MAX),@sql_filter VARCHAR(100),@select_field_list VARCHAR(MAX),@extra_field_list VARCHAR(10)
|
|
|
|
--IF @sortBy IS NULL
|
|
SET @sortBy = 'currencyRateId'
|
|
IF @sortOrder IS NULL
|
|
SET @sortOrder = 'ASC'
|
|
|
|
SET @table = '(SELECT E.currencyRateId,E.baseCurrency,E.quoteCurrency,E.FixedCurUnit,E.RevRate
|
|
,E.BuyRate,E.SaleRate,CAST(ISNULL(SaleRate,0)-ISNULL(BuyRate,0) AS Decimal(20,6)) as MARGIN,active
|
|
,ISNULL(e.ModifiedDate,E.CREATEDDATE) [moddate],ISNULL(e.ModifiedBy,E.CreatedBy) ModifiedBy
|
|
FROM EXCHANGE_CURRENCYRATE_SETUP E WITH(NOLOCK)
|
|
INNER JOIN dbo.currencyMaster (NOLOCK) cm ON cm.currencyCode=e.baseCurrency
|
|
where 1=1 and E.Active=''Y''
|
|
) x'
|
|
print @table
|
|
SET @sql_filter = ''
|
|
IF @baseCurrency IS NOT NULL
|
|
SET @sql_filter = @sql_filter + ' AND CurFixed = '''+@baseCurrency+''''
|
|
|
|
|
|
SET @select_field_list ='
|
|
currencyRateId
|
|
,baseCurrency
|
|
,quoteCurrency
|
|
,FixedCurUnit
|
|
,RevRate
|
|
,BuyRate
|
|
,SaleRate
|
|
,MARGIN
|
|
,moddate
|
|
,ModifiedBy'
|
|
|
|
EXEC dbo.proc_paging
|
|
@table
|
|
,@sql_filter
|
|
,@select_field_list
|
|
,@extra_field_list
|
|
,@sortBy
|
|
,@sortOrder
|
|
,@pageSize
|
|
,@pageNumber
|
|
END
|
|
ELSE IF @flag = 'minmax'
|
|
BEGIN
|
|
SELECT ISNULL(c.rateMin,0) AS rateMin,ISNULL(c.rateMax,0) AS rateMax
|
|
FROM dbo.currencyMaster C WITH(NOLOCK)
|
|
WHERE c.currencyCode=@baseCurrency
|
|
RETURN
|
|
END
|
|
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
SELECT 1 CODE, ERROR_MESSAGE() MSG
|
|
END CATCH
|
|
|
|
|
|
|
|
|
|
|
|
GO
|