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

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