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.

1266 lines
87 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_exRateOperation] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. IF EXISTS (SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[proc_exRateOperation]') AND TYPE IN (N'P', N'PC'))
  10. DROP PROCEDURE [dbo].proc_exRateOperation
  11. GO
  12. */
  13. /*
  14. proc_spExRate @flag = 's', @user = 'admin', @sortBy = 'exRateOpId', @sortOrder = 'ASC', @pageSize = '10', @pageNumber = '1'
  15. */
  16. CREATE proc [dbo].[proc_exRateOperation]
  17. @flag VARCHAR(50) = NULL
  18. ,@user VARCHAR(30) = NULL
  19. ,@exRateTreasuryId VARCHAR(30) = NULL
  20. ,@exRateTreasuryIds VARCHAR(MAX) = NULL
  21. ,@exRateBranchWiseId VARCHAR(30) = NULL
  22. ,@exRateBranchWiseIds VARCHAR(MAX) = NULL
  23. ,@tranType INT = NULL
  24. ,@cCurrency VARCHAR(3) = NULL
  25. ,@cCountry INT = NULL
  26. ,@cAgent INT = NULL
  27. ,@cBranch INT = NULL
  28. ,@cRateFactor CHAR(1) = NULL
  29. ,@cRate FLOAT = NULL
  30. ,@cMargin FLOAT = NULL
  31. ,@pCurrency VARCHAR(3) = NULL
  32. ,@pCountry INT = NULL
  33. ,@pAgent INT = NULL
  34. ,@pRateFactor CHAR(1) = NULL
  35. ,@pRate FLOAT = NULL
  36. ,@pMargin FLOAT = NULL
  37. ,@crossRate FLOAT = NULL
  38. ,@tolerance FLOAT = NULL
  39. ,@premium FLOAT = NULL
  40. ,@customerRate FLOAT = NULL
  41. ,@margin FLOAT = NULL
  42. ,@crossRateFactor CHAR(1) = NULL
  43. ,@hasChanged CHAR(1) = NULL
  44. ,@currency VARCHAR(3) = NULL
  45. ,@country INT = NULL
  46. ,@agent INT = NULL
  47. ,@rateType CHAR(1) = NULL
  48. ,@cCountryName VARCHAR(100) = NULL
  49. ,@cAgentName VARCHAR(100) = NULL
  50. ,@pCountryName VARCHAR(100) = NULL
  51. ,@pAgentName VARCHAR(100) = NULL
  52. ,@isUpdated CHAR(1) = NULL
  53. ,@isActive CHAR(1) = NULL
  54. ,@sortBy VARCHAR(50) = NULL
  55. ,@sortOrder VARCHAR(5) = NULL
  56. ,@pageSize INT = NULL
  57. ,@pageNumber INT = NULL
  58. ,@xml XML = NULL
  59. AS
  60. SET NOCOUNT ON
  61. SET XACT_ABORT ON
  62. BEGIN TRY
  63. DECLARE @msg VARCHAR(100)
  64. CREATE TABLE #exRateBranchWiseIdTemp(exRateBranchWiseId INT)
  65. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  66. DECLARE
  67. @sql VARCHAR(MAX)
  68. ,@oldValue VARCHAR(MAX)
  69. ,@newValue VARCHAR(MAX)
  70. ,@module VARCHAR(10)
  71. ,@tableAlias VARCHAR(100)
  72. ,@logIdentifier VARCHAR(50)
  73. ,@logParamMod VARCHAR(100)
  74. ,@logParamMain VARCHAR(100)
  75. ,@table VARCHAR(MAX)
  76. ,@select_field_list VARCHAR(MAX)
  77. ,@extra_field_list VARCHAR(MAX)
  78. ,@sql_filter VARCHAR(MAX)
  79. ,@modType VARCHAR(6)
  80. ,@ApprovedFunctionId INT
  81. DECLARE @rateIdList TABLE(rowId INT IDENTITY(1,1), exRateOpId INT)
  82. SELECT
  83. @logIdentifier = 'exRateOpId'
  84. ,@logParamMain = 'exRateOperation'
  85. ,@logParamMod = 'exRateOperationHistory'
  86. ,@module = '20'
  87. ,@tableAlias = 'Exchange Rate Operation'
  88. ,@ApprovedFunctionId = 20111830
  89. CREATE TABLE #exRateIdTemp(exRateTreasuryId INT)
  90. DECLARE @cDefExRateId INT, @pDefExRateId INT, @errorMsg VARCHAR(200)
  91. DECLARE @cOffer FLOAT, @pOffer FLOAT
  92. DECLARE @hasRight CHAR(1)
  93. IF @flag = 'cr' --Load Cost Rate according to Currency
  94. BEGIN
  95. DECLARE @defExRateId INT
  96. SELECT @defExRateId = defExRateId FROM defExRate WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND setupType = 'AG' AND agent = @agent AND country = @country AND currency = @currency
  97. IF @defExRateId IS NULL
  98. 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
  99. IF @rateType = 'C'
  100. BEGIN
  101. SELECT
  102. costRate = CASE WHEN factor = 'M' THEN (ISNULL(cRate, 0) + ISNULL(cMargin, 0))
  103. WHEN factor = 'D' THEN (ISNULL(cRate, 0) - ISNULL(cMargin, 0))
  104. END
  105. ,factor
  106. ,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
  107. FROM defExRate WITH(NOLOCK)
  108. WHERE defExRateId = @defExRateId
  109. END
  110. ELSE IF @rateType = 'P'
  111. BEGIN
  112. SELECT
  113. costRate = CASE WHEN factor = 'M' THEN (ISNULL(pRate, 0) - ISNULL(pMargin, 0))
  114. WHEN factor = 'D' THEN (ISNULL(pRate, 0) + ISNULL(pMargin, 0))
  115. END
  116. ,factor
  117. ,factorName = CASE WHEN factor = 'M' THEN 'Multiplication' WHEN factor = 'D' THEN 'Division' END
  118. FROM defExRate WITH(NOLOCK)
  119. WHERE defExRateId = @defExRateId
  120. END
  121. END
  122. ELSE IF @flag IN ('s')
  123. BEGIN
  124. IF @sortBy = 'sendingCountry'
  125. SET @sortBy = 'cCountryName,cAgentName,pCountryName,pAgentName'
  126. ELSE IF @sortBy = 'receivingCountry'
  127. SET @sortBy = 'pCountryName,pAgentName,cCountryName,cAgentName'
  128. SET @sortOrder = ''
  129. --SELECT * FROM exRateTreasury WITH(NOLOCK)
  130. DECLARE @m VARCHAR(MAX)
  131. --SELECT * FROM exRateOperation
  132. SET @m = '(
  133. SELECT
  134. exRateOpId = main.exRateTreasuryId
  135. ,tranType = main.tranType
  136. ,cCurrency = main.cCurrency
  137. ,cCountry = main.cCountry
  138. ,cAgent = main.cAgent
  139. ,cRateFactor = main.cRateFactor
  140. ,pCurrency = main.pCurrency
  141. ,pCountry = main.pCountry
  142. ,pAgent = main.pAgent
  143. ,pRateFactor = main.pRateFactor
  144. ,cRate = main.cRate
  145. ,pRate = main.pRate
  146. ,cMargin = main.cMargin
  147. ,cHoMargin = main.cHoMargin
  148. ,pMargin = main.pMargin
  149. ,pHoMargin = main.pHoMargin
  150. ,crossRate = main.crossRateOperation
  151. ,crossRateNew = main.customerRate
  152. ,tolerance = main.toleranceOperation
  153. ,toleranceNew = main.tolerance
  154. ,premium = main.premium
  155. ,premiumNew = main.premium
  156. ,customerRate = main.crossRateOperation + main.premium
  157. ,customerRateNew = main.customerRate + main.premium
  158. ,margin = main.toleranceOperation - main.premium
  159. ,marginNew = main.tolerance - main.premium
  160. ,isUpdated = main.isUpdatedOperation
  161. ,isActive = main.isActive
  162. ,lastModifiedBy = ISNULL(modifiedByOperation, createdBy)
  163. ,lastModifiedDate = ISNULL(modifiedDateOperation, createdDate)
  164. ,main.createdBy
  165. ,main.createdDate
  166. ,modifiedBy = ISNULL(main.modifiedBy, main.createdBy)
  167. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  168. ,hasChanged = main.isUpdatedOperation
  169. ,modType = CASE WHEN main.crossRateOperation IS NULL THEN ''I'' ELSE ''U'' END
  170. ,hasBranchWiseRate = CASE WHEN (
  171. SELECT TOP 1 exRateBranchWiseId FROM exRateBranchWise WITH(NOLOCK) WHERE exRateTreasuryId = main.exRateTreasuryId AND ISNULL(isActive, ''N'') = ''Y''
  172. ) IS NULL THEN ''N'' ELSE ''Y'' END
  173. FROM exRateTreasury main WITH(NOLOCK)
  174. WHERE cCountry = 133 AND cAgent = ' + dbo.FNAGetIMEAgentId() + ' AND approvedBy IS NOT NULL
  175. AND ISNULL(main.isActive, ''N'') = ''Y''
  176. ) '
  177. SET @table = '(
  178. SELECT
  179. main.exRateOpId
  180. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  181. ,main.cCurrency
  182. ,main.cCountry
  183. ,cCountryName = cc.countryName
  184. ,cCountryCode = cc.countryCode
  185. ,main.cAgent
  186. ,cAgentName = ISNULL(cam.agentName, ''[All]'')
  187. ,main.cRateFactor
  188. ,main.cRate
  189. ,cMargin = ISNULL(main.cMargin, 0.0)
  190. ,cHoMargin = ISNULL(main.cHoMargin, 0.0)
  191. ,main.pCurrency
  192. ,main.pCountry
  193. ,pCountryName = pc.countryName
  194. ,pCountryCode = pc.countryCode
  195. ,main.pAgent
  196. ,pAgentName = ISNULL(pam.agentName, ''[All]'')
  197. ,main.pRateFactor
  198. ,main.pRate
  199. ,pMargin = ISNULL(main.pMargin, 0.0)
  200. ,pHoMargin = ISNULL(main.pHoMargin, 0.0)
  201. ,main.crossRate
  202. ,main.crossRateNew
  203. ,main.tolerance
  204. ,main.toleranceNew
  205. ,main.premium
  206. ,main.premiumNew
  207. ,main.customerRate
  208. ,main.customerRateNew
  209. ,main.margin
  210. ,main.marginNew
  211. ,main.isUpdated
  212. ,cMin = crm.cMin
  213. ,cMax = crm.cMax
  214. ,pMin = prm.pMin
  215. ,pMax = prm.pMax
  216. ,cRateMaskMulBd = CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END
  217. ,cRateMaskMulAd = CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END
  218. ,pRateMaskMulBd = CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END
  219. ,pRateMaskMulAd = CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END
  220. ,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  221. ,lastModifiedBy
  222. ,lastModifiedDate
  223. ,main.modifiedBy
  224. ,main.hasChanged
  225. ,main.modType
  226. ,main.hasBranchWiseRate
  227. FROM ' + @m + ' main
  228. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  229. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  230. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  231. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  232. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  233. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  234. LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
  235. WHERE 1 = 1
  236. '
  237. SET @table = @table + ') x'
  238. SET @sql_filter = ''
  239. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  240. IF @hasChanged IS NOT NULL
  241. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  242. IF @cCurrency IS NOT NULL
  243. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  244. IF @cCountry IS NOT NULL
  245. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  246. IF @cCountryName IS NOT NULL
  247. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  248. IF @cAgent IS NOT NULL
  249. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  250. IF @cAgentName IS NOT NULL
  251. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  252. IF @pCurrency IS NOT NULL
  253. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  254. IF @pCountry IS NOT NULL
  255. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  256. IF @pCountryName IS NOT NULL
  257. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  258. IF @pAgent IS NOT NULL
  259. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  260. IF @pAgentName IS NOT NULL
  261. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  262. IF @isUpdated IS NOT NULL
  263. SET @sql_filter = @sql_filter + ' AND isUpdated = ''' + @isUpdated + ''''
  264. SET @select_field_list = '
  265. exRateOpId
  266. ,tranType
  267. ,cCurrency
  268. ,cCountry
  269. ,cCountryName
  270. ,cCountryCode
  271. ,cAgent
  272. ,cAgentName
  273. ,cRateFactor
  274. ,cRate
  275. ,cMargin
  276. ,cHoMargin
  277. ,pCountry
  278. ,pCountryName
  279. ,pCountryCode
  280. ,pAgent
  281. ,pAgentName
  282. ,pCurrency
  283. ,pRateFactor
  284. ,pRate
  285. ,pMargin
  286. ,pHoMargin
  287. ,crossRate
  288. ,crossRateNew
  289. ,tolerance
  290. ,toleranceNew
  291. ,premium
  292. ,premiumNew
  293. ,customerRate
  294. ,customerRateNew
  295. ,margin
  296. ,marginNew
  297. ,isUpdated
  298. ,modType
  299. ,cMin
  300. ,cMax
  301. ,pMin
  302. ,pMax
  303. ,cRateMaskMulBd
  304. ,cRateMaskMulAd
  305. ,pRateMaskMulBd
  306. ,pRateMaskMulAd
  307. ,crossRateMaskAd
  308. ,lastModifiedBy
  309. ,lastModifiedDate
  310. ,modifiedBy
  311. ,hasChanged
  312. ,hasBranchWiseRate
  313. '
  314. --PRINT @table
  315. EXEC dbo.proc_paging
  316. @table
  317. ,@sql_filter
  318. ,@select_field_list
  319. ,@extra_field_list
  320. ,@sortBy
  321. ,@sortOrder
  322. ,@pageSize
  323. ,@pageNumber
  324. RETURN
  325. END
  326. IF @flag = 'ms' --Modify Summary
  327. BEGIN
  328. INSERT INTO #exRateIdTemp
  329. SELECT value FROM dbo.Split(',', @exRateTreasuryIds)
  330. SELECT
  331. exRateOpId = main.exRateTreasuryId
  332. ,tranType = ISNULL(tt.typeTitle, 'All')
  333. ,cCountry = main.cCountry
  334. ,cCountryName = cc.countryName
  335. ,cCountryCode = cc.countryCode
  336. ,cAgent = main.cAgent
  337. ,cAgentName = ISNULL(cam.agentName, '[All]')
  338. ,pCountry = main.pCountry
  339. ,pCountryName = pc.countryName
  340. ,pCountryCode = pc.countryCode
  341. ,pAgent = main.pAgent
  342. ,pAgentName = ISNULL(pam.agentName, '[All]')
  343. ,cCurrency = main.cCurrency
  344. ,pCurrency = main.pCurrency
  345. ,cRateFactor = main.cRateFactor
  346. ,pRateFactor = main.pRateFactor
  347. ,cRate = main.cRate
  348. ,cMargin = main.cMargin
  349. ,cHoMargin = main.cHoMargin
  350. ,cAgentMargin = main.cAgentMargin
  351. ,pRate = main.pRate
  352. ,pMargin = main.pMargin
  353. ,pHoMargin = main.pHoMargin
  354. ,pAgentMargin = main.pAgentMargin
  355. ,crossRate = main.crossRate
  356. ,tolerance = main.tolerance
  357. ,premium = main.premium
  358. ,customerRate = main.crossRate + main.premium
  359. ,margin = main.tolerance - main.premium
  360. ,[status] = CASE WHEN ISNULL(main.isActive, 'N') = 'Y' THEN 'Active' ELSE 'Inactive' END
  361. ,modType = CASE WHEN main.approvedBy IS NULL THEN 'Insert' ELSE 'Update' END
  362. ,modifiedBy = ISNULL(main.modifiedBy,main.createdBy)
  363. ,modifiedDate = ISNULL(main.modifiedDate, main.createdDate)
  364. FROM exRateTreasury main WITH(NOLOCK)
  365. INNER JOIN #exRateIdTemp erit ON main.exRateTreasuryId = erit.exRateTreasuryId
  366. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  367. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  368. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  369. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  370. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  371. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, 'N') = 'Y'
  372. ORDER BY cCountryName, cAgentName, pCountryName, pAgentName
  373. END
  374. ELSE IF @flag IN ('m') --Approve List
  375. BEGIN
  376. SET @hasRight = dbo.FNAHasRight(@user, CAST(@ApprovedFunctionId AS VARCHAR))
  377. IF @sortBy IS NULL
  378. SET @sortBy = 'exRateOpId'
  379. IF @sortOrder IS NULL
  380. SET @sortOrder = 'ASC'
  381. SET @m = '(
  382. SELECT
  383. exRateOpId = main.exRateOpId
  384. ,cCountry = main.cCountry
  385. ,cAgent = main.cAgent
  386. ,pCountry = main.pCountry
  387. ,pAgent = main.pAgent
  388. ,cCurrency = main.cCurrency
  389. ,pCurrency = main.pCurrency
  390. ,cRateFactor = main.cRateFactor
  391. ,pRateFactor = main.pRateFactor
  392. ,cRate = main.cRate
  393. ,cMargin = main.cMargin
  394. ,pRate = main.pRate
  395. ,pMargin = main.pMargin
  396. ,maxCrossRateOld = CASE WHEN main.approvedBy IS NULL THEN NULL ELSE main.maxCrossRate END
  397. ,crossRateOld = CASE WHEN main.approvedBy IS NULL THEN NULL ELSE main.crossRate END
  398. ,toleranceOld = CASE WHEN main.approvedBy IS NULL THEN NULL ELSE main.tolerance END
  399. ,costOld = CASE WHEN main.approvedBy IS NULL THEN NULL ELSE main.cost END
  400. ,marginOld = CASE WHEN main.approvedBy IS NULL THEN NULL ELSE main.margin END
  401. ,maxCrossRateNew = CASE WHEN main.approvedBy IS NULL THEN main.maxCrossRate ELSE mode.maxCrossRate END
  402. ,crossRateNew = CASE WHEN main.approvedBy IS NULL THEN main.crossRate ELSE mode.crossRate END
  403. ,toleranceNew = CASE WHEN main.approvedBy IS NULL THEN main.tolerance ELSE mode.tolerance END
  404. ,costNew = CASE WHEN main.approvedBy IS NULL THEN main.tolerance ELSE mode.cost END
  405. ,marginNew = CASE WHEN main.approvedBy IS NULL THEN main.margin ELSE mode.margin END
  406. ,modType = CASE WHEN main.approvedBy IS NULL THEN ''I'' ELSE mode.approvedBy END
  407. ,main.createdBy
  408. ,main.createdDate
  409. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  410. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  411. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR (mode.exRateOpId IS NOT NULL) THEN ''Y'' ELSE ''N'' END
  412. FROM exRateOperation main WITH(NOLOCK)
  413. LEFT JOIN exRateOperationHistory mode WITH(NOLOCK) ON main.exRateOpId = mode.exRateOpId AND mode.approvedBy IS NULL
  414. AND (
  415. mode.createdBy = ''' + @user + '''
  416. OR ''Y'' = ''' + @hasRight + '''
  417. )
  418. WHERE (
  419. main.approvedBy IS NOT NULL
  420. OR main.createdBy = ''' + @user + '''
  421. OR ''Y'' = ''' + @hasRight + '''
  422. )
  423. ) '
  424. SET @table = '(
  425. SELECT
  426. main.exRateOpId
  427. ,main.cCountry
  428. ,cCountryName = cc.countryName
  429. ,cCountryCode = cc.countryCode
  430. ,main.cAgent
  431. ,cAgentName = ISNULL(cam.agentName, ''All'')
  432. ,main.pCountry
  433. ,pCountryName = pc.countryName
  434. ,pCountryCode = pc.countryCode
  435. ,main.pAgent
  436. ,pAgentName = ISNULL(pam.agentName, ''All'')
  437. ,main.cCurrency
  438. ,main.pCurrency
  439. ,main.cRateFactor
  440. ,main.pRateFactor
  441. ,main.cRate
  442. ,main.pRate
  443. ,main.cMargin
  444. ,main.pMargin
  445. ,main.maxCrossRateOld
  446. ,main.crossRateOld
  447. ,main.toleranceOld
  448. ,main.costOld
  449. ,main.marginOld
  450. ,main.maxCrossRateNew
  451. ,main.crossRateNew
  452. ,main.toleranceNew
  453. ,main.costNew
  454. ,main.marginNew
  455. ,modType = CASE WHEN main.modType = ''I'' THEN ''Insert'' WHEN main.modType = ''U'' THEN ''Update'' END
  456. ,main.modifiedBy
  457. ,main.hasChanged
  458. FROM ' + @m + ' main
  459. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  460. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  461. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  462. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  463. WHERE 1=1 AND hasChanged = ''Y''
  464. '
  465. SET @table = @table + ') x'
  466. SET @sql_filter = ''
  467. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  468. IF @hasChanged IS NOT NULL
  469. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged +''''
  470. IF @cCurrency IS NOT NULL
  471. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  472. IF @cCountry IS NOT NULL
  473. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  474. IF @cCountryName IS NOT NULL
  475. SET @sql_filter = @sql_filter + ' AND cCountryName LIKE ''%' + @cCountryName + '%'''
  476. IF @cAgent IS NOT NULL
  477. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  478. IF @cAgentName IS NOT NULL
  479. SET @sql_filter = @sql_filter + ' AND cAgentName LIKE ''%' + @cAgentName + '%'''
  480. IF @pCurrency IS NOT NULL
  481. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  482. IF @pCountry IS NOT NULL
  483. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  484. IF @pCountryName IS NOT NULL
  485. SET @sql_filter = @sql_filter + ' AND pCountryName = ''%' + @pCountryName + '%'''
  486. IF @pAgent IS NOT NULL
  487. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  488. IF @pAgentName IS NOT NULL
  489. SET @sql_filter = @sql_filter + ' AND pAgentName = ''%' + @pAgentName + '%'''
  490. SET @select_field_list = '
  491. exRateOpId
  492. ,cCountry
  493. ,cCountryName
  494. ,cCountryCode
  495. ,cAgent
  496. ,cAgentName
  497. ,pCountry
  498. ,pCountryName
  499. ,pCountryCode
  500. ,pAgent
  501. ,pAgentName
  502. ,cCurrency
  503. ,pCurrency
  504. ,cRateFactor
  505. ,pRateFactor
  506. ,cRate
  507. ,pRate
  508. ,cMargin
  509. ,pMargin
  510. ,maxCrossRateOld
  511. ,crossRateOld
  512. ,toleranceOld
  513. ,costOld
  514. ,marginOld
  515. ,maxCrossRateNew
  516. ,crossRateNew
  517. ,toleranceOld
  518. ,costNew
  519. ,marginNew
  520. ,modType
  521. ,modifiedBy
  522. ,hasChanged
  523. '
  524. --PRINT @table
  525. EXEC dbo.proc_paging
  526. @table
  527. ,@sql_filter
  528. ,@select_field_list
  529. ,@extra_field_list
  530. ,@sortBy
  531. ,@sortOrder
  532. ,@pageSize
  533. ,@pageNumber
  534. END
  535. ELSE IF @flag = 'u'
  536. BEGIN
  537. BEGIN TRANSACTION
  538. IF ISNULL(@isUpdated, 'N') = 'N'
  539. BEGIN
  540. UPDATE exRateTreasury SET
  541. premium = @premium
  542. ,modifiedByOperation = @user
  543. ,modifiedDateOperation = GETDATE()
  544. WHERE exRateTreasuryId = @exRateTreasuryId
  545. END
  546. ELSE
  547. BEGIN
  548. UPDATE ero SET
  549. ero.premium = @premium
  550. ,ero.toleranceOperation = ero.tolerance
  551. ,ero.crossRateOperation = ero.customerRate
  552. ,isUpdatedOperation = 'N'
  553. ,ero.modifiedByOperation = @user
  554. ,ero.modifiedDateOperation = GETDATE()
  555. FROM exRateTreasury ero
  556. WHERE ero.exRateTreasuryId = @exRateTreasuryId
  557. END
  558. INSERT INTO exRateTreasuryHistory(
  559. exRateTreasuryId
  560. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  561. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  562. ,sharingValue,sharingType,pSharingValue,pSharingType
  563. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  564. ,tranType
  565. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  566. ,premium,crossRateFactor
  567. ,modType,modFor
  568. ,createdBy,createdDate,approvedBy,approvedDate
  569. )
  570. SELECT
  571. exRateTreasuryId
  572. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  573. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  574. ,sharingValue,sharingType,pSharingValue,pSharingType
  575. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  576. ,tranType
  577. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  578. ,premium,crossRateFactor
  579. ,'U','O' --T - Treasury, O - Operation
  580. ,@user,GETDATE(),@user,GETDATE()
  581. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  582. IF @@TRANCOUNT > 0
  583. COMMIT TRANSACTION
  584. EXEC proc_errorHandler 0, 'Record updated successfully.', @exRateTreasuryId
  585. END
  586. ELSE IF @flag = 'uxml' --Bulk Update XML
  587. BEGIN
  588. DECLARE @exRateList TABLE(id INT IDENTITY(1,1),exRateOpId INT, premium FLOAT, isUpdated CHAR(1), errorCode VARCHAR(10), msg VARCHAR(300))
  589. INSERT @exRateList(exRateOpId, premium, isUpdated, errorCode)
  590. SELECT
  591. exRateOpId = p.value('@exRateOpId','INT')
  592. ,premium = p.value('@premium','FLOAT')
  593. ,isUpdated = p.value('@isUpdated','CHAR(1)')
  594. ,errorCode = '0'
  595. FROM @xml.nodes('/root/row') AS tmp(p)
  596. BEGIN TRANSACTION
  597. IF EXISTS(SELECT TOP 1 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateOpId
  598. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N')
  599. BEGIN
  600. UPDATE exRateTreasury SET
  601. premium = list.premium
  602. ,modifiedByOperation = @user
  603. ,modifiedDateOperation = GETDATE()
  604. FROM exRateTreasury ert
  605. INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateOpId
  606. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'N'
  607. END
  608. IF EXISTS(SELECT TOP 1 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateOpId
  609. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y')
  610. BEGIN
  611. UPDATE ero SET
  612. ero.premium = list.premium
  613. ,ero.toleranceOperation = ero.tolerance
  614. ,ero.crossRateOperation = ero.customerRate
  615. ,isUpdatedOperation = 'N'
  616. ,ero.modifiedByOperation = @user
  617. ,ero.modifiedDateOperation = GETDATE()
  618. FROM exRateTreasury ero
  619. INNER JOIN @exRateList list ON ero.exRateTreasuryId = list.exRateOpId
  620. WHERE list.errorCode = '0' AND ISNULL(list.isUpdated, 'N') = 'Y'
  621. END
  622. INSERT INTO exRateTreasuryHistory(
  623. exRateTreasuryId
  624. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  625. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  626. ,sharingValue,sharingType,pSharingValue,pSharingType
  627. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  628. ,tranType
  629. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  630. ,premium,crossRateFactor
  631. ,modType,modFor
  632. ,createdBy,createdDate,approvedBy,approvedDate
  633. )
  634. SELECT
  635. exRateTreasuryId
  636. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  637. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  638. ,sharingValue,sharingType,pSharingValue,pSharingType
  639. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  640. ,tranType
  641. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  642. ,ert.premium,crossRateFactor
  643. ,'U','O' --T - Treasury, O - Operation
  644. ,@user,GETDATE(),@user,GETDATE()
  645. FROM exRateTreasury ert WITH(NOLOCK)
  646. INNER JOIN @exRateList list ON ert.exRateTreasuryId = list.exRateOpId
  647. IF @@TRANCOUNT > 0
  648. COMMIT TRANSACTION
  649. SELECT @exRateTreasuryIds = COALESCE(ISNULL(@exRateTreasuryIds + ',', ''), '') + CAST(exRateOpId AS VARCHAR) FROM @exRateList WHERE errorCode = '0'
  650. SELECT @exRateTreasuryIds
  651. RETURN
  652. END
  653. ELSE IF @flag = 'ufm' --Bulk Update From Master Record
  654. BEGIN
  655. IF(ISNULL(@exRateTreasuryIds, '') = '')
  656. BEGIN
  657. EXEC proc_errorHandler 1, 'Please select the record(s) to update', NULL
  658. RETURN
  659. END
  660. SET @sql = '
  661. UPDATE ero SET
  662. ero.toleranceOperation = tolerance
  663. ,ero.crossRateOperation = customerRate
  664. ,ero.isUpdatedOperation = ''N''
  665. ,ero.modifiedBy = ''' + @user + '''
  666. ,ero.modifiedDate = GETDATE()
  667. FROM exRateTreasury ero
  668. WHERE ero.exRateTreasuryId IN (' + @exRateTreasuryIds + ')
  669. '
  670. EXEC (@sql)
  671. SET @sql = '
  672. INSERT INTO exRateTreasuryHistory(
  673. exRateTreasuryId
  674. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  675. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  676. ,sharingValue,sharingType,pSharingValue,pSharingType
  677. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  678. ,tranType
  679. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  680. ,premium,crossRateFactor
  681. ,modType,modFor
  682. ,createdBy,createdDate,approvedBy,approvedDate
  683. )
  684. SELECT
  685. exRateTreasuryId
  686. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  687. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  688. ,sharingValue,sharingType,pSharingValue,pSharingType
  689. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  690. ,tranType
  691. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  692. ,premium,crossRateFactor
  693. ,''U'',''O''
  694. ,''' + @user + ''',GETDATE(),''' + @user + ''',GETDATE()
  695. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId IN (' + @exRateTreasuryIds + ')
  696. '
  697. EXEC (@sql)
  698. EXEC proc_errorHandler 0, 'Rate updated successfully', NULL
  699. END
  700. ELSE IF @flag = 'ib' --Insert Branchwise Premium
  701. BEGIN
  702. IF EXISTS(SELECT 'X' FROM exRateBranchWise WITH(NOLOCK) WHERE cBranch = @cBranch AND exRateTreasuryId = @exRateTreasuryId)
  703. BEGIN
  704. EXEC proc_errorHandler 1, 'Record already exists', NULL
  705. RETURN
  706. END
  707. SELECT @tolerance = toleranceOperation, @crossRate = crossRateOperation FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  708. IF @crossRate IS NULL
  709. BEGIN
  710. EXEC proc_errorHandler 1, 'Please update rate before adding branch wise rate', NULL
  711. RETURN
  712. END
  713. IF @premium > @tolerance
  714. BEGIN
  715. EXEC proc_errorHandler 1, 'Premium exceeded max tolerance', NULL
  716. RETURN
  717. END
  718. SET @customerRate = ROUND(@crossRate + @premium, 8)
  719. BEGIN TRANSACTION
  720. --SELECT * FROM exRateBranchWise
  721. --SELECT * FROM exRateOperation
  722. INSERT INTO exRateBranchWise(
  723. exRateTreasuryId
  724. ,cBranch
  725. ,premium
  726. ,isActive
  727. ,createdBy
  728. ,createdDate
  729. )
  730. SELECT
  731. @exRateTreasuryId
  732. ,@cBranch
  733. ,@premium
  734. ,'Y'
  735. ,@user
  736. ,GETDATE()
  737. SET @exRateTreasuryId = SCOPE_IDENTITY()
  738. IF @@TRANCOUNT > 0
  739. COMMIT TRANSACTION
  740. EXEC proc_errorHandler 0, 'Record has been added successfully', NULL
  741. END
  742. ELSE IF @flag = 'a'
  743. BEGIN
  744. DECLARE @crossRateDecimalMask INT
  745. SELECT @crossRateDecimalMask = dbo.FNAGetCrossRateDecimalMask(cCurrency, pCurrency) FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  746. SELECT
  747. main.*
  748. ,cMin = crm.cMin
  749. ,cMax = crm.cMax
  750. ,pMin = prm.pMin
  751. ,pMax = prm.pMax
  752. ,crossRateMaskAd = @crossRateDecimalMask
  753. ,cCountryName = ISNULL(ccm.countryName, 'All')
  754. ,cCountryCode = ISNULL(ccm.countryCode, '')
  755. ,cAgentName = ISNULL(cam.agentName, 'All')
  756. ,pCountryName = ISNULL(pcm.countryName, 'All')
  757. ,pCountryCode = ISNULL(pcm.countryCode, '')
  758. ,pAgentName = ISNULL(pam.agentName, 'All')
  759. ,tranTypeName = ISNULL(tt.typeTitle, 'All')
  760. FROM exRateTreasury main WITH(NOLOCK)
  761. INNER JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency
  762. INNER JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency
  763. LEFT JOIN countryMaster ccm WITH(NOLOCK) ON main.cCountry = ccm.countryId
  764. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  765. LEFT JOIN countryMaster pcm WITH(NOLOCK) ON main.pCountry = pcm.countryId
  766. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  767. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  768. WHERE exRateTreasuryId = @exRateTreasuryId
  769. END
  770. ELSE IF @flag = 'sb' --Branchwise Rate List
  771. BEGIN
  772. --IF @sortBy IS NULL
  773. SET @sortBy = 'cBranchName'
  774. --IF @sortOrder IS NULL
  775. SET @sortOrder = 'ASC'
  776. --SELECT * FROM exRateOperation
  777. SET @m = '(
  778. SELECT
  779. exRateBranchWiseId = erbw.exRateBranchWiseId
  780. ,tranType = main.tranType
  781. ,cCurrency = main.cCurrency
  782. ,cCountry = main.cCountry
  783. ,cAgent = main.cAgent
  784. ,cBranch = erbw.cBranch
  785. ,cRateFactor = main.cRateFactor
  786. ,cRate = main.cRate
  787. ,cMargin = main.cMargin
  788. ,pCurrency = main.pCurrency
  789. ,pCountry = main.pCountry
  790. ,pAgent = main.pAgent
  791. ,pRateFactor = main.pRateFactor
  792. ,pRate = main.pRate
  793. ,pMargin = main.pMargin
  794. ,crossRate = main.crossRateOperation
  795. ,tolerance = main.toleranceOperation
  796. ,premium = erbw.premium
  797. ,customerRate = ROUND(main.crossRateOperation + erbw.premium, 10)
  798. ,margin = ROUND(main.toleranceOperation - erbw.premium, 10)
  799. ,isActive = main.isActive
  800. ,erbw.createdBy
  801. ,erbw.createdDate
  802. ,modifiedBy = ISNULL(erbw.modifiedBy, erbw.createdBy)
  803. ,modifiedDate = ISNULL(erbw.modifiedDate, erbw.createdDate)
  804. FROM exRateTreasury main WITH(NOLOCK)
  805. INNER JOIN exRateBranchWise erbw WITH(NOLOCK) ON main.exRateTreasuryId = erbw.exRateTreasuryId
  806. AND ISNULL(erbw.isActive, ''N'') = ''' + @isActive + '''
  807. WHERE erbw.exRateTreasuryId = ' + CAST(@exRateTreasuryId AS VARCHAR) + '
  808. ) '
  809. SET @table = '(
  810. SELECT
  811. main.exRateBranchWiseId
  812. ,tranType = ISNULL(tt.typeTitle, ''Any'')
  813. ,main.cCurrency
  814. ,main.cCountry
  815. ,cCountryName = cc.countryName
  816. ,cCountryCode = cc.countryCode
  817. ,main.cAgent
  818. ,cAgentName = ISNULL(cam.agentName, ''All'')
  819. ,main.cBranch
  820. ,cBranchName = ISNULL(cbm.agentName, ''All'')
  821. ,main.cRateFactor
  822. ,main.cRate
  823. ,cMargin = ISNULL(main.cMargin, 0.0)
  824. ,main.pCurrency
  825. ,main.pCountry
  826. ,pCountryName = pc.countryName
  827. ,pCountryCode = pc.countryCode
  828. ,main.pAgent
  829. ,pAgentName = ISNULL(pam.agentName, ''All'')
  830. ,main.pRateFactor
  831. ,main.pRate
  832. ,pMargin = ISNULL(main.pMargin, 0.0)
  833. ,main.crossRate
  834. ,main.tolerance
  835. ,main.premium
  836. ,main.customerRate
  837. ,main.margin
  838. ,crm.cMin
  839. ,crm.cMax
  840. ,prm.pMin
  841. ,prm.pMax
  842. ,cRateMaskMulBd = CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulBd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivBd END
  843. ,cRateMaskMulAd = CASE WHEN main.cRateFactor = ''M'' THEN crm.rateMaskMulAd WHEN main.cRateFactor = ''D'' THEN crm.rateMaskDivAd END
  844. ,pRateMaskMulBd = CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulBd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivBd END
  845. ,pRateMaskMulAd = CASE WHEN main.pRateFactor = ''M'' THEN prm.rateMaskMulAd WHEN main.pRateFactor = ''D'' THEN prm.rateMaskDivAd END
  846. ,crossRateMaskAd = dbo.FNAGetCrossRateDecimalMask(main.cCurrency, main.pCurrency)
  847. ,main.modifiedBy
  848. ,main.modifiedDate
  849. FROM ' + @m + ' main
  850. LEFT JOIN serviceTypeMaster tt WITH(NOLOCK) ON main.tranType = tt.serviceTypeId
  851. LEFT JOIN countryMaster cc WITH(NOLOCK) ON main.cCountry = cc.countryId
  852. LEFT JOIN agentMaster cam WITH(NOLOCK) ON main.cAgent = cam.agentId
  853. LEFT JOIN agentMaster cbm WITH(NOLOCK) ON main.cBranch = cbm.agentId
  854. LEFT JOIN countryMaster pc WITH(NOLOCK) ON main.pCountry = pc.countryId
  855. LEFT JOIN agentMaster pam WITH(NOLOCK) ON main.pAgent = pam.agentId
  856. LEFT JOIN rateMask crm WITH(NOLOCK) ON main.cCurrency = crm.currency AND ISNULL(crm.isActive, ''N'') = ''Y''
  857. LEFT JOIN rateMask prm WITH(NOLOCK) ON main.pCurrency = prm.currency AND ISNULL(prm.isActive, ''N'') = ''Y''
  858. WHERE 1 = 1
  859. '
  860. SET @table = @table + ') x'
  861. SET @sql_filter = ''
  862. --SET @sql_filter = @sql_filter + ' AND ISNULL(isDeleted, '''') <> ''Y'''
  863. IF @cCurrency IS NOT NULL
  864. SET @sql_filter = @sql_filter + ' AND cCurrency = ''' + @cCurrency + ''''
  865. IF @cCountry IS NOT NULL
  866. SET @sql_filter = @sql_filter + ' AND cCountry = ' + CAST(@cCountry AS VARCHAR(50))
  867. IF @cAgent IS NOT NULL
  868. SET @sql_filter = @sql_filter + ' AND cAgent = ' + CAST(@cAgent AS VARCHAR(50))
  869. IF @pCurrency IS NOT NULL
  870. SET @sql_filter = @sql_filter + ' AND pCurrency = ''' + @pCurrency + ''''
  871. IF @pCountry IS NOT NULL
  872. SET @sql_filter = @sql_filter + ' AND pCountry = ' + CAST(@pCountry AS VARCHAR(50))
  873. IF @pAgent IS NOT NULL
  874. SET @sql_filter = @sql_filter + ' AND pAgent = ' + CAST(@pAgent AS VARCHAR(50))
  875. SET @select_field_list = '
  876. exRateBranchWiseId
  877. ,tranType
  878. ,cCurrency
  879. ,cCountry
  880. ,cCountryName
  881. ,cCountryCode
  882. ,cAgent
  883. ,cAgentName
  884. ,cBranch
  885. ,cBranchName
  886. ,cRateFactor
  887. ,cRate
  888. ,cMargin
  889. ,pCountry
  890. ,pCountryName
  891. ,pCountryCode
  892. ,pAgent
  893. ,pAgentName
  894. ,pCurrency
  895. ,pRateFactor
  896. ,pRate
  897. ,pMargin
  898. ,crossRate
  899. ,tolerance
  900. ,premium
  901. ,customerRate
  902. ,margin
  903. ,cMin
  904. ,cMax
  905. ,pMin
  906. ,pMax
  907. ,cRateMaskMulBd
  908. ,cRateMaskMulAd
  909. ,pRateMaskMulBd
  910. ,pRateMaskMulAd
  911. ,crossRateMaskAd
  912. ,modifiedBy
  913. ,modifiedDate
  914. '
  915. --PRINT @table
  916. EXEC dbo.proc_paging
  917. @table
  918. ,@sql_filter
  919. ,@select_field_list
  920. ,@extra_field_list
  921. ,@sortBy
  922. ,@sortOrder
  923. ,@pageSize
  924. ,@pageNumber
  925. END
  926. ELSE IF @flag = 'ub' --Update Branchwise Rate
  927. BEGIN
  928. IF(ISNULL(@exRateBranchWiseId, '') = '')
  929. BEGIN
  930. EXEC proc_errorHandler 1, 'Please select the record(s) to update', NULL
  931. RETURN
  932. END
  933. SELECT @tolerance = toleranceOperation, @crossRate = crossRateOperation FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = (SELECT exRateTreasuryId FROM exRateBranchwise WHERE exRateBranchwiseId = @exRateBranchWiseId)
  934. IF @premium > @tolerance
  935. BEGIN
  936. EXEC proc_errorHandler 1, 'Premium exceeded max tolerance', NULL
  937. RETURN
  938. END
  939. SET @customerRate = ROUND(@crossRate + @premium, 8)
  940. BEGIN TRANSACTION
  941. UPDATE exRateBranchWise SET
  942. premium = @premium
  943. ,modifiedBy = @user
  944. ,modifiedDate = GETDATE()
  945. WHERE exRateBranchWiseId = @exRateBranchWiseId
  946. INSERT INTO exRateBranchWiseHistory(
  947. exRateBranchWiseId
  948. ,exRateTreasuryId
  949. ,cBranch
  950. ,premium
  951. ,modType
  952. ,createdBy
  953. ,createdDate
  954. )
  955. SELECT
  956. exRateBranchWiseId
  957. ,exRateTreasuryId
  958. ,cBranch
  959. ,@premium
  960. ,'U'
  961. ,@user
  962. ,GETDATE()
  963. FROM exRateBranchWise WITH(NOLOCK)
  964. WHERE exRateBranchWiseId = @exRateBranchWiseId
  965. IF @@TRANCOUNT > 0
  966. COMMIT TRANSACTION
  967. EXEC proc_errorHandler 0, 'Record has been updated successfully', NULL
  968. END
  969. ELSE IF @flag = 'ucb' --Update Checked Branchwise Rate
  970. BEGIN
  971. IF(ISNULL(@exRateBranchWiseIds, '') = '')
  972. BEGIN
  973. EXEC proc_errorHandler 1, 'Please select the record(s) to update', NULL
  974. RETURN
  975. END
  976. IF @customerRate IS NULL
  977. BEGIN
  978. EXEC proc_errorHandler 1, 'Please define new customer rate to update', NULL
  979. RETURN
  980. END
  981. CREATE TABLE #exRateBranchWiseIds(exRateBranchWiseId INT)
  982. INSERT INTO #exRateBranchWiseIds
  983. SELECT value FROM dbo.Split(',', @exRateBranchWiseIds)
  984. SELECT @tolerance = toleranceOperation, @crossRate = crossRateOperation FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = (SELECT exRateTreasuryId FROM exRateBranchwise WHERE exRateBranchwiseId = (SELECT TOP 1 exRateBranchWiseId FROM #exRateBranchWiseIds))
  985. SET @premium = ROUND(@customerRate - @crossRate, 8)
  986. IF @premium > @tolerance
  987. BEGIN
  988. EXEC proc_errorHandler 1, 'Premium exceeded max tolerance', NULL
  989. RETURN
  990. END
  991. --SELECT @crossRate, @premium, @customerRate
  992. --RETURN
  993. --SELECT @premium, @tolerance, @crossRate, @customerRate
  994. --RETURN
  995. BEGIN TRANSACTION
  996. UPDATE exRateBranchWise SET
  997. premium = @premium
  998. ,modifiedBy = @user
  999. ,modifiedDate = GETDATE()
  1000. FROM exRateBranchWise erbw
  1001. INNER JOIN #exRateBranchWiseIds t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1002. INSERT INTO exRateBranchWiseHistory(
  1003. exRateBranchWiseId
  1004. ,exRateTreasuryId
  1005. ,cBranch
  1006. ,premium
  1007. ,modType
  1008. ,createdBy
  1009. ,createdDate
  1010. )
  1011. SELECT
  1012. erbw.exRateBranchWiseId
  1013. ,exRateTreasuryId
  1014. ,cBranch
  1015. ,@premium
  1016. ,'U'
  1017. ,@user
  1018. ,GETDATE()
  1019. FROM exRateBranchWise erbw WITH(NOLOCK)
  1020. INNER JOIN #exRateBranchWiseIds t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1021. --EXEC (@sql)
  1022. --PRINT @sql
  1023. COMMIT TRANSACTION
  1024. EXEC proc_errorHandler 0, 'Rate updated successfully', NULL
  1025. END
  1026. ELSE IF @flag = 'ubxml' --Update Branchwise Rate XML
  1027. BEGIN
  1028. BEGIN TRANSACTION
  1029. --1. Update Main Record----------------------------------------------------------------------------------------------
  1030. IF ISNULL(@isUpdated, 'N') = 'N'
  1031. BEGIN
  1032. UPDATE exRateTreasury SET
  1033. premium = @premium
  1034. ,modifiedByOperation = @user
  1035. ,modifiedDateOperation = GETDATE()
  1036. WHERE exRateTreasuryId = @exRateTreasuryId
  1037. END
  1038. ELSE
  1039. BEGIN
  1040. UPDATE ero SET
  1041. ero.premium = @premium
  1042. ,ero.toleranceOperation = ero.tolerance
  1043. ,ero.crossRateOperation = ero.customerRate
  1044. ,isUpdatedOperation = 'N'
  1045. ,ero.modifiedByOperation = @user
  1046. ,ero.modifiedDateOperation = GETDATE()
  1047. FROM exRateTreasury ero
  1048. WHERE ero.exRateTreasuryId = @exRateTreasuryId
  1049. END
  1050. INSERT INTO exRateTreasuryHistory(
  1051. exRateTreasuryId
  1052. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  1053. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  1054. ,sharingValue,sharingType,pSharingValue,pSharingType
  1055. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  1056. ,tranType
  1057. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  1058. ,premium,crossRateFactor
  1059. ,modType,modFor
  1060. ,createdBy,createdDate,approvedBy,approvedDate
  1061. )
  1062. SELECT
  1063. exRateTreasuryId
  1064. ,cCurrency,cCountry,cAgent,cRateFactor,cRate,cMargin,cHoMargin,cAgentMargin
  1065. ,pCurrency,pCountry,pAgent,pRateFactor,pRate,pMargin,pHoMargin,pAgentMargin
  1066. ,sharingValue,sharingType,pSharingValue,pSharingType
  1067. ,toleranceOn,agentTolMin,agentTolMax,customerTolMin,customerTolMax
  1068. ,tranType
  1069. ,crossRate,crossRateOperation,maxCrossRate,customerRate,tolerance,toleranceOperation
  1070. ,premium,crossRateFactor
  1071. ,'U','O' --T - Treasury, O - Operation
  1072. ,@user,GETDATE(),@user,GETDATE()
  1073. FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1074. ---------------------------------------------------------------------------------------------------------------------
  1075. SELECT @crossRate = crossRateOperation FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  1076. DECLARE @exRateBranchWiseList TABLE(id INT IDENTITY(1,1),exRateBranchWiseId INT, customerRate FLOAT, errorCode VARCHAR(10), msg VARCHAR(300))
  1077. INSERT @exRateBranchWiseList(exRateBranchWiseId, customerRate, errorCode)
  1078. SELECT
  1079. exRateBranchWiseId = p.value('@exRateBranchWiseId','INT')
  1080. ,customerRate = p.value('@customerRate','FLOAT')
  1081. ,errorCode = '0'
  1082. FROM @xml.nodes('/root/row') AS tmp(p)
  1083. --2. Update Branch Wise Rate-----------------------------------------------------------------------------------------
  1084. IF EXISTS(SELECT TOP 1 'X' FROM @exRateBranchWiseList)
  1085. BEGIN
  1086. INSERT INTO exRateBranchWiseHistory(
  1087. exRateBranchWiseId
  1088. ,exRateTreasuryId
  1089. ,cBranch
  1090. ,premium
  1091. ,modType
  1092. ,createdBy
  1093. ,createdDate
  1094. )
  1095. SELECT
  1096. erbw.exRateBranchWiseId
  1097. ,exRateTreasuryId
  1098. ,cBranch
  1099. ,ROUND(t.customerRate - @crossRate, 10)
  1100. ,'U'
  1101. ,@user
  1102. ,GETDATE()
  1103. FROM exRateBranchWise erbw WITH(NOLOCK)
  1104. INNER JOIN @exRateBranchWiseList t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1105. WHERE premium <> ROUND(t.customerRate - @crossRate, 10)
  1106. UPDATE exRateBranchWise SET
  1107. premium = ROUND(t.customerRate - @crossRate, 10)
  1108. ,modifiedBy = @user
  1109. ,modifiedDate = GETDATE()
  1110. FROM exRateBranchWise erbw
  1111. INNER JOIN @exRateBranchWiseList t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1112. END
  1113. ----------------------------------------------------------------------------------------------------------------------
  1114. IF @@TRANCOUNT > 0
  1115. COMMIT TRANSACTION
  1116. EXEC proc_errorHandler 0, 'Record updated successfully.', @exRateTreasuryId
  1117. END
  1118. ELSE IF @flag = 'ai' --Set Active Inactive
  1119. BEGIN
  1120. INSERT INTO #exRateBranchWiseIdTemp
  1121. SELECT value FROM dbo.Split(',', @exRateBranchWiseIds)
  1122. BEGIN TRANSACTION
  1123. --1. Set Active/Inactive to unapproved main table record
  1124. UPDATE exRateBranchWise SET
  1125. isActive = @isActive
  1126. ,modifiedBy = @user
  1127. ,modifiedDate = GETDATE()
  1128. FROM exRateBranchWise erbw
  1129. INNER JOIN #exRateBranchWiseIdTemp t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1130. INSERT INTO exRateBranchWiseHistory(
  1131. exRateBranchWiseId,exRateTreasuryId,cBranch,premium,isActive
  1132. ,modType,createdBy,createdDate
  1133. )
  1134. SELECT
  1135. erbw.exRateBranchWiseId, erbw.exRateTreasuryId, cBranch, premium, isActive
  1136. ,'U', @user, GETDATE()
  1137. FROM exRateBranchWise erbw
  1138. INNER JOIN #exRateBranchWiseIdTemp t ON erbw.exRateBranchWiseId = t.exRateBranchWiseId
  1139. IF @@TRANCOUNT > 0
  1140. COMMIT TRANSACTION
  1141. IF @isActive = 'Y'
  1142. SET @msg = 'Record(s) set active'
  1143. ELSE
  1144. SET @msg = 'Record(s) set inactive'
  1145. EXEC proc_errorHandler 0, @msg, @exRateBranchWiseIds
  1146. END
  1147. END TRY
  1148. BEGIN CATCH
  1149. IF @@TRANCOUNT > 0
  1150. ROLLBACK TRANSACTION
  1151. DECLARE @errorMessage VARCHAR(MAX)
  1152. SET @errorMessage = ERROR_MESSAGE()
  1153. EXEC proc_errorHandler 1, @errorMessage, @exRateTreasuryId
  1154. END CATCH
  1155. GO