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
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
|