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.
 
 
 

4072 lines
144 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_exRateTreasury] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_exRateTreasury]
GO
/****** Object: StoredProcedure [dbo].[proc_exRateTreasury] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_exRateTreasury]
@flag VARCHAR(50) = NULL
,@user VARCHAR(30) = NULL
,@exRateTreasuryId VARCHAR(30) = NULL
,@exRateTreasuryIds VARCHAR(MAX) = NULL
,@defExRateId INT = NULL
,@tranType INT = NULL
,@cRateId INT = NULL
,@pRateId INT = NULL
,@cCountry INT = NULL
,@cAgent INT = NULL
,@pCountry INT = NULL
,@pAgent INT = NULL
,@cCurrency VARCHAR(3) = NULL
,@pCurrency VARCHAR(3) = NULL
,@cRateFactor CHAR(1) = NULL
,@pRateFactor CHAR(1) = NULL
,@cRate FLOAT = NULL
,@pRate FLOAT = NULL
,@cMargin FLOAT = NULL
,@cHoMargin FLOAT = NULL
,@cAgentMargin FLOAT = NULL
,@pMargin FLOAT = NULL
,@pHoMargin FLOAT = NULL
,@pAgentMargin FLOAT = NULL
,@sharingType CHAR(1) = NULL
,@sharingValue MONEY = NULL
,@toleranceOn CHAR(1) = NULL
,@agentTolMin FLOAT = NULL
,@agentTolMax FLOAT = NULL
,@customerTolMin FLOAT = NULL
,@customerTolMax FLOAT = NULL
,@maxCrossRate FLOAT = NULL
,@crossRate FLOAT = NULL
,@agentCrossRateMargin FLOAT = NULL
,@customerRate FLOAT = NULL
,@tolerance FLOAT = NULL
,@crossRateFactor CHAR(1) = NULL
,@hasChanged CHAR(1) = NULL
,@currency VARCHAR(3) = NULL
,@country INT = NULL
,@agent INT = NULL
,@rateType CHAR(1) = NULL
,@cBranch INT = NULL
,@cCountryName VARCHAR(100) = NULL
,@cAgentName VARCHAR(100) = NULL
,@pCountryName VARCHAR(100) = NULL
,@pAgentName VARCHAR(100) = NULL
,@isActive CHAR(1) = NULL
,@isUpdated CHAR(1) = NULL
,@applyFor CHAR(1) = NULL
,@applyAgent INT = NULL
,@xml XML = NULL
,@filterByPCountryOnly CHAR(1) = NULL
,@sortBy VARCHAR(100) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRY
CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
DECLARE
@sql VARCHAR(MAX)
,@oldValue VARCHAR(MAX)
,@newValue VARCHAR(MAX)
,@module VARCHAR(10)
,@tableAlias VARCHAR(100)
,@logIdentifier VARCHAR(50)
,@logParamMod VARCHAR(100)
,@logParamMain VARCHAR(100)
,@table VARCHAR(MAX)
,@select_field_list VARCHAR(MAX)
,@extra_field_list VARCHAR(MAX)
,@sql_filter VARCHAR(MAX)
,@modType VARCHAR(6)
,@ApprovedFunctionId INT
CREATE TABLE #exRateIdTemp(exRateTreasuryId INT)
DECLARE @exRateHistoryId BIGINT, @date DATETIME = GETDATE()
DECLARE @rateIdList TABLE(rowId INT IDENTITY(1,1), exRateTreasuryId INT)
DECLARE @crossRateDecimalMask INT, @colMaskAd INT
SELECT
@logIdentifier = 'exRateTreasuryId'
,@logParamMain = 'exRateTreasury'
,@logParamMod = 'exRateTreasuryHistory'
,@module = '20'
,@tableAlias = 'Treasury Exchange Rate'
,@ApprovedFunctionId = 20111330
DECLARE @hasRight CHAR(1)
DECLARE @exRateMsg VARCHAR(MAX)
DECLARE @cDefExRateId INT, @pDefExRateId INT, @errorMsg VARCHAR(200)
DECLARE @cOffer FLOAT, @pOffer FLOAT, @cCustomerOffer FLOAT, @pCustomerOffer FLOAT
IF @flag = 'cr' --Load Cost Rate according to Currency
BEGIN
SELECT @defExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @agent AND country = @country AND currency = @currency
IF @defExRateId IS NULL
SELECT @defExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent IS NULL AND country = @country AND currency = @currency
IF @rateType = 'C'
BEGIN
SELECT
costRate = cRate
,margin = cMargin
,factor
,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
FROM defExRate WITH(NOLOCK)
WHERE defExRateId = @defExRateId
END
ELSE IF @rateType = 'P'
BEGIN
SELECT
costRate = pRate
,margin = pMargin
,factor
,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
FROM defExRate WITH(NOLOCK)
WHERE defExRateId = @defExRateId
END
END
ELSE IF @flag = 'crdm' --Cross Rate Decimal Mask
BEGIN
SELECT dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
END
ELSE IF @flag IN ('s') --Load Grid Exchange Rate Treasury
BEGIN
IF @sortBy = 'sendingCountry'
SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
ELSE IF @sortBy = 'receivingCountry'
SET @sortBy = 'pCountryName,pAgentName,cCountryName,cAgentName'
SET @sortOrder = ''
DECLARE @m VARCHAR(MAX)
SET @m = '(
SELECT
exRateTreasuryId = main.exRateTreasuryId
,cRateId = main.cRateId
,cRateIdNew = mode.cRateId
,pRateId = main.pRateId
,pRateIdNew = mode.pRateId
,tranType = main.tranType
,cCountry = main.cCountry
,cAgent = main.cAgent
,pCountry = main.pCountry
,pAgent = main.pAgent
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,maxCrossRateNew = mode.maxCrossRate
,crossRate = main.crossRate
,crossRateNew = mode.crossRate
,agentCrossRateMargin = main.agentCrossRateMargin
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,customerRate = main.customerRate
,customerRateNew = mode.customerRate
,tolerance = main.tolerance
,toleranceNew = mode.tolerance
,crossRateFactor = main.crossRateFactor
,isActive = ISNULL(main.isActive, ''N'')
,isActiveNew = ISNULL(mode.isActive, ''N'')
,lastModifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,lastModifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.isUpdated
,main.createdBy
,main.createdDate
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
,crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
WHERE (
main.approvedBy IS NOT NULL
OR main.createdBy = ''' + @user + '''
)
) '
SET @table = '(
SELECT
main.exRateTreasuryId
,main.cRateId
,main.cRateIdNew
,main.pRateId
,main.pRateIdNew
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = ISNULL(main.cAgent, 0)
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = ISNULL(main.pAgent, 0)
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cRateNew
,cMargin = ISNULL(main.cMargin, 0)
,cMarginNew = ISNULL(main.cMarginNew, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cHoMarginNew = ISNULL(cHoMarginNew, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,cAgentMarginNew = ISNULL(cAgentMarginNew, 0)
,main.pRate
,pRateNew
,pMargin = ISNULL(main.pMargin, 0)
,pMarginNew = ISNULL(main.pMarginNew, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pHoMarginNew = ISNULL(main.pHoMarginNew, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,pAgentMarginNew = ISNULL(main.pAgentMarginNew, 0)
,sharingType
,sharingTypeNew
,sharingValue = ISNULL(main.sharingValue, 0)
,sharingValueNew = ISNULL(main.sharingValueNew, 0)
,toleranceOn
,toleranceOnNew
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMinNew = ISNULL(main.agentTolMinNew, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,agentTolMaxNew = ISNULL(main.agentTolMaxNew, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMinNew = ISNULL(main.customerTolMinNew, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,customerTolMaxNew = ISNULL(main.customerTolMaxNew, 0)
,main.maxCrossRate
,maxCrossRateNew
,main.crossRate
,crossRateNew
,main.agentCrossRateMargin
,main.agentCrossRateMarginNew
,main.customerRate
,main.customerRateNew
,main.tolerance
,toleranceNew
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
,main.crossRateFactor
,status = CASE WHEN main.isActive = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,statusNew = CASE WHEN main.isActiveNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,main.isUpdated
,cRateMaskMulBd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END, 6)
,cRateMaskMulAd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END, 6)
,cMin = ISNULL(crm.cMin, 0)
,cMax = ISNULL(crm.cMax, 0)
,pRateMaskMulBd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END, 6)
,pRateMaskMulAd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END, 6)
,pMin = ISNULL(prm.pMin, 0)
,pMax = ISNULL(prm.pMax, 0)
,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
,main.lastModifiedBy
,main.lastModifiedDate
,main.modifiedBy
,main.hasChanged
,main.isActive
,main.modType
FROM ' + @m + ' main
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
WHERE 1 = 1
'
SET @table = @table + ') x'
SET @sql_filter = ''
IF @defExRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@defExRateId AS VARCHAR) + ' OR pRateId = ' + CAST(@defExRateId AS VARCHAR) + ')'
IF @cRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@cRateId AS VARCHAR) + ')'
IF @pRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (pRateId = ' + CAST(@pRateId AS VARCHAR) + ')'
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged + ''''
IF @isUpdated IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
IF @isActive IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isActive, ''N'') = ''' + @isActive + ''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
BEGIN
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF ISNULL(@filterByPCountryOnly, 'N') = 'Y'
SET @sql_filter = @sql_filter + ' AND pAgent = 0'
END
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
IF @tranType IS NOT NULL
SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
--PRINT(@sql_filter)
SET @select_field_list = '
exRateTreasuryId
,cRateId
,cRateIdNew
,pRateId
,pRateIdNew
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,cRateNew
,cMargin
,cMarginNew
,cHoMargin
,cHoMarginNew
,cAgentMargin
,cAgentMarginNew
,pRate
,pRateNew
,pMargin
,pMarginNew
,pHoMargin
,pHoMarginNew
,pAgentMargin
,pAgentMarginNew
,sharingType
,sharingTypeNew
,sharingValue
,sharingValueNew
,toleranceOn
,toleranceOnNew
,agentTolMin
,agentTolMinNew
,agentTolMax
,agentTolMaxNew
,customerTolMin
,customerTolMinNew
,customerTolMax
,customerTolMaxNew
,maxCrossRate
,maxCrossRateNew
,crossRate
,crossRateNew
,agentCrossRateMargin
,agentCrossRateMarginNew
,customerRate
,customerRateNew
,tolerance
,toleranceNew
,cost
,costNew
,margin
,marginNew
,crossRateFactor
,status
,statusNew
,isUpdated
,cRateMaskMulBd
,cRateMaskMulAd
,cMin
,cMax
,pRateMaskMulBd
,pRateMaskMulAd
,pMin
,pMax
,crossRateMaskAd
,lastModifiedBy
,lastModifiedDate
,modifiedBy
,hasChanged
,modType
'
PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
ELSE IF @flag IN ('s2') --Load Grid After Cost Change
BEGIN
IF @sortBy = 'sendingCountry'
SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
ELSE IF @sortBy = 'receivingCountry'
SET @sortBy = 'pCountryName,pAgentName,cCountryName,cAgentName'
SET @sortOrder = ''
SET @m = '(
SELECT
exRateTreasuryId = main.exRateTreasuryId
,cRateId = main.cRateId
,cRateIdNew = mode.cRateId
,pRateId = main.pRateId
,pRateIdNew = mode.pRateId
,tranType = main.tranType
,cCountry = main.cCountry
,cAgent = main.cAgent
,pCountry = main.pCountry
,pAgent = main.pAgent
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,maxCrossRateNew = mode.maxCrossRate
,crossRate = main.crossRate
,crossRateNew = mode.crossRate
,agentCrossRateMargin = main.agentCrossRateMargin
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,customerRate = main.customerRate
,customerRateNew = mode.customerRate
,tolerance = main.tolerance
,toleranceNew = mode.tolerance
,crossRateFactor = main.crossRateFactor
,isActive = ISNULL(main.isActive, ''N'')
,isActiveNew = ISNULL(mode.isActive, ''N'')
,main.isUpdated
,main.createdBy
,main.createdDate
,lastModifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,lastModifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
,crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
WHERE (
main.approvedBy IS NOT NULL
OR main.createdBy = ''' + @user + '''
)
) '
SET @table = '(
SELECT
main.exRateTreasuryId
,main.cRateId
,main.cRateIdNew
,main.pRateId
,main.pRateIdNew
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = ISNULL(main.cAgent, 0)
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = ISNULL(main.pAgent, 0)
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cRateNew
,cMargin = ISNULL(main.cMargin, 0)
,cMarginNew = ISNULL(main.cMarginNew, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cHoMarginNew = ISNULL(cHoMarginNew, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,cAgentMarginNew = ISNULL(cAgentMarginNew, 0)
,main.pRate
,pRateNew
,pMargin = ISNULL(main.pMargin, 0)
,pMarginNew = ISNULL(main.pMarginNew, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pHoMarginNew = ISNULL(main.pHoMarginNew, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,pAgentMarginNew = ISNULL(main.pAgentMarginNew, 0)
,sharingType
,sharingTypeNew
,sharingValue = ISNULL(main.sharingValue, 0)
,sharingValueNew = ISNULL(main.sharingValueNew, 0)
,toleranceOn
,toleranceOnNew
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMinNew = ISNULL(main.agentTolMinNew, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,agentTolMaxNew = ISNULL(main.agentTolMaxNew, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMinNew = ISNULL(main.customerTolMinNew, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,customerTolMaxNew = ISNULL(main.customerTolMaxNew, 0)
,main.maxCrossRate
,maxCrossRateNew
,main.crossRate
,crossRateNew
,main.agentCrossRateMargin
,main.agentCrossRateMarginNew
,main.customerRate
,main.customerRateNew
,main.tolerance
,toleranceNew
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
,main.crossRateFactor
,status = CASE WHEN main.isActive = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,statusNew = CASE WHEN main.isActiveNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,main.isUpdated
,cRateMaskMulBd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END, 6)
,cRateMaskMulAd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END, 6)
,cMin = ISNULL(crm.cMin, 0)
,cMax = ISNULL(crm.cMax, 0)
,pRateMaskMulBd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END, 6)
,pRateMaskMulAd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END, 6)
,pMin = ISNULL(prm.pMin, 0)
,pMax = ISNULL(prm.pMax, 0)
,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
,main.modifiedBy
,lastModifiedBy
,lastModifiedDate
,main.hasChanged
,main.isActive
,main.modType
FROM ' + @m + ' main
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
WHERE 1 = 1
'
SET @table = @table + ') x'
SET @sql_filter = ''
IF @defExRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@defExRateId AS VARCHAR) + ' OR pRateId = ' + CAST(@defExRateId AS VARCHAR) + ')'
IF @cRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@cRateId AS VARCHAR) + ')'
IF @pRateId IS NOT NULL
SET @sql_filter = @sql_filter + ' AND (pRateId = ' + CAST(@pRateId AS VARCHAR) + ')'
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged + ''''
IF @isUpdated IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
IF @isActive IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isActive, ''N'') = ''' + @isActive + ''''
SET @select_field_list = '
exRateTreasuryId
,cRateId
,cRateIdNew
,pRateId
,pRateIdNew
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,cRateNew
,cMargin
,cMarginNew
,cHoMargin
,cHoMarginNew
,cAgentMargin
,cAgentMarginNew
,pRate
,pRateNew
,pMargin
,pMarginNew
,pHoMargin
,pHoMarginNew
,pAgentMargin
,pAgentMarginNew
,sharingType
,sharingTypeNew
,sharingValue
,sharingValueNew
,toleranceOn
,toleranceOnNew
,agentTolMin
,agentTolMinNew
,agentTolMax
,agentTolMaxNew
,customerTolMin
,customerTolMinNew
,customerTolMax
,customerTolMaxNew
,maxCrossRate
,maxCrossRateNew
,crossRate
,crossRateNew
,agentCrossRateMargin
,agentCrossRateMarginNew
,customerRate
,customerRateNew
,tolerance
,toleranceNew
,cost
,costNew
,margin
,marginNew
,crossRateFactor
,status
,statusNew
,isUpdated
,cRateMaskMulBd
,cRateMaskMulAd
,cMin
,cMax
,pRateMaskMulBd
,pRateMaskMulAd
,pMin
,pMax
,crossRateMaskAd
,modifiedBy
,lastModifiedBy
,lastModifiedDate
,hasChanged
,modType
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
ELSE IF @flag IN ('m') --Approve List
BEGIN
--IF @sortBy IS NULL
SET @sortBy = 'modifiedDate,cCountryName,cAgentName,pCountryName,pAgentName'
--IF @sortOrder IS NULL
SET @sortOrder = ''
SET @m = '(
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = main.tranType
,cCountry = main.cCountry
,cAgent = main.cAgent
,pCountry = main.pCountry
,pAgent = main.pAgent
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,agentCrossRateMargin = main.agentCrossRateMargin
,customerRate = main.customerRate
,tolerance = main.tolerance
,maxCrossRateNew = mode.maxCrossRate
,crossRateNew = mode.crossRate
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,customerRateNew = mode.customerRate
,toleranceNew = mode.tolerance
,status = ISNULL(main.isActive, ''N'')
,statusNew = ISNULL(mode.isActive, ''N'')
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
,main.createdBy
,main.createdDate
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
--WHERE (
-- main.approvedBy IS NOT NULL
-- OR main.createdBy = ''' + @user + '''
-- )
--AND ISNULL(main.isUpdated, ''N'') <> ''Y''
) '
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,main.cRateNew
,main.pRate
,main.pRateNew
,main.cMargin
,main.cMarginNew
,pMargin = main.pMargin
,main.pMarginNew
,main.cHoMargin
,main.cHoMarginNew
,main.cAgentMargin
,main.cAgentMarginNew
,main.pHoMargin
,pHoMarginNew = main.pHoMarginNew
,main.pAgentMargin
,main.pAgentMarginNew
,main.sharingType
,main.sharingTypeNew
,main.sharingValue
,main.sharingValueNew
,main.toleranceOn
,main.toleranceOnNew
,main.agentTolMin
,main.agentTolMinNew
,main.agentTolMax
,main.agentTolMaxNew
,main.customerTolMin
,main.customerTolMinNew
,main.customerTolMax
,main.customerTolMaxNew
,main.maxCrossRate
,main.crossRate
,main.agentCrossRateMargin
,main.customerRate
,main.tolerance
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
,main.maxCrossRateNew
,main.crossRateNew
,main.agentCrossRateMarginNew
,main.customerRateNew
,main.toleranceNew
,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
,main.modifiedBy
,main.modifiedDate
,main.hasChanged
FROM ' + @m + ' main
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE 1=1 AND hasChanged = ''Y''
'
SET @table = @table + ') x'
PRINT @table
SET @sql_filter = ''
--SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
SET @select_field_list = '
exRateTreasuryId
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,pRate
,cMargin
,pMargin
,cHoMargin
,cAgentMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,agentCrossRateMargin
,customerRate
,tolerance
,cost
,margin
,cRateNew
,pRateNew
,cMarginNew
,pMarginNew
,cHoMarginNew
,cAgentMarginNew
,pHoMarginNew
,pAgentMarginNew
,sharingTypeNew
,sharingValueNew
,toleranceOnNew
,agentTolMinNew
,agentTolMaxNew
,customerTolMinNew
,customerTolMaxNew
,maxCrossRateNew
,crossRateNew
,agentCrossRateMarginNew
,customerRateNew
,toleranceNew
,costNew
,marginNew
,status
,statusNew
,modType
,modifiedBy
,modifiedDate
,hasChanged
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
ELSE IF @flag IN ('rl') --Reject List
BEGIN
--IF @sortBy IS NULL
SET @sortBy = 'modifiedDate,cCountryName,cAgentName,pCountryName,pAgentName'
--IF @sortOrder IS NULL
SET @sortOrder = ''
SET @m = '(
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = main.tranType
,cCountry = main.cCountry
,cAgent = main.cAgent
,pCountry = main.pCountry
,pAgent = main.pAgent
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,maxCrossRateNew = mode.maxCrossRate
,crossRateNew = mode.crossRate
,customerRateNew = mode.customerRate
,toleranceNew = mode.tolerance
,agentCrossRateMargin = main.agentCrossRateMargin
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,status = ISNULL(main.isActive, ''N'')
,statusNew = ISNULL(mode.isActive, ''N'')
,main.isUpdated
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
,main.createdBy
,main.createdDate
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
WHERE (
main.approvedBy IS NOT NULL
OR main.createdBy = ''' + @user + '''
)
--AND ISNULL(main.isUpdated, ''N'') <> ''Y''
) '
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,main.cRateNew
,main.pRate
,main.pRateNew
,main.cMargin
,main.cMarginNew
,main.pMargin
,main.pMarginNew
,main.cHoMargin
,main.cHoMarginNew
,main.cAgentMargin
,main.cAgentMarginNew
,main.pHoMargin
,main.pHoMarginNew
,main.pAgentMargin
,main.pAgentMarginNew
,main.sharingType
,main.sharingTypeNew
,main.sharingValue
,main.sharingValueNew
,main.toleranceOn
,main.toleranceOnNew
,main.agentTolMin
,main.agentTolMinNew
,main.agentTolMax
,main.agentTolMaxNew
,main.customerTolMin
,main.customerTolMinNew
,main.customerTolMax
,main.customerTolMaxNew
,main.maxCrossRate
,main.crossRate
,main.customerRate
,main.tolerance
,main.agentCrossRateMargin
,main.agentCrossRateMarginNew
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
,main.maxCrossRateNew
,main.crossRateNew
,main.customerRateNew
,main.toleranceNew
,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,isUpdated
,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
,main.modifiedBy
,main.modifiedDate
,main.hasChanged
FROM ' + @m + ' main
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE 1=1 AND hasChanged = ''Y'' AND ISNULL(main.isUpdated, ''N'') = ''N''
'
SET @table = @table + ') x'
SET @sql_filter = ''
--SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
SET @select_field_list = '
exRateTreasuryId
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,pRate
,cMargin
,pMargin
,cHoMargin
,cAgentMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,customerRate
,tolerance
,cost
,margin
,cRateNew
,pRateNew
,cMarginNew
,pMarginNew
,cHoMarginNew
,cAgentMarginNew
,pHoMarginNew
,pAgentMarginNew
,sharingTypeNew
,sharingValueNew
,toleranceOnNew
,agentTolMinNew
,agentTolMaxNew
,customerTolMinNew
,customerTolMaxNew
,maxCrossRateNew
,crossRateNew
,customerRateNew
,toleranceNew
,agentCrossRateMargin
,agentCrossRateMarginNew
,costNew
,marginNew
,status
,statusNew
,isUpdated
,modType
,modifiedBy
,modifiedDate
,hasChanged
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
ELSE IF @flag IN ('mcl') --My Changes List
BEGIN
--IF @sortBy IS NULL
SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
--IF @sortOrder IS NULL
SET @sortOrder = ''
SET @m = '(
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = main.tranType
,cCountry = main.cCountry
,cAgent = main.cAgent
,pCountry = main.pCountry
,pAgent = main.pAgent
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,maxCrossRateNew = mode.maxCrossRate
,crossRateNew = mode.crossRate
,customerRateNew = mode.customerRate
,toleranceNew = mode.tolerance
,agentCrossRateMargin = main.agentCrossRateMargin
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,status = ISNULL(main.isActive, ''N'')
,statusNew = ISNULL(mode.isActive, ''N'')
,main.isUpdated
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
,main.createdBy
,main.createdDate
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN ISNULL(mode.createdBy, main.createdBy) ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN ISNULL(mode.createdDate, main.createdDate) ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
WHERE (
main.approvedBy IS NOT NULL
OR main.createdBy = ''' + @user + '''
)
--AND ISNULL(main.isUpdated, ''N'') <> ''Y''
) '
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,main.cRateNew
,main.pRate
,main.pRateNew
,main.cMargin
,main.cMarginNew
,main.pMargin
,main.pMarginNew
,main.cHoMargin
,main.cHoMarginNew
,main.cAgentMargin
,main.cAgentMarginNew
,main.pHoMargin
,main.pHoMarginNew
,main.pAgentMargin
,main.pAgentMarginNew
,main.sharingType
,main.sharingTypeNew
,main.sharingValue
,main.sharingValueNew
,main.toleranceOn
,main.toleranceOnNew
,main.agentTolMin
,main.agentTolMinNew
,main.agentTolMax
,main.agentTolMaxNew
,main.customerTolMin
,main.customerTolMinNew
,main.customerTolMax
,main.customerTolMaxNew
,main.maxCrossRate
,main.crossRate
,main.customerRate
,main.tolerance
,main.agentCrossRateMargin
,main.agentCrossRateMarginNew
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
,main.maxCrossRateNew
,main.crossRateNew
,main.customerRateNew
,main.toleranceNew
,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,isUpdated = ISNULL(main.isUpdated, ''N'')
,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
,main.modifiedBy
,main.modifiedDate
,main.hasChanged
FROM ' + @m + ' main
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE 1=1 AND hasChanged = ''Y'' AND main.modifiedBy = ''' + @user + '''
'
SET @table = @table + ') x'
SET @sql_filter = ''
--SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
SET @select_field_list = '
exRateTreasuryId
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,pRate
,cMargin
,pMargin
,cHoMargin
,cAgentMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,customerRate
,tolerance
,cost
,margin
,cRateNew
,pRateNew
,cMarginNew
,pMarginNew
,cHoMarginNew
,cAgentMarginNew
,pHoMarginNew
,pAgentMarginNew
,sharingTypeNew
,sharingValueNew
,toleranceOnNew
,agentTolMinNew
,agentTolMaxNew
,customerTolMinNew
,customerTolMaxNew
,maxCrossRateNew
,crossRateNew
,customerRateNew
,toleranceNew
,agentCrossRateMargin
,agentCrossRateMarginNew
,costNew
,marginNew
,status
,statusNew
,isUpdated
,modType
,modifiedBy
,modifiedDate
,hasChanged
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
ELSE IF @flag = 'i'
BEGIN
IF (dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency) = 10)
BEGIN
EXEC proc_errorHandler 1, 'Cross Rate Decimal Mask not defined yet for this setup', NULL
RETURN
END
/*
IF(@cAgent IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @cAgent AND currency = @cCurrency)
BEGIN
EXEC proc_errorHandler 1, 'Sending agent rate has not been defined yet', NULL
RETURN
END
END
IF(@pAgent IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @pAgent AND currency = @pCurrency)
BEGIN
EXEC proc_errorHandler 1, 'Receiving agent rate has not been defined yet', NULL
RETURN
END
END
*/
SELECT @cDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @cAgent AND country = @cCountry AND currency = @cCurrency
IF @cDefExRateId IS NULL
SELECT @cDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent IS NULL AND country = @cCountry AND currency = @cCurrency
SELECT @pDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @pAgent AND country = @pCountry AND currency = @pCurrency
IF @pDefExRateId IS NULL
SELECT @pDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent IS NULL AND country = @pCountry AND currency = @pCurrency
SELECT
@cRate = cRate, @cMargin = cMargin, @cRateFactor = factor
,@cOffer = CASE factor WHEN 'M' THEN cRate + cMargin + ISNULL(@cHoMargin, 0) WHEN 'D' THEN cRate - cMargin - ISNULL(@cMargin, 0) END
,@cCustomerOffer = CASE factor WHEN 'M' THEN cRate + cMargin + ISNULL(@cHoMargin, 0) + ISNULL(@cAgentMargin, 0) WHEN 'D' THEN cRate - cMargin - ISNULL(@cHoMargin, 0) - ISNULL(@cAgentMargin, 0) END
FROM defExRate WITH(NOLOCK) WHERE defExRateId = @cDefExRateId
SELECT
@pRate = pRate, @pMargin = pMargin, @pRateFactor = factor
,@pOffer = CASE factor WHEN 'M' THEN pRate - pMargin - ISNULL(@pHoMargin, 0) WHEN 'D' THEN pRate + pMargin + ISNULL(@pMargin, 0) END
,@pCustomerOffer = CASE factor WHEN 'M' THEN pRate - pMargin - ISNULL(@pHoMargin, 0) - ISNULL(@pAgentMargin, 0) WHEN 'D' THEN pRate - pMargin - ISNULL(@pHoMargin, 0) - ISNULL(@pAgentMargin, 0) END
FROM defExRate WITH(NOLOCK) WHERE defExRateId = @pDefExRateId
DECLARE @tolCMax FLOAT, @tolCMin FLOAT, @tolPMax FLOAT, @tolPMin FLOAT, @msg VARCHAR(300)
SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
SET @crossRate = ROUND(@pOffer/@cOffer, @crossRateDecimalMask)
SET @maxCrossRate = ROUND(@pRate/@cRate, @crossRateDecimalMask)
SET @customerRate = ROUND(@pCustomerOffer/@cCustomerOffer, @crossRateDecimalMask)
DECLARE @cost FLOAT, @margin FLOAT
SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
SET @margin = ROUND(@cost - @cRate, @colMaskAd)
SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
IF @cost > @tolCMax
BEGIN
SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF @cost < @tolCMin
BEGIN
SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE
cCountry = @cCountry
AND ISNULL(cAgent, 0) = ISNULL(@cAgent, 0)
AND cCurrency = @cCurrency
AND pCountry = @pCountry
AND ISNULL(pAgent, 0) = ISNULL(@pAgent, 0)
AND pCurrency = @pCurrency
AND ISNULL(tranType, 0) = ISNULL(@tranType, 0)
)
BEGIN
EXEC proc_errorHandler 1, 'Record already exists', NULL
RETURN
END
BEGIN TRANSACTION
INSERT INTO exRateTreasury(
tranType
,cRateId
,cCountry
,cAgent
,cCurrency
,cRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRateId
,pCountry
,pAgent
,pCurrency
,pRateFactor
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,crossRate
,maxCrossRate
,customerRate
,tolerance
,crossRateFactor
,isUpdated
,isUpdatedOperation
,isActive
,createdBy
,createdDate
)
SELECT
@tranType
,@cDefExRateId
,@cCountry
,@cAgent
,@cCurrency
,@cRateFactor
,@cRate
,@cMargin
,ISNULL(@cHoMargin, 0)
,ISNULL(@cAgentMargin, 0)
,@pDefExRateId
,@pCountry
,@pAgent
,@pCurrency
,@pRateFactor
,@pRate
,@pMargin
,ISNULL(@pHoMargin, 0)
,ISNULL(@pAgentMargin, 0)
,ISNULL(@sharingType,'F')
,ISNULL(@sharingValue, 0)
,ISNULL(@toleranceOn, 'C')
,ISNULL(@agentTolMin, 0)
,ISNULL(@agentTolMax, 0)
,ISNULL(@customerTolMin, 0)
,ISNULL(@customerTolMax, 0)
,@crossRate
,@maxCrossRate
,@customerRate
,@tolerance
,@crossRateFactor
,'N'
,'N'
,'Y'
,@user
,GETDATE()
SET @exRateTreasuryId = SCOPE_IDENTITY()
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Record has been added successfully.', @exRateTreasuryId
END
ELSE IF @flag = 'u'
BEGIN
IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND (createdBy <> @user AND approvedBy IS NULL))
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
RETURN
END
IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND ISNULL(createdBy, '') <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
RETURN
END
SELECT
@cRateFactor = cRateFactor
,@cCurrency = cCurrency, @cRate = cRate, @cMargin = cMargin
,@pCurrency = pCurrency, @pRate = pRate, @pMargin = pMargin
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
SELECT @tolPMax = pMax, @tolPMin = pMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @pCurrency
SET @cost = ROUND((@pRate - @pMargin - @pHoMargin - @pAgentMargin)/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
--SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
IF (@cRate + @cMargin + @cHoMargin) > @tolCMax
BEGIN
SET @msg = 'HO Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@cRate + @cMargin + @cHoMargin) < @tolCMin
BEGIN
SET @msg = 'HO Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) > @tolCMax
BEGIN
SET @msg = 'Agent Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) < @tolCMin
BEGIN
SET @msg = 'Agent Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@pRate - @pMargin - @pHoMargin) > @tolPMax
BEGIN
SET @msg = 'HO Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@pRate - @pMargin - @pHoMargin) < @tolPMin
BEGIN
SET @msg = 'HO Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) > @tolPMax
BEGIN
SET @msg = 'Agent Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) < @tolPMin
BEGIN
SET @msg = 'Agent Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
/*
IF @cost > @tolCMax
BEGIN
SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
IF @cost < @tolCMin
BEGIN
SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
EXEC proc_errorHandler 1, @msg, NULL
RETURN
END
*/
BEGIN TRANSACTION
IF ISNULL(@isUpdated, 'N') = 'N'
BEGIN
IF EXISTS (SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
BEGIN
UPDATE exRateTreasury SET
cHoMargin = @cHoMargin
,cAgentMargin = @cAgentMargin
,pHoMargin = @pHoMargin
,pAgentMargin = @pAgentMargin
,sharingType = @sharingType
,sharingValue = @sharingValue
,toleranceOn = @toleranceOn
,agentTolMin = @agentTolMin
,agentTolMax = @agentTolMax
,customerTolMin = @customerTolMin
,customerTolMax = @customerTolMax
,crossRate = @crossRate
,customerRate = CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
,agentCrossRateMargin =
CASE WHEN @agentCrossRateMargin >= 0 THEN
CASE WHEN @agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
ELSE
CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
END
,tolerance = @tolerance
,modifiedBy = @user
,modifiedDate = GETDATE()
WHERE exRateTreasuryId = @exRateTreasuryId
END
ELSE
BEGIN
DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
INSERT INTO exRateTreasuryMod(
exRateTreasuryId
,tranType
,cRateId
,cCurrency
,cCountry
,cAgent
,cRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRateId
,pCurrency
,pCountry
,pAgent
,pRateFactor
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,agentCrossRateMargin
,crossRate
,customerRate
,tolerance
,isActive
,createdBy
,createdDate
,modType
)
SELECT
@exRateTreasuryId
,tranType
,cRateId
,cCurrency
,cCountry
,cAgent
,cRateFactor
,cRate
,cMargin
,@cHoMargin
,@cAgentMargin
,pRateId
,pCurrency
,pCountry
,pAgent
,pRateFactor
,pRate
,pMargin
,@pHoMargin
,@pAgentMargin
,@sharingType
,@sharingValue
,@toleranceOn
,@agentTolMin
,@agentTolMax
,@customerTolMin
,@customerTolMax
,maxCrossRate
,CASE WHEN @agentCrossRateMargin >= 0 THEN
CASE WHEN agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
ELSE
CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
END
,@crossRate
,CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
,@tolerance
,isActive
,@user
,GETDATE()
,'U'
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
SELECT
@cCurrency = cCurrency, @cCountry = cCountry, @cAgent = cAgent
,@pCurrency = pCurrency, @pCountry = pCountry, @pAgent = pAgent
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
END
END
ELSE
BEGIN
UPDATE exRateTreasuryMod SET
cHoMargin = @cHoMargin
,cAgentMargin = @cAgentMargin
,pHoMargin = @pHoMargin
,pAgentMargin = @pAgentMargin
,sharingType = @sharingType
,sharingValue = @sharingValue
,toleranceOn = @toleranceOn
,agentTolMin = @agentTolMin
,agentTolMax = @agentTolMax
,customerTolMin = @customerTolMin
,customerTolMax = @customerTolMax
,tolerance = @tolerance
,crossRate = @crossRate
,agentCrossRateMargin = CASE WHEN @agentCrossRateMargin >= 0 THEN
CASE WHEN @agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
ELSE
CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
END
,customerRate = CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
WHERE exRateTreasuryId = @exRateTreasuryId
/*
UPDATE exRateTreasury SET
isUpdated = 'N'
WHERE exRateTreasuryId = @exRateTreasuryId
*/
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Record updated successfully.', @exRateTreasuryId
END
ELSE IF @flag = 'uxml' --Bulk Update XML
BEGIN
DECLARE @exRateList TABLE(id INT IDENTITY(1,1),exRateTreasuryId INT, tolerance FLOAT, cHoMargin FLOAT, cAgentMargin FLOAT, pHoMargin FLOAT, pAgentMargin FLOAT,
sharingType CHAR(1), sharingValue FLOAT, toleranceOn VARCHAR(2), agentTolMin FLOAT, agentTolMax FLOAT,
customerTolMin FLOAT, customerTolMax FLOAT,
crossRate FLOAT, agentCrossRateMargin FLOAT, customerRate FLOAT, isUpdated CHAR(1), errorCode VARCHAR(10), msg VARCHAR(300))
INSERT @exRateList(exRateTreasuryId, tolerance, cHoMargin, cAgentMargin, pHoMargin, pAgentMargin,
sharingType, sharingValue, toleranceOn, agentTolMin, agentTolMax,
customerTolMin, customerTolMax,
crossRate, agentCrossRateMargin, customerRate, isUpdated, errorCode)
SELECT
exRateTreasuryId = p.value('@exRateTreasuryId','INT')
,tolerance = p.value('@tolerance','FLOAT')
,cHoMargin = p.value('@cHoMargin','FLOAT')
,cAgentMargin = p.value('@cAgentMargin','FLOAT')
,pHoMargin = p.value('@pHoMargin','FLOAT')
,pAgentMargin = p.value('@pAgentMargin','FLOAT')
,sharingType = p.value('@sharingType','VARCHAR(1)')
,sharingValue = p.value('@sharingValue','FLOAT')
,toleranceOn = p.value('@toleranceOn','VARCHAR(2)')
,agentTolMin = p.value('@agentTolMin','FLOAT')
,agentTolMax = p.value('@agentTolMax','FLOAT')
,customerTolMin = p.value('@customerTolMin','FLOAT')
,customerTolMax = p.value('@customerTolMax','FLOAT')
,crossRate = p.value('@crossRate','FLOAT')
,agentCrossRateMargin = p.value('@agentCrossRateMargin', 'FLOAT')
,customerRate = p.value('@customerRate','FLOAT')
,isUpdated = p.value('@isUpdated','CHAR(1)')
,errorCode = '0'
FROM @xml.nodes('/root/row') AS tmp(p)
DECLARE @totalRows INT, @count INT = 1
SELECT @totalRows = COUNT(exRateTreasuryId) FROM @exRateList
WHILE(@count <= @totalRows)
BEGIN
SELECT
@exRateTreasuryId = exRateTreasuryId
,@tolerance = tolerance
,@cHoMargin = cHoMargin
,@cAgentMargin = cAgentMargin
,@pHoMargin = pHoMargin
,@pAgentMargin = pAgentMargin
,@sharingType = sharingType
,@sharingValue = sharingValue
,@toleranceOn = toleranceOn
,@agentTolMin = agentTolMin
,@agentTolMax = agentTolMax
,@customerTolMin = customerTolMin
,@customerTolMax = customerTolMax
,@crossRate = crossRate
,@agentCrossRateMargin = agentCrossRateMargin
,@customerRate = customerRate
,@isUpdated = isUpdated
FROM @exRateList WHERE id = @count
IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND (createdBy <> @user AND approvedBy IS NULL))
BEGIN
UPDATE @exRateList SET
errorCode = 1
,msg = 'You can not modify this record. Previous modification has not been approved yet.'
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND ISNULL(createdBy, '') <> @user)
BEGIN
UPDATE @exRateList SET
errorCode = 1
,msg = 'You can not modify this record. Previous modification has not been approved yet.'
WHERE exRateTreasuryId = @exRateTreasuryId
END
SELECT
@cRateFactor = cRateFactor
,@cCurrency = cCurrency, @cRate = cRate, @cMargin = cMargin
,@pCurrency = pCurrency, @pRate = pRate, @pMargin = pMargin
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
SELECT @tolPMax = pMax, @tolPMin = pMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @pCurrency
SET @cost = ROUND((@pRate - @pMargin - @pHoMargin - @pAgentMargin)/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
--SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
IF (@cRate + @cMargin + @cHoMargin) > @tolCMax
BEGIN
SET @msg = 'HO Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@cRate + @cMargin + @cHoMargin) < @tolCMin
BEGIN
SET @msg = 'HO Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) > @tolCMax
BEGIN
SET @msg = 'Agent Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) < @tolCMin
BEGIN
SET @msg = 'Agent Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@pRate - @pMargin - @pHoMargin) > @tolPMax
BEGIN
SET @msg = 'HO Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@pRate - @pMargin - @pHoMargin) < @tolPMin
BEGIN
SET @msg = 'HO Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) > @tolPMax
BEGIN
SET @msg = 'Agent Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) < @tolPMin
BEGIN
SET @msg = 'Agent Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF @cost > @tolCMax
BEGIN
SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF @cost < @tolCMin
BEGIN
SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
UPDATE @exRateList SET
errorCode = 1
,msg = @msg
WHERE exRateTreasuryId = @exRateTreasuryId
END
SET @count = @count + 1
END
--SELECT * FROM @exRateList
--RETURN
BEGIN TRANSACTION
IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NULL)
BEGIN
UPDATE ert SET
ert.cHoMargin = list.cHoMargin
,ert.cAgentMargin = list.cAgentMargin
,ert.pHoMargin = list.pHoMargin
,ert.pAgentMargin = list.pAgentMargin
,ert.sharingType = list.sharingType
,ert.sharingValue = list.sharingValue
,ert.toleranceOn = list.toleranceOn
,ert.agentTolMin = list.agentTolMin
,ert.agentTolMax = list.agentTolMax
,ert.customerTolMin = list.customerTolMin
,ert.customerTolMax = list.customerTolMax
,ert.crossRate = list.crossRate
,ert.customerRate = CASE WHEN ISNULL(ert.toleranceOn, '') IN ('S','P', '') THEN list.customerRate WHEN ISNULL(ert.toleranceOn, '') = 'C' THEN list.crossRate - ISNULL(list.agentCrossRateMargin, 0) END
,ert.agentCrossRateMargin = CASE WHEN list.agentCrossRateMargin >= 0 THEN
CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
ELSE
CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
END
,ert.tolerance = list.tolerance
,ert.modifiedBy = @user
,ert.modifiedDate = GETDATE()
FROM exRateTreasury ert
INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NULL
END
IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK)
INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
)
BEGIN
DELETE FROM exRateTreasuryMod
FROM exRateTreasuryMod ertm
INNER JOIN exRateTreasury ert ON ertm.exRateTreasuryId = ert.exRateTreasuryId
INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
INSERT INTO exRateTreasuryMod(
exRateTreasuryId
,tranType
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin
,cHoMargin,cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin
,pHoMargin,pAgentMargin
,sharingType,sharingValue
,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,maxCrossRate,crossRate
,agentCrossRateMargin
,customerRate
,tolerance,isActive
,createdBy,createdDate,modType
)
SELECT
list.exRateTreasuryId
,tranType
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin
,list.cHoMargin,list.cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin
,list.pHoMargin,list.pAgentMargin
,list.sharingType,list.sharingValue
,list.toleranceOn,list.agentTolMin,list.agentTolMax,list.customerTolMin,list.customerTolMax
,maxCrossRate,list.crossRate
,CASE WHEN list.agentCrossRateMargin >= 0 THEN
CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
ELSE
CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
END
,CASE WHEN ISNULL(ert.toleranceOn, '') IN ('S','P', '') THEN list.customerRate WHEN ISNULL(ert.toleranceOn, '') = 'C' THEN list.crossRate - ISNULL(list.agentCrossRateMargin, 0) END
,list.tolerance,isActive
,@user,GETDATE(),'U'
FROM exRateTreasury ert WITH(NOLOCK)
INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
END
IF EXISTS(SELECT 'X' FROM exRateTreasuryMod ertm WITH(NOLOCK)
INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y'
)
BEGIN
UPDATE ertm SET
ertm.cHoMargin = list.cHoMargin
,ertm.cAgentMargin = list.cAgentMargin
,ertm.pHoMargin = list.pHoMargin
,ertm.pAgentMargin = list.pAgentMargin
,ertm.sharingType = list.sharingType
,ertm.sharingValue = list.sharingValue
,ertm.toleranceOn = list.toleranceOn
,ertm.agentTolMin = list.agentTolMin
,ertm.agentTolMax = list.agentTolMax
,ertm.customerTolMin = list.customerTolMin
,ertm.customerTolMax = list.customerTolMax
,ertm.tolerance = list.tolerance
,ertm.crossRate = list.crossRate
,ertm.agentCrossRateMargin = CASE WHEN list.agentCrossRateMargin >= 0 THEN
CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
ELSE
CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
END
,ertm.customerRate = CASE WHEN ISNULL(ertm.toleranceOn, '') IN ('S','P', '') THEN list.customerRate WHEN ISNULL(ertm.toleranceOn, '') = 'C' THEN list.crossRate - ISNULL(list.agentCrossRateMargin, 0) END
FROM exRateTreasuryMod ertm
INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y'
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT @exRateTreasuryIds = COALESCE(ISNULL(@exRateTreasuryIds + ',', ''), '') + CAST(exRateTreasuryId AS VARCHAR) FROM @exRateList WHERE errorCode = '0'
SELECT @exRateTreasuryIds
RETURN
END
ELSE IF @flag = 'ufm' --Bulk Update From Master Record
BEGIN
IF(ISNULL(@exRateTreasuryIds, '') = '')
BEGIN
EXEC proc_errorHandler 1, 'Please select the record(s) to update', NULL
RETURN
END
/*
SET @sql = 'UPDATE exRateTreasury SET isUpdated = ''N'' WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
EXEC (@sql)
*/
EXEC proc_errorHandler 0, 'Rate updated successfully', NULL
END
ELSE IF @flag IN('reject')
BEGIN
IF(ISNULL(@exRateTreasuryIds, '') = '')
BEGIN
EXEC proc_errorHandler 1, 'Please select the record(s) to approve', NULL
RETURN
END
BEGIN TRANSACTION
SET @sql = 'SELECT exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
INSERT @rateIdList
EXEC (@sql)
WHILE EXISTS(SELECT 'X' FROM @rateIdList)
BEGIN
SELECT TOP 1 @exRateTreasuryId = exRateTreasuryId FROM @rateIdList
IF EXISTS (SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
BEGIN --New record
SET @modType = 'Reject'
DELETE FROM exRateTreasury WHERE exRateTreasuryId = @exRateTreasuryId
END
ELSE
BEGIN
SET @modType = 'Reject'
DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
END
UPDATE exRateTreasury SET
isUpdated = 'N'
WHERE exRateTreasuryId = @exRateTreasuryId
DELETE FROM @rateIdList WHERE exRateTreasuryId = @exRateTreasuryId
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Changes rejected successfully.', @exRateTreasuryId
END
ELSE IF @flag IN ('approve')
BEGIN
IF(ISNULL(@exRateTreasuryIds, '') = '')
BEGIN
EXEC proc_errorHandler 1, 'Please select the record(s) to approve', NULL
RETURN
END
BEGIN TRANSACTION
SET @sql = 'SELECT exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
INSERT @rateIdList
EXEC (@sql)
WHILE EXISTS(SELECT 'X' FROM @rateIdList)
BEGIN
SELECT TOP 1 @exRateTreasuryId = exRateTreasuryId FROM @rateIdList
IF EXISTS (SELECT 'X' FROM exRateTreasury WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
SET @modType = 'I'
ELSE
SELECT @modType = modType FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
IF @modType = 'I'
BEGIN --New record
INSERT INTO exRateTreasuryHistory(
exRateTreasuryId
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingValue,sharingType,pSharingValue,pSharingType
,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,tranType
,crossRate,crossRateOperation,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,toleranceOperation
,premium,crossRateFactor
,isActive,modType,modFor
,createdBy,createdDate,approvedBy,approvedDate
)
SELECT
exRateTreasuryId
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingValue,sharingType,pSharingValue,pSharingType
,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,tranType
,crossRate,crossRateOperation,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,toleranceOperation
,premium,crossRateFactor
,isActive,'I','T' --T - Treasury, O - Operation
,createdBy,createdDate,@user,@date
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
SET @exRateHistoryId = SCOPE_IDENTITY()
UPDATE exRateTreasury SET
premium = 0
,isActive = 'Y'
,approvedBy = @user
,approvedDate = @date
,exRateHistoryId = @exRateHistoryId
,isUpdated = 'N'
,isUpdatedOperation = 'Y'
WHERE exRateTreasuryId = @exRateTreasuryId
END
ELSE IF @modType = 'U'
BEGIN
INSERT INTO exRateTreasuryHistory(
exRateTreasuryId
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingValue,sharingType,pSharingValue,pSharingType
,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,tranType
,crossRate,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,crossRateFactor
,isActive,modType,modFor
,createdBy,createdDate,approvedBy,approvedDate
)
SELECT
mode.exRateTreasuryId
,mode.cRateId,mode.cCurrency,mode.cCountry,mode.cAgent,mode.cRateFactor,mode.cRate,mode.cMargin,mode.cHoMargin,mode.cAgentMargin
,mode.pRateId,mode.pCurrency,mode.pCountry,mode.pAgent,mode.pRateFactor,mode.pRate,mode.pMargin,mode.pHoMargin,mode.pAgentMargin
,mode.sharingValue,mode.sharingType,mode.pSharingValue,mode.pSharingType
,mode.toleranceOn,mode.agentTolMin,mode.agentTolMax,mode.customerTolMin,mode.customerTolMax
,mode.tranType
,mode.crossRate,mode.maxCrossRate,mode.agentCrossRateMargin,mode.customerRate,mode.tolerance,mode.crossRateFactor
,mode.isActive,mode.modType,'T'
,mode.createdBy,mode.createdDate,@user,GETDATE()
FROM exRateTreasuryMod mode WITH(NOLOCK)
INNER JOIN exRateTreasury main WITH(NOLOCK) ON mode.exRateTreasuryId = main.exRateTreasuryId
WHERE mode.exRateTreasuryId = @exRateTreasuryId
SET @exRateHistoryId = SCOPE_IDENTITY()
UPDATE main SET
main.cRateId = mode.cRateId
,main.cRate = mode.cRate
,main.cMargin = mode.cMargin
,main.cHoMargin = mode.cHoMargin
,main.cAgentMargin = mode.cAgentMargin
,main.pRateId = mode.pRateId
,main.pRate = mode.pRate
,main.pMargin = mode.pMargin
,main.pHoMargin = mode.pHoMargin
,main.pAgentMargin = mode.pAgentMargin
,main.sharingType = mode.sharingType
,main.sharingValue = mode.sharingValue
,main.toleranceOn = mode.toleranceOn
,main.agentTolMin = mode.agentTolMin
,main.agentTolMax = mode.agentTolMax
,main.customerTolMin = mode.customerTolMin
,main.customerTolMax = mode.customerTolMax
,main.maxCrossRate = mode.maxCrossRate
,main.crossRate = mode.crossRate
,main.agentCrossRateMargin = mode.agentCrossRateMargin
,main.customerRate = mode.customerRate
,main.tolerance = mode.tolerance
,main.isActive = mode.isActive
,main.modifiedBy = mode.createdBy
,main.modifiedDate = mode.createdDate
,main.approvedBy = @user
,main.approvedDate = @date
,main.exRateHistoryId = @exRateHistoryId
,main.isUpdated = 'N'
,main.isUpdatedOperation = 'Y'
FROM exRateTreasury main
INNER JOIN exRateTreasuryMod mode ON mode.exRateTreasuryId = main.exRateTreasuryId
WHERE mode.exRateTreasuryId = @exRateTreasuryId
END
ELSE IF @modType = 'D'
BEGIN
INSERT INTO exRateTreasuryHistory(
exRateTreasuryId
,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingValue,sharingType,pSharingValue,pSharingType
,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,tranType
,crossRate,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,crossRateFactor
,isActive,modType,modFor
,createdBy,createdDate,approvedBy,approvedDate
)
SELECT
mode.exRateTreasuryId
,mode.cRateId,mode.cCurrency,mode.cCountry,mode.cAgent,mode.cRateFactor,mode.cRate,mode.cMargin,mode.cHoMargin,mode.cAgentMargin
,mode.pRateId,mode.pCurrency,mode.pCountry,mode.pAgent,mode.pRateFactor,mode.pRate,mode.pMargin,mode.pHoMargin,mode.pAgentMargin
,mode.sharingValue,mode.sharingType,mode.pSharingValue,mode.pSharingType
,mode.toleranceOn,mode.agentTolMin,mode.agentTolMax,mode.customerTolMin,mode.customerTolMax
,mode.tranType
,mode.crossRate,mode.maxCrossRate,mode.agentCrossRateMargin,mode.customerRate,mode.tolerance,mode.crossRateFactor
,mode.isActive,mode.modType,'T'
,mode.createdBy,mode.createdDate,@user,@date
FROM exRateTreasuryMod mode WITH(NOLOCK)
INNER JOIN exRateTreasury main WITH(NOLOCK) ON mode.exRateTreasuryId = main.exRateTreasuryId
WHERE mode.exRateTreasuryId = @exRateTreasuryId
SET @exRateHistoryId = SCOPE_IDENTITY()
UPDATE exRateTreasury SET
isActive = 'N'
,modifiedDate = @date
,modifiedBy = @user
,isUpdated = 'N'
,isUpdatedOperation = 'Y'
,exRateHistoryId = @exRateHistoryId
WHERE exRateTreasuryId = @exRateTreasuryId
END
IF @modType IN ('U', 'D')
BEGIN
DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
END
SELECT @cCountry = NULL, @cAgent = NULL, @pRate = NULL, @pMargin = NULL, @pHoMargin = NULL, @pCountry = NULL, @pAgent = NULL, @pCurrency = NULL
SELECT
@cCountry = cCountry, @cAgent = cAgent, @pRate = pRate, @pMargin = pMargin
,@pHoMargin = pHoMargin, @pCountry = pCountry
,@pAgent = pAgent, @pCurrency = pCurrency
FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
--IF (@cCountry = 233 AND @cAgent = 4818) OR (@cCountry = 133 AND @cAgent = 4746)
--BEGIN
-- DECLARE @partnerExRate TABLE(id INT IDENTITY(1,1), cAgent INT, cost_payoutRate FLOAT, payout_countryName VARCHAR(100), payout_agent VARCHAR(10), pAgent INT, pCurrency VARCHAR(3))
-- DECLARE @cost_payoutRate FLOAT, @payout_agent VARCHAR(10)
-- SET @cost_payoutRate = ROUND((@pRate - ISNULL(@pMargin, 0) - ISNULL(@pHoMargin, 0)), 10)
-- SELECT @pCountryName = countryName FROM countryMaster WITH(NOLOCK) WHERE countryId = @pCountry
-- SET @payout_agent = NULL
-- SELECT @payout_agent = mapCodeInt FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
-- INSERT INTO @partnerExRate(cAgent, cost_payoutRate, payout_countryName, payout_agent, pAgent, pCurrency)
-- SELECT @cAgent, @cost_payoutRate, @pCountryName, @payout_agent, @pAgent, @pCurrency
-- IF @cCountry = 133 AND @cAgent = 4746
-- BEGIN
-- SELECT @exRateMsg = 'IME M, IME Nepal ExRate for 1 USD = ' + CAST(@cost_payoutRate AS VARCHAR) + ' NPR as of date ' + CONVERT(VARCHAR, GETDATE(), 109)
-- END
-- IF @cCountry = 233 AND @cAgent = 4818
-- BEGIN
-- SELECT @exRateMsg = 'IME UK, IME Nepal ExRate for 1 USD = ' + CAST(@cost_payoutRate AS VARCHAR) + ' NPR as of date ' + CONVERT(VARCHAR, GETDATE(), 109)
-- END
-- SELECT @cCountryName = countryName FROM countryMaster WITH(NOLOCK) WHERE countryId = @cCountry
-- EXEC proc_emailSmsHandler @flag = 'sms', @user = @user, @msg = @exRateMsg, @country = @cCountryName
--END
DELETE FROM @rateIdList WHERE exRateTreasuryId = @exRateTreasuryId
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Changes approved successfully.', @exRateTreasuryId
END
ELSE IF @flag = 'r' --Get Report
BEGIN
IF @sortBy = 'sendingCountry'
SET @sortBy = 'cCountryName,cAgentName,pCountryName,cBranchName,pAgentName'
ELSE IF @sortBy = 'receivingCountry'
SET @sortBy = 'pCountryName,cBranchName,pAgentName,cCountryName,cAgentName'
SET @sortOrder = ''
IF @cBranch IS NOT NULL
BEGIN
IF OBJECT_ID('tempdb..##tmpXRate') IS NOT NULL
DROP TABLE ##tmpXRate
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, 'Any')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, '[All]')
,cBranch = @cBranch
,cBranchName = (SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @cBranch)
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, '[All]')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,main.agentCrossRateMargin
,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
,main.tolerance
,premium = main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, '1900-01-01') THEN main.modifiedByOperation ELSE
ISNULL(main.modifiedBy,main.createdBy) END
,modifiedDate = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, '1900-01-01') THEN main.modifiedDateOperation ELSE
ISNULL(main.modifiedDate,main.createdDate) END
,main.approvedBy
,main.approvedDate
INTO ##tmpXRate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
WHERE cCountry = 133 AND cAgent = @cAgent AND main.approvedBy IS NOT NULL AND ISNULL(main.isActive, 'N') = 'Y'
ORDER BY pCountryName, pAgentName
UPDATE tmp SET
tmp.premium = erbw.premium
,tmp.modifiedBy = erbw.modifiedBy
,tmp.modifiedDate = erbw.modifiedDate
,tmp.approvedBy = erbw.modifiedBy
,tmp.approvedDate = erbw.modifiedDate
FROM ##tmpXRate tmp
INNER JOIN exRateBranchWise erbw ON tmp.exRateTreasuryId = erbw.exRateTreasuryId AND erbw.cBranch = @cBranch AND ISNULL(erbw.isActive, 'N') = 'Y'
SET @table = '(
SELECT * FROM ##tmpXRate
)x
'
END
ELSE
BEGIN
--SELECT * FROM exRateBranchWise
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,cBranch = NULL
,cBranchName = ''[All]''
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,main.agentCrossRateMargin
,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
,main.tolerance
,premium = main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, ''1900-01-01'') THEN main.modifiedByOperation ELSE
ISNULL(main.modifiedBy,main.createdBy) END
,modifiedDate = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, ''1900-01-01'') THEN main.modifiedDateOperation ELSE
ISNULL(main.modifiedDate,main.createdDate) END
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE ISNULL(main.isActive, ''N'') = ''Y''
'
/*
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,main.customerRate
,main.tolerance
,main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = ISNULL(main.modifiedBy,main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate,main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE 1 = 1
'
*/
SET @table = @table + ') x'
END
--PRINT (@table)
--RETURN
SET @sql_filter = ''
--SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
IF @isUpdated IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @cBranch IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cBranch = ' + CAST(@cBranch AS VARCHAR)
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
IF @tranType IS NOT NULL
SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
SET @select_field_list = '
exRateTreasuryId
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,cBranchName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,agentCrossRateMargin
,customerRate
,tolerance
,premium
,cost
,margin
,crossRateFactor
,isUpdated
,modifiedBy
,modifiedDate
,approvedBy
,approvedDate
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
IF OBJECT_ID('tempdb..##tmpXRate') IS NOT NULL
DROP TABLE ##tmpXRate
END
ELSE IF @flag = 'or' --Get Operation Report
BEGIN
IF @sortBy = 'sendingCountry'
SET @sortBy = 'cBranchName,pCountryName'
ELSE IF @sortBy = 'receivingCountry'
SET @sortBy = 'cBranchName,pCountryName'
SET @sortOrder = ''
IF @cBranch IS NOT NULL
BEGIN
IF OBJECT_ID('tempdb..##tmpRate') IS NOT NULL
DROP TABLE ##tmpRate
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, 'Any')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, '[All]')
,cBranch = @cBranch
,cBranchName = (SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @cBranch)
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, '[All]')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
,tolerance = ISNULL(main.toleranceOperation, main.tolerance)
,premium = main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = ISNULL(main.modifiedByOperation, main.approvedBy)
,modifiedDate = ISNULL(main.modifiedDateOperation, main.approvedDate)
,approvedBy = main.modifiedByOperation
,approvedDate = main.modifiedDateOperation
INTO ##tmpRate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
WHERE cCountry = 133 AND cAgent = dbo.FNAGetIMEAgentId() AND main.approvedBy IS NOT NULL AND ISNULL(main.isActive, 'N') = 'Y'
ORDER BY pCountryName, pAgentName
UPDATE tmp SET
tmp.premium = erbw.premium
,tmp.modifiedBy = erbw.modifiedBy
,tmp.modifiedDate = erbw.modifiedDate
,tmp.approvedBy = erbw.modifiedBy
,tmp.approvedDate = erbw.modifiedDate
FROM ##tmpRate tmp
INNER JOIN exRateBranchWise erbw ON tmp.exRateTreasuryId = erbw.exRateTreasuryId AND erbw.cBranch = @cBranch AND ISNULL(erbw.isActive, 'N') = 'Y'
SET @table = '(
SELECT * FROM ##tmpRate
)x
'
END
ELSE
BEGIN
--SELECT * FROM exRateBranchWise
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,cBranch = NULL
,cBranchName = ''[All]''
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
,main.tolerance
,premium = main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = ISNULL(main.modifiedByOperation, main.approvedBy)
,modifiedDate = ISNULL(main.modifiedDateOperation, main.approvedDate)
,approvedBy = main.modifiedByOperation
,approvedDate = main.modifiedDateOperation
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE ISNULL(main.isActive, ''N'') = ''Y''
'
/*
SET @table = '(
SELECT
main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''Any'')
,main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,main.cCurrency
,main.pCurrency
,main.cRateFactor
,main.pRateFactor
,main.cRate
,cMargin = ISNULL(main.cMargin, 0)
,cHoMargin = ISNULL(main.cHoMargin, 0)
,cAgentMargin = ISNULL(cAgentMargin, 0)
,main.pRate
,pMargin = ISNULL(main.pMargin, 0)
,pHoMargin = ISNULL(main.pHoMargin, 0)
,pAgentMargin = ISNULL(main.pAgentMargin, 0)
,sharingType
,sharingValue = ISNULL(main.sharingValue, 0)
,toleranceOn
,agentTolMin = ISNULL(main.agentTolMin, 0)
,agentTolMax = ISNULL(main.agentTolMax, 0)
,customerTolMin = ISNULL(main.customerTolMin, 0)
,customerTolMax = ISNULL(main.customerTolMax, 0)
,main.maxCrossRate
,main.crossRate
,main.customerRate
,main.tolerance
,main.premium
,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
,main.crossRateFactor
,main.isUpdated
,modifiedBy = ISNULL(main.modifiedBy,main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate,main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE 1 = 1
'
*/
SET @table = @table + ') x'
END
--PRINT (@table)
--RETURN
SET @sql_filter = ''
--SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
IF @isUpdated IS NOT NULL
SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
IF @cCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
IF @cCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
IF @cCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
IF @cAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
IF @cAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
IF @cBranch IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cBranch = ' + CAST(@cBranch AS VARCHAR)
IF @pCurrency IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
IF @pCountry IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
IF @pCountryName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
IF @pAgent IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
IF @pAgentName IS NOT NULL
SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
IF @tranType IS NOT NULL
SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
SET @select_field_list = '
exRateTreasuryId
,tranType
,cCountry
,cCountryName
,cCountryCode
,cAgent
,cAgentName
,cBranchName
,pCountry
,pCountryName
,pCountryCode
,pAgent
,pAgentName
,cCurrency
,pCurrency
,cRateFactor
,pRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,customerRate
,tolerance
,premium
,cost
,margin
,crossRateFactor
,isUpdated
,modifiedBy
,modifiedDate
,approvedBy
,approvedDate
'
--PRINT @table
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
IF OBJECT_ID('tempdb..##tmpRate') IS NOT NULL
DROP TABLE ##tmpRate
END
ELSE IF @flag = 'ms' --Modify Summary
BEGIN
INSERT INTO #exRateIdTemp
SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, 'All')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = main.cAgent
,cAgentName = ISNULL(cam.agentName, '[All]')
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = main.pAgent
,pAgentName = ISNULL(pam.agentName, '[All]')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cRateNew = mode.cRate
,cMargin = main.cMargin
,cMarginNew = mode.cMargin
,cHoMargin = main.cHoMargin
,cHoMarginNew = mode.cHoMargin
,cAgentMargin = main.cAgentMargin
,cAgentMarginNew = mode.cAgentMargin
,pRate = main.pRate
,pRateNew = mode.pRate
,pMargin = main.pMargin
,pMarginNew = mode.pMargin
,pHoMargin = main.pHoMargin
,pHoMarginNew = mode.pHoMargin
,pAgentMargin = main.pAgentMargin
,pAgentMarginNew = mode.pAgentMargin
,sharingType = main.sharingType
,sharingTypeNew = mode.sharingType
,sharingValue = main.sharingValue
,sharingValueNew = mode.sharingValue
,toleranceOn = main.toleranceOn
,toleranceOnNew = mode.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMinNew = mode.agentTolMin
,agentTolMax = main.agentTolMax
,agentTolMaxNew = mode.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMinNew = mode.customerTolMin
,customerTolMax = main.customerTolMax
,customerTolMaxNew = mode.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,maxCrossRateNew = mode.maxCrossRate
,crossRateNew = mode.crossRate
,customerRateNew = mode.customerRate
,toleranceNew = mode.tolerance
,agentCrossRateMargin = main.agentCrossRateMargin
,agentCrossRateMarginNew = mode.agentCrossRateMargin
,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,costNew = ROUND(mode.pRate/(mode.crossRate + ISNULL(mode.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
,marginNew = ROUND(mode.pRate/(mode.crossRate + ISNULL(mode.tolerance, 0)) - mode.cRate, crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
,statusNew = CASE WHEN ISNULL(mode.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
,modType = CASE WHEN main.approvedBy IS NULL THEN 'Insert' ELSE 'Update' END
,main.createdBy
,main.createdDate
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN 'Y' ELSE 'N' END
FROM exRateTreasury main WITH(NOLOCK)
INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
ORDER BY cCountryName, cAgentName, pCountryName, pAgentName
--AND ISNULL(main.isUpdated, ''N'') <> ''Y''
END
ELSE IF @flag = 'as' --Approve Summary
BEGIN
INSERT INTO #exRateIdTemp
SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, 'All')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = main.cAgent
,cAgentName = ISNULL(cam.agentName, 'All')
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = main.pAgent
,pAgentName = ISNULL(pam.agentName, 'All')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cMargin = main.cMargin
,cHoMargin = main.cHoMargin
,cAgentMargin = main.cAgentMargin
,pRate = main.pRate
,pMargin = main.pMargin
,pHoMargin = main.pHoMargin
,pAgentMargin = main.pAgentMargin
,sharingType = main.sharingType
,sharingValue = main.sharingValue
,toleranceOn = main.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMax = main.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMax = main.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,agentCrossRateMargin = main.agentCrossRateMargin
,customerRate = main.customerRate
,tolerance = main.tolerance
,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
,modType = CASE WHEN main.approvedBy IS NULL THEN 'I' ELSE 'U' END
,main.createdBy
,main.createdDate
,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
ORDER BY cCountryName, cAgent, pCountryName, pAgent
--AND ISNULL(main.isUpdated, ''N'') <> ''Y''
END
ELSE IF @flag = 'ai' --Set Active Inactive
BEGIN
IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND createdBy <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
RETURN
END
INSERT INTO #exRateIdTemp
SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
BEGIN TRANSACTION
--1. Set Active/Inactive to unapproved main table record
UPDATE exRateTreasury SET
isActive = @isActive
,isUpdated = 'Y'
,modifiedBy = @user
,modifiedDate = GETDATE()
FROM exRateTreasury ert
INNER JOIN #exRateIdTemp erit ON ert.exRateTreasuryId = erit.exRateTreasuryId AND ert.approvedBy IS NULL
--2. Delete From Mod table
DELETE FROM exRateTreasuryMod
FROM exRateTreasuryMod ertm
INNER JOIN #exRateIdTemp erit ON ertm.exRateTreasuryId = erit.exRateTreasuryId
--3. Insert changes to Mod table
INSERT INTO exRateTreasuryMod(
exRateTreasuryId
,tranType
,cRateId
,cCurrency
,cCountry
,cAgent
,cRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRateId
,pCurrency
,pCountry
,pAgent
,pRateFactor
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,customerRate
,tolerance
,isActive
,createdBy
,createdDate
,modType
)
SELECT
ert.exRateTreasuryId
,tranType
,cRateId
,cCurrency
,cCountry
,cAgent
,cRateFactor
,cRate
,cMargin
,cHoMargin
,cAgentMargin
,pRateId
,pCurrency
,pCountry
,pAgent
,pRateFactor
,pRate
,pMargin
,pHoMargin
,pAgentMargin
,sharingType
,sharingValue
,toleranceOn
,agentTolMin
,agentTolMax
,customerTolMin
,customerTolMax
,maxCrossRate
,crossRate
,customerRate
,tolerance
,@isActive
,@user
,GETDATE()
,'U'
FROM exRateTreasury ert WITH(NOLOCK)
INNER JOIN #exRateIdTemp erit WITH(NOLOCK) ON ert.exRateTreasuryId = erit.exRateTreasuryId AND approvedBy IS NOT NULL
UPDATE exRateTreasury SET
isUpdated = 'Y'
FROM exRateTreasury ert
INNER JOIN #exRateIdTemp erit ON ert.exRateTreasuryId = erit.exRateTreasuryId
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
IF @isActive = 'Y'
SET @msg = 'Record(s) set active'
ELSE
SET @msg = 'Record(s) set inactive'
EXEC proc_errorHandler 0, @msg, @exRateTreasuryIds
END
/*
ELSE IF @flag = 'cl' --Copy List
BEGIN
--EXEC proc_exRateTreasury @flag = 'cl', @cCountry = 133, @applyFor = 'C'
SET @table = '
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = main.cAgent
,cAgentName = ISNULL(cam.agentName, ''All'')
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = main.pAgent
,pAgentName = ISNULL(pam.agentName, ''All'')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cMargin = main.cMargin
,cHoMargin = main.cHoMargin
,cAgentMargin = main.cAgentMargin
,pRate = main.pRate
,pMargin = main.pMargin
,pHoMargin = main.pHoMargin
,pAgentMargin = main.pAgentMargin
,sharingType = main.sharingType
,sharingValue = main.sharingValue
,toleranceOn = main.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMax = main.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMax = main.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
,main.createdBy
,main.createdDate
,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
'
IF @cCountry IS NOT NULL
SET @table = @table + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR)
IF @applyFor = 'C'
BEGIN
IF @cAgent IS NULL AND @cCountry IS NOT NULL
SET @table = @table + ' AND cAgent IS NULL'
ELSE IF @cAgent IS NULL AND @cCountry IS NULL
SET @table = @table
ELSE
SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
IF @pAgent IS NOT NULL
SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
END
ELSE
BEGIN
IF @cAgent IS NOT NULL
SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
IF @pAgent IS NULL AND @pCountry IS NOT NULL
SET @table = @table + ' AND pAgent IS NULL'
ELSE IF @pAgent IS NULL AND @pCountry IS NULL
SET @table = @table
ELSE IF @pAgent IS NOT NULL
SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
END
IF @pCountry IS NOT NULL
SET @table = @table + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR)
SET @table = @table + (CASE WHEN @applyFor = 'C' THEN ' ORDER BY pCountryName, pAgent, cCountryName, cAgent' ELSE ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END)
EXEC(@table)
--PRINT(@table)
END
*/
ELSE IF @flag = 'cl' --Copy List
BEGIN
--EXEC proc_exRateTreasury @flag = 'cl', @cCountry = 133, @applyFor = 'C'
DECLARE @applyAgentName VARCHAR(100)
SELECT @applyAgent = agentId, @applyAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
IF @applyFor = 'c'
BEGIN
IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
BEGIN
SELECT @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
END
ELSE
BEGIN
SELECT @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE country = @cCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
END
--SELECT @applyAgent, @applyAgentName, @cRate, @cMargin
--RETURN
SET @table = '
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = ' + CAST(@applyAgent AS VARCHAR) + '
,cAgentName = ''' + @applyAgentName + '''
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = main.pAgent
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = ' + CAST(@cRate AS VARCHAR) + '
,cMargin = ' + CAST(@cMargin AS VARCHAR) + '
,cHoMargin = main.cHoMargin
,cAgentMargin = main.cAgentMargin
,pRate = main.pRate
,pMargin = main.pMargin
,pHoMargin = main.pHoMargin
,pAgentMargin = main.pAgentMargin
,sharingType = main.sharingType
,sharingValue = main.sharingValue
,toleranceOn = main.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMax = main.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMax = main.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - ' + CAST(@cRate AS VARCHAR) + ', crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
,main.createdBy
,main.createdDate
,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
'
END
ELSE
BEGIN
IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
BEGIN
SELECT @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
END
ELSE
BEGIN
SELECT @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE country = @pCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
END
--SELECT @applyAgent, @applyAgentName, @cRate, @cMargin
--RETURN
SET @table = '
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = main.cAgent
,cAgentName = ISNULL(cam.agentName, ''[All]'')
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = ' + CAST(@applyAgent AS VARCHAR) + '
,pAgentName = ISNULL(pam.agentName, ''[All]'')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cMargin = main.cMargin
,cHoMargin = main.cHoMargin
,cAgentMargin = main.cAgentMargin
,pRate = ' + CAST(@pRate AS VARCHAR) + '
,pMargin = ' + CAST(@pMargin AS VARCHAR) + '
,pHoMargin = main.pHoMargin
,pAgentMargin = main.pAgentMargin
,sharingType = main.sharingType
,sharingValue = main.sharingValue
,toleranceOn = main.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMax = main.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMax = main.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,cost = ROUND(' + CAST(@pRate AS VARCHAR) + '/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(' + CAST(@pRate AS VARCHAR) + '/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
,main.createdBy
,main.createdDate
,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
'
END
IF @cCountry IS NOT NULL
SET @table = @table + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR)
IF @applyFor = 'C'
BEGIN
IF @cAgent IS NULL AND @cCountry IS NOT NULL
SET @table = @table + ' AND cAgent IS NULL'
ELSE IF @cAgent IS NULL AND @cCountry IS NULL
SET @table = @table
ELSE
SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
IF @pAgent IS NOT NULL
SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
END
ELSE
BEGIN
IF @cAgent IS NOT NULL
SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
IF @pAgent IS NULL AND @pCountry IS NOT NULL
SET @table = @table + ' AND pAgent IS NULL'
ELSE IF @pAgent IS NULL AND @pCountry IS NULL
SET @table = @table
ELSE IF @pAgent IS NOT NULL
SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
END
IF @pCountry IS NOT NULL
SET @table = @table + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR)
SET @table = @table + (CASE WHEN @applyFor = 'C' THEN ' ORDER BY pCountryName, pAgent, cCountryName, cAgent' ELSE ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END)
PRINT(@table)
EXEC(@table)
END
ELSE IF @flag = 'copy' --Copy
BEGIN
INSERT INTO #exRateIdTemp
SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
BEGIN TRANSACTION
IF @applyFor = 'C'
BEGIN
SELECT @cCountry = agentCountryId FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
BEGIN
SELECT @cRateId = defExRateId, @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
END
ELSE
BEGIN
SELECT @cRateId = defExRateId, @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE country = @cCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
END
--1. Copy Selected value to temp table----------------------------------------------------------------------------
SELECT
tranType
,cRateId = @cRateId,cCountry,cAgent = @applyAgent,cCurrency,cRateFactor,cRate = @cRate,cMargin = @cMargin,cHoMargin,cAgentMargin
,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,crossRate = ROUND((pRate - pMargin - pHoMargin)/(@cRate + @cMargin + cHoMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,maxCrossRate = ROUND(pRate/@cRate, dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,customerRate = ROUND((pRate - pMargin - pHoMargin - pAgentMargin)/(@cRate + @cMargin + cHoMargin + cAgentMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,tolerance,crossRateFactor
,isUpdated,isUpdatedOperation
,createdBy = @user
,createdDate = GETDATE()
INTO #tempCAgentRate
FROM exRateTreasury main WITH(NOLOCK)
INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
--END-------------------------------------------------------------------------------------------------------------
--2. Delete already exist setting from temp table-----------------------------------------------------------------
DELETE FROM #tempCAgentRate
FROM #tempCAgentRate tmp
INNER JOIN exRateTreasury main
ON main.cCountry = tmp.cCountry AND main.cAgent = tmp.cAgent
AND main.pCountry = tmp.pCountry AND ISNULL(main.pAgent, 0) = ISNULL(tmp.pAgent, 0)
--END-------------------------------------------------------------------------------------------------------------
--3. Copy setting to main table from temp table-------------------------------------------------------------------
IF EXISTS(SELECT 'X' FROM #tempCAgentRate)
BEGIN
INSERT INTO exRateTreasury(
tranType
,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,crossRate,maxCrossRate,customerRate,tolerance,crossRateFactor
,isUpdated,isUpdatedOperation
,createdBy
,createdDate
)
SELECT * FROM #tempCAgentRate
END
--END-------------------------------------------------------------------------------------------------------------
END
ELSE IF @applyFor = 'P'
BEGIN
SELECT @pCountry = agentCountryId FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
BEGIN
SELECT @pRateId = defExRateId, @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
END
ELSE
BEGIN
SELECT @pRateId = defExRateId, @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
FROM defExRate def WITH(NOLOCK)
WHERE country = @pCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
END
--1. Copy Selected value to temp table----------------------------------------------------------------------------
SELECT
tranType
,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId = @pRateId,pCountry,pAgent = @applyAgent,pCurrency,pRateFactor,pRate = @pRate,pMargin = @pMargin,pHoMargin,pAgentMargin
,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,crossRate = ROUND((@pRate - @pMargin - pHoMargin)/(cRate + cMargin + cHoMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,maxCrossRate = ROUND(@pRate/cRate, dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,customerRate = ROUND((@pRate - @pMargin - pHoMargin - pAgentMargin)/(cRate + cMargin + cHoMargin + cAgentMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
,tolerance,crossRateFactor
,isUpdated,isUpdatedOperation
,createdBy = @user
,createdDate = GETDATE()
INTO #tempPAgentRate
FROM exRateTreasury main WITH(NOLOCK)
INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
--END-------------------------------------------------------------------------------------------------------------
--2. Delete already exist setting from temp table-----------------------------------------------------------------
DELETE FROM #tempPAgentRate
FROM #tempPAgentRate tmp
INNER JOIN exRateTreasury main
ON main.cCountry = tmp.cCountry AND ISNULL(main.cAgent, 0) = ISNULL(tmp.cAgent, 0)
AND main.pCountry = tmp.pCountry AND main.pAgent = tmp.pAgent
--END-------------------------------------------------------------------------------------------------------------
--3. Copy setting to main table from temp table-------------------------------------------------------------------
IF EXISTS(SELECT 'X' FROM #tempPAgentRate)
BEGIN
INSERT INTO exRateTreasury(
tranType
,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
,crossRate,maxCrossRate,customerRate,tolerance,crossRateFactor
,isUpdated,isUpdatedOperation
,createdBy
,createdDate
)
SELECT * FROM #tempPAgentRate
END
--END-------------------------------------------------------------------------------------------------------------
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
IF @applyFor = 'C'
BEGIN
IF NOT EXISTS(SELECT 'X' FROM #tempCAgentRate)
BEGIN
EXEC proc_errorHandler 1, 'Selected rate setting(s) already exist in the system', NULL
RETURN
END
END
ELSE IF @applyFor = 'P'
BEGIN
IF NOT EXISTS(SELECT 'X' FROM #tempPAgentRate)
BEGIN
EXEC proc_errorHandler 1, 'Selected rate setting(s) already exist in the system', NULL
RETURN
END
END
EXEC proc_errorHandler 0, 'Rate setting(s) applied successfully', NULL
END
ELSE IF @flag = 'cs' --Copy Summary
BEGIN
INSERT INTO #exRateIdTemp
SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
SET @table = '
SELECT
exRateTreasuryId = main.exRateTreasuryId
,tranType = ISNULL(tt.typeTitle, ''All'')
,cCountry = main.cCountry
,cCountryName = cc.countryName
,cCountryCode = cc.countryCode
,cAgent = main.cAgent
,cAgentName = ISNULL(cam.agentName, ''All'')
,pCountry = main.pCountry
,pCountryName = pc.countryName
,pCountryCode = pc.countryCode
,pAgent = main.pAgent
,pAgentName = ISNULL(pam.agentName, ''All'')
,cCurrency = main.cCurrency
,pCurrency = main.pCurrency
,cRateFactor = main.cRateFactor
,pRateFactor = main.pRateFactor
,cRate = main.cRate
,cMargin = main.cMargin
,cHoMargin = main.cHoMargin
,cAgentMargin = main.cAgentMargin
,pRate = main.pRate
,pMargin = main.pMargin
,pHoMargin = main.pHoMargin
,pAgentMargin = main.pAgentMargin
,sharingType = main.sharingType
,sharingValue = main.sharingValue
,toleranceOn = main.toleranceOn
,agentTolMin = main.agentTolMin
,agentTolMax = main.agentTolMax
,customerTolMin = main.customerTolMin
,customerTolMax = main.customerTolMax
,maxCrossRate = main.maxCrossRate
,crossRate = main.crossRate
,customerRate = main.customerRate
,tolerance = main.tolerance
,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
,main.createdBy
,main.createdDate
,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
,main.approvedBy
,main.approvedDate
FROM exRateTreasury main WITH(NOLOCK)
LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
WHERE DATEDIFF(S, main.createdDate, GETDATE()) < 15 AND main.approvedBy IS NULL AND ' + (CASE WHEN @applyFor = 'C' THEN ' main.cAgent = ' + CAST(@applyAgent AS VARCHAR) + ' ORDER BY pCountryName, pAgent, cCountryName, cAgent ' ELSE ' main.pAgent = ' +
CAST(@applyAgent AS VARCHAR) + ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END) + '
'
--PRINT @table
EXEC (@table)
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
DECLARE @errorMessage VARCHAR(MAX)
SET @errorMessage = ERROR_MESSAGE()
EXEC proc_errorHandler 1, @errorMessage, @exRateTreasuryId
END CATCH
GO