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

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_exRateTreasury] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_exRateTreasury]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_exRateTreasury] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[proc_exRateTreasury]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(30) = NULL
  14. ,@exRateTreasuryId VARCHAR(30) = NULL
  15. ,@exRateTreasuryIds VARCHAR(MAX) = NULL
  16. ,@defExRateId INT = NULL
  17. ,@tranType INT = NULL
  18. ,@cRateId INT = NULL
  19. ,@pRateId INT = NULL
  20. ,@cCountry INT = NULL
  21. ,@cAgent INT = NULL
  22. ,@pCountry INT = NULL
  23. ,@pAgent INT = NULL
  24. ,@cCurrency VARCHAR(3) = NULL
  25. ,@pCurrency VARCHAR(3) = NULL
  26. ,@cRateFactor CHAR(1) = NULL
  27. ,@pRateFactor CHAR(1) = NULL
  28. ,@cRate FLOAT = NULL
  29. ,@pRate FLOAT = NULL
  30. ,@cMargin FLOAT = NULL
  31. ,@cHoMargin FLOAT = NULL
  32. ,@cAgentMargin FLOAT = NULL
  33. ,@pMargin FLOAT = NULL
  34. ,@pHoMargin FLOAT = NULL
  35. ,@pAgentMargin FLOAT = NULL
  36. ,@sharingType CHAR(1) = NULL
  37. ,@sharingValue MONEY = NULL
  38. ,@toleranceOn CHAR(1) = NULL
  39. ,@agentTolMin FLOAT = NULL
  40. ,@agentTolMax FLOAT = NULL
  41. ,@customerTolMin FLOAT = NULL
  42. ,@customerTolMax FLOAT = NULL
  43. ,@maxCrossRate FLOAT = NULL
  44. ,@crossRate FLOAT = NULL
  45. ,@agentCrossRateMargin FLOAT = NULL
  46. ,@customerRate FLOAT = NULL
  47. ,@tolerance FLOAT = NULL
  48. ,@crossRateFactor CHAR(1) = NULL
  49. ,@hasChanged CHAR(1) = NULL
  50. ,@currency VARCHAR(3) = NULL
  51. ,@country INT = NULL
  52. ,@agent INT = NULL
  53. ,@rateType CHAR(1) = NULL
  54. ,@cBranch INT = NULL
  55. ,@cCountryName VARCHAR(100) = NULL
  56. ,@cAgentName VARCHAR(100) = NULL
  57. ,@pCountryName VARCHAR(100) = NULL
  58. ,@pAgentName VARCHAR(100) = NULL
  59. ,@isActive CHAR(1) = NULL
  60. ,@isUpdated CHAR(1) = NULL
  61. ,@applyFor CHAR(1) = NULL
  62. ,@applyAgent INT = NULL
  63. ,@xml XML = NULL
  64. ,@filterByPCountryOnly CHAR(1) = NULL
  65. ,@sortBy VARCHAR(100) = NULL
  66. ,@sortOrder VARCHAR(5) = NULL
  67. ,@pageSize INT = NULL
  68. ,@pageNumber INT = NULL
  69. AS
  70. SET NOCOUNT ON
  71. SET XACT_ABORT ON
  72. BEGIN TRY
  73. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  74. DECLARE
  75. @sql VARCHAR(MAX)
  76. ,@oldValue VARCHAR(MAX)
  77. ,@newValue VARCHAR(MAX)
  78. ,@module VARCHAR(10)
  79. ,@tableAlias VARCHAR(100)
  80. ,@logIdentifier VARCHAR(50)
  81. ,@logParamMod VARCHAR(100)
  82. ,@logParamMain VARCHAR(100)
  83. ,@table VARCHAR(MAX)
  84. ,@select_field_list VARCHAR(MAX)
  85. ,@extra_field_list VARCHAR(MAX)
  86. ,@sql_filter VARCHAR(MAX)
  87. ,@modType VARCHAR(6)
  88. ,@ApprovedFunctionId INT
  89. CREATE TABLE #exRateIdTemp(exRateTreasuryId INT)
  90. DECLARE @exRateHistoryId BIGINT, @date DATETIME = GETDATE()
  91. DECLARE @rateIdList TABLE(rowId INT IDENTITY(1,1), exRateTreasuryId INT)
  92. DECLARE @crossRateDecimalMask INT, @colMaskAd INT
  93. SELECT
  94. @logIdentifier = 'exRateTreasuryId'
  95. ,@logParamMain = 'exRateTreasury'
  96. ,@logParamMod = 'exRateTreasuryHistory'
  97. ,@module = '20'
  98. ,@tableAlias = 'Treasury Exchange Rate'
  99. ,@ApprovedFunctionId = 20111330
  100. DECLARE @hasRight CHAR(1)
  101. DECLARE @exRateMsg VARCHAR(MAX)
  102. DECLARE @cDefExRateId INT, @pDefExRateId INT, @errorMsg VARCHAR(200)
  103. DECLARE @cOffer FLOAT, @pOffer FLOAT, @cCustomerOffer FLOAT, @pCustomerOffer FLOAT
  104. IF @flag = 'cr' --Load Cost Rate according to Currency
  105. BEGIN
  106. SELECT @defExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @agent AND country = @country AND currency = @currency
  107. IF @defExRateId IS NULL
  108. 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
  109. IF @rateType = 'C'
  110. BEGIN
  111. SELECT
  112. costRate = cRate
  113. ,margin = cMargin
  114. ,factor
  115. ,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
  116. FROM defExRate WITH(NOLOCK)
  117. WHERE defExRateId = @defExRateId
  118. END
  119. ELSE IF @rateType = 'P'
  120. BEGIN
  121. SELECT
  122. costRate = pRate
  123. ,margin = pMargin
  124. ,factor
  125. ,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
  126. FROM defExRate WITH(NOLOCK)
  127. WHERE defExRateId = @defExRateId
  128. END
  129. END
  130. ELSE IF @flag = 'crdm' --Cross Rate Decimal Mask
  131. BEGIN
  132. SELECT dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
  133. END
  134. ELSE IF @flag IN ('s') --Load Grid Exchange Rate Treasury
  135. BEGIN
  136. IF @sortBy = 'sendingCountry'
  137. SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
  138. ELSE IF @sortBy = 'receivingCountry'
  139. SET @sortBy = 'pCountryName,pAgentName,cCountryName,cAgentName'
  140. SET @sortOrder = ''
  141. DECLARE @m VARCHAR(MAX)
  142. SET @m = '(
  143. SELECT
  144. exRateTreasuryId = main.exRateTreasuryId
  145. ,cRateId = main.cRateId
  146. ,cRateIdNew = mode.cRateId
  147. ,pRateId = main.pRateId
  148. ,pRateIdNew = mode.pRateId
  149. ,tranType = main.tranType
  150. ,cCountry = main.cCountry
  151. ,cAgent = main.cAgent
  152. ,pCountry = main.pCountry
  153. ,pAgent = main.pAgent
  154. ,cCurrency = main.cCurrency
  155. ,pCurrency = main.pCurrency
  156. ,cRateFactor = main.cRateFactor
  157. ,pRateFactor = main.pRateFactor
  158. ,cRate = main.cRate
  159. ,cRateNew = mode.cRate
  160. ,cMargin = main.cMargin
  161. ,cMarginNew = mode.cMargin
  162. ,cHoMargin = main.cHoMargin
  163. ,cHoMarginNew = mode.cHoMargin
  164. ,cAgentMargin = main.cAgentMargin
  165. ,cAgentMarginNew = mode.cAgentMargin
  166. ,pRate = main.pRate
  167. ,pRateNew = mode.pRate
  168. ,pMargin = main.pMargin
  169. ,pMarginNew = mode.pMargin
  170. ,pHoMargin = main.pHoMargin
  171. ,pHoMarginNew = mode.pHoMargin
  172. ,pAgentMargin = main.pAgentMargin
  173. ,pAgentMarginNew = mode.pAgentMargin
  174. ,sharingType = main.sharingType
  175. ,sharingTypeNew = mode.sharingType
  176. ,sharingValue = main.sharingValue
  177. ,sharingValueNew = mode.sharingValue
  178. ,toleranceOn = main.toleranceOn
  179. ,toleranceOnNew = mode.toleranceOn
  180. ,agentTolMin = main.agentTolMin
  181. ,agentTolMinNew = mode.agentTolMin
  182. ,agentTolMax = main.agentTolMax
  183. ,agentTolMaxNew = mode.agentTolMax
  184. ,customerTolMin = main.customerTolMin
  185. ,customerTolMinNew = mode.customerTolMin
  186. ,customerTolMax = main.customerTolMax
  187. ,customerTolMaxNew = mode.customerTolMax
  188. ,maxCrossRate = main.maxCrossRate
  189. ,maxCrossRateNew = mode.maxCrossRate
  190. ,crossRate = main.crossRate
  191. ,crossRateNew = mode.crossRate
  192. ,agentCrossRateMargin = main.agentCrossRateMargin
  193. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  194. ,customerRate = main.customerRate
  195. ,customerRateNew = mode.customerRate
  196. ,tolerance = main.tolerance
  197. ,toleranceNew = mode.tolerance
  198. ,crossRateFactor = main.crossRateFactor
  199. ,isActive = ISNULL(main.isActive, ''N'')
  200. ,isActiveNew = ISNULL(mode.isActive, ''N'')
  201. ,lastModifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  202. ,lastModifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  203. ,main.isUpdated
  204. ,main.createdBy
  205. ,main.createdDate
  206. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  207. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  208. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  209. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
  210. ,crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  211. FROM exRateTreasury main WITH(NOLOCK)
  212. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  213. WHERE (
  214. main.approvedBy IS NOT NULL
  215. OR main.createdBy = ''' + @user + '''
  216. )
  217. ) '
  218. SET @table = '(
  219. SELECT
  220. main.exRateTreasuryId
  221. ,main.cRateId
  222. ,main.cRateIdNew
  223. ,main.pRateId
  224. ,main.pRateIdNew
  225. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  226. ,main.cCountry
  227. ,cCountryName = cc.countryName
  228. ,cCountryCode = cc.countryCode
  229. ,cAgent = ISNULL(main.cAgent, 0)
  230. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  231. ,main.pCountry
  232. ,pCountryName = pc.countryName
  233. ,pCountryCode = pc.countryCode
  234. ,pAgent = ISNULL(main.pAgent, 0)
  235. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  236. ,main.cCurrency
  237. ,main.pCurrency
  238. ,main.cRateFactor
  239. ,main.pRateFactor
  240. ,main.cRate
  241. ,cRateNew
  242. ,cMargin = ISNULL(main.cMargin, 0)
  243. ,cMarginNew = ISNULL(main.cMarginNew, 0)
  244. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  245. ,cHoMarginNew = ISNULL(cHoMarginNew, 0)
  246. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  247. ,cAgentMarginNew = ISNULL(cAgentMarginNew, 0)
  248. ,main.pRate
  249. ,pRateNew
  250. ,pMargin = ISNULL(main.pMargin, 0)
  251. ,pMarginNew = ISNULL(main.pMarginNew, 0)
  252. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  253. ,pHoMarginNew = ISNULL(main.pHoMarginNew, 0)
  254. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  255. ,pAgentMarginNew = ISNULL(main.pAgentMarginNew, 0)
  256. ,sharingType
  257. ,sharingTypeNew
  258. ,sharingValue = ISNULL(main.sharingValue, 0)
  259. ,sharingValueNew = ISNULL(main.sharingValueNew, 0)
  260. ,toleranceOn
  261. ,toleranceOnNew
  262. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  263. ,agentTolMinNew = ISNULL(main.agentTolMinNew, 0)
  264. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  265. ,agentTolMaxNew = ISNULL(main.agentTolMaxNew, 0)
  266. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  267. ,customerTolMinNew = ISNULL(main.customerTolMinNew, 0)
  268. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  269. ,customerTolMaxNew = ISNULL(main.customerTolMaxNew, 0)
  270. ,main.maxCrossRate
  271. ,maxCrossRateNew
  272. ,main.crossRate
  273. ,crossRateNew
  274. ,main.agentCrossRateMargin
  275. ,main.agentCrossRateMarginNew
  276. ,main.customerRate
  277. ,main.customerRateNew
  278. ,main.tolerance
  279. ,toleranceNew
  280. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  281. ,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
  282. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  283. ,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
  284. ,main.crossRateFactor
  285. ,status = CASE WHEN main.isActive = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  286. ,statusNew = CASE WHEN main.isActiveNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  287. ,main.isUpdated
  288. ,cRateMaskMulBd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END, 6)
  289. ,cRateMaskMulAd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END, 6)
  290. ,cMin = ISNULL(crm.cMin, 0)
  291. ,cMax = ISNULL(crm.cMax, 0)
  292. ,pRateMaskMulBd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END, 6)
  293. ,pRateMaskMulAd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END, 6)
  294. ,pMin = ISNULL(prm.pMin, 0)
  295. ,pMax = ISNULL(prm.pMax, 0)
  296. ,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  297. ,main.lastModifiedBy
  298. ,main.lastModifiedDate
  299. ,main.modifiedBy
  300. ,main.hasChanged
  301. ,main.isActive
  302. ,main.modType
  303. FROM ' + @m + ' main
  304. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  305. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  306. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  307. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  308. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  309. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  310. LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
  311. WHERE 1 = 1
  312. '
  313. SET @table = @table + ') x'
  314. SET @sql_filter = ''
  315. IF @defExRateId IS NOT NULL
  316. SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@defExRateId AS VARCHAR) + ' OR pRateId = ' + CAST(@defExRateId AS VARCHAR) + ')'
  317. IF @cRateId IS NOT NULL
  318. SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@cRateId AS VARCHAR) + ')'
  319. IF @pRateId IS NOT NULL
  320. SET @sql_filter = @sql_filter + ' AND (pRateId = ' + CAST(@pRateId AS VARCHAR) + ')'
  321. IF @hasChanged IS NOT NULL
  322. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged + ''''
  323. IF @isUpdated IS NOT NULL
  324. SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
  325. IF @isActive IS NOT NULL
  326. SET @sql_filter = @sql_filter + ' AND ISNULL(isActive, ''N'') = ''' + @isActive + ''''
  327. IF @cCurrency IS NOT NULL
  328. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  329. IF @cCountry IS NOT NULL
  330. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  331. IF @cCountryName IS NOT NULL
  332. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  333. IF @cAgent IS NOT NULL
  334. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  335. IF @cAgentName IS NOT NULL
  336. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  337. IF @pCurrency IS NOT NULL
  338. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  339. IF @pCountry IS NOT NULL
  340. BEGIN
  341. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  342. IF ISNULL(@filterByPCountryOnly, 'N') = 'Y'
  343. SET @sql_filter = @sql_filter + ' AND pAgent = 0'
  344. END
  345. IF @pCountryName IS NOT NULL
  346. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  347. IF @pAgent IS NOT NULL
  348. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  349. IF @pAgentName IS NOT NULL
  350. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  351. IF @tranType IS NOT NULL
  352. SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
  353. --PRINT(@sql_filter)
  354. SET @select_field_list = '
  355. exRateTreasuryId
  356. ,cRateId
  357. ,cRateIdNew
  358. ,pRateId
  359. ,pRateIdNew
  360. ,tranType
  361. ,cCountry
  362. ,cCountryName
  363. ,cCountryCode
  364. ,cAgent
  365. ,cAgentName
  366. ,pCountry
  367. ,pCountryName
  368. ,pCountryCode
  369. ,pAgent
  370. ,pAgentName
  371. ,cCurrency
  372. ,pCurrency
  373. ,cRateFactor
  374. ,pRateFactor
  375. ,cRate
  376. ,cRateNew
  377. ,cMargin
  378. ,cMarginNew
  379. ,cHoMargin
  380. ,cHoMarginNew
  381. ,cAgentMargin
  382. ,cAgentMarginNew
  383. ,pRate
  384. ,pRateNew
  385. ,pMargin
  386. ,pMarginNew
  387. ,pHoMargin
  388. ,pHoMarginNew
  389. ,pAgentMargin
  390. ,pAgentMarginNew
  391. ,sharingType
  392. ,sharingTypeNew
  393. ,sharingValue
  394. ,sharingValueNew
  395. ,toleranceOn
  396. ,toleranceOnNew
  397. ,agentTolMin
  398. ,agentTolMinNew
  399. ,agentTolMax
  400. ,agentTolMaxNew
  401. ,customerTolMin
  402. ,customerTolMinNew
  403. ,customerTolMax
  404. ,customerTolMaxNew
  405. ,maxCrossRate
  406. ,maxCrossRateNew
  407. ,crossRate
  408. ,crossRateNew
  409. ,agentCrossRateMargin
  410. ,agentCrossRateMarginNew
  411. ,customerRate
  412. ,customerRateNew
  413. ,tolerance
  414. ,toleranceNew
  415. ,cost
  416. ,costNew
  417. ,margin
  418. ,marginNew
  419. ,crossRateFactor
  420. ,status
  421. ,statusNew
  422. ,isUpdated
  423. ,cRateMaskMulBd
  424. ,cRateMaskMulAd
  425. ,cMin
  426. ,cMax
  427. ,pRateMaskMulBd
  428. ,pRateMaskMulAd
  429. ,pMin
  430. ,pMax
  431. ,crossRateMaskAd
  432. ,lastModifiedBy
  433. ,lastModifiedDate
  434. ,modifiedBy
  435. ,hasChanged
  436. ,modType
  437. '
  438. PRINT @table
  439. EXEC dbo.proc_paging
  440. @table
  441. ,@sql_filter
  442. ,@select_field_list
  443. ,@extra_field_list
  444. ,@sortBy
  445. ,@sortOrder
  446. ,@pageSize
  447. ,@pageNumber
  448. END
  449. ELSE IF @flag IN ('s2') --Load Grid After Cost Change
  450. BEGIN
  451. IF @sortBy = 'sendingCountry'
  452. SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
  453. ELSE IF @sortBy = 'receivingCountry'
  454. SET @sortBy = 'pCountryName,pAgentName,cCountryName,cAgentName'
  455. SET @sortOrder = ''
  456. SET @m = '(
  457. SELECT
  458. exRateTreasuryId = main.exRateTreasuryId
  459. ,cRateId = main.cRateId
  460. ,cRateIdNew = mode.cRateId
  461. ,pRateId = main.pRateId
  462. ,pRateIdNew = mode.pRateId
  463. ,tranType = main.tranType
  464. ,cCountry = main.cCountry
  465. ,cAgent = main.cAgent
  466. ,pCountry = main.pCountry
  467. ,pAgent = main.pAgent
  468. ,cCurrency = main.cCurrency
  469. ,pCurrency = main.pCurrency
  470. ,cRateFactor = main.cRateFactor
  471. ,pRateFactor = main.pRateFactor
  472. ,cRate = main.cRate
  473. ,cRateNew = mode.cRate
  474. ,cMargin = main.cMargin
  475. ,cMarginNew = mode.cMargin
  476. ,cHoMargin = main.cHoMargin
  477. ,cHoMarginNew = mode.cHoMargin
  478. ,cAgentMargin = main.cAgentMargin
  479. ,cAgentMarginNew = mode.cAgentMargin
  480. ,pRate = main.pRate
  481. ,pRateNew = mode.pRate
  482. ,pMargin = main.pMargin
  483. ,pMarginNew = mode.pMargin
  484. ,pHoMargin = main.pHoMargin
  485. ,pHoMarginNew = mode.pHoMargin
  486. ,pAgentMargin = main.pAgentMargin
  487. ,pAgentMarginNew = mode.pAgentMargin
  488. ,sharingType = main.sharingType
  489. ,sharingTypeNew = mode.sharingType
  490. ,sharingValue = main.sharingValue
  491. ,sharingValueNew = mode.sharingValue
  492. ,toleranceOn = main.toleranceOn
  493. ,toleranceOnNew = mode.toleranceOn
  494. ,agentTolMin = main.agentTolMin
  495. ,agentTolMinNew = mode.agentTolMin
  496. ,agentTolMax = main.agentTolMax
  497. ,agentTolMaxNew = mode.agentTolMax
  498. ,customerTolMin = main.customerTolMin
  499. ,customerTolMinNew = mode.customerTolMin
  500. ,customerTolMax = main.customerTolMax
  501. ,customerTolMaxNew = mode.customerTolMax
  502. ,maxCrossRate = main.maxCrossRate
  503. ,maxCrossRateNew = mode.maxCrossRate
  504. ,crossRate = main.crossRate
  505. ,crossRateNew = mode.crossRate
  506. ,agentCrossRateMargin = main.agentCrossRateMargin
  507. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  508. ,customerRate = main.customerRate
  509. ,customerRateNew = mode.customerRate
  510. ,tolerance = main.tolerance
  511. ,toleranceNew = mode.tolerance
  512. ,crossRateFactor = main.crossRateFactor
  513. ,isActive = ISNULL(main.isActive, ''N'')
  514. ,isActiveNew = ISNULL(mode.isActive, ''N'')
  515. ,main.isUpdated
  516. ,main.createdBy
  517. ,main.createdDate
  518. ,lastModifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  519. ,lastModifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  520. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  521. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  522. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  523. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
  524. ,crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  525. FROM exRateTreasury main WITH(NOLOCK)
  526. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  527. WHERE (
  528. main.approvedBy IS NOT NULL
  529. OR main.createdBy = ''' + @user + '''
  530. )
  531. ) '
  532. SET @table = '(
  533. SELECT
  534. main.exRateTreasuryId
  535. ,main.cRateId
  536. ,main.cRateIdNew
  537. ,main.pRateId
  538. ,main.pRateIdNew
  539. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  540. ,main.cCountry
  541. ,cCountryName = cc.countryName
  542. ,cCountryCode = cc.countryCode
  543. ,cAgent = ISNULL(main.cAgent, 0)
  544. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  545. ,main.pCountry
  546. ,pCountryName = pc.countryName
  547. ,pCountryCode = pc.countryCode
  548. ,pAgent = ISNULL(main.pAgent, 0)
  549. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  550. ,main.cCurrency
  551. ,main.pCurrency
  552. ,main.cRateFactor
  553. ,main.pRateFactor
  554. ,main.cRate
  555. ,cRateNew
  556. ,cMargin = ISNULL(main.cMargin, 0)
  557. ,cMarginNew = ISNULL(main.cMarginNew, 0)
  558. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  559. ,cHoMarginNew = ISNULL(cHoMarginNew, 0)
  560. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  561. ,cAgentMarginNew = ISNULL(cAgentMarginNew, 0)
  562. ,main.pRate
  563. ,pRateNew
  564. ,pMargin = ISNULL(main.pMargin, 0)
  565. ,pMarginNew = ISNULL(main.pMarginNew, 0)
  566. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  567. ,pHoMarginNew = ISNULL(main.pHoMarginNew, 0)
  568. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  569. ,pAgentMarginNew = ISNULL(main.pAgentMarginNew, 0)
  570. ,sharingType
  571. ,sharingTypeNew
  572. ,sharingValue = ISNULL(main.sharingValue, 0)
  573. ,sharingValueNew = ISNULL(main.sharingValueNew, 0)
  574. ,toleranceOn
  575. ,toleranceOnNew
  576. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  577. ,agentTolMinNew = ISNULL(main.agentTolMinNew, 0)
  578. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  579. ,agentTolMaxNew = ISNULL(main.agentTolMaxNew, 0)
  580. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  581. ,customerTolMinNew = ISNULL(main.customerTolMinNew, 0)
  582. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  583. ,customerTolMaxNew = ISNULL(main.customerTolMaxNew, 0)
  584. ,main.maxCrossRate
  585. ,maxCrossRateNew
  586. ,main.crossRate
  587. ,crossRateNew
  588. ,main.agentCrossRateMargin
  589. ,main.agentCrossRateMarginNew
  590. ,main.customerRate
  591. ,main.customerRateNew
  592. ,main.tolerance
  593. ,toleranceNew
  594. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  595. ,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
  596. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  597. ,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
  598. ,main.crossRateFactor
  599. ,status = CASE WHEN main.isActive = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  600. ,statusNew = CASE WHEN main.isActiveNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  601. ,main.isUpdated
  602. ,cRateMaskMulBd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END, 6)
  603. ,cRateMaskMulAd = ISNULL(CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END, 6)
  604. ,cMin = ISNULL(crm.cMin, 0)
  605. ,cMax = ISNULL(crm.cMax, 0)
  606. ,pRateMaskMulBd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END, 6)
  607. ,pRateMaskMulAd = ISNULL(CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END, 6)
  608. ,pMin = ISNULL(prm.pMin, 0)
  609. ,pMax = ISNULL(prm.pMax, 0)
  610. ,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  611. ,main.modifiedBy
  612. ,lastModifiedBy
  613. ,lastModifiedDate
  614. ,main.hasChanged
  615. ,main.isActive
  616. ,main.modType
  617. FROM ' + @m + ' main
  618. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  619. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  620. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  621. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  622. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  623. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  624. LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
  625. WHERE 1 = 1
  626. '
  627. SET @table = @table + ') x'
  628. SET @sql_filter = ''
  629. IF @defExRateId IS NOT NULL
  630. SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@defExRateId AS VARCHAR) + ' OR pRateId = ' + CAST(@defExRateId AS VARCHAR) + ')'
  631. IF @cRateId IS NOT NULL
  632. SET @sql_filter = @sql_filter + ' AND (cRateId = ' + CAST(@cRateId AS VARCHAR) + ')'
  633. IF @pRateId IS NOT NULL
  634. SET @sql_filter = @sql_filter + ' AND (pRateId = ' + CAST(@pRateId AS VARCHAR) + ')'
  635. IF @hasChanged IS NOT NULL
  636. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged + ''''
  637. IF @isUpdated IS NOT NULL
  638. SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
  639. IF @isActive IS NOT NULL
  640. SET @sql_filter = @sql_filter + ' AND ISNULL(isActive, ''N'') = ''' + @isActive + ''''
  641. SET @select_field_list = '
  642. exRateTreasuryId
  643. ,cRateId
  644. ,cRateIdNew
  645. ,pRateId
  646. ,pRateIdNew
  647. ,tranType
  648. ,cCountry
  649. ,cCountryName
  650. ,cCountryCode
  651. ,cAgent
  652. ,cAgentName
  653. ,pCountry
  654. ,pCountryName
  655. ,pCountryCode
  656. ,pAgent
  657. ,pAgentName
  658. ,cCurrency
  659. ,pCurrency
  660. ,cRateFactor
  661. ,pRateFactor
  662. ,cRate
  663. ,cRateNew
  664. ,cMargin
  665. ,cMarginNew
  666. ,cHoMargin
  667. ,cHoMarginNew
  668. ,cAgentMargin
  669. ,cAgentMarginNew
  670. ,pRate
  671. ,pRateNew
  672. ,pMargin
  673. ,pMarginNew
  674. ,pHoMargin
  675. ,pHoMarginNew
  676. ,pAgentMargin
  677. ,pAgentMarginNew
  678. ,sharingType
  679. ,sharingTypeNew
  680. ,sharingValue
  681. ,sharingValueNew
  682. ,toleranceOn
  683. ,toleranceOnNew
  684. ,agentTolMin
  685. ,agentTolMinNew
  686. ,agentTolMax
  687. ,agentTolMaxNew
  688. ,customerTolMin
  689. ,customerTolMinNew
  690. ,customerTolMax
  691. ,customerTolMaxNew
  692. ,maxCrossRate
  693. ,maxCrossRateNew
  694. ,crossRate
  695. ,crossRateNew
  696. ,agentCrossRateMargin
  697. ,agentCrossRateMarginNew
  698. ,customerRate
  699. ,customerRateNew
  700. ,tolerance
  701. ,toleranceNew
  702. ,cost
  703. ,costNew
  704. ,margin
  705. ,marginNew
  706. ,crossRateFactor
  707. ,status
  708. ,statusNew
  709. ,isUpdated
  710. ,cRateMaskMulBd
  711. ,cRateMaskMulAd
  712. ,cMin
  713. ,cMax
  714. ,pRateMaskMulBd
  715. ,pRateMaskMulAd
  716. ,pMin
  717. ,pMax
  718. ,crossRateMaskAd
  719. ,modifiedBy
  720. ,lastModifiedBy
  721. ,lastModifiedDate
  722. ,hasChanged
  723. ,modType
  724. '
  725. --PRINT @table
  726. EXEC dbo.proc_paging
  727. @table
  728. ,@sql_filter
  729. ,@select_field_list
  730. ,@extra_field_list
  731. ,@sortBy
  732. ,@sortOrder
  733. ,@pageSize
  734. ,@pageNumber
  735. END
  736. ELSE IF @flag IN ('m') --Approve List
  737. BEGIN
  738. --IF @sortBy IS NULL
  739. SET @sortBy = 'modifiedDate,cCountryName,cAgentName,pCountryName,pAgentName'
  740. --IF @sortOrder IS NULL
  741. SET @sortOrder = ''
  742. SET @m = '(
  743. SELECT
  744. exRateTreasuryId = main.exRateTreasuryId
  745. ,tranType = main.tranType
  746. ,cCountry = main.cCountry
  747. ,cAgent = main.cAgent
  748. ,pCountry = main.pCountry
  749. ,pAgent = main.pAgent
  750. ,cCurrency = main.cCurrency
  751. ,pCurrency = main.pCurrency
  752. ,cRateFactor = main.cRateFactor
  753. ,pRateFactor = main.pRateFactor
  754. ,cRate = main.cRate
  755. ,cRateNew = mode.cRate
  756. ,cMargin = main.cMargin
  757. ,cMarginNew = mode.cMargin
  758. ,cHoMargin = main.cHoMargin
  759. ,cHoMarginNew = mode.cHoMargin
  760. ,cAgentMargin = main.cAgentMargin
  761. ,cAgentMarginNew = mode.cAgentMargin
  762. ,pRate = main.pRate
  763. ,pRateNew = mode.pRate
  764. ,pMargin = main.pMargin
  765. ,pMarginNew = mode.pMargin
  766. ,pHoMargin = main.pHoMargin
  767. ,pHoMarginNew = mode.pHoMargin
  768. ,pAgentMargin = main.pAgentMargin
  769. ,pAgentMarginNew = mode.pAgentMargin
  770. ,sharingType = main.sharingType
  771. ,sharingTypeNew = mode.sharingType
  772. ,sharingValue = main.sharingValue
  773. ,sharingValueNew = mode.sharingValue
  774. ,toleranceOn = main.toleranceOn
  775. ,toleranceOnNew = mode.toleranceOn
  776. ,agentTolMin = main.agentTolMin
  777. ,agentTolMinNew = mode.agentTolMin
  778. ,agentTolMax = main.agentTolMax
  779. ,agentTolMaxNew = mode.agentTolMax
  780. ,customerTolMin = main.customerTolMin
  781. ,customerTolMinNew = mode.customerTolMin
  782. ,customerTolMax = main.customerTolMax
  783. ,customerTolMaxNew = mode.customerTolMax
  784. ,maxCrossRate = main.maxCrossRate
  785. ,crossRate = main.crossRate
  786. ,agentCrossRateMargin = main.agentCrossRateMargin
  787. ,customerRate = main.customerRate
  788. ,tolerance = main.tolerance
  789. ,maxCrossRateNew = mode.maxCrossRate
  790. ,crossRateNew = mode.crossRate
  791. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  792. ,customerRateNew = mode.customerRate
  793. ,toleranceNew = mode.tolerance
  794. ,status = ISNULL(main.isActive, ''N'')
  795. ,statusNew = ISNULL(mode.isActive, ''N'')
  796. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
  797. ,main.createdBy
  798. ,main.createdDate
  799. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  800. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  801. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  802. FROM exRateTreasury main WITH(NOLOCK)
  803. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  804. --WHERE (
  805. -- main.approvedBy IS NOT NULL
  806. -- OR main.createdBy = ''' + @user + '''
  807. -- )
  808. --AND ISNULL(main.isUpdated, ''N'') <> ''Y''
  809. ) '
  810. SET @table = '(
  811. SELECT
  812. main.exRateTreasuryId
  813. ,tranType = ISNULL(tt.typeTitle, ''All'')
  814. ,main.cCountry
  815. ,cCountryName = cc.countryName
  816. ,cCountryCode = cc.countryCode
  817. ,main.cAgent
  818. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  819. ,main.pCountry
  820. ,pCountryName = pc.countryName
  821. ,pCountryCode = pc.countryCode
  822. ,main.pAgent
  823. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  824. ,main.cCurrency
  825. ,main.pCurrency
  826. ,main.cRateFactor
  827. ,main.pRateFactor
  828. ,main.cRate
  829. ,main.cRateNew
  830. ,main.pRate
  831. ,main.pRateNew
  832. ,main.cMargin
  833. ,main.cMarginNew
  834. ,pMargin = main.pMargin
  835. ,main.pMarginNew
  836. ,main.cHoMargin
  837. ,main.cHoMarginNew
  838. ,main.cAgentMargin
  839. ,main.cAgentMarginNew
  840. ,main.pHoMargin
  841. ,pHoMarginNew = main.pHoMarginNew
  842. ,main.pAgentMargin
  843. ,main.pAgentMarginNew
  844. ,main.sharingType
  845. ,main.sharingTypeNew
  846. ,main.sharingValue
  847. ,main.sharingValueNew
  848. ,main.toleranceOn
  849. ,main.toleranceOnNew
  850. ,main.agentTolMin
  851. ,main.agentTolMinNew
  852. ,main.agentTolMax
  853. ,main.agentTolMaxNew
  854. ,main.customerTolMin
  855. ,main.customerTolMinNew
  856. ,main.customerTolMax
  857. ,main.customerTolMaxNew
  858. ,main.maxCrossRate
  859. ,main.crossRate
  860. ,main.agentCrossRateMargin
  861. ,main.customerRate
  862. ,main.tolerance
  863. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  864. ,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
  865. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  866. ,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
  867. ,main.maxCrossRateNew
  868. ,main.crossRateNew
  869. ,main.agentCrossRateMarginNew
  870. ,main.customerRateNew
  871. ,main.toleranceNew
  872. ,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  873. ,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  874. ,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
  875. ,main.modifiedBy
  876. ,main.modifiedDate
  877. ,main.hasChanged
  878. FROM ' + @m + ' main
  879. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  880. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  881. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  882. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  883. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  884. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  885. WHERE 1=1 AND hasChanged = ''Y''
  886. '
  887. SET @table = @table + ') x'
  888. PRINT @table
  889. SET @sql_filter = ''
  890. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  891. IF @hasChanged IS NOT NULL
  892. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  893. IF @cCurrency IS NOT NULL
  894. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  895. IF @cCountry IS NOT NULL
  896. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  897. IF @cCountryName IS NOT NULL
  898. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  899. IF @cAgent IS NOT NULL
  900. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  901. IF @cAgentName IS NOT NULL
  902. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  903. IF @pCurrency IS NOT NULL
  904. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  905. IF @pCountry IS NOT NULL
  906. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  907. IF @pCountryName IS NOT NULL
  908. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  909. IF @pAgent IS NOT NULL
  910. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  911. IF @pAgentName IS NOT NULL
  912. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  913. SET @select_field_list = '
  914. exRateTreasuryId
  915. ,tranType
  916. ,cCountry
  917. ,cCountryName
  918. ,cCountryCode
  919. ,cAgent
  920. ,cAgentName
  921. ,pCountry
  922. ,pCountryName
  923. ,pCountryCode
  924. ,pAgent
  925. ,pAgentName
  926. ,cCurrency
  927. ,pCurrency
  928. ,cRateFactor
  929. ,pRateFactor
  930. ,cRate
  931. ,pRate
  932. ,cMargin
  933. ,pMargin
  934. ,cHoMargin
  935. ,cAgentMargin
  936. ,pHoMargin
  937. ,pAgentMargin
  938. ,sharingType
  939. ,sharingValue
  940. ,toleranceOn
  941. ,agentTolMin
  942. ,agentTolMax
  943. ,customerTolMin
  944. ,customerTolMax
  945. ,maxCrossRate
  946. ,crossRate
  947. ,agentCrossRateMargin
  948. ,customerRate
  949. ,tolerance
  950. ,cost
  951. ,margin
  952. ,cRateNew
  953. ,pRateNew
  954. ,cMarginNew
  955. ,pMarginNew
  956. ,cHoMarginNew
  957. ,cAgentMarginNew
  958. ,pHoMarginNew
  959. ,pAgentMarginNew
  960. ,sharingTypeNew
  961. ,sharingValueNew
  962. ,toleranceOnNew
  963. ,agentTolMinNew
  964. ,agentTolMaxNew
  965. ,customerTolMinNew
  966. ,customerTolMaxNew
  967. ,maxCrossRateNew
  968. ,crossRateNew
  969. ,agentCrossRateMarginNew
  970. ,customerRateNew
  971. ,toleranceNew
  972. ,costNew
  973. ,marginNew
  974. ,status
  975. ,statusNew
  976. ,modType
  977. ,modifiedBy
  978. ,modifiedDate
  979. ,hasChanged
  980. '
  981. --PRINT @table
  982. EXEC dbo.proc_paging
  983. @table
  984. ,@sql_filter
  985. ,@select_field_list
  986. ,@extra_field_list
  987. ,@sortBy
  988. ,@sortOrder
  989. ,@pageSize
  990. ,@pageNumber
  991. END
  992. ELSE IF @flag IN ('rl') --Reject List
  993. BEGIN
  994. --IF @sortBy IS NULL
  995. SET @sortBy = 'modifiedDate,cCountryName,cAgentName,pCountryName,pAgentName'
  996. --IF @sortOrder IS NULL
  997. SET @sortOrder = ''
  998. SET @m = '(
  999. SELECT
  1000. exRateTreasuryId = main.exRateTreasuryId
  1001. ,tranType = main.tranType
  1002. ,cCountry = main.cCountry
  1003. ,cAgent = main.cAgent
  1004. ,pCountry = main.pCountry
  1005. ,pAgent = main.pAgent
  1006. ,cCurrency = main.cCurrency
  1007. ,pCurrency = main.pCurrency
  1008. ,cRateFactor = main.cRateFactor
  1009. ,pRateFactor = main.pRateFactor
  1010. ,cRate = main.cRate
  1011. ,cRateNew = mode.cRate
  1012. ,cMargin = main.cMargin
  1013. ,cMarginNew = mode.cMargin
  1014. ,cHoMargin = main.cHoMargin
  1015. ,cHoMarginNew = mode.cHoMargin
  1016. ,cAgentMargin = main.cAgentMargin
  1017. ,cAgentMarginNew = mode.cAgentMargin
  1018. ,pRate = main.pRate
  1019. ,pRateNew = mode.pRate
  1020. ,pMargin = main.pMargin
  1021. ,pMarginNew = mode.pMargin
  1022. ,pHoMargin = main.pHoMargin
  1023. ,pHoMarginNew = mode.pHoMargin
  1024. ,pAgentMargin = main.pAgentMargin
  1025. ,pAgentMarginNew = mode.pAgentMargin
  1026. ,sharingType = main.sharingType
  1027. ,sharingTypeNew = mode.sharingType
  1028. ,sharingValue = main.sharingValue
  1029. ,sharingValueNew = mode.sharingValue
  1030. ,toleranceOn = main.toleranceOn
  1031. ,toleranceOnNew = mode.toleranceOn
  1032. ,agentTolMin = main.agentTolMin
  1033. ,agentTolMinNew = mode.agentTolMin
  1034. ,agentTolMax = main.agentTolMax
  1035. ,agentTolMaxNew = mode.agentTolMax
  1036. ,customerTolMin = main.customerTolMin
  1037. ,customerTolMinNew = mode.customerTolMin
  1038. ,customerTolMax = main.customerTolMax
  1039. ,customerTolMaxNew = mode.customerTolMax
  1040. ,maxCrossRate = main.maxCrossRate
  1041. ,crossRate = main.crossRate
  1042. ,customerRate = main.customerRate
  1043. ,tolerance = main.tolerance
  1044. ,maxCrossRateNew = mode.maxCrossRate
  1045. ,crossRateNew = mode.crossRate
  1046. ,customerRateNew = mode.customerRate
  1047. ,toleranceNew = mode.tolerance
  1048. ,agentCrossRateMargin = main.agentCrossRateMargin
  1049. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  1050. ,status = ISNULL(main.isActive, ''N'')
  1051. ,statusNew = ISNULL(mode.isActive, ''N'')
  1052. ,main.isUpdated
  1053. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
  1054. ,main.createdBy
  1055. ,main.createdDate
  1056. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  1057. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  1058. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  1059. FROM exRateTreasury main WITH(NOLOCK)
  1060. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  1061. WHERE (
  1062. main.approvedBy IS NOT NULL
  1063. OR main.createdBy = ''' + @user + '''
  1064. )
  1065. --AND ISNULL(main.isUpdated, ''N'') <> ''Y''
  1066. ) '
  1067. SET @table = '(
  1068. SELECT
  1069. main.exRateTreasuryId
  1070. ,tranType = ISNULL(tt.typeTitle, ''All'')
  1071. ,main.cCountry
  1072. ,cCountryName = cc.countryName
  1073. ,cCountryCode = cc.countryCode
  1074. ,main.cAgent
  1075. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  1076. ,main.pCountry
  1077. ,pCountryName = pc.countryName
  1078. ,pCountryCode = pc.countryCode
  1079. ,main.pAgent
  1080. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  1081. ,main.cCurrency
  1082. ,main.pCurrency
  1083. ,main.cRateFactor
  1084. ,main.pRateFactor
  1085. ,main.cRate
  1086. ,main.cRateNew
  1087. ,main.pRate
  1088. ,main.pRateNew
  1089. ,main.cMargin
  1090. ,main.cMarginNew
  1091. ,main.pMargin
  1092. ,main.pMarginNew
  1093. ,main.cHoMargin
  1094. ,main.cHoMarginNew
  1095. ,main.cAgentMargin
  1096. ,main.cAgentMarginNew
  1097. ,main.pHoMargin
  1098. ,main.pHoMarginNew
  1099. ,main.pAgentMargin
  1100. ,main.pAgentMarginNew
  1101. ,main.sharingType
  1102. ,main.sharingTypeNew
  1103. ,main.sharingValue
  1104. ,main.sharingValueNew
  1105. ,main.toleranceOn
  1106. ,main.toleranceOnNew
  1107. ,main.agentTolMin
  1108. ,main.agentTolMinNew
  1109. ,main.agentTolMax
  1110. ,main.agentTolMaxNew
  1111. ,main.customerTolMin
  1112. ,main.customerTolMinNew
  1113. ,main.customerTolMax
  1114. ,main.customerTolMaxNew
  1115. ,main.maxCrossRate
  1116. ,main.crossRate
  1117. ,main.customerRate
  1118. ,main.tolerance
  1119. ,main.agentCrossRateMargin
  1120. ,main.agentCrossRateMarginNew
  1121. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  1122. ,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
  1123. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  1124. ,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
  1125. ,main.maxCrossRateNew
  1126. ,main.crossRateNew
  1127. ,main.customerRateNew
  1128. ,main.toleranceNew
  1129. ,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  1130. ,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  1131. ,isUpdated
  1132. ,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
  1133. ,main.modifiedBy
  1134. ,main.modifiedDate
  1135. ,main.hasChanged
  1136. FROM ' + @m + ' main
  1137. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  1138. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  1139. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  1140. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  1141. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  1142. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  1143. WHERE 1=1 AND hasChanged = ''Y'' AND ISNULL(main.isUpdated, ''N'') = ''N''
  1144. '
  1145. SET @table = @table + ') x'
  1146. SET @sql_filter = ''
  1147. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  1148. IF @hasChanged IS NOT NULL
  1149. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  1150. IF @cCurrency IS NOT NULL
  1151. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  1152. IF @cCountry IS NOT NULL
  1153. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  1154. IF @cCountryName IS NOT NULL
  1155. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  1156. IF @cAgent IS NOT NULL
  1157. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  1158. IF @cAgentName IS NOT NULL
  1159. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  1160. IF @pCurrency IS NOT NULL
  1161. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  1162. IF @pCountry IS NOT NULL
  1163. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  1164. IF @pCountryName IS NOT NULL
  1165. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  1166. IF @pAgent IS NOT NULL
  1167. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  1168. IF @pAgentName IS NOT NULL
  1169. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  1170. SET @select_field_list = '
  1171. exRateTreasuryId
  1172. ,tranType
  1173. ,cCountry
  1174. ,cCountryName
  1175. ,cCountryCode
  1176. ,cAgent
  1177. ,cAgentName
  1178. ,pCountry
  1179. ,pCountryName
  1180. ,pCountryCode
  1181. ,pAgent
  1182. ,pAgentName
  1183. ,cCurrency
  1184. ,pCurrency
  1185. ,cRateFactor
  1186. ,pRateFactor
  1187. ,cRate
  1188. ,pRate
  1189. ,cMargin
  1190. ,pMargin
  1191. ,cHoMargin
  1192. ,cAgentMargin
  1193. ,pHoMargin
  1194. ,pAgentMargin
  1195. ,sharingType
  1196. ,sharingValue
  1197. ,toleranceOn
  1198. ,agentTolMin
  1199. ,agentTolMax
  1200. ,customerTolMin
  1201. ,customerTolMax
  1202. ,maxCrossRate
  1203. ,crossRate
  1204. ,customerRate
  1205. ,tolerance
  1206. ,cost
  1207. ,margin
  1208. ,cRateNew
  1209. ,pRateNew
  1210. ,cMarginNew
  1211. ,pMarginNew
  1212. ,cHoMarginNew
  1213. ,cAgentMarginNew
  1214. ,pHoMarginNew
  1215. ,pAgentMarginNew
  1216. ,sharingTypeNew
  1217. ,sharingValueNew
  1218. ,toleranceOnNew
  1219. ,agentTolMinNew
  1220. ,agentTolMaxNew
  1221. ,customerTolMinNew
  1222. ,customerTolMaxNew
  1223. ,maxCrossRateNew
  1224. ,crossRateNew
  1225. ,customerRateNew
  1226. ,toleranceNew
  1227. ,agentCrossRateMargin
  1228. ,agentCrossRateMarginNew
  1229. ,costNew
  1230. ,marginNew
  1231. ,status
  1232. ,statusNew
  1233. ,isUpdated
  1234. ,modType
  1235. ,modifiedBy
  1236. ,modifiedDate
  1237. ,hasChanged
  1238. '
  1239. --PRINT @table
  1240. EXEC dbo.proc_paging
  1241. @table
  1242. ,@sql_filter
  1243. ,@select_field_list
  1244. ,@extra_field_list
  1245. ,@sortBy
  1246. ,@sortOrder
  1247. ,@pageSize
  1248. ,@pageNumber
  1249. END
  1250. ELSE IF @flag IN ('mcl') --My Changes List
  1251. BEGIN
  1252. --IF @sortBy IS NULL
  1253. SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
  1254. --IF @sortOrder IS NULL
  1255. SET @sortOrder = ''
  1256. SET @m = '(
  1257. SELECT
  1258. exRateTreasuryId = main.exRateTreasuryId
  1259. ,tranType = main.tranType
  1260. ,cCountry = main.cCountry
  1261. ,cAgent = main.cAgent
  1262. ,pCountry = main.pCountry
  1263. ,pAgent = main.pAgent
  1264. ,cCurrency = main.cCurrency
  1265. ,pCurrency = main.pCurrency
  1266. ,cRateFactor = main.cRateFactor
  1267. ,pRateFactor = main.pRateFactor
  1268. ,cRate = main.cRate
  1269. ,cRateNew = mode.cRate
  1270. ,cMargin = main.cMargin
  1271. ,cMarginNew = mode.cMargin
  1272. ,cHoMargin = main.cHoMargin
  1273. ,cHoMarginNew = mode.cHoMargin
  1274. ,cAgentMargin = main.cAgentMargin
  1275. ,cAgentMarginNew = mode.cAgentMargin
  1276. ,pRate = main.pRate
  1277. ,pRateNew = mode.pRate
  1278. ,pMargin = main.pMargin
  1279. ,pMarginNew = mode.pMargin
  1280. ,pHoMargin = main.pHoMargin
  1281. ,pHoMarginNew = mode.pHoMargin
  1282. ,pAgentMargin = main.pAgentMargin
  1283. ,pAgentMarginNew = mode.pAgentMargin
  1284. ,sharingType = main.sharingType
  1285. ,sharingTypeNew = mode.sharingType
  1286. ,sharingValue = main.sharingValue
  1287. ,sharingValueNew = mode.sharingValue
  1288. ,toleranceOn = main.toleranceOn
  1289. ,toleranceOnNew = mode.toleranceOn
  1290. ,agentTolMin = main.agentTolMin
  1291. ,agentTolMinNew = mode.agentTolMin
  1292. ,agentTolMax = main.agentTolMax
  1293. ,agentTolMaxNew = mode.agentTolMax
  1294. ,customerTolMin = main.customerTolMin
  1295. ,customerTolMinNew = mode.customerTolMin
  1296. ,customerTolMax = main.customerTolMax
  1297. ,customerTolMaxNew = mode.customerTolMax
  1298. ,maxCrossRate = main.maxCrossRate
  1299. ,crossRate = main.crossRate
  1300. ,customerRate = main.customerRate
  1301. ,tolerance = main.tolerance
  1302. ,maxCrossRateNew = mode.maxCrossRate
  1303. ,crossRateNew = mode.crossRate
  1304. ,customerRateNew = mode.customerRate
  1305. ,toleranceNew = mode.tolerance
  1306. ,agentCrossRateMargin = main.agentCrossRateMargin
  1307. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  1308. ,status = ISNULL(main.isActive, ''N'')
  1309. ,statusNew = ISNULL(mode.isActive, ''N'')
  1310. ,main.isUpdated
  1311. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.modType END
  1312. ,main.createdBy
  1313. ,main.createdDate
  1314. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN ISNULL(mode.createdBy, main.createdBy) ELSE mode.createdBy END
  1315. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN ISNULL(mode.createdDate, main.createdDate) ELSE mode.createdDate END
  1316. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  1317. FROM exRateTreasury main WITH(NOLOCK)
  1318. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  1319. WHERE (
  1320. main.approvedBy IS NOT NULL
  1321. OR main.createdBy = ''' + @user + '''
  1322. )
  1323. --AND ISNULL(main.isUpdated, ''N'') <> ''Y''
  1324. ) '
  1325. SET @table = '(
  1326. SELECT
  1327. main.exRateTreasuryId
  1328. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  1329. ,main.cCountry
  1330. ,cCountryName = cc.countryName
  1331. ,cCountryCode = cc.countryCode
  1332. ,main.cAgent
  1333. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  1334. ,main.pCountry
  1335. ,pCountryName = pc.countryName
  1336. ,pCountryCode = pc.countryCode
  1337. ,main.pAgent
  1338. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  1339. ,main.cCurrency
  1340. ,main.pCurrency
  1341. ,main.cRateFactor
  1342. ,main.pRateFactor
  1343. ,main.cRate
  1344. ,main.cRateNew
  1345. ,main.pRate
  1346. ,main.pRateNew
  1347. ,main.cMargin
  1348. ,main.cMarginNew
  1349. ,main.pMargin
  1350. ,main.pMarginNew
  1351. ,main.cHoMargin
  1352. ,main.cHoMarginNew
  1353. ,main.cAgentMargin
  1354. ,main.cAgentMarginNew
  1355. ,main.pHoMargin
  1356. ,main.pHoMarginNew
  1357. ,main.pAgentMargin
  1358. ,main.pAgentMarginNew
  1359. ,main.sharingType
  1360. ,main.sharingTypeNew
  1361. ,main.sharingValue
  1362. ,main.sharingValueNew
  1363. ,main.toleranceOn
  1364. ,main.toleranceOnNew
  1365. ,main.agentTolMin
  1366. ,main.agentTolMinNew
  1367. ,main.agentTolMax
  1368. ,main.agentTolMaxNew
  1369. ,main.customerTolMin
  1370. ,main.customerTolMinNew
  1371. ,main.customerTolMax
  1372. ,main.customerTolMaxNew
  1373. ,main.maxCrossRate
  1374. ,main.crossRate
  1375. ,main.customerRate
  1376. ,main.tolerance
  1377. ,main.agentCrossRateMargin
  1378. ,main.agentCrossRateMarginNew
  1379. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  1380. ,costNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)), crm.rateMaskMulAd)
  1381. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  1382. ,marginNew = ROUND(pRateNew/(crossRateNew + ISNULL(toleranceNew, 0)) - cRateNew, crm.rateMaskMulAd)
  1383. ,main.maxCrossRateNew
  1384. ,main.crossRateNew
  1385. ,main.customerRateNew
  1386. ,main.toleranceNew
  1387. ,status = CASE WHEN main.status = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  1388. ,statusNew = CASE WHEN main.statusNew = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  1389. ,isUpdated = ISNULL(main.isUpdated, ''N'')
  1390. ,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
  1391. ,main.modifiedBy
  1392. ,main.modifiedDate
  1393. ,main.hasChanged
  1394. FROM ' + @m + ' main
  1395. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  1396. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  1397. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  1398. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  1399. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  1400. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  1401. WHERE 1=1 AND hasChanged = ''Y'' AND main.modifiedBy = ''' + @user + '''
  1402. '
  1403. SET @table = @table + ') x'
  1404. SET @sql_filter = ''
  1405. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  1406. IF @hasChanged IS NOT NULL
  1407. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  1408. IF @cCurrency IS NOT NULL
  1409. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  1410. IF @cCountry IS NOT NULL
  1411. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  1412. IF @cCountryName IS NOT NULL
  1413. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  1414. IF @cAgent IS NOT NULL
  1415. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  1416. IF @cAgentName IS NOT NULL
  1417. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  1418. IF @pCurrency IS NOT NULL
  1419. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  1420. IF @pCountry IS NOT NULL
  1421. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  1422. IF @pCountryName IS NOT NULL
  1423. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  1424. IF @pAgent IS NOT NULL
  1425. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  1426. IF @pAgentName IS NOT NULL
  1427. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  1428. SET @select_field_list = '
  1429. exRateTreasuryId
  1430. ,tranType
  1431. ,cCountry
  1432. ,cCountryName
  1433. ,cCountryCode
  1434. ,cAgent
  1435. ,cAgentName
  1436. ,pCountry
  1437. ,pCountryName
  1438. ,pCountryCode
  1439. ,pAgent
  1440. ,pAgentName
  1441. ,cCurrency
  1442. ,pCurrency
  1443. ,cRateFactor
  1444. ,pRateFactor
  1445. ,cRate
  1446. ,pRate
  1447. ,cMargin
  1448. ,pMargin
  1449. ,cHoMargin
  1450. ,cAgentMargin
  1451. ,pHoMargin
  1452. ,pAgentMargin
  1453. ,sharingType
  1454. ,sharingValue
  1455. ,toleranceOn
  1456. ,agentTolMin
  1457. ,agentTolMax
  1458. ,customerTolMin
  1459. ,customerTolMax
  1460. ,maxCrossRate
  1461. ,crossRate
  1462. ,customerRate
  1463. ,tolerance
  1464. ,cost
  1465. ,margin
  1466. ,cRateNew
  1467. ,pRateNew
  1468. ,cMarginNew
  1469. ,pMarginNew
  1470. ,cHoMarginNew
  1471. ,cAgentMarginNew
  1472. ,pHoMarginNew
  1473. ,pAgentMarginNew
  1474. ,sharingTypeNew
  1475. ,sharingValueNew
  1476. ,toleranceOnNew
  1477. ,agentTolMinNew
  1478. ,agentTolMaxNew
  1479. ,customerTolMinNew
  1480. ,customerTolMaxNew
  1481. ,maxCrossRateNew
  1482. ,crossRateNew
  1483. ,customerRateNew
  1484. ,toleranceNew
  1485. ,agentCrossRateMargin
  1486. ,agentCrossRateMarginNew
  1487. ,costNew
  1488. ,marginNew
  1489. ,status
  1490. ,statusNew
  1491. ,isUpdated
  1492. ,modType
  1493. ,modifiedBy
  1494. ,modifiedDate
  1495. ,hasChanged
  1496. '
  1497. --PRINT @table
  1498. EXEC dbo.proc_paging
  1499. @table
  1500. ,@sql_filter
  1501. ,@select_field_list
  1502. ,@extra_field_list
  1503. ,@sortBy
  1504. ,@sortOrder
  1505. ,@pageSize
  1506. ,@pageNumber
  1507. END
  1508. ELSE IF @flag = 'i'
  1509. BEGIN
  1510. IF (dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency) = 10)
  1511. BEGIN
  1512. EXEC proc_errorHandler 1, 'Cross Rate Decimal Mask not defined yet for this setup', NULL
  1513. RETURN
  1514. END
  1515. /*
  1516. IF(@cAgent IS NOT NULL)
  1517. BEGIN
  1518. IF NOT EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @cAgent AND currency = @cCurrency)
  1519. BEGIN
  1520. EXEC proc_errorHandler 1, 'Sending agent rate has not been defined yet', NULL
  1521. RETURN
  1522. END
  1523. END
  1524. IF(@pAgent IS NOT NULL)
  1525. BEGIN
  1526. IF NOT EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @pAgent AND currency = @pCurrency)
  1527. BEGIN
  1528. EXEC proc_errorHandler 1, 'Receiving agent rate has not been defined yet', NULL
  1529. RETURN
  1530. END
  1531. END
  1532. */
  1533. SELECT @cDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @cAgent AND country = @cCountry AND currency = @cCurrency
  1534. IF @cDefExRateId IS NULL
  1535. 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
  1536. SELECT @pDefExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @pAgent AND country = @pCountry AND currency = @pCurrency
  1537. IF @pDefExRateId IS NULL
  1538. 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
  1539. SELECT
  1540. @cRate = cRate, @cMargin = cMargin, @cRateFactor = factor
  1541. ,@cOffer = CASE factor WHEN 'M' THEN cRate + cMargin + ISNULL(@cHoMargin, 0) WHEN 'D' THEN cRate - cMargin - ISNULL(@cMargin, 0) END
  1542. ,@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
  1543. FROM defExRate WITH(NOLOCK) WHERE defExRateId = @cDefExRateId
  1544. SELECT
  1545. @pRate = pRate, @pMargin = pMargin, @pRateFactor = factor
  1546. ,@pOffer = CASE factor WHEN 'M' THEN pRate - pMargin - ISNULL(@pHoMargin, 0) WHEN 'D' THEN pRate + pMargin + ISNULL(@pMargin, 0) END
  1547. ,@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
  1548. FROM defExRate WITH(NOLOCK) WHERE defExRateId = @pDefExRateId
  1549. DECLARE @tolCMax FLOAT, @tolCMin FLOAT, @tolPMax FLOAT, @tolPMin FLOAT, @msg VARCHAR(300)
  1550. SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
  1551. SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
  1552. SET @crossRate = ROUND(@pOffer/@cOffer, @crossRateDecimalMask)
  1553. SET @maxCrossRate = ROUND(@pRate/@cRate, @crossRateDecimalMask)
  1554. SET @customerRate = ROUND(@pCustomerOffer/@cCustomerOffer, @crossRateDecimalMask)
  1555. DECLARE @cost FLOAT, @margin FLOAT
  1556. SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
  1557. SET @margin = ROUND(@cost - @cRate, @colMaskAd)
  1558. SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
  1559. IF @cost > @tolCMax
  1560. BEGIN
  1561. SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1562. EXEC proc_errorHandler 1, @msg, NULL
  1563. RETURN
  1564. END
  1565. IF @cost < @tolCMin
  1566. BEGIN
  1567. SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1568. EXEC proc_errorHandler 1, @msg, NULL
  1569. RETURN
  1570. END
  1571. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE
  1572. cCountry = @cCountry
  1573. AND ISNULL(cAgent, 0) = ISNULL(@cAgent, 0)
  1574. AND cCurrency = @cCurrency
  1575. AND pCountry = @pCountry
  1576. AND ISNULL(pAgent, 0) = ISNULL(@pAgent, 0)
  1577. AND pCurrency = @pCurrency
  1578. AND ISNULL(tranType, 0) = ISNULL(@tranType, 0)
  1579. )
  1580. BEGIN
  1581. EXEC proc_errorHandler 1, 'Record already exists', NULL
  1582. RETURN
  1583. END
  1584. BEGIN TRANSACTION
  1585. INSERT INTO exRateTreasury(
  1586. tranType
  1587. ,cRateId
  1588. ,cCountry
  1589. ,cAgent
  1590. ,cCurrency
  1591. ,cRateFactor
  1592. ,cRate
  1593. ,cMargin
  1594. ,cHoMargin
  1595. ,cAgentMargin
  1596. ,pRateId
  1597. ,pCountry
  1598. ,pAgent
  1599. ,pCurrency
  1600. ,pRateFactor
  1601. ,pRate
  1602. ,pMargin
  1603. ,pHoMargin
  1604. ,pAgentMargin
  1605. ,sharingType
  1606. ,sharingValue
  1607. ,toleranceOn
  1608. ,agentTolMin
  1609. ,agentTolMax
  1610. ,customerTolMin
  1611. ,customerTolMax
  1612. ,crossRate
  1613. ,maxCrossRate
  1614. ,customerRate
  1615. ,tolerance
  1616. ,crossRateFactor
  1617. ,isUpdated
  1618. ,isUpdatedOperation
  1619. ,isActive
  1620. ,createdBy
  1621. ,createdDate
  1622. )
  1623. SELECT
  1624. @tranType
  1625. ,@cDefExRateId
  1626. ,@cCountry
  1627. ,@cAgent
  1628. ,@cCurrency
  1629. ,@cRateFactor
  1630. ,@cRate
  1631. ,@cMargin
  1632. ,ISNULL(@cHoMargin, 0)
  1633. ,ISNULL(@cAgentMargin, 0)
  1634. ,@pDefExRateId
  1635. ,@pCountry
  1636. ,@pAgent
  1637. ,@pCurrency
  1638. ,@pRateFactor
  1639. ,@pRate
  1640. ,@pMargin
  1641. ,ISNULL(@pHoMargin, 0)
  1642. ,ISNULL(@pAgentMargin, 0)
  1643. ,ISNULL(@sharingType,'F')
  1644. ,ISNULL(@sharingValue, 0)
  1645. ,ISNULL(@toleranceOn, 'C')
  1646. ,ISNULL(@agentTolMin, 0)
  1647. ,ISNULL(@agentTolMax, 0)
  1648. ,ISNULL(@customerTolMin, 0)
  1649. ,ISNULL(@customerTolMax, 0)
  1650. ,@crossRate
  1651. ,@maxCrossRate
  1652. ,@customerRate
  1653. ,@tolerance
  1654. ,@crossRateFactor
  1655. ,'N'
  1656. ,'N'
  1657. ,'Y'
  1658. ,@user
  1659. ,GETDATE()
  1660. SET @exRateTreasuryId = SCOPE_IDENTITY()
  1661. IF @@TRANCOUNT > 0
  1662. COMMIT TRANSACTION
  1663. EXEC proc_errorHandler 0, 'Record has been added successfully.', @exRateTreasuryId
  1664. END
  1665. ELSE IF @flag = 'u'
  1666. BEGIN
  1667. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND (createdBy <> @user AND approvedBy IS NULL))
  1668. BEGIN
  1669. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
  1670. RETURN
  1671. END
  1672. IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND ISNULL(createdBy, '') <> @user)
  1673. BEGIN
  1674. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
  1675. RETURN
  1676. END
  1677. SELECT
  1678. @cRateFactor = cRateFactor
  1679. ,@cCurrency = cCurrency, @cRate = cRate, @cMargin = cMargin
  1680. ,@pCurrency = pCurrency, @pRate = pRate, @pMargin = pMargin
  1681. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1682. SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
  1683. SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
  1684. SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
  1685. SELECT @tolPMax = pMax, @tolPMin = pMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @pCurrency
  1686. SET @cost = ROUND((@pRate - @pMargin - @pHoMargin - @pAgentMargin)/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
  1687. --SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
  1688. IF (@cRate + @cMargin + @cHoMargin) > @tolCMax
  1689. BEGIN
  1690. SET @msg = 'HO Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1691. EXEC proc_errorHandler 1, @msg, NULL
  1692. RETURN
  1693. END
  1694. IF (@cRate + @cMargin + @cHoMargin) < @tolCMin
  1695. BEGIN
  1696. SET @msg = 'HO Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1697. EXEC proc_errorHandler 1, @msg, NULL
  1698. RETURN
  1699. END
  1700. IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) > @tolCMax
  1701. BEGIN
  1702. SET @msg = 'Agent Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1703. EXEC proc_errorHandler 1, @msg, NULL
  1704. RETURN
  1705. END
  1706. IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) < @tolCMin
  1707. BEGIN
  1708. SET @msg = 'Agent Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1709. EXEC proc_errorHandler 1, @msg, NULL
  1710. RETURN
  1711. END
  1712. IF (@pRate - @pMargin - @pHoMargin) > @tolPMax
  1713. BEGIN
  1714. SET @msg = 'HO Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  1715. EXEC proc_errorHandler 1, @msg, NULL
  1716. RETURN
  1717. END
  1718. IF (@pRate - @pMargin - @pHoMargin) < @tolPMin
  1719. BEGIN
  1720. SET @msg = 'HO Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  1721. EXEC proc_errorHandler 1, @msg, NULL
  1722. RETURN
  1723. END
  1724. IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) > @tolPMax
  1725. BEGIN
  1726. SET @msg = 'Agent Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  1727. EXEC proc_errorHandler 1, @msg, NULL
  1728. RETURN
  1729. END
  1730. IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) < @tolPMin
  1731. BEGIN
  1732. SET @msg = 'Agent Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  1733. EXEC proc_errorHandler 1, @msg, NULL
  1734. RETURN
  1735. END
  1736. /*
  1737. IF @cost > @tolCMax
  1738. BEGIN
  1739. SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1740. EXEC proc_errorHandler 1, @msg, NULL
  1741. RETURN
  1742. END
  1743. IF @cost < @tolCMin
  1744. BEGIN
  1745. SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1746. EXEC proc_errorHandler 1, @msg, NULL
  1747. RETURN
  1748. END
  1749. */
  1750. BEGIN TRANSACTION
  1751. IF ISNULL(@isUpdated, 'N') = 'N'
  1752. BEGIN
  1753. IF EXISTS (SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
  1754. BEGIN
  1755. UPDATE exRateTreasury SET
  1756. cHoMargin = @cHoMargin
  1757. ,cAgentMargin = @cAgentMargin
  1758. ,pHoMargin = @pHoMargin
  1759. ,pAgentMargin = @pAgentMargin
  1760. ,sharingType = @sharingType
  1761. ,sharingValue = @sharingValue
  1762. ,toleranceOn = @toleranceOn
  1763. ,agentTolMin = @agentTolMin
  1764. ,agentTolMax = @agentTolMax
  1765. ,customerTolMin = @customerTolMin
  1766. ,customerTolMax = @customerTolMax
  1767. ,crossRate = @crossRate
  1768. ,customerRate = CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
  1769. ,agentCrossRateMargin =
  1770. CASE WHEN @agentCrossRateMargin >= 0 THEN
  1771. CASE WHEN @agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
  1772. ELSE
  1773. CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
  1774. END
  1775. ,tolerance = @tolerance
  1776. ,modifiedBy = @user
  1777. ,modifiedDate = GETDATE()
  1778. WHERE exRateTreasuryId = @exRateTreasuryId
  1779. END
  1780. ELSE
  1781. BEGIN
  1782. DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
  1783. INSERT INTO exRateTreasuryMod(
  1784. exRateTreasuryId
  1785. ,tranType
  1786. ,cRateId
  1787. ,cCurrency
  1788. ,cCountry
  1789. ,cAgent
  1790. ,cRateFactor
  1791. ,cRate
  1792. ,cMargin
  1793. ,cHoMargin
  1794. ,cAgentMargin
  1795. ,pRateId
  1796. ,pCurrency
  1797. ,pCountry
  1798. ,pAgent
  1799. ,pRateFactor
  1800. ,pRate
  1801. ,pMargin
  1802. ,pHoMargin
  1803. ,pAgentMargin
  1804. ,sharingType
  1805. ,sharingValue
  1806. ,toleranceOn
  1807. ,agentTolMin
  1808. ,agentTolMax
  1809. ,customerTolMin
  1810. ,customerTolMax
  1811. ,maxCrossRate
  1812. ,agentCrossRateMargin
  1813. ,crossRate
  1814. ,customerRate
  1815. ,tolerance
  1816. ,isActive
  1817. ,createdBy
  1818. ,createdDate
  1819. ,modType
  1820. )
  1821. SELECT
  1822. @exRateTreasuryId
  1823. ,tranType
  1824. ,cRateId
  1825. ,cCurrency
  1826. ,cCountry
  1827. ,cAgent
  1828. ,cRateFactor
  1829. ,cRate
  1830. ,cMargin
  1831. ,@cHoMargin
  1832. ,@cAgentMargin
  1833. ,pRateId
  1834. ,pCurrency
  1835. ,pCountry
  1836. ,pAgent
  1837. ,pRateFactor
  1838. ,pRate
  1839. ,pMargin
  1840. ,@pHoMargin
  1841. ,@pAgentMargin
  1842. ,@sharingType
  1843. ,@sharingValue
  1844. ,@toleranceOn
  1845. ,@agentTolMin
  1846. ,@agentTolMax
  1847. ,@customerTolMin
  1848. ,@customerTolMax
  1849. ,maxCrossRate
  1850. ,CASE WHEN @agentCrossRateMargin >= 0 THEN
  1851. CASE WHEN agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
  1852. ELSE
  1853. CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
  1854. END
  1855. ,@crossRate
  1856. ,CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
  1857. ,@tolerance
  1858. ,isActive
  1859. ,@user
  1860. ,GETDATE()
  1861. ,'U'
  1862. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1863. SELECT
  1864. @cCurrency = cCurrency, @cCountry = cCountry, @cAgent = cAgent
  1865. ,@pCurrency = pCurrency, @pCountry = pCountry, @pAgent = pAgent
  1866. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1867. END
  1868. END
  1869. ELSE
  1870. BEGIN
  1871. UPDATE exRateTreasuryMod SET
  1872. cHoMargin = @cHoMargin
  1873. ,cAgentMargin = @cAgentMargin
  1874. ,pHoMargin = @pHoMargin
  1875. ,pAgentMargin = @pAgentMargin
  1876. ,sharingType = @sharingType
  1877. ,sharingValue = @sharingValue
  1878. ,toleranceOn = @toleranceOn
  1879. ,agentTolMin = @agentTolMin
  1880. ,agentTolMax = @agentTolMax
  1881. ,customerTolMin = @customerTolMin
  1882. ,customerTolMax = @customerTolMax
  1883. ,tolerance = @tolerance
  1884. ,crossRate = @crossRate
  1885. ,agentCrossRateMargin = CASE WHEN @agentCrossRateMargin >= 0 THEN
  1886. CASE WHEN @agentCrossRateMargin > @agentTolMin THEN @agentTolMin ELSE @agentCrossRateMargin END
  1887. ELSE
  1888. CASE WHEN (@agentCrossRateMargin * -1) > @agentTolMax THEN @agentTolMax ELSE @agentCrossRateMargin END
  1889. END
  1890. ,customerRate = CASE WHEN ISNULL(@toleranceOn, '') IN ('S','P', '') THEN @customerRate WHEN ISNULL(@toleranceOn, '') = 'C' THEN @crossRate - ISNULL(@agentCrossRateMargin, 0) END
  1891. WHERE exRateTreasuryId = @exRateTreasuryId
  1892. /*
  1893. UPDATE exRateTreasury SET
  1894. isUpdated = 'N'
  1895. WHERE exRateTreasuryId = @exRateTreasuryId
  1896. */
  1897. END
  1898. IF @@TRANCOUNT > 0
  1899. COMMIT TRANSACTION
  1900. EXEC proc_errorHandler 0, 'Record updated successfully.', @exRateTreasuryId
  1901. END
  1902. ELSE IF @flag = 'uxml' --Bulk Update XML
  1903. BEGIN
  1904. DECLARE @exRateList TABLE(id INT IDENTITY(1,1),exRateTreasuryId INT, tolerance FLOAT, cHoMargin FLOAT, cAgentMargin FLOAT, pHoMargin FLOAT, pAgentMargin FLOAT,
  1905. sharingType CHAR(1), sharingValue FLOAT, toleranceOn VARCHAR(2), agentTolMin FLOAT, agentTolMax FLOAT,
  1906. customerTolMin FLOAT, customerTolMax FLOAT,
  1907. crossRate FLOAT, agentCrossRateMargin FLOAT, customerRate FLOAT, isUpdated CHAR(1), errorCode VARCHAR(10), msg VARCHAR(300))
  1908. INSERT @exRateList(exRateTreasuryId, tolerance, cHoMargin, cAgentMargin, pHoMargin, pAgentMargin,
  1909. sharingType, sharingValue, toleranceOn, agentTolMin, agentTolMax,
  1910. customerTolMin, customerTolMax,
  1911. crossRate, agentCrossRateMargin, customerRate, isUpdated, errorCode)
  1912. SELECT
  1913. exRateTreasuryId = p.value('@exRateTreasuryId','INT')
  1914. ,tolerance = p.value('@tolerance','FLOAT')
  1915. ,cHoMargin = p.value('@cHoMargin','FLOAT')
  1916. ,cAgentMargin = p.value('@cAgentMargin','FLOAT')
  1917. ,pHoMargin = p.value('@pHoMargin','FLOAT')
  1918. ,pAgentMargin = p.value('@pAgentMargin','FLOAT')
  1919. ,sharingType = p.value('@sharingType','VARCHAR(1)')
  1920. ,sharingValue = p.value('@sharingValue','FLOAT')
  1921. ,toleranceOn = p.value('@toleranceOn','VARCHAR(2)')
  1922. ,agentTolMin = p.value('@agentTolMin','FLOAT')
  1923. ,agentTolMax = p.value('@agentTolMax','FLOAT')
  1924. ,customerTolMin = p.value('@customerTolMin','FLOAT')
  1925. ,customerTolMax = p.value('@customerTolMax','FLOAT')
  1926. ,crossRate = p.value('@crossRate','FLOAT')
  1927. ,agentCrossRateMargin = p.value('@agentCrossRateMargin', 'FLOAT')
  1928. ,customerRate = p.value('@customerRate','FLOAT')
  1929. ,isUpdated = p.value('@isUpdated','CHAR(1)')
  1930. ,errorCode = '0'
  1931. FROM @xml.nodes('/root/row') AS tmp(p)
  1932. DECLARE @totalRows INT, @count INT = 1
  1933. SELECT @totalRows = COUNT(exRateTreasuryId) FROM @exRateList
  1934. WHILE(@count <= @totalRows)
  1935. BEGIN
  1936. SELECT
  1937. @exRateTreasuryId = exRateTreasuryId
  1938. ,@tolerance = tolerance
  1939. ,@cHoMargin = cHoMargin
  1940. ,@cAgentMargin = cAgentMargin
  1941. ,@pHoMargin = pHoMargin
  1942. ,@pAgentMargin = pAgentMargin
  1943. ,@sharingType = sharingType
  1944. ,@sharingValue = sharingValue
  1945. ,@toleranceOn = toleranceOn
  1946. ,@agentTolMin = agentTolMin
  1947. ,@agentTolMax = agentTolMax
  1948. ,@customerTolMin = customerTolMin
  1949. ,@customerTolMax = customerTolMax
  1950. ,@crossRate = crossRate
  1951. ,@agentCrossRateMargin = agentCrossRateMargin
  1952. ,@customerRate = customerRate
  1953. ,@isUpdated = isUpdated
  1954. FROM @exRateList WHERE id = @count
  1955. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND (createdBy <> @user AND approvedBy IS NULL))
  1956. BEGIN
  1957. UPDATE @exRateList SET
  1958. errorCode = 1
  1959. ,msg = 'You can not modify this record. Previous modification has not been approved yet.'
  1960. WHERE exRateTreasuryId = @exRateTreasuryId
  1961. END
  1962. IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND ISNULL(createdBy, '') <> @user)
  1963. BEGIN
  1964. UPDATE @exRateList SET
  1965. errorCode = 1
  1966. ,msg = 'You can not modify this record. Previous modification has not been approved yet.'
  1967. WHERE exRateTreasuryId = @exRateTreasuryId
  1968. END
  1969. SELECT
  1970. @cRateFactor = cRateFactor
  1971. ,@cCurrency = cCurrency, @cRate = cRate, @cMargin = cMargin
  1972. ,@pCurrency = pCurrency, @pRate = pRate, @pMargin = pMargin
  1973. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1974. SELECT @colMaskAd = CASE @cRateFactor WHEN 'M' THEN rateMaskMulAd WHEN 'D' THEN rateMaskDivAd ELSE 6 END FROM rateMask WHERE currency = @cCurrency
  1975. SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(@cCurrency, @pCurrency)
  1976. SELECT @tolCMax = cMax, @tolCMin = cMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @cCurrency
  1977. SELECT @tolPMax = pMax, @tolPMin = pMin FROM rateMask WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND currency = @pCurrency
  1978. SET @cost = ROUND((@pRate - @pMargin - @pHoMargin - @pAgentMargin)/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
  1979. --SET @cost = ROUND(@pRate/(@crossRate + ISNULL(@tolerance, 0)), @colMaskAd)
  1980. IF (@cRate + @cMargin + @cHoMargin) > @tolCMax
  1981. BEGIN
  1982. SET @msg = 'HO Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1983. UPDATE @exRateList SET
  1984. errorCode = 1
  1985. ,msg = @msg
  1986. WHERE exRateTreasuryId = @exRateTreasuryId
  1987. END
  1988. IF (@cRate + @cMargin + @cHoMargin) < @tolCMin
  1989. BEGIN
  1990. SET @msg = 'HO Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1991. UPDATE @exRateList SET
  1992. errorCode = 1
  1993. ,msg = @msg
  1994. WHERE exRateTreasuryId = @exRateTreasuryId
  1995. END
  1996. IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) > @tolCMax
  1997. BEGIN
  1998. SET @msg = 'Agent Send Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  1999. UPDATE @exRateList SET
  2000. errorCode = 1
  2001. ,msg = @msg
  2002. WHERE exRateTreasuryId = @exRateTreasuryId
  2003. END
  2004. IF (@cRate + @cMargin + @cHoMargin + @cAgentMargin) < @tolCMin
  2005. BEGIN
  2006. SET @msg = 'Agent Send Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  2007. UPDATE @exRateList SET
  2008. errorCode = 1
  2009. ,msg = @msg
  2010. WHERE exRateTreasuryId = @exRateTreasuryId
  2011. END
  2012. IF (@pRate - @pMargin - @pHoMargin) > @tolPMax
  2013. BEGIN
  2014. SET @msg = 'HO Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  2015. UPDATE @exRateList SET
  2016. errorCode = 1
  2017. ,msg = @msg
  2018. WHERE exRateTreasuryId = @exRateTreasuryId
  2019. END
  2020. IF (@pRate - @pMargin - @pHoMargin) < @tolPMin
  2021. BEGIN
  2022. SET @msg = 'HO Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  2023. UPDATE @exRateList SET
  2024. errorCode = 1
  2025. ,msg = @msg
  2026. WHERE exRateTreasuryId = @exRateTreasuryId
  2027. END
  2028. IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) > @tolPMax
  2029. BEGIN
  2030. SET @msg = 'Agent Receive Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  2031. UPDATE @exRateList SET
  2032. errorCode = 1
  2033. ,msg = @msg
  2034. WHERE exRateTreasuryId = @exRateTreasuryId
  2035. END
  2036. IF (@pRate - @pMargin - @pHoMargin - @pAgentMargin) < @tolPMin
  2037. BEGIN
  2038. SET @msg = 'Agent Receive Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolPMin AS VARCHAR) + ' and ' + CAST(@tolPMax AS VARCHAR)
  2039. UPDATE @exRateList SET
  2040. errorCode = 1
  2041. ,msg = @msg
  2042. WHERE exRateTreasuryId = @exRateTreasuryId
  2043. END
  2044. IF @cost > @tolCMax
  2045. BEGIN
  2046. SET @msg = 'Cost rate exceeds maximum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  2047. UPDATE @exRateList SET
  2048. errorCode = 1
  2049. ,msg = @msg
  2050. WHERE exRateTreasuryId = @exRateTreasuryId
  2051. END
  2052. IF @cost < @tolCMin
  2053. BEGIN
  2054. SET @msg = 'Cost rate exceeds minimum tolerance rate. Rate must lie between ' + CAST(@tolCMin AS VARCHAR) + ' and ' + CAST(@tolCMax AS VARCHAR)
  2055. UPDATE @exRateList SET
  2056. errorCode = 1
  2057. ,msg = @msg
  2058. WHERE exRateTreasuryId = @exRateTreasuryId
  2059. END
  2060. SET @count = @count + 1
  2061. END
  2062. --SELECT * FROM @exRateList
  2063. --RETURN
  2064. BEGIN TRANSACTION
  2065. IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
  2066. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NULL)
  2067. BEGIN
  2068. UPDATE ert SET
  2069. ert.cHoMargin = list.cHoMargin
  2070. ,ert.cAgentMargin = list.cAgentMargin
  2071. ,ert.pHoMargin = list.pHoMargin
  2072. ,ert.pAgentMargin = list.pAgentMargin
  2073. ,ert.sharingType = list.sharingType
  2074. ,ert.sharingValue = list.sharingValue
  2075. ,ert.toleranceOn = list.toleranceOn
  2076. ,ert.agentTolMin = list.agentTolMin
  2077. ,ert.agentTolMax = list.agentTolMax
  2078. ,ert.customerTolMin = list.customerTolMin
  2079. ,ert.customerTolMax = list.customerTolMax
  2080. ,ert.crossRate = list.crossRate
  2081. ,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
  2082. ,ert.agentCrossRateMargin = CASE WHEN list.agentCrossRateMargin >= 0 THEN
  2083. CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
  2084. ELSE
  2085. CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
  2086. END
  2087. ,ert.tolerance = list.tolerance
  2088. ,ert.modifiedBy = @user
  2089. ,ert.modifiedDate = GETDATE()
  2090. FROM exRateTreasury ert
  2091. INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
  2092. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NULL
  2093. END
  2094. IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK)
  2095. INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
  2096. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
  2097. )
  2098. BEGIN
  2099. DELETE FROM exRateTreasuryMod
  2100. FROM exRateTreasuryMod ertm
  2101. INNER JOIN exRateTreasury ert ON ertm.exRateTreasuryId = ert.exRateTreasuryId
  2102. INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
  2103. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
  2104. INSERT INTO exRateTreasuryMod(
  2105. exRateTreasuryId
  2106. ,tranType
  2107. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin
  2108. ,cHoMargin,cAgentMargin
  2109. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin
  2110. ,pHoMargin,pAgentMargin
  2111. ,sharingType,sharingValue
  2112. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  2113. ,maxCrossRate,crossRate
  2114. ,agentCrossRateMargin
  2115. ,customerRate
  2116. ,tolerance,isActive
  2117. ,createdBy,createdDate,modType
  2118. )
  2119. SELECT
  2120. list.exRateTreasuryId
  2121. ,tranType
  2122. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin
  2123. ,list.cHoMargin,list.cAgentMargin
  2124. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin
  2125. ,list.pHoMargin,list.pAgentMargin
  2126. ,list.sharingType,list.sharingValue
  2127. ,list.toleranceOn,list.agentTolMin,list.agentTolMax,list.customerTolMin,list.customerTolMax
  2128. ,maxCrossRate,list.crossRate
  2129. ,CASE WHEN list.agentCrossRateMargin >= 0 THEN
  2130. CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
  2131. ELSE
  2132. CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
  2133. END
  2134. ,CASE WHEN ISNULL(ert.toleranceOn, '') IN ('S','P', '') THEN list.customerRate WHEN ISNULL(ert.toleranceOn, '') = 'C' THEN list.crossRate - ISNULL(list.agentCrossRateMargin, 0) END
  2135. ,list.tolerance,isActive
  2136. ,@user,GETDATE(),'U'
  2137. FROM exRateTreasury ert WITH(NOLOCK)
  2138. INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateTreasuryId
  2139. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N' AND ert.approvedBy IS NOT NULL
  2140. END
  2141. IF EXISTS(SELECT 'X' FROM exRateTreasuryMod ertm WITH(NOLOCK)
  2142. INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
  2143. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y'
  2144. )
  2145. BEGIN
  2146. UPDATE ertm SET
  2147. ertm.cHoMargin = list.cHoMargin
  2148. ,ertm.cAgentMargin = list.cAgentMargin
  2149. ,ertm.pHoMargin = list.pHoMargin
  2150. ,ertm.pAgentMargin = list.pAgentMargin
  2151. ,ertm.sharingType = list.sharingType
  2152. ,ertm.sharingValue = list.sharingValue
  2153. ,ertm.toleranceOn = list.toleranceOn
  2154. ,ertm.agentTolMin = list.agentTolMin
  2155. ,ertm.agentTolMax = list.agentTolMax
  2156. ,ertm.customerTolMin = list.customerTolMin
  2157. ,ertm.customerTolMax = list.customerTolMax
  2158. ,ertm.tolerance = list.tolerance
  2159. ,ertm.crossRate = list.crossRate
  2160. ,ertm.agentCrossRateMargin = CASE WHEN list.agentCrossRateMargin >= 0 THEN
  2161. CASE WHEN list.agentCrossRateMargin > list.agentTolMin THEN list.agentTolMin ELSE list.agentCrossRateMargin END
  2162. ELSE
  2163. CASE WHEN (list.agentCrossRateMargin * -1) > list.agentTolMax THEN list.agentTolMax ELSE list.agentCrossRateMargin END
  2164. END
  2165. ,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
  2166. FROM exRateTreasuryMod ertm
  2167. INNER JOIN @exRateList list ON ertm.exRateTreasuryId = list.exRateTreasuryId
  2168. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y'
  2169. END
  2170. IF @@TRANCOUNT > 0
  2171. COMMIT TRANSACTION
  2172. SELECT @exRateTreasuryIds = COALESCE(ISNULL(@exRateTreasuryIds + ',', ''), '') + CAST(exRateTreasuryId AS VARCHAR) FROM @exRateList WHERE errorCode = '0'
  2173. SELECT @exRateTreasuryIds
  2174. RETURN
  2175. END
  2176. ELSE IF @flag = 'ufm' --Bulk Update From Master Record
  2177. BEGIN
  2178. IF(ISNULL(@exRateTreasuryIds, '') = '')
  2179. BEGIN
  2180. EXEC proc_errorHandler 1, 'Please select the record(s) to update', NULL
  2181. RETURN
  2182. END
  2183. /*
  2184. SET @sql = 'UPDATE exRateTreasury SET isUpdated = ''N'' WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
  2185. EXEC (@sql)
  2186. */
  2187. EXEC proc_errorHandler 0, 'Rate updated successfully', NULL
  2188. END
  2189. ELSE IF @flag IN('reject')
  2190. BEGIN
  2191. IF(ISNULL(@exRateTreasuryIds, '') = '')
  2192. BEGIN
  2193. EXEC proc_errorHandler 1, 'Please select the record(s) to approve', NULL
  2194. RETURN
  2195. END
  2196. BEGIN TRANSACTION
  2197. SET @sql = 'SELECT exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
  2198. INSERT @rateIdList
  2199. EXEC (@sql)
  2200. WHILE EXISTS(SELECT 'X' FROM @rateIdList)
  2201. BEGIN
  2202. SELECT TOP 1 @exRateTreasuryId = exRateTreasuryId FROM @rateIdList
  2203. IF EXISTS (SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
  2204. BEGIN --New record
  2205. SET @modType = 'Reject'
  2206. DELETE FROM exRateTreasury WHERE exRateTreasuryId = @exRateTreasuryId
  2207. END
  2208. ELSE
  2209. BEGIN
  2210. SET @modType = 'Reject'
  2211. DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
  2212. END
  2213. UPDATE exRateTreasury SET
  2214. isUpdated = 'N'
  2215. WHERE exRateTreasuryId = @exRateTreasuryId
  2216. DELETE FROM @rateIdList WHERE exRateTreasuryId = @exRateTreasuryId
  2217. END
  2218. IF @@TRANCOUNT > 0
  2219. COMMIT TRANSACTION
  2220. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @exRateTreasuryId
  2221. END
  2222. ELSE IF @flag IN ('approve')
  2223. BEGIN
  2224. IF(ISNULL(@exRateTreasuryIds, '') = '')
  2225. BEGIN
  2226. EXEC proc_errorHandler 1, 'Please select the record(s) to approve', NULL
  2227. RETURN
  2228. END
  2229. BEGIN TRANSACTION
  2230. SET @sql = 'SELECT exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')'
  2231. INSERT @rateIdList
  2232. EXEC (@sql)
  2233. WHILE EXISTS(SELECT 'X' FROM @rateIdList)
  2234. BEGIN
  2235. SELECT TOP 1 @exRateTreasuryId = exRateTreasuryId FROM @rateIdList
  2236. IF EXISTS (SELECT 'X' FROM exRateTreasury WHERE approvedBy IS NULL AND exRateTreasuryId = @exRateTreasuryId)
  2237. SET @modType = 'I'
  2238. ELSE
  2239. SELECT @modType = modType FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
  2240. IF @modType = 'I'
  2241. BEGIN --New record
  2242. INSERT INTO exRateTreasuryHistory(
  2243. exRateTreasuryId
  2244. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  2245. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  2246. ,sharingValue,sharingType,pSharingValue,pSharingType
  2247. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  2248. ,tranType
  2249. ,crossRate,crossRateOperation,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,toleranceOperation
  2250. ,premium,crossRateFactor
  2251. ,isActive,modType,modFor
  2252. ,createdBy,createdDate,approvedBy,approvedDate
  2253. )
  2254. SELECT
  2255. exRateTreasuryId
  2256. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  2257. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  2258. ,sharingValue,sharingType,pSharingValue,pSharingType
  2259. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  2260. ,tranType
  2261. ,crossRate,crossRateOperation,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,toleranceOperation
  2262. ,premium,crossRateFactor
  2263. ,isActive,'I','T' --T - Treasury, O - Operation
  2264. ,createdBy,createdDate,@user,@date
  2265. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  2266. SET @exRateHistoryId = SCOPE_IDENTITY()
  2267. UPDATE exRateTreasury SET
  2268. premium = 0
  2269. ,isActive = 'Y'
  2270. ,approvedBy = @user
  2271. ,approvedDate = @date
  2272. ,exRateHistoryId = @exRateHistoryId
  2273. ,isUpdated = 'N'
  2274. ,isUpdatedOperation = 'Y'
  2275. WHERE exRateTreasuryId = @exRateTreasuryId
  2276. END
  2277. ELSE IF @modType = 'U'
  2278. BEGIN
  2279. INSERT INTO exRateTreasuryHistory(
  2280. exRateTreasuryId
  2281. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  2282. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  2283. ,sharingValue,sharingType,pSharingValue,pSharingType
  2284. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  2285. ,tranType
  2286. ,crossRate,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,crossRateFactor
  2287. ,isActive,modType,modFor
  2288. ,createdBy,createdDate,approvedBy,approvedDate
  2289. )
  2290. SELECT
  2291. mode.exRateTreasuryId
  2292. ,mode.cRateId,mode.cCurrency,mode.cCountry,mode.cAgent,mode.cRateFactor,mode.cRate,mode.cMargin,mode.cHoMargin,mode.cAgentMargin
  2293. ,mode.pRateId,mode.pCurrency,mode.pCountry,mode.pAgent,mode.pRateFactor,mode.pRate,mode.pMargin,mode.pHoMargin,mode.pAgentMargin
  2294. ,mode.sharingValue,mode.sharingType,mode.pSharingValue,mode.pSharingType
  2295. ,mode.toleranceOn,mode.agentTolMin,mode.agentTolMax,mode.customerTolMin,mode.customerTolMax
  2296. ,mode.tranType
  2297. ,mode.crossRate,mode.maxCrossRate,mode.agentCrossRateMargin,mode.customerRate,mode.tolerance,mode.crossRateFactor
  2298. ,mode.isActive,mode.modType,'T'
  2299. ,mode.createdBy,mode.createdDate,@user,GETDATE()
  2300. FROM exRateTreasuryMod mode WITH(NOLOCK)
  2301. INNER JOIN exRateTreasury main WITH(NOLOCK) ON mode.exRateTreasuryId = main.exRateTreasuryId
  2302. WHERE mode.exRateTreasuryId = @exRateTreasuryId
  2303. SET @exRateHistoryId = SCOPE_IDENTITY()
  2304. UPDATE main SET
  2305. main.cRateId = mode.cRateId
  2306. ,main.cRate = mode.cRate
  2307. ,main.cMargin = mode.cMargin
  2308. ,main.cHoMargin = mode.cHoMargin
  2309. ,main.cAgentMargin = mode.cAgentMargin
  2310. ,main.pRateId = mode.pRateId
  2311. ,main.pRate = mode.pRate
  2312. ,main.pMargin = mode.pMargin
  2313. ,main.pHoMargin = mode.pHoMargin
  2314. ,main.pAgentMargin = mode.pAgentMargin
  2315. ,main.sharingType = mode.sharingType
  2316. ,main.sharingValue = mode.sharingValue
  2317. ,main.toleranceOn = mode.toleranceOn
  2318. ,main.agentTolMin = mode.agentTolMin
  2319. ,main.agentTolMax = mode.agentTolMax
  2320. ,main.customerTolMin = mode.customerTolMin
  2321. ,main.customerTolMax = mode.customerTolMax
  2322. ,main.maxCrossRate = mode.maxCrossRate
  2323. ,main.crossRate = mode.crossRate
  2324. ,main.agentCrossRateMargin = mode.agentCrossRateMargin
  2325. ,main.customerRate = mode.customerRate
  2326. ,main.tolerance = mode.tolerance
  2327. ,main.isActive = mode.isActive
  2328. ,main.modifiedBy = mode.createdBy
  2329. ,main.modifiedDate = mode.createdDate
  2330. ,main.approvedBy = @user
  2331. ,main.approvedDate = @date
  2332. ,main.exRateHistoryId = @exRateHistoryId
  2333. ,main.isUpdated = 'N'
  2334. ,main.isUpdatedOperation = 'Y'
  2335. FROM exRateTreasury main
  2336. INNER JOIN exRateTreasuryMod mode ON mode.exRateTreasuryId = main.exRateTreasuryId
  2337. WHERE mode.exRateTreasuryId = @exRateTreasuryId
  2338. END
  2339. ELSE IF @modType = 'D'
  2340. BEGIN
  2341. INSERT INTO exRateTreasuryHistory(
  2342. exRateTreasuryId
  2343. ,cRateId,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  2344. ,pRateId,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  2345. ,sharingValue,sharingType,pSharingValue,pSharingType
  2346. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  2347. ,tranType
  2348. ,crossRate,maxCrossRate,agentCrossRateMargin,customerRate,tolerance,crossRateFactor
  2349. ,isActive,modType,modFor
  2350. ,createdBy,createdDate,approvedBy,approvedDate
  2351. )
  2352. SELECT
  2353. mode.exRateTreasuryId
  2354. ,mode.cRateId,mode.cCurrency,mode.cCountry,mode.cAgent,mode.cRateFactor,mode.cRate,mode.cMargin,mode.cHoMargin,mode.cAgentMargin
  2355. ,mode.pRateId,mode.pCurrency,mode.pCountry,mode.pAgent,mode.pRateFactor,mode.pRate,mode.pMargin,mode.pHoMargin,mode.pAgentMargin
  2356. ,mode.sharingValue,mode.sharingType,mode.pSharingValue,mode.pSharingType
  2357. ,mode.toleranceOn,mode.agentTolMin,mode.agentTolMax,mode.customerTolMin,mode.customerTolMax
  2358. ,mode.tranType
  2359. ,mode.crossRate,mode.maxCrossRate,mode.agentCrossRateMargin,mode.customerRate,mode.tolerance,mode.crossRateFactor
  2360. ,mode.isActive,mode.modType,'T'
  2361. ,mode.createdBy,mode.createdDate,@user,@date
  2362. FROM exRateTreasuryMod mode WITH(NOLOCK)
  2363. INNER JOIN exRateTreasury main WITH(NOLOCK) ON mode.exRateTreasuryId = main.exRateTreasuryId
  2364. WHERE mode.exRateTreasuryId = @exRateTreasuryId
  2365. SET @exRateHistoryId = SCOPE_IDENTITY()
  2366. UPDATE exRateTreasury SET
  2367. isActive = 'N'
  2368. ,modifiedDate = @date
  2369. ,modifiedBy = @user
  2370. ,isUpdated = 'N'
  2371. ,isUpdatedOperation = 'Y'
  2372. ,exRateHistoryId = @exRateHistoryId
  2373. WHERE exRateTreasuryId = @exRateTreasuryId
  2374. END
  2375. IF @modType IN ('U', 'D')
  2376. BEGIN
  2377. DELETE FROM exRateTreasuryMod WHERE exRateTreasuryId = @exRateTreasuryId
  2378. END
  2379. SELECT @cCountry = NULL, @cAgent = NULL, @pRate = NULL, @pMargin = NULL, @pHoMargin = NULL, @pCountry = NULL, @pAgent = NULL, @pCurrency = NULL
  2380. SELECT
  2381. @cCountry = cCountry, @cAgent = cAgent, @pRate = pRate, @pMargin = pMargin
  2382. ,@pHoMargin = pHoMargin, @pCountry = pCountry
  2383. ,@pAgent = pAgent, @pCurrency = pCurrency
  2384. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  2385. --IF (@cCountry = 233 AND @cAgent = 4818) OR (@cCountry = 133 AND @cAgent = 4746)
  2386. --BEGIN
  2387. -- 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))
  2388. -- DECLARE @cost_payoutRate FLOAT, @payout_agent VARCHAR(10)
  2389. -- SET @cost_payoutRate = ROUND((@pRate - ISNULL(@pMargin, 0) - ISNULL(@pHoMargin, 0)), 10)
  2390. -- SELECT @pCountryName = countryName FROM countryMaster WITH(NOLOCK) WHERE countryId = @pCountry
  2391. -- SET @payout_agent = NULL
  2392. -- SELECT @payout_agent = mapCodeInt FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
  2393. -- INSERT INTO @partnerExRate(cAgent, cost_payoutRate, payout_countryName, payout_agent, pAgent, pCurrency)
  2394. -- SELECT @cAgent, @cost_payoutRate, @pCountryName, @payout_agent, @pAgent, @pCurrency
  2395. -- IF @cCountry = 133 AND @cAgent = 4746
  2396. -- BEGIN
  2397. -- SELECT @exRateMsg = 'IME M, IME Nepal ExRate for 1 USD = ' + CAST(@cost_payoutRate AS VARCHAR) + ' NPR as of date ' + CONVERT(VARCHAR, GETDATE(), 109)
  2398. -- END
  2399. -- IF @cCountry = 233 AND @cAgent = 4818
  2400. -- BEGIN
  2401. -- SELECT @exRateMsg = 'IME UK, IME Nepal ExRate for 1 USD = ' + CAST(@cost_payoutRate AS VARCHAR) + ' NPR as of date ' + CONVERT(VARCHAR, GETDATE(), 109)
  2402. -- END
  2403. -- SELECT @cCountryName = countryName FROM countryMaster WITH(NOLOCK) WHERE countryId = @cCountry
  2404. -- EXEC proc_emailSmsHandler @flag = 'sms', @user = @user, @msg = @exRateMsg, @country = @cCountryName
  2405. --END
  2406. DELETE FROM @rateIdList WHERE exRateTreasuryId = @exRateTreasuryId
  2407. END
  2408. IF @@TRANCOUNT > 0
  2409. COMMIT TRANSACTION
  2410. EXEC proc_errorHandler 0, 'Changes approved successfully.', @exRateTreasuryId
  2411. END
  2412. ELSE IF @flag = 'r' --Get Report
  2413. BEGIN
  2414. IF @sortBy = 'sendingCountry'
  2415. SET @sortBy = 'cCountryName,cAgentName,pCountryName,cBranchName,pAgentName'
  2416. ELSE IF @sortBy = 'receivingCountry'
  2417. SET @sortBy = 'pCountryName,cBranchName,pAgentName,cCountryName,cAgentName'
  2418. SET @sortOrder = ''
  2419. IF @cBranch IS NOT NULL
  2420. BEGIN
  2421. IF OBJECT_ID('tempdb..##tmpXRate') IS NOT NULL
  2422. DROP TABLE ##tmpXRate
  2423. SELECT
  2424. main.exRateTreasuryId
  2425. ,tranType = ISNULL(tt.typeTitle, 'Any')
  2426. ,main.cCountry
  2427. ,cCountryName = cc.countryName
  2428. ,cCountryCode = cc.countryCode
  2429. ,main.cAgent
  2430. ,cAgentName = ISNULL(cam.agentName, '[All]')
  2431. ,cBranch = @cBranch
  2432. ,cBranchName = (SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @cBranch)
  2433. ,main.pCountry
  2434. ,pCountryName = pc.countryName
  2435. ,pCountryCode = pc.countryCode
  2436. ,main.pAgent
  2437. ,pAgentName = ISNULL(pam.agentName, '[All]')
  2438. ,main.cCurrency
  2439. ,main.pCurrency
  2440. ,main.cRateFactor
  2441. ,main.pRateFactor
  2442. ,main.cRate
  2443. ,cMargin = ISNULL(main.cMargin, 0)
  2444. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2445. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2446. ,main.pRate
  2447. ,pMargin = ISNULL(main.pMargin, 0)
  2448. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2449. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2450. ,sharingType
  2451. ,sharingValue = ISNULL(main.sharingValue, 0)
  2452. ,toleranceOn
  2453. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2454. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2455. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2456. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2457. ,main.maxCrossRate
  2458. ,main.crossRate
  2459. ,main.agentCrossRateMargin
  2460. ,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
  2461. ,main.tolerance
  2462. ,premium = main.premium
  2463. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2464. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2465. ,main.crossRateFactor
  2466. ,main.isUpdated
  2467. ,modifiedBy = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, '1900-01-01') THEN main.modifiedByOperation ELSE
  2468. ISNULL(main.modifiedBy,main.createdBy) END
  2469. ,modifiedDate = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, '1900-01-01') THEN main.modifiedDateOperation ELSE
  2470. ISNULL(main.modifiedDate,main.createdDate) END
  2471. ,main.approvedBy
  2472. ,main.approvedDate
  2473. INTO ##tmpXRate
  2474. FROM exRateTreasury main WITH(NOLOCK)
  2475. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2476. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2477. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2478. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2479. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2480. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
  2481. WHERE cCountry = 133 AND cAgent = @cAgent AND main.approvedBy IS NOT NULL AND ISNULL(main.isActive, 'N') = 'Y'
  2482. ORDER BY pCountryName, pAgentName
  2483. UPDATE tmp SET
  2484. tmp.premium = erbw.premium
  2485. ,tmp.modifiedBy = erbw.modifiedBy
  2486. ,tmp.modifiedDate = erbw.modifiedDate
  2487. ,tmp.approvedBy = erbw.modifiedBy
  2488. ,tmp.approvedDate = erbw.modifiedDate
  2489. FROM ##tmpXRate tmp
  2490. INNER JOIN exRateBranchWise erbw ON tmp.exRateTreasuryId = erbw.exRateTreasuryId AND erbw.cBranch = @cBranch AND ISNULL(erbw.isActive, 'N') = 'Y'
  2491. SET @table = '(
  2492. SELECT * FROM ##tmpXRate
  2493. )x
  2494. '
  2495. END
  2496. ELSE
  2497. BEGIN
  2498. --SELECT * FROM exRateBranchWise
  2499. SET @table = '(
  2500. SELECT
  2501. main.exRateTreasuryId
  2502. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  2503. ,main.cCountry
  2504. ,cCountryName = cc.countryName
  2505. ,cCountryCode = cc.countryCode
  2506. ,main.cAgent
  2507. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  2508. ,cBranch = NULL
  2509. ,cBranchName = ''[All]''
  2510. ,main.pCountry
  2511. ,pCountryName = pc.countryName
  2512. ,pCountryCode = pc.countryCode
  2513. ,main.pAgent
  2514. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  2515. ,main.cCurrency
  2516. ,main.pCurrency
  2517. ,main.cRateFactor
  2518. ,main.pRateFactor
  2519. ,main.cRate
  2520. ,cMargin = ISNULL(main.cMargin, 0)
  2521. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2522. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2523. ,main.pRate
  2524. ,pMargin = ISNULL(main.pMargin, 0)
  2525. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2526. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2527. ,sharingType
  2528. ,sharingValue = ISNULL(main.sharingValue, 0)
  2529. ,toleranceOn
  2530. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2531. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2532. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2533. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2534. ,main.maxCrossRate
  2535. ,main.crossRate
  2536. ,main.agentCrossRateMargin
  2537. ,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
  2538. ,main.tolerance
  2539. ,premium = main.premium
  2540. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2541. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2542. ,main.crossRateFactor
  2543. ,main.isUpdated
  2544. ,modifiedBy = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, ''1900-01-01'') THEN main.modifiedByOperation ELSE
  2545. ISNULL(main.modifiedBy,main.createdBy) END
  2546. ,modifiedDate = CASE WHEN ISNULL(main.modifiedDate,main.createdDate) < ISNULL(main.modifiedDateOperation, ''1900-01-01'') THEN main.modifiedDateOperation ELSE
  2547. ISNULL(main.modifiedDate,main.createdDate) END
  2548. ,main.approvedBy
  2549. ,main.approvedDate
  2550. FROM exRateTreasury main WITH(NOLOCK)
  2551. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2552. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2553. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2554. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2555. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2556. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  2557. WHERE ISNULL(main.isActive, ''N'') = ''Y''
  2558. '
  2559. /*
  2560. SET @table = '(
  2561. SELECT
  2562. main.exRateTreasuryId
  2563. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  2564. ,main.cCountry
  2565. ,cCountryName = cc.countryName
  2566. ,cCountryCode = cc.countryCode
  2567. ,main.cAgent
  2568. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  2569. ,main.pCountry
  2570. ,pCountryName = pc.countryName
  2571. ,pCountryCode = pc.countryCode
  2572. ,main.pAgent
  2573. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  2574. ,main.cCurrency
  2575. ,main.pCurrency
  2576. ,main.cRateFactor
  2577. ,main.pRateFactor
  2578. ,main.cRate
  2579. ,cMargin = ISNULL(main.cMargin, 0)
  2580. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2581. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2582. ,main.pRate
  2583. ,pMargin = ISNULL(main.pMargin, 0)
  2584. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2585. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2586. ,sharingType
  2587. ,sharingValue = ISNULL(main.sharingValue, 0)
  2588. ,toleranceOn
  2589. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2590. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2591. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2592. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2593. ,main.maxCrossRate
  2594. ,main.crossRate
  2595. ,main.customerRate
  2596. ,main.tolerance
  2597. ,main.premium
  2598. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2599. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2600. ,main.crossRateFactor
  2601. ,main.isUpdated
  2602. ,modifiedBy = ISNULL(main.modifiedBy,main.createdBy)
  2603. ,modifiedDate = ISNULL(main.modifiedDate,main.createdDate)
  2604. ,main.approvedBy
  2605. ,main.approvedDate
  2606. FROM exRateTreasury main WITH(NOLOCK)
  2607. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2608. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2609. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2610. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2611. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2612. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  2613. WHERE 1 = 1
  2614. '
  2615. */
  2616. SET @table = @table + ') x'
  2617. END
  2618. --PRINT (@table)
  2619. --RETURN
  2620. SET @sql_filter = ''
  2621. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  2622. IF @hasChanged IS NOT NULL
  2623. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  2624. IF @isUpdated IS NOT NULL
  2625. SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
  2626. IF @cCurrency IS NOT NULL
  2627. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  2628. IF @cCountry IS NOT NULL
  2629. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  2630. IF @cCountryName IS NOT NULL
  2631. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  2632. IF @cAgent IS NOT NULL
  2633. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  2634. IF @cAgentName IS NOT NULL
  2635. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  2636. IF @cBranch IS NOT NULL
  2637. SET @sql_filter = @sql_filter + ' AND cBranch = ' + CAST(@cBranch AS VARCHAR)
  2638. IF @pCurrency IS NOT NULL
  2639. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  2640. IF @pCountry IS NOT NULL
  2641. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  2642. IF @pCountryName IS NOT NULL
  2643. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  2644. IF @pAgent IS NOT NULL
  2645. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  2646. IF @pAgentName IS NOT NULL
  2647. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  2648. IF @tranType IS NOT NULL
  2649. SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
  2650. SET @select_field_list = '
  2651. exRateTreasuryId
  2652. ,tranType
  2653. ,cCountry
  2654. ,cCountryName
  2655. ,cCountryCode
  2656. ,cAgent
  2657. ,cAgentName
  2658. ,cBranchName
  2659. ,pCountry
  2660. ,pCountryName
  2661. ,pCountryCode
  2662. ,pAgent
  2663. ,pAgentName
  2664. ,cCurrency
  2665. ,pCurrency
  2666. ,cRateFactor
  2667. ,pRateFactor
  2668. ,cRate
  2669. ,cMargin
  2670. ,cHoMargin
  2671. ,cAgentMargin
  2672. ,pRate
  2673. ,pMargin
  2674. ,pHoMargin
  2675. ,pAgentMargin
  2676. ,sharingType
  2677. ,sharingValue
  2678. ,toleranceOn
  2679. ,agentTolMin
  2680. ,agentTolMax
  2681. ,customerTolMin
  2682. ,customerTolMax
  2683. ,maxCrossRate
  2684. ,crossRate
  2685. ,agentCrossRateMargin
  2686. ,customerRate
  2687. ,tolerance
  2688. ,premium
  2689. ,cost
  2690. ,margin
  2691. ,crossRateFactor
  2692. ,isUpdated
  2693. ,modifiedBy
  2694. ,modifiedDate
  2695. ,approvedBy
  2696. ,approvedDate
  2697. '
  2698. --PRINT @table
  2699. EXEC dbo.proc_paging
  2700. @table
  2701. ,@sql_filter
  2702. ,@select_field_list
  2703. ,@extra_field_list
  2704. ,@sortBy
  2705. ,@sortOrder
  2706. ,@pageSize
  2707. ,@pageNumber
  2708. IF OBJECT_ID('tempdb..##tmpXRate') IS NOT NULL
  2709. DROP TABLE ##tmpXRate
  2710. END
  2711. ELSE IF @flag = 'or' --Get Operation Report
  2712. BEGIN
  2713. IF @sortBy = 'sendingCountry'
  2714. SET @sortBy = 'cBranchName,pCountryName'
  2715. ELSE IF @sortBy = 'receivingCountry'
  2716. SET @sortBy = 'cBranchName,pCountryName'
  2717. SET @sortOrder = ''
  2718. IF @cBranch IS NOT NULL
  2719. BEGIN
  2720. IF OBJECT_ID('tempdb..##tmpRate') IS NOT NULL
  2721. DROP TABLE ##tmpRate
  2722. SELECT
  2723. main.exRateTreasuryId
  2724. ,tranType = ISNULL(tt.typeTitle, 'Any')
  2725. ,main.cCountry
  2726. ,cCountryName = cc.countryName
  2727. ,cCountryCode = cc.countryCode
  2728. ,main.cAgent
  2729. ,cAgentName = ISNULL(cam.agentName, '[All]')
  2730. ,cBranch = @cBranch
  2731. ,cBranchName = (SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @cBranch)
  2732. ,main.pCountry
  2733. ,pCountryName = pc.countryName
  2734. ,pCountryCode = pc.countryCode
  2735. ,main.pAgent
  2736. ,pAgentName = ISNULL(pam.agentName, '[All]')
  2737. ,main.cCurrency
  2738. ,main.pCurrency
  2739. ,main.cRateFactor
  2740. ,main.pRateFactor
  2741. ,main.cRate
  2742. ,cMargin = ISNULL(main.cMargin, 0)
  2743. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2744. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2745. ,main.pRate
  2746. ,pMargin = ISNULL(main.pMargin, 0)
  2747. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2748. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2749. ,sharingType
  2750. ,sharingValue = ISNULL(main.sharingValue, 0)
  2751. ,toleranceOn
  2752. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2753. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2754. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2755. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2756. ,main.maxCrossRate
  2757. ,main.crossRate
  2758. ,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
  2759. ,tolerance = ISNULL(main.toleranceOperation, main.tolerance)
  2760. ,premium = main.premium
  2761. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2762. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2763. ,main.crossRateFactor
  2764. ,main.isUpdated
  2765. ,modifiedBy = ISNULL(main.modifiedByOperation, main.approvedBy)
  2766. ,modifiedDate = ISNULL(main.modifiedDateOperation, main.approvedDate)
  2767. ,approvedBy = main.modifiedByOperation
  2768. ,approvedDate = main.modifiedDateOperation
  2769. INTO ##tmpRate
  2770. FROM exRateTreasury main WITH(NOLOCK)
  2771. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2772. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2773. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2774. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2775. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2776. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
  2777. WHERE cCountry = 133 AND cAgent = dbo.FNAGetIMEAgentId() AND main.approvedBy IS NOT NULL AND ISNULL(main.isActive, 'N') = 'Y'
  2778. ORDER BY pCountryName, pAgentName
  2779. UPDATE tmp SET
  2780. tmp.premium = erbw.premium
  2781. ,tmp.modifiedBy = erbw.modifiedBy
  2782. ,tmp.modifiedDate = erbw.modifiedDate
  2783. ,tmp.approvedBy = erbw.modifiedBy
  2784. ,tmp.approvedDate = erbw.modifiedDate
  2785. FROM ##tmpRate tmp
  2786. INNER JOIN exRateBranchWise erbw ON tmp.exRateTreasuryId = erbw.exRateTreasuryId AND erbw.cBranch = @cBranch AND ISNULL(erbw.isActive, 'N') = 'Y'
  2787. SET @table = '(
  2788. SELECT * FROM ##tmpRate
  2789. )x
  2790. '
  2791. END
  2792. ELSE
  2793. BEGIN
  2794. --SELECT * FROM exRateBranchWise
  2795. SET @table = '(
  2796. SELECT
  2797. main.exRateTreasuryId
  2798. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  2799. ,main.cCountry
  2800. ,cCountryName = cc.countryName
  2801. ,cCountryCode = cc.countryCode
  2802. ,main.cAgent
  2803. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  2804. ,cBranch = NULL
  2805. ,cBranchName = ''[All]''
  2806. ,main.pCountry
  2807. ,pCountryName = pc.countryName
  2808. ,pCountryCode = pc.countryCode
  2809. ,main.pAgent
  2810. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  2811. ,main.cCurrency
  2812. ,main.pCurrency
  2813. ,main.cRateFactor
  2814. ,main.pRateFactor
  2815. ,main.cRate
  2816. ,cMargin = ISNULL(main.cMargin, 0)
  2817. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2818. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2819. ,main.pRate
  2820. ,pMargin = ISNULL(main.pMargin, 0)
  2821. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2822. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2823. ,sharingType
  2824. ,sharingValue = ISNULL(main.sharingValue, 0)
  2825. ,toleranceOn
  2826. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2827. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2828. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2829. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2830. ,main.maxCrossRate
  2831. ,main.crossRate
  2832. ,customerRate = ISNULL(main.crossRateOperation, main.customerRate)
  2833. ,main.tolerance
  2834. ,premium = main.premium
  2835. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2836. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2837. ,main.crossRateFactor
  2838. ,main.isUpdated
  2839. ,modifiedBy = ISNULL(main.modifiedByOperation, main.approvedBy)
  2840. ,modifiedDate = ISNULL(main.modifiedDateOperation, main.approvedDate)
  2841. ,approvedBy = main.modifiedByOperation
  2842. ,approvedDate = main.modifiedDateOperation
  2843. FROM exRateTreasury main WITH(NOLOCK)
  2844. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2845. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2846. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2847. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2848. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2849. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  2850. WHERE ISNULL(main.isActive, ''N'') = ''Y''
  2851. '
  2852. /*
  2853. SET @table = '(
  2854. SELECT
  2855. main.exRateTreasuryId
  2856. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  2857. ,main.cCountry
  2858. ,cCountryName = cc.countryName
  2859. ,cCountryCode = cc.countryCode
  2860. ,main.cAgent
  2861. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  2862. ,main.pCountry
  2863. ,pCountryName = pc.countryName
  2864. ,pCountryCode = pc.countryCode
  2865. ,main.pAgent
  2866. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  2867. ,main.cCurrency
  2868. ,main.pCurrency
  2869. ,main.cRateFactor
  2870. ,main.pRateFactor
  2871. ,main.cRate
  2872. ,cMargin = ISNULL(main.cMargin, 0)
  2873. ,cHoMargin = ISNULL(main.cHoMargin, 0)
  2874. ,cAgentMargin = ISNULL(cAgentMargin, 0)
  2875. ,main.pRate
  2876. ,pMargin = ISNULL(main.pMargin, 0)
  2877. ,pHoMargin = ISNULL(main.pHoMargin, 0)
  2878. ,pAgentMargin = ISNULL(main.pAgentMargin, 0)
  2879. ,sharingType
  2880. ,sharingValue = ISNULL(main.sharingValue, 0)
  2881. ,toleranceOn
  2882. ,agentTolMin = ISNULL(main.agentTolMin, 0)
  2883. ,agentTolMax = ISNULL(main.agentTolMax, 0)
  2884. ,customerTolMin = ISNULL(main.customerTolMin, 0)
  2885. ,customerTolMax = ISNULL(main.customerTolMax, 0)
  2886. ,main.maxCrossRate
  2887. ,main.crossRate
  2888. ,main.customerRate
  2889. ,main.tolerance
  2890. ,main.premium
  2891. ,cost = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)), crm.rateMaskMulAd)
  2892. ,margin = ROUND(pRate/(crossRate + ISNULL(tolerance, 0)) - cRate, crm.rateMaskMulAd)
  2893. ,main.crossRateFactor
  2894. ,main.isUpdated
  2895. ,modifiedBy = ISNULL(main.modifiedBy,main.createdBy)
  2896. ,modifiedDate = ISNULL(main.modifiedDate,main.createdDate)
  2897. ,main.approvedBy
  2898. ,main.approvedDate
  2899. FROM exRateTreasury main WITH(NOLOCK)
  2900. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  2901. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  2902. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  2903. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  2904. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  2905. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  2906. WHERE 1 = 1
  2907. '
  2908. */
  2909. SET @table = @table + ') x'
  2910. END
  2911. --PRINT (@table)
  2912. --RETURN
  2913. SET @sql_filter = ''
  2914. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  2915. IF @hasChanged IS NOT NULL
  2916. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  2917. IF @isUpdated IS NOT NULL
  2918. SET @sql_filter = @sql_filter + ' AND ISNULL(isUpdated, ''N'') = ''' + @isUpdated + ''''
  2919. IF @cCurrency IS NOT NULL
  2920. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  2921. IF @cCountry IS NOT NULL
  2922. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  2923. IF @cCountryName IS NOT NULL
  2924. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  2925. IF @cAgent IS NOT NULL
  2926. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  2927. IF @cAgentName IS NOT NULL
  2928. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  2929. IF @cBranch IS NOT NULL
  2930. SET @sql_filter = @sql_filter + ' AND cBranch = ' + CAST(@cBranch AS VARCHAR)
  2931. IF @pCurrency IS NOT NULL
  2932. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  2933. IF @pCountry IS NOT NULL
  2934. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  2935. IF @pCountryName IS NOT NULL
  2936. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  2937. IF @pAgent IS NOT NULL
  2938. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  2939. IF @pAgentName IS NOT NULL
  2940. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  2941. IF @tranType IS NOT NULL
  2942. SET @sql_filter = @sql_filter + ' AND tranType = ' + CAST(@tranType AS VARCHAR(50))
  2943. SET @select_field_list = '
  2944. exRateTreasuryId
  2945. ,tranType
  2946. ,cCountry
  2947. ,cCountryName
  2948. ,cCountryCode
  2949. ,cAgent
  2950. ,cAgentName
  2951. ,cBranchName
  2952. ,pCountry
  2953. ,pCountryName
  2954. ,pCountryCode
  2955. ,pAgent
  2956. ,pAgentName
  2957. ,cCurrency
  2958. ,pCurrency
  2959. ,cRateFactor
  2960. ,pRateFactor
  2961. ,cRate
  2962. ,cMargin
  2963. ,cHoMargin
  2964. ,cAgentMargin
  2965. ,pRate
  2966. ,pMargin
  2967. ,pHoMargin
  2968. ,pAgentMargin
  2969. ,sharingType
  2970. ,sharingValue
  2971. ,toleranceOn
  2972. ,agentTolMin
  2973. ,agentTolMax
  2974. ,customerTolMin
  2975. ,customerTolMax
  2976. ,maxCrossRate
  2977. ,crossRate
  2978. ,customerRate
  2979. ,tolerance
  2980. ,premium
  2981. ,cost
  2982. ,margin
  2983. ,crossRateFactor
  2984. ,isUpdated
  2985. ,modifiedBy
  2986. ,modifiedDate
  2987. ,approvedBy
  2988. ,approvedDate
  2989. '
  2990. --PRINT @table
  2991. EXEC dbo.proc_paging
  2992. @table
  2993. ,@sql_filter
  2994. ,@select_field_list
  2995. ,@extra_field_list
  2996. ,@sortBy
  2997. ,@sortOrder
  2998. ,@pageSize
  2999. ,@pageNumber
  3000. IF OBJECT_ID('tempdb..##tmpRate') IS NOT NULL
  3001. DROP TABLE ##tmpRate
  3002. END
  3003. ELSE IF @flag = 'ms' --Modify Summary
  3004. BEGIN
  3005. INSERT INTO #exRateIdTemp
  3006. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  3007. SELECT
  3008. exRateTreasuryId = main.exRateTreasuryId
  3009. ,tranType = ISNULL(tt.typeTitle, 'All')
  3010. ,cCountry = main.cCountry
  3011. ,cCountryName = cc.countryName
  3012. ,cCountryCode = cc.countryCode
  3013. ,cAgent = main.cAgent
  3014. ,cAgentName = ISNULL(cam.agentName, '[All]')
  3015. ,pCountry = main.pCountry
  3016. ,pCountryName = pc.countryName
  3017. ,pCountryCode = pc.countryCode
  3018. ,pAgent = main.pAgent
  3019. ,pAgentName = ISNULL(pam.agentName, '[All]')
  3020. ,cCurrency = main.cCurrency
  3021. ,pCurrency = main.pCurrency
  3022. ,cRateFactor = main.cRateFactor
  3023. ,pRateFactor = main.pRateFactor
  3024. ,cRate = main.cRate
  3025. ,cRateNew = mode.cRate
  3026. ,cMargin = main.cMargin
  3027. ,cMarginNew = mode.cMargin
  3028. ,cHoMargin = main.cHoMargin
  3029. ,cHoMarginNew = mode.cHoMargin
  3030. ,cAgentMargin = main.cAgentMargin
  3031. ,cAgentMarginNew = mode.cAgentMargin
  3032. ,pRate = main.pRate
  3033. ,pRateNew = mode.pRate
  3034. ,pMargin = main.pMargin
  3035. ,pMarginNew = mode.pMargin
  3036. ,pHoMargin = main.pHoMargin
  3037. ,pHoMarginNew = mode.pHoMargin
  3038. ,pAgentMargin = main.pAgentMargin
  3039. ,pAgentMarginNew = mode.pAgentMargin
  3040. ,sharingType = main.sharingType
  3041. ,sharingTypeNew = mode.sharingType
  3042. ,sharingValue = main.sharingValue
  3043. ,sharingValueNew = mode.sharingValue
  3044. ,toleranceOn = main.toleranceOn
  3045. ,toleranceOnNew = mode.toleranceOn
  3046. ,agentTolMin = main.agentTolMin
  3047. ,agentTolMinNew = mode.agentTolMin
  3048. ,agentTolMax = main.agentTolMax
  3049. ,agentTolMaxNew = mode.agentTolMax
  3050. ,customerTolMin = main.customerTolMin
  3051. ,customerTolMinNew = mode.customerTolMin
  3052. ,customerTolMax = main.customerTolMax
  3053. ,customerTolMaxNew = mode.customerTolMax
  3054. ,maxCrossRate = main.maxCrossRate
  3055. ,crossRate = main.crossRate
  3056. ,customerRate = main.customerRate
  3057. ,tolerance = main.tolerance
  3058. ,maxCrossRateNew = mode.maxCrossRate
  3059. ,crossRateNew = mode.crossRate
  3060. ,customerRateNew = mode.customerRate
  3061. ,toleranceNew = mode.tolerance
  3062. ,agentCrossRateMargin = main.agentCrossRateMargin
  3063. ,agentCrossRateMarginNew = mode.agentCrossRateMargin
  3064. ,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3065. ,costNew = ROUND(mode.pRate/(mode.crossRate + ISNULL(mode.tolerance, 0)), crm.rateMaskMulAd)
  3066. ,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
  3067. ,marginNew = ROUND(mode.pRate/(mode.crossRate + ISNULL(mode.tolerance, 0)) - mode.cRate, crm.rateMaskMulAd)
  3068. ,[status] = CASE WHEN ISNULL(main.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
  3069. ,statusNew = CASE WHEN ISNULL(mode.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
  3070. ,modType = CASE WHEN main.approvedBy IS NULL THEN 'Insert' ELSE 'Update' END
  3071. ,main.createdBy
  3072. ,main.createdDate
  3073. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  3074. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  3075. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateTreasuryId IS NOT NULL) THEN 'Y' ELSE 'N' END
  3076. FROM exRateTreasury main WITH(NOLOCK)
  3077. INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
  3078. LEFT JOIN exRateTreasuryMod mode WITH(NOLOCK) ON main.exRateTreasuryId = mode.exRateTreasuryId
  3079. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3080. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3081. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3082. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3083. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3084. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
  3085. ORDER BY cCountryName, cAgentName, pCountryName, pAgentName
  3086. --AND ISNULL(main.isUpdated, ''N'') <> ''Y''
  3087. END
  3088. ELSE IF @flag = 'as' --Approve Summary
  3089. BEGIN
  3090. INSERT INTO #exRateIdTemp
  3091. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  3092. SELECT
  3093. exRateTreasuryId = main.exRateTreasuryId
  3094. ,tranType = ISNULL(tt.typeTitle, 'All')
  3095. ,cCountry = main.cCountry
  3096. ,cCountryName = cc.countryName
  3097. ,cCountryCode = cc.countryCode
  3098. ,cAgent = main.cAgent
  3099. ,cAgentName = ISNULL(cam.agentName, 'All')
  3100. ,pCountry = main.pCountry
  3101. ,pCountryName = pc.countryName
  3102. ,pCountryCode = pc.countryCode
  3103. ,pAgent = main.pAgent
  3104. ,pAgentName = ISNULL(pam.agentName, 'All')
  3105. ,cCurrency = main.cCurrency
  3106. ,pCurrency = main.pCurrency
  3107. ,cRateFactor = main.cRateFactor
  3108. ,pRateFactor = main.pRateFactor
  3109. ,cRate = main.cRate
  3110. ,cMargin = main.cMargin
  3111. ,cHoMargin = main.cHoMargin
  3112. ,cAgentMargin = main.cAgentMargin
  3113. ,pRate = main.pRate
  3114. ,pMargin = main.pMargin
  3115. ,pHoMargin = main.pHoMargin
  3116. ,pAgentMargin = main.pAgentMargin
  3117. ,sharingType = main.sharingType
  3118. ,sharingValue = main.sharingValue
  3119. ,toleranceOn = main.toleranceOn
  3120. ,agentTolMin = main.agentTolMin
  3121. ,agentTolMax = main.agentTolMax
  3122. ,customerTolMin = main.customerTolMin
  3123. ,customerTolMax = main.customerTolMax
  3124. ,maxCrossRate = main.maxCrossRate
  3125. ,crossRate = main.crossRate
  3126. ,agentCrossRateMargin = main.agentCrossRateMargin
  3127. ,customerRate = main.customerRate
  3128. ,tolerance = main.tolerance
  3129. ,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3130. ,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
  3131. ,[status] = CASE WHEN ISNULL(main.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
  3132. ,modType = CASE WHEN main.approvedBy IS NULL THEN 'I' ELSE 'U' END
  3133. ,main.createdBy
  3134. ,main.createdDate
  3135. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  3136. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  3137. ,main.approvedBy
  3138. ,main.approvedDate
  3139. FROM exRateTreasury main WITH(NOLOCK)
  3140. INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
  3141. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3142. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3143. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3144. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3145. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3146. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
  3147. ORDER BY cCountryName, cAgent, pCountryName, pAgent
  3148. --AND ISNULL(main.isUpdated, ''N'') <> ''Y''
  3149. END
  3150. ELSE IF @flag = 'ai' --Set Active Inactive
  3151. BEGIN
  3152. IF EXISTS(SELECT 'X' FROM exRateTreasuryMod WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId AND createdBy <> @user)
  3153. BEGIN
  3154. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @exRateTreasuryId
  3155. RETURN
  3156. END
  3157. INSERT INTO #exRateIdTemp
  3158. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  3159. BEGIN TRANSACTION
  3160. --1. Set Active/Inactive to unapproved main table record
  3161. UPDATE exRateTreasury SET
  3162. isActive = @isActive
  3163. ,isUpdated = 'Y'
  3164. ,modifiedBy = @user
  3165. ,modifiedDate = GETDATE()
  3166. FROM exRateTreasury ert
  3167. INNER JOIN #exRateIdTemp erit ON ert.exRateTreasuryId = erit.exRateTreasuryId AND ert.approvedBy IS NULL
  3168. --2. Delete From Mod table
  3169. DELETE FROM exRateTreasuryMod
  3170. FROM exRateTreasuryMod ertm
  3171. INNER JOIN #exRateIdTemp erit ON ertm.exRateTreasuryId = erit.exRateTreasuryId
  3172. --3. Insert changes to Mod table
  3173. INSERT INTO exRateTreasuryMod(
  3174. exRateTreasuryId
  3175. ,tranType
  3176. ,cRateId
  3177. ,cCurrency
  3178. ,cCountry
  3179. ,cAgent
  3180. ,cRateFactor
  3181. ,cRate
  3182. ,cMargin
  3183. ,cHoMargin
  3184. ,cAgentMargin
  3185. ,pRateId
  3186. ,pCurrency
  3187. ,pCountry
  3188. ,pAgent
  3189. ,pRateFactor
  3190. ,pRate
  3191. ,pMargin
  3192. ,pHoMargin
  3193. ,pAgentMargin
  3194. ,sharingType
  3195. ,sharingValue
  3196. ,toleranceOn
  3197. ,agentTolMin
  3198. ,agentTolMax
  3199. ,customerTolMin
  3200. ,customerTolMax
  3201. ,maxCrossRate
  3202. ,crossRate
  3203. ,customerRate
  3204. ,tolerance
  3205. ,isActive
  3206. ,createdBy
  3207. ,createdDate
  3208. ,modType
  3209. )
  3210. SELECT
  3211. ert.exRateTreasuryId
  3212. ,tranType
  3213. ,cRateId
  3214. ,cCurrency
  3215. ,cCountry
  3216. ,cAgent
  3217. ,cRateFactor
  3218. ,cRate
  3219. ,cMargin
  3220. ,cHoMargin
  3221. ,cAgentMargin
  3222. ,pRateId
  3223. ,pCurrency
  3224. ,pCountry
  3225. ,pAgent
  3226. ,pRateFactor
  3227. ,pRate
  3228. ,pMargin
  3229. ,pHoMargin
  3230. ,pAgentMargin
  3231. ,sharingType
  3232. ,sharingValue
  3233. ,toleranceOn
  3234. ,agentTolMin
  3235. ,agentTolMax
  3236. ,customerTolMin
  3237. ,customerTolMax
  3238. ,maxCrossRate
  3239. ,crossRate
  3240. ,customerRate
  3241. ,tolerance
  3242. ,@isActive
  3243. ,@user
  3244. ,GETDATE()
  3245. ,'U'
  3246. FROM exRateTreasury ert WITH(NOLOCK)
  3247. INNER JOIN #exRateIdTemp erit WITH(NOLOCK) ON ert.exRateTreasuryId = erit.exRateTreasuryId AND approvedBy IS NOT NULL
  3248. UPDATE exRateTreasury SET
  3249. isUpdated = 'Y'
  3250. FROM exRateTreasury ert
  3251. INNER JOIN #exRateIdTemp erit ON ert.exRateTreasuryId = erit.exRateTreasuryId
  3252. IF @@TRANCOUNT > 0
  3253. COMMIT TRANSACTION
  3254. IF @isActive = 'Y'
  3255. SET @msg = 'Record(s) set active'
  3256. ELSE
  3257. SET @msg = 'Record(s) set inactive'
  3258. EXEC proc_errorHandler 0, @msg, @exRateTreasuryIds
  3259. END
  3260. /*
  3261. ELSE IF @flag = 'cl' --Copy List
  3262. BEGIN
  3263. --EXEC proc_exRateTreasury @flag = 'cl', @cCountry = 133, @applyFor = 'C'
  3264. SET @table = '
  3265. SELECT
  3266. exRateTreasuryId = main.exRateTreasuryId
  3267. ,tranType = ISNULL(tt.typeTitle, ''All'')
  3268. ,cCountry = main.cCountry
  3269. ,cCountryName = cc.countryName
  3270. ,cCountryCode = cc.countryCode
  3271. ,cAgent = main.cAgent
  3272. ,cAgentName = ISNULL(cam.agentName, ''All'')
  3273. ,pCountry = main.pCountry
  3274. ,pCountryName = pc.countryName
  3275. ,pCountryCode = pc.countryCode
  3276. ,pAgent = main.pAgent
  3277. ,pAgentName = ISNULL(pam.agentName, ''All'')
  3278. ,cCurrency = main.cCurrency
  3279. ,pCurrency = main.pCurrency
  3280. ,cRateFactor = main.cRateFactor
  3281. ,pRateFactor = main.pRateFactor
  3282. ,cRate = main.cRate
  3283. ,cMargin = main.cMargin
  3284. ,cHoMargin = main.cHoMargin
  3285. ,cAgentMargin = main.cAgentMargin
  3286. ,pRate = main.pRate
  3287. ,pMargin = main.pMargin
  3288. ,pHoMargin = main.pHoMargin
  3289. ,pAgentMargin = main.pAgentMargin
  3290. ,sharingType = main.sharingType
  3291. ,sharingValue = main.sharingValue
  3292. ,toleranceOn = main.toleranceOn
  3293. ,agentTolMin = main.agentTolMin
  3294. ,agentTolMax = main.agentTolMax
  3295. ,customerTolMin = main.customerTolMin
  3296. ,customerTolMax = main.customerTolMax
  3297. ,maxCrossRate = main.maxCrossRate
  3298. ,crossRate = main.crossRate
  3299. ,customerRate = main.customerRate
  3300. ,tolerance = main.tolerance
  3301. ,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3302. ,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
  3303. ,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  3304. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
  3305. ,main.createdBy
  3306. ,main.createdDate
  3307. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  3308. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  3309. ,main.approvedBy
  3310. ,main.approvedDate
  3311. FROM exRateTreasury main WITH(NOLOCK)
  3312. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3313. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3314. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3315. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3316. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3317. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  3318. WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
  3319. '
  3320. IF @cCountry IS NOT NULL
  3321. SET @table = @table + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR)
  3322. IF @applyFor = 'C'
  3323. BEGIN
  3324. IF @cAgent IS NULL AND @cCountry IS NOT NULL
  3325. SET @table = @table + ' AND cAgent IS NULL'
  3326. ELSE IF @cAgent IS NULL AND @cCountry IS NULL
  3327. SET @table = @table
  3328. ELSE
  3329. SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
  3330. IF @pAgent IS NOT NULL
  3331. SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
  3332. END
  3333. ELSE
  3334. BEGIN
  3335. IF @cAgent IS NOT NULL
  3336. SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
  3337. IF @pAgent IS NULL AND @pCountry IS NOT NULL
  3338. SET @table = @table + ' AND pAgent IS NULL'
  3339. ELSE IF @pAgent IS NULL AND @pCountry IS NULL
  3340. SET @table = @table
  3341. ELSE IF @pAgent IS NOT NULL
  3342. SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
  3343. END
  3344. IF @pCountry IS NOT NULL
  3345. SET @table = @table + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR)
  3346. SET @table = @table + (CASE WHEN @applyFor = 'C' THEN ' ORDER BY pCountryName, pAgent, cCountryName, cAgent' ELSE ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END)
  3347. EXEC(@table)
  3348. --PRINT(@table)
  3349. END
  3350. */
  3351. ELSE IF @flag = 'cl' --Copy List
  3352. BEGIN
  3353. --EXEC proc_exRateTreasury @flag = 'cl', @cCountry = 133, @applyFor = 'C'
  3354. DECLARE @applyAgentName VARCHAR(100)
  3355. SELECT @applyAgent = agentId, @applyAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
  3356. IF @applyFor = 'c'
  3357. BEGIN
  3358. IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
  3359. BEGIN
  3360. SELECT @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
  3361. FROM defExRate def WITH(NOLOCK)
  3362. WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
  3363. END
  3364. ELSE
  3365. BEGIN
  3366. SELECT @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
  3367. FROM defExRate def WITH(NOLOCK)
  3368. WHERE country = @cCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
  3369. END
  3370. --SELECT @applyAgent, @applyAgentName, @cRate, @cMargin
  3371. --RETURN
  3372. SET @table = '
  3373. SELECT
  3374. exRateTreasuryId = main.exRateTreasuryId
  3375. ,tranType = ISNULL(tt.typeTitle, ''All'')
  3376. ,cCountry = main.cCountry
  3377. ,cCountryName = cc.countryName
  3378. ,cCountryCode = cc.countryCode
  3379. ,cAgent = ' + CAST(@applyAgent AS VARCHAR) + '
  3380. ,cAgentName = ''' + @applyAgentName + '''
  3381. ,pCountry = main.pCountry
  3382. ,pCountryName = pc.countryName
  3383. ,pCountryCode = pc.countryCode
  3384. ,pAgent = main.pAgent
  3385. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  3386. ,cCurrency = main.cCurrency
  3387. ,pCurrency = main.pCurrency
  3388. ,cRateFactor = main.cRateFactor
  3389. ,pRateFactor = main.pRateFactor
  3390. ,cRate = ' + CAST(@cRate AS VARCHAR) + '
  3391. ,cMargin = ' + CAST(@cMargin AS VARCHAR) + '
  3392. ,cHoMargin = main.cHoMargin
  3393. ,cAgentMargin = main.cAgentMargin
  3394. ,pRate = main.pRate
  3395. ,pMargin = main.pMargin
  3396. ,pHoMargin = main.pHoMargin
  3397. ,pAgentMargin = main.pAgentMargin
  3398. ,sharingType = main.sharingType
  3399. ,sharingValue = main.sharingValue
  3400. ,toleranceOn = main.toleranceOn
  3401. ,agentTolMin = main.agentTolMin
  3402. ,agentTolMax = main.agentTolMax
  3403. ,customerTolMin = main.customerTolMin
  3404. ,customerTolMax = main.customerTolMax
  3405. ,maxCrossRate = main.maxCrossRate
  3406. ,crossRate = main.crossRate
  3407. ,customerRate = main.customerRate
  3408. ,tolerance = main.tolerance
  3409. ,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3410. ,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - ' + CAST(@cRate AS VARCHAR) + ', crm.rateMaskMulAd)
  3411. ,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  3412. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
  3413. ,main.createdBy
  3414. ,main.createdDate
  3415. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  3416. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  3417. ,main.approvedBy
  3418. ,main.approvedDate
  3419. FROM exRateTreasury main WITH(NOLOCK)
  3420. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3421. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3422. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3423. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3424. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3425. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  3426. WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
  3427. '
  3428. END
  3429. ELSE
  3430. BEGIN
  3431. IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
  3432. BEGIN
  3433. SELECT @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
  3434. FROM defExRate def WITH(NOLOCK)
  3435. WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
  3436. END
  3437. ELSE
  3438. BEGIN
  3439. SELECT @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
  3440. FROM defExRate def WITH(NOLOCK)
  3441. WHERE country = @pCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
  3442. END
  3443. --SELECT @applyAgent, @applyAgentName, @cRate, @cMargin
  3444. --RETURN
  3445. SET @table = '
  3446. SELECT
  3447. exRateTreasuryId = main.exRateTreasuryId
  3448. ,tranType = ISNULL(tt.typeTitle, ''All'')
  3449. ,cCountry = main.cCountry
  3450. ,cCountryName = cc.countryName
  3451. ,cCountryCode = cc.countryCode
  3452. ,cAgent = main.cAgent
  3453. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  3454. ,pCountry = main.pCountry
  3455. ,pCountryName = pc.countryName
  3456. ,pCountryCode = pc.countryCode
  3457. ,pAgent = ' + CAST(@applyAgent AS VARCHAR) + '
  3458. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  3459. ,cCurrency = main.cCurrency
  3460. ,pCurrency = main.pCurrency
  3461. ,cRateFactor = main.cRateFactor
  3462. ,pRateFactor = main.pRateFactor
  3463. ,cRate = main.cRate
  3464. ,cMargin = main.cMargin
  3465. ,cHoMargin = main.cHoMargin
  3466. ,cAgentMargin = main.cAgentMargin
  3467. ,pRate = ' + CAST(@pRate AS VARCHAR) + '
  3468. ,pMargin = ' + CAST(@pMargin AS VARCHAR) + '
  3469. ,pHoMargin = main.pHoMargin
  3470. ,pAgentMargin = main.pAgentMargin
  3471. ,sharingType = main.sharingType
  3472. ,sharingValue = main.sharingValue
  3473. ,toleranceOn = main.toleranceOn
  3474. ,agentTolMin = main.agentTolMin
  3475. ,agentTolMax = main.agentTolMax
  3476. ,customerTolMin = main.customerTolMin
  3477. ,customerTolMax = main.customerTolMax
  3478. ,maxCrossRate = main.maxCrossRate
  3479. ,crossRate = main.crossRate
  3480. ,customerRate = main.customerRate
  3481. ,tolerance = main.tolerance
  3482. ,cost = ROUND(' + CAST(@pRate AS VARCHAR) + '/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3483. ,margin = ROUND(' + CAST(@pRate AS VARCHAR) + '/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
  3484. ,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  3485. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
  3486. ,main.createdBy
  3487. ,main.createdDate
  3488. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  3489. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  3490. ,main.approvedBy
  3491. ,main.approvedDate
  3492. FROM exRateTreasury main WITH(NOLOCK)
  3493. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3494. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3495. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3496. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3497. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3498. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  3499. WHERE ISNULL(main.isActive, ''N'') = ''Y'' AND main.approvedBy IS NOT NULL
  3500. '
  3501. END
  3502. IF @cCountry IS NOT NULL
  3503. SET @table = @table + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR)
  3504. IF @applyFor = 'C'
  3505. BEGIN
  3506. IF @cAgent IS NULL AND @cCountry IS NOT NULL
  3507. SET @table = @table + ' AND cAgent IS NULL'
  3508. ELSE IF @cAgent IS NULL AND @cCountry IS NULL
  3509. SET @table = @table
  3510. ELSE
  3511. SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
  3512. IF @pAgent IS NOT NULL
  3513. SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
  3514. END
  3515. ELSE
  3516. BEGIN
  3517. IF @cAgent IS NOT NULL
  3518. SET @table = @table + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR)
  3519. IF @pAgent IS NULL AND @pCountry IS NOT NULL
  3520. SET @table = @table + ' AND pAgent IS NULL'
  3521. ELSE IF @pAgent IS NULL AND @pCountry IS NULL
  3522. SET @table = @table
  3523. ELSE IF @pAgent IS NOT NULL
  3524. SET @table = @table + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR)
  3525. END
  3526. IF @pCountry IS NOT NULL
  3527. SET @table = @table + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR)
  3528. SET @table = @table + (CASE WHEN @applyFor = 'C' THEN ' ORDER BY pCountryName, pAgent, cCountryName, cAgent' ELSE ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END)
  3529. PRINT(@table)
  3530. EXEC(@table)
  3531. END
  3532. ELSE IF @flag = 'copy' --Copy
  3533. BEGIN
  3534. INSERT INTO #exRateIdTemp
  3535. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  3536. BEGIN TRANSACTION
  3537. IF @applyFor = 'C'
  3538. BEGIN
  3539. SELECT @cCountry = agentCountryId FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
  3540. IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
  3541. BEGIN
  3542. SELECT @cRateId = defExRateId, @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
  3543. FROM defExRate def WITH(NOLOCK)
  3544. WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
  3545. END
  3546. ELSE
  3547. BEGIN
  3548. SELECT @cRateId = defExRateId, @cRate = cRate, @cMargin = ISNULL(cMargin, 0)
  3549. FROM defExRate def WITH(NOLOCK)
  3550. WHERE country = @cCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
  3551. END
  3552. --1. Copy Selected value to temp table----------------------------------------------------------------------------
  3553. SELECT
  3554. tranType
  3555. ,cRateId = @cRateId,cCountry,cAgent = @applyAgent,cCurrency,cRateFactor,cRate = @cRate,cMargin = @cMargin,cHoMargin,cAgentMargin
  3556. ,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  3557. ,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  3558. ,crossRate = ROUND((pRate - pMargin - pHoMargin)/(@cRate + @cMargin + cHoMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3559. ,maxCrossRate = ROUND(pRate/@cRate, dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3560. ,customerRate = ROUND((pRate - pMargin - pHoMargin - pAgentMargin)/(@cRate + @cMargin + cHoMargin + cAgentMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3561. ,tolerance,crossRateFactor
  3562. ,isUpdated,isUpdatedOperation
  3563. ,createdBy = @user
  3564. ,createdDate = GETDATE()
  3565. INTO #tempCAgentRate
  3566. FROM exRateTreasury main WITH(NOLOCK)
  3567. INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
  3568. --END-------------------------------------------------------------------------------------------------------------
  3569. --2. Delete already exist setting from temp table-----------------------------------------------------------------
  3570. DELETE FROM #tempCAgentRate
  3571. FROM #tempCAgentRate tmp
  3572. INNER JOIN exRateTreasury main
  3573. ON main.cCountry = tmp.cCountry AND main.cAgent = tmp.cAgent
  3574. AND main.pCountry = tmp.pCountry AND ISNULL(main.pAgent, 0) = ISNULL(tmp.pAgent, 0)
  3575. --END-------------------------------------------------------------------------------------------------------------
  3576. --3. Copy setting to main table from temp table-------------------------------------------------------------------
  3577. IF EXISTS(SELECT 'X' FROM #tempCAgentRate)
  3578. BEGIN
  3579. INSERT INTO exRateTreasury(
  3580. tranType
  3581. ,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  3582. ,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  3583. ,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  3584. ,crossRate,maxCrossRate,customerRate,tolerance,crossRateFactor
  3585. ,isUpdated,isUpdatedOperation
  3586. ,createdBy
  3587. ,createdDate
  3588. )
  3589. SELECT * FROM #tempCAgentRate
  3590. END
  3591. --END-------------------------------------------------------------------------------------------------------------
  3592. END
  3593. ELSE IF @applyFor = 'P'
  3594. BEGIN
  3595. SELECT @pCountry = agentCountryId FROM agentMaster WITH(NOLOCK) WHERE agentId = @applyAgent
  3596. IF EXISTS(SELECT 'X' FROM defExRate WITH(NOLOCK) WHERE agent = @applyAgent AND ISNULL(isActive, 'N') = 'Y')
  3597. BEGIN
  3598. SELECT @pRateId = defExRateId, @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
  3599. FROM defExRate def WITH(NOLOCK)
  3600. WHERE agent = @applyAgent AND ISNULL(def.isActive, 'N') = 'Y'
  3601. END
  3602. ELSE
  3603. BEGIN
  3604. SELECT @pRateId = defExRateId, @pRate = pRate, @pMargin = ISNULL(pMargin, 0)
  3605. FROM defExRate def WITH(NOLOCK)
  3606. WHERE country = @pCountry AND agent IS NULL AND ISNULL(def.isActive, 'N') = 'Y'
  3607. END
  3608. --1. Copy Selected value to temp table----------------------------------------------------------------------------
  3609. SELECT
  3610. tranType
  3611. ,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  3612. ,pRateId = @pRateId,pCountry,pAgent = @applyAgent,pCurrency,pRateFactor,pRate = @pRate,pMargin = @pMargin,pHoMargin,pAgentMargin
  3613. ,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  3614. ,crossRate = ROUND((@pRate - @pMargin - pHoMargin)/(cRate + cMargin + cHoMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3615. ,maxCrossRate = ROUND(@pRate/cRate, dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3616. ,customerRate = ROUND((@pRate - @pMargin - pHoMargin - pAgentMargin)/(cRate + cMargin + cHoMargin + cAgentMargin), dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency))
  3617. ,tolerance,crossRateFactor
  3618. ,isUpdated,isUpdatedOperation
  3619. ,createdBy = @user
  3620. ,createdDate = GETDATE()
  3621. INTO #tempPAgentRate
  3622. FROM exRateTreasury main WITH(NOLOCK)
  3623. INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
  3624. --END-------------------------------------------------------------------------------------------------------------
  3625. --2. Delete already exist setting from temp table-----------------------------------------------------------------
  3626. DELETE FROM #tempPAgentRate
  3627. FROM #tempPAgentRate tmp
  3628. INNER JOIN exRateTreasury main
  3629. ON main.cCountry = tmp.cCountry AND ISNULL(main.cAgent, 0) = ISNULL(tmp.cAgent, 0)
  3630. AND main.pCountry = tmp.pCountry AND main.pAgent = tmp.pAgent
  3631. --END-------------------------------------------------------------------------------------------------------------
  3632. --3. Copy setting to main table from temp table-------------------------------------------------------------------
  3633. IF EXISTS(SELECT 'X' FROM #tempPAgentRate)
  3634. BEGIN
  3635. INSERT INTO exRateTreasury(
  3636. tranType
  3637. ,cRateId,cCountry,cAgent,cCurrency,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  3638. ,pRateId,pCountry,pAgent,pCurrency,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  3639. ,sharingType,sharingValue,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  3640. ,crossRate,maxCrossRate,customerRate,tolerance,crossRateFactor
  3641. ,isUpdated,isUpdatedOperation
  3642. ,createdBy
  3643. ,createdDate
  3644. )
  3645. SELECT * FROM #tempPAgentRate
  3646. END
  3647. --END-------------------------------------------------------------------------------------------------------------
  3648. END
  3649. IF @@TRANCOUNT > 0
  3650. COMMIT TRANSACTION
  3651. IF @applyFor = 'C'
  3652. BEGIN
  3653. IF NOT EXISTS(SELECT 'X' FROM #tempCAgentRate)
  3654. BEGIN
  3655. EXEC proc_errorHandler 1, 'Selected rate setting(s) already exist in the system', NULL
  3656. RETURN
  3657. END
  3658. END
  3659. ELSE IF @applyFor = 'P'
  3660. BEGIN
  3661. IF NOT EXISTS(SELECT 'X' FROM #tempPAgentRate)
  3662. BEGIN
  3663. EXEC proc_errorHandler 1, 'Selected rate setting(s) already exist in the system', NULL
  3664. RETURN
  3665. END
  3666. END
  3667. EXEC proc_errorHandler 0, 'Rate setting(s) applied successfully', NULL
  3668. END
  3669. ELSE IF @flag = 'cs' --Copy Summary
  3670. BEGIN
  3671. INSERT INTO #exRateIdTemp
  3672. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  3673. SET @table = '
  3674. SELECT
  3675. exRateTreasuryId = main.exRateTreasuryId
  3676. ,tranType = ISNULL(tt.typeTitle, ''All'')
  3677. ,cCountry = main.cCountry
  3678. ,cCountryName = cc.countryName
  3679. ,cCountryCode = cc.countryCode
  3680. ,cAgent = main.cAgent
  3681. ,cAgentName = ISNULL(cam.agentName, ''All'')
  3682. ,pCountry = main.pCountry
  3683. ,pCountryName = pc.countryName
  3684. ,pCountryCode = pc.countryCode
  3685. ,pAgent = main.pAgent
  3686. ,pAgentName = ISNULL(pam.agentName, ''All'')
  3687. ,cCurrency = main.cCurrency
  3688. ,pCurrency = main.pCurrency
  3689. ,cRateFactor = main.cRateFactor
  3690. ,pRateFactor = main.pRateFactor
  3691. ,cRate = main.cRate
  3692. ,cMargin = main.cMargin
  3693. ,cHoMargin = main.cHoMargin
  3694. ,cAgentMargin = main.cAgentMargin
  3695. ,pRate = main.pRate
  3696. ,pMargin = main.pMargin
  3697. ,pHoMargin = main.pHoMargin
  3698. ,pAgentMargin = main.pAgentMargin
  3699. ,sharingType = main.sharingType
  3700. ,sharingValue = main.sharingValue
  3701. ,toleranceOn = main.toleranceOn
  3702. ,agentTolMin = main.agentTolMin
  3703. ,agentTolMax = main.agentTolMax
  3704. ,customerTolMin = main.customerTolMin
  3705. ,customerTolMax = main.customerTolMax
  3706. ,maxCrossRate = main.maxCrossRate
  3707. ,crossRate = main.crossRate
  3708. ,customerRate = main.customerRate
  3709. ,tolerance = main.tolerance
  3710. ,cost = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)), crm.rateMaskMulAd)
  3711. ,margin = ROUND(main.pRate/(main.crossRate + ISNULL(main.tolerance, 0)) - main.cRate, crm.rateMaskMulAd)
  3712. ,[status] = CASE WHEN ISNULL(main.isActive, ''N'') = ''Y'' THEN ''Active'' ELSE ''Inactive'' END
  3713. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE ''U'' END
  3714. ,main.createdBy
  3715. ,main.createdDate
  3716. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  3717. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  3718. ,main.approvedBy
  3719. ,main.approvedDate
  3720. FROM exRateTreasury main WITH(NOLOCK)
  3721. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  3722. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  3723. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  3724. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  3725. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  3726. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  3727. 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 = ' +
  3728. CAST(@applyAgent AS VARCHAR) + ' ORDER BY cCountryName, cAgent, pCountryName, pAgent' END) + '
  3729. '
  3730. --PRINT @table
  3731. EXEC (@table)
  3732. END
  3733. END TRY
  3734. BEGIN CATCH
  3735. IF @@TRANCOUNT > 0
  3736. ROLLBACK TRANSACTION
  3737. DECLARE @errorMessage VARCHAR(MAX)
  3738. SET @errorMessage = ERROR_MESSAGE()
  3739. EXEC proc_errorHandler 1, @errorMessage, @exRateTreasuryId
  3740. END CATCH
  3741. GO