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.

982 lines
54 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_seRate] 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. EXEC proc_seRate @flag = 's', @user = 'admin'
  10. */
  11. CREATE proc [dbo].[proc_seRate]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(30) = NULL
  14. ,@seRateId VARCHAR(30) = NULL
  15. ,@baseCurrency INT = NULL
  16. ,@localCurrency INT = NULL
  17. ,@sHub INT = NULL
  18. ,@sCountry INT = NULL
  19. ,@ssAgent INT = NULL
  20. ,@sAgent INT = NULL
  21. ,@sBranch INT = NULL
  22. ,@rHub INT = NULL
  23. ,@rCountry INT = NULL
  24. ,@rsAgent INT = NULL
  25. ,@rAgent INT = NULL
  26. ,@rBranch INT = NULL
  27. ,@state INT = NULL
  28. ,@zip VARCHAR(20) = NULL
  29. ,@agentGroup INT = NULL
  30. ,@cost MONEY = NULL
  31. ,@margin DECIMAL(26, 16) = NULL
  32. ,@agentMargin MONEY = NULL
  33. ,@ve MONEY = NULL
  34. ,@ne MONEY = NULL
  35. ,@spFlag CHAR(1) = NULL
  36. ,@effectiveFrom DATETIME = NULL
  37. ,@effectiveTo DATETIME = NULL
  38. ,@hasChanged CHAR(1) = NULL
  39. ,@isEnable CHAR(1) = NULL
  40. ,@sortBy VARCHAR(50) = NULL
  41. ,@sortOrder VARCHAR(5) = NULL
  42. ,@pageSize INT = NULL
  43. ,@pageNumber INT = NULL
  44. AS
  45. SET NOCOUNT ON
  46. SET XACT_ABORT ON
  47. BEGIN TRY
  48. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  49. DECLARE
  50. @sql VARCHAR(MAX)
  51. ,@oldValue VARCHAR(MAX)
  52. ,@newValue VARCHAR(MAX)
  53. ,@module VARCHAR(10)
  54. ,@tableAlias VARCHAR(100)
  55. ,@logIdentifier VARCHAR(50)
  56. ,@logParamMod VARCHAR(100)
  57. ,@logParamMain VARCHAR(100)
  58. ,@table VARCHAR(MAX)
  59. ,@select_field_list VARCHAR(MAX)
  60. ,@extra_field_list VARCHAR(MAX)
  61. ,@sql_filter VARCHAR(MAX)
  62. ,@modType VARCHAR(6)
  63. ,@ApprovedFunctionId INT
  64. SELECT
  65. @logIdentifier = 'seRateId'
  66. ,@logParamMain = 'seRate'
  67. ,@logParamMod = 'seRateHistory'
  68. ,@module = '20'
  69. ,@tableAlias = 'Special Ex-Rate'
  70. ,@ApprovedFunctionId = CASE @spFlag WHEN 'P' THEN 20111130 WHEN 'S' THEN 20111330 ELSE 0 END
  71. IF @flag IN ('s')
  72. BEGIN
  73. IF @sortBy IS NULL
  74. SET @sortBy = 'seRateId'
  75. IF @sortOrder IS NULL
  76. SET @sortOrder = 'ASC'
  77. DECLARE @m VARCHAR(MAX)
  78. SET @m = '(
  79. SELECT
  80. seRateId = ISNULL(mode.seRateId, main.seRateId)
  81. ,baseCurrency = ISNULL(mode.baseCurrency, main.baseCurrency)
  82. ,localCurrency = ISNULL(mode.localCurrency, main.localCurrency)
  83. ,sHub = ISNULL(mode.sHub, main.sHub)
  84. ,sCountry = ISNULL(mode.sCountry, main.sCountry)
  85. ,ssAgent = ISNULL(mode.ssAgent, main.ssAgent)
  86. ,sAgent = ISNULL(mode.sAgent, main.sAgent)
  87. ,sBranch = ISNULL(mode.sBranch, main.sBranch)
  88. ,rHub = ISNULL(mode.rHub, main.rHub)
  89. ,rCountry = ISNULL(mode.rCountry, main.rCountry)
  90. ,rsAgent = ISNULL(mode.rsAgent, main.rsAgent)
  91. ,rAgent = ISNULL(mode.rAgent, main.rAgent)
  92. ,rBranch = ISNULL(mode.rBranch, main.rBranch)
  93. ,state = ISNULL(mode.state, main.state)
  94. ,zip = ISNULL(mode.zip, main.zip)
  95. ,agentGroup = ISNULL(mode.agentGroup, main.agentGroup)
  96. ,cost = ISNULL(mode.cost, main.cost)
  97. ,margin = ISNULL(mode.margin, main.margin)
  98. ,agentMargin = ISNULL(mode.agentMargin, main.agentMargin)
  99. ,ve = ISNULL(mode.ve, main.ve)
  100. ,ne = ISNULL(mode.ne, main.ne)
  101. ,effectiveFrom = ISNULL(mode.effectiveFrom, main.effectiveFrom)
  102. ,effectiveTo = ISNULL(mode.effectiveTo, main.effectiveTo)
  103. ,spFlag = ISNULL(mode.spFlag, main.spFlag)
  104. ,isEnable = ISNULL(mode.isEnable, main.isEnable)
  105. ,main.createdBy
  106. ,main.createdDate
  107. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  108. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  109. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  110. (mode.seRateId IS NOT NULL)
  111. THEN ''Y'' ELSE ''N'' END
  112. FROM seRate main WITH(NOLOCK)
  113. LEFT JOIN seRateHistory mode ON main.seRateId = mode.seRateId AND mode.approvedBy IS NULL
  114. AND (
  115. mode.createdBy = ''' + @user + '''
  116. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  117. )
  118. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  119. AND (
  120. main.approvedBy IS NOT NULL
  121. OR main.createdBy = ''' + @user + '''
  122. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  123. )
  124. AND main.spFlag = ''' + @spFlag + '''
  125. ) '
  126. SET @table = '(
  127. SELECT
  128. main.seRateId
  129. ,main.baseCurrency
  130. ,baseCurrencyName = bc.currencyCode
  131. ,main.localCurrency
  132. ,localCurrencyName = lc.currencyCode
  133. ,main.sHub
  134. ,sHubName = sh.agentName
  135. ,main.sCountry
  136. ,sCountryName = sc.countryName
  137. ,main.ssAgent
  138. ,ssAgentName = ssa.agentName
  139. ,main.sAgent
  140. ,sAgentName = ISNULL(sa.agentName, ''Any'')
  141. ,main.sBranch
  142. ,sBranchName = ISNULL(sb.agentName, ''Any'')
  143. ,main.rHub
  144. ,rHubName = rh.agentName
  145. ,main.rCountry
  146. ,rCountryName = rc.countryName
  147. ,main.rsAgent
  148. ,rsAgentName = rsa.agentName
  149. ,main.rAgent
  150. ,rAgentName = ISNULL(ra.agentName, ''Any'')
  151. ,main.rBranch
  152. ,rBranchName = ISNULL(rb.agentName, ''Any'')
  153. ,main.state
  154. ,main.zip
  155. ,main.agentGroup
  156. ,main.cost
  157. ,main.margin
  158. ,offer = CASE WHEN main.spFlag = ''S'' THEN CAST(main.cost AS DECIMAL(26, 16)) + CAST(main.margin AS DECIMAL(26, 16)) ELSE
  159. CAST(main.cost AS DECIMAL(26,16)) - CAST(main.margin AS DECIMAL(26, 16)) END
  160. ,main.agentMargin
  161. ,main.ve
  162. ,main.ne
  163. ,main.effectiveFrom
  164. ,main.effectiveTo
  165. ,main.isEnable
  166. ,main.modifiedBy
  167. ,main.hasChanged
  168. FROM ' + @m + ' main
  169. LEFT JOIN agentMaster sh WITH(NOLOCK) ON sh.agentId = main.sHub
  170. LEFT JOIN countryMaster sc WITH(NOLOCK) ON main.sCountry = sc.countryId
  171. LEFT JOIN agentMaster ssa WITH(NOLOCK) ON ssa.agentId = main.ssAgent
  172. LEFT JOIN agentMaster sa WITH(NOLOCK) ON sa.agentId = main.sAgent
  173. LEFT JOIN agentMaster sb WITH(NOLOCK) ON sb.agentId = main.sBranch
  174. LEFT JOIN agentMaster rh WITH(NOLOCK) ON rh.agentId = main.rHub
  175. LEFT JOIN countryMaster rc WITH(NOLOCK) ON main.rCountry = rc.countryId
  176. LEFT JOIN agentMaster rsa WITH(NOLOCK) ON rsa.agentId = main.rsAgent
  177. LEFT JOIN agentMaster ra WITH(NOLOCK) ON ra.agentId = main.rAgent
  178. LEFT JOIN agentMaster rb WITH(NOLOCK) ON rb.agentId = main.rBranch
  179. LEFT JOIN currencyMaster bc WITH(NOLOCK) ON main.baseCurrency = bc.currencyId
  180. LEFT JOIN currencyMaster lc WITH(NOLOCK) ON main.localCurrency = lc.currencyId
  181. ) x
  182. '
  183. --print @table
  184. SET @sql_filter = ''
  185. IF @sHub IS NOT NULL
  186. SET @sql_filter = @sql_filter + ' AND sHub = ' + CAST(@sHub AS VARCHAR(50))
  187. IF @hasChanged IS NOT NULL
  188. SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + @hasChanged + ''''
  189. IF @rHub IS NOT NULL
  190. SET @sql_filter = @sql_filter + ' AND rHub = ' + CAST(@rHub AS VARCHAR(50))
  191. IF @sCountry IS NOT NULL
  192. SET @sql_filter = @sql_filter + ' AND sCountry = ' + CAST(@sCountry AS VARCHAR(50))
  193. IF @ssAgent IS NOT NULL
  194. SET @sql_filter = @sql_filter + ' AND ssAgent = ' + CAST(@ssAgent AS VARCHAR(50))
  195. IF @sAgent IS NOT NULL
  196. SET @sql_filter = @sql_filter + ' AND sAgent = ' + CAST(@sAgent AS VARCHAR(50))
  197. IF @sBranch IS NOT NULL
  198. SET @sql_filter = @sql_filter + ' AND sBranch = ' + CAST(@sBranch AS VARCHAR(50))
  199. IF @rCountry IS NOT NULL
  200. SET @sql_filter = @sql_filter + ' AND rCountry = ' + CAST(@rCountry AS VARCHAR(50))
  201. IF @rsAgent IS NOT NULL
  202. SET @sql_filter = @sql_filter + ' AND rsAgent = ' + CAST(@rsAgent AS VARCHAR(50))
  203. IF @rAgent IS NOT NULL
  204. SET @sql_filter = @sql_filter + ' AND rAgent = ' + CAST(@rAgent AS VARCHAR(50))
  205. IF @rBranch IS NOT NULL
  206. SET @sql_filter = @sql_filter + ' AND rBranch = ' + CAST(@rBranch AS VARCHAR(50))
  207. IF @baseCurrency IS NOT NULL
  208. SET @sql_filter = @sql_filter + ' AND baseCurrency = ' + CAST(@baseCurrency AS VARCHAR(50))
  209. IF @localCurrency IS NOT NULL
  210. SET @sql_filter = @sql_filter + ' AND localCurrency = ' + CAST(@localCurrency AS VARCHAR(50))
  211. IF @state IS NOT NULL
  212. SET @sql_filter = @sql_filter + ' AND state = ' + CAST(@state AS VARCHAR(50))
  213. IF @zip IS NOT NULL
  214. SET @sql_filter = @sql_filter + ' AND zip = ' + CAST(@zip AS VARCHAR(50))
  215. IF @agentGroup IS NOT NULL
  216. SET @sql_filter = @sql_filter + ' AND agentGroup = ' + CAST(@agentGroup AS VARCHAR(50))
  217. /*
  218. ,@hub INT = NULL
  219. ,@baseCurrency INT = NULL
  220. ,@localCurrency INT = NULL
  221. ,@sCountry INT = NULL
  222. ,@sAgent INT = NULL
  223. ,@sBranch INT = NULL
  224. ,@rCountry INT = NULL
  225. ,@rAgent INT = NULL
  226. ,@rBranch INT = NULL
  227. ,@state INT = NULL
  228. ,@zip VARCHAR(20) = NULL
  229. ,@agentGroup INT = NULL
  230. */
  231. SET @select_field_list = '
  232. seRateId
  233. ,baseCurrency
  234. ,baseCurrencyName
  235. ,localCurrency
  236. ,localCurrencyName
  237. ,sHub
  238. ,sHubName
  239. ,sCountry
  240. ,sCountryName
  241. ,ssAgent
  242. ,ssAgentName
  243. ,sAgent
  244. ,sAgentName
  245. ,sBranch
  246. ,sBranchName
  247. ,rHub
  248. ,rHubName
  249. ,rCountry
  250. ,rCountryName
  251. ,rsAgent
  252. ,rsAgentName
  253. ,rAgent
  254. ,rAgentName
  255. ,rBranch
  256. ,rBranchName
  257. ,state
  258. ,zip
  259. ,agentGroup
  260. ,cost
  261. ,margin
  262. ,offer
  263. ,agentMargin
  264. ,ve
  265. ,ne
  266. ,effectiveFrom
  267. ,effectiveTo
  268. ,isEnable
  269. ,modifiedBy
  270. ,hasChanged
  271. '
  272. EXEC dbo.proc_paging
  273. @table
  274. ,@sql_filter
  275. ,@select_field_list
  276. ,@extra_field_list
  277. ,@sortBy
  278. ,@sortOrder
  279. ,@pageSize
  280. ,@pageNumber
  281. END
  282. ELSE IF @flag = 'i'
  283. BEGIN
  284. IF EXISTS(SELECT 'x' FROM seRate WHERE
  285. sHub = @sHub AND
  286. ssAgent = @ssAgent AND
  287. sCountry = @sCountry AND
  288. ISNULL(sAgent, 0) = ISNULL(@sAgent, 0) AND
  289. ISNULL(sBranch, 0) = ISNULL(@sBranch, 0) AND
  290. rHub =@rHub AND
  291. rsAgent = @rsAgent AND
  292. rCountry = @rCountry AND
  293. ISNULL(rAgent, 0) = ISNULL(@rAgent, 0) AND
  294. ISNULL(rBranch, 0) = ISNULL(@rBranch, 0) AND
  295. baseCurrency = @baseCurrency AND
  296. localCurrency = @localCurrency AND
  297. spFlag = @spFlag AND
  298. ISNULL(isDeleted,'N')<>'Y')
  299. BEGIN
  300. EXEC proc_errorHandler 1, 'Record already exist.', @seRateId
  301. RETURN
  302. END
  303. BEGIN TRANSACTION
  304. INSERT INTO seRate (
  305. baseCurrency
  306. ,localCurrency
  307. ,sHub
  308. ,sCountry
  309. ,ssAgent
  310. ,sAgent
  311. ,sBranch
  312. ,rHub
  313. ,rCountry
  314. ,rsAgent
  315. ,rAgent
  316. ,rBranch
  317. ,[state]
  318. ,zip
  319. ,agentGroup
  320. ,cost
  321. ,margin
  322. ,agentMargin
  323. ,ve
  324. ,ne
  325. ,spFlag
  326. ,effectiveFrom
  327. ,effectiveTo
  328. ,isEnable
  329. ,createdBy
  330. ,createdDate
  331. )
  332. SELECT
  333. @baseCurrency
  334. ,@localCurrency
  335. ,@sHub
  336. ,@sCountry
  337. ,@ssAgent
  338. ,@sAgent
  339. ,@sBranch
  340. ,@rHub
  341. ,@rCountry
  342. ,@rsAgent
  343. ,@rAgent
  344. ,@rBranch
  345. ,@state
  346. ,@zip
  347. ,@agentGroup
  348. ,@cost
  349. ,@margin
  350. ,@agentMargin
  351. ,@ve
  352. ,@ne
  353. ,@spFlag
  354. ,@effectiveFrom
  355. ,@effectiveTo
  356. ,@isEnable
  357. ,@user
  358. ,GETDATE()
  359. SET @seRateId = SCOPE_IDENTITY()
  360. IF @@TRANCOUNT > 0
  361. COMMIT TRANSACTION
  362. EXEC proc_errorHandler 0, 'Record has been added successfully.', @seRateId
  363. END
  364. ELSE IF @flag = 'ci'
  365. BEGIN
  366. SELECT @ssAgent = parentId FROM agentMaster WHERE agentId = @sAgent
  367. SELECT @sHub = parentId FROM agentMaster WHERE agentId = @ssAgent
  368. SELECT @rsAgent = parentId FROM agentMaster WHERE agentId = @rAgent
  369. SELECT @rHub = parentId FROM agentMaster WHERE agentId = @rsAgent
  370. IF EXISTS(SELECT 'x' FROM seRate WHERE
  371. sHub = @sHub AND
  372. ssAgent = @ssAgent AND
  373. sCountry = @sCountry AND
  374. ISNULL(sAgent, 0) = ISNULL(@sAgent, 0) AND
  375. ISNULL(sBranch, 0) = ISNULL(@sBranch, 0) AND
  376. rHub =@rHub AND
  377. rsAgent = @rsAgent AND
  378. rCountry = @rCountry AND
  379. ISNULL(rAgent, 0) = ISNULL(@rAgent, 0) AND
  380. ISNULL(rBranch, 0) = ISNULL(@rBranch, 0) AND
  381. spFlag = @spFlag AND
  382. ISNULL(isDeleted,'N')<>'Y')
  383. BEGIN
  384. SELECT @seRateId = seRateId FROM seRate WHERE
  385. sHub = @sHub AND
  386. ssAgent = @ssAgent AND
  387. sCountry = @sCountry AND
  388. ISNULL(sAgent, 0) = ISNULL(@sAgent, 0) AND
  389. ISNULL(sBranch, 0) = ISNULL(@sBranch, 0) AND
  390. rHub =@rHub AND
  391. rsAgent = @rsAgent AND
  392. rCountry = @rCountry AND
  393. ISNULL(rAgent, 0) = ISNULL(@rAgent, 0) AND
  394. ISNULL(rBranch, 0) = ISNULL(@rBranch, 0) AND
  395. spFlag = @spFlag AND
  396. ISNULL(isDeleted,'N')<>'Y'
  397. INSERT INTO seRateHistory(
  398. seRateId
  399. ,baseCurrency
  400. ,localCurrency
  401. ,sHub
  402. ,sCountry
  403. ,ssAgent
  404. ,sAgent
  405. ,sBranch
  406. ,rHub
  407. ,rCountry
  408. ,rsAgent
  409. ,rAgent
  410. ,rBranch
  411. ,[state]
  412. ,zip
  413. ,agentGroup
  414. ,cost
  415. ,margin
  416. ,agentMargin
  417. ,ve
  418. ,ne
  419. ,spFlag
  420. ,effectiveFrom
  421. ,effectiveTo
  422. ,isEnable
  423. ,createdBy
  424. ,createdDate
  425. ,modType
  426. )
  427. SELECT
  428. @seRateId
  429. ,@baseCurrency
  430. ,@localCurrency
  431. ,@sHub
  432. ,@sCountry
  433. ,@ssAgent
  434. ,@sAgent
  435. ,@sBranch
  436. ,@rHub
  437. ,@rCountry
  438. ,@rsAgent
  439. ,@rAgent
  440. ,@rBranch
  441. ,@state
  442. ,@zip
  443. ,@agentGroup
  444. ,@cost
  445. ,@margin
  446. ,@agentMargin
  447. ,@ve
  448. ,@ne
  449. ,@spFlag
  450. ,@effectiveFrom
  451. ,@effectiveTo
  452. ,@isEnable
  453. ,@user
  454. ,GETDATE()
  455. ,'U'
  456. --UPDATE seRate SET
  457. -- sHub = @sHub
  458. -- ,sCountry = @sCountry
  459. -- ,ssAgent = @ssAgent
  460. -- ,sAgent = @sAgent
  461. -- ,sBranch = @sBranch
  462. -- ,rHub = @rHub
  463. -- ,rCountry = @rCountry
  464. -- ,rsAgent = @rsAgent
  465. -- ,rAgent = @rAgent
  466. -- ,rBranch = @rBranch
  467. -- ,cost = @cost
  468. -- ,margin = @margin
  469. -- ,agentMargin = @agentMargin
  470. -- ,spFlag = @spFlag
  471. -- ,modifiedBy = @user
  472. -- ,modifiedDate = GETDATE()
  473. -- WHERE sHub = @sHub AND
  474. -- sCountry = @sCountry AND
  475. -- ssAgent = @ssAgent AND
  476. -- ISNULL(sAgent, 0) = ISNULL(@sAgent, 0) AND
  477. -- ISNULL(sBranch, 0) = ISNULL(@sBranch, 0) AND
  478. -- rHub = @rHub AND
  479. -- rCountry = @rCountry AND
  480. -- rsAgent = @rsAgent AND
  481. -- ISNULL(rAgent, 0) = ISNULL(@rAgent, 0) AND
  482. -- ISNULL(rBranch, 0) = ISNULL(@rBranch, 0) AND
  483. -- spFlag = @spFlag
  484. EXEC proc_errorHandler 0, 'Record has been updated successfully.', @seRateId
  485. END
  486. ELSE
  487. BEGIN
  488. BEGIN TRANSACTION
  489. INSERT INTO seRate (
  490. baseCurrency
  491. ,localCurrency
  492. ,sHub
  493. ,sCountry
  494. ,ssAgent
  495. ,sAgent
  496. ,sBranch
  497. ,rHub
  498. ,rCountry
  499. ,rsAgent
  500. ,rAgent
  501. ,rBranch
  502. ,[state]
  503. ,zip
  504. ,agentGroup
  505. ,cost
  506. ,margin
  507. ,agentMargin
  508. ,ve
  509. ,ne
  510. ,spFlag
  511. ,effectiveFrom
  512. ,effectiveTo
  513. ,isEnable
  514. ,createdBy
  515. ,createdDate
  516. )
  517. SELECT
  518. @baseCurrency
  519. ,@localCurrency
  520. ,@sHub
  521. ,@sCountry
  522. ,@ssAgent
  523. ,@sAgent
  524. ,@sBranch
  525. ,@rHub
  526. ,@rCountry
  527. ,@rsAgent
  528. ,@rAgent
  529. ,@rBranch
  530. ,@state
  531. ,@zip
  532. ,@agentGroup
  533. ,@cost
  534. ,@margin
  535. ,@agentMargin
  536. ,@ve
  537. ,@ne
  538. ,@spFlag
  539. ,@effectiveFrom
  540. ,@effectiveTo
  541. ,@isEnable
  542. ,@user
  543. ,GETDATE()
  544. SET @seRateId = SCOPE_IDENTITY()
  545. IF @@TRANCOUNT > 0
  546. COMMIT TRANSACTION
  547. EXEC proc_errorHandler 0, 'Record has been updated successfully.', @seRateId
  548. END
  549. END
  550. ELSE IF @flag = 'a'
  551. BEGIN
  552. IF EXISTS (
  553. SELECT 'X' FROM seRateHistory WITH(NOLOCK)
  554. WHERE seRateId = @seRateId AND createdBy = @user AND approvedBy IS NULL
  555. )
  556. BEGIN
  557. SELECT
  558. mode.*
  559. ,CONVERT(VARCHAR, mode.effectiveFrom, 101) effFrom
  560. ,CONVERT(VARCHAR, mode.effectiveTo, 101) effTo
  561. FROM seRateHistory mode WITH(NOLOCK)
  562. INNER JOIN seRate main WITH(NOLOCK) ON mode.seRateId = main.seRateId
  563. WHERE mode.seRateId= @seRateId AND mode.approvedBy IS NULL
  564. END
  565. ELSE
  566. BEGIN
  567. SELECT
  568. *
  569. ,CONVERT(VARCHAR, effectiveFrom, 101) effFrom
  570. ,CONVERT(VARCHAR, effectiveTo, 101) effTo
  571. FROM seRate WITH(NOLOCK) WHERE seRateId = @seRateId
  572. END
  573. END
  574. ELSE IF @flag = 'u'
  575. BEGIN
  576. IF EXISTS (
  577. SELECT 'X' FROM seRate WITH(NOLOCK)
  578. WHERE seRateId = @seRateId AND ( createdBy <> @user AND approvedBy IS NULL)
  579. )
  580. BEGIN
  581. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @seRateId
  582. RETURN
  583. END
  584. IF EXISTS (
  585. SELECT 'X' FROM seRateHistory WITH(NOLOCK)
  586. WHERE seRateId = @seRateId AND (createdBy<> @user OR modType = 'D') AND approvedBy IS NULL
  587. )
  588. BEGIN
  589. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @seRateId
  590. RETURN
  591. END
  592. BEGIN TRANSACTION
  593. IF EXISTS (SELECT 'X' FROM seRate WHERE approvedBy IS NULL AND seRateId = @seRateId)
  594. BEGIN
  595. UPDATE seRate SET
  596. baseCurrency = @baseCurrency
  597. ,localCurrency = @localCurrency
  598. ,sHub = @sHub
  599. ,sCountry = @sCountry
  600. ,ssAgent = @ssAgent
  601. ,sAgent = @sAgent
  602. ,sBranch = @sBranch
  603. ,rHub = @rHub
  604. ,rCountry = @rCountry
  605. ,rsAgent = @rsAgent
  606. ,rAgent = @rAgent
  607. ,rBranch = @rBranch
  608. ,[state] = @state
  609. ,zip = @zip
  610. ,agentGroup = @agentGroup
  611. ,cost = @cost
  612. ,margin = @margin
  613. ,agentMargin = @agentMargin
  614. ,ve = @ve
  615. ,ne = @ne
  616. ,spFlag = @spFlag
  617. ,effectiveFrom = @effectiveFrom
  618. ,effectiveTo = @effectiveTo
  619. ,isEnable = @isEnable
  620. ,modifiedBy = @user
  621. ,modifiedDate = GETDATE()
  622. WHERE seRateId = @seRateId
  623. END
  624. ELSE
  625. BEGIN
  626. DELETE FROM seRateHistory WHERE seRateId = @seRateId AND approvedBy IS NULL
  627. INSERT INTO seRateHistory(
  628. seRateId
  629. ,baseCurrency
  630. ,localCurrency
  631. ,sHub
  632. ,sCountry
  633. ,ssAgent
  634. ,sAgent
  635. ,sBranch
  636. ,rHub
  637. ,rCountry
  638. ,rsAgent
  639. ,rAgent
  640. ,rBranch
  641. ,[state]
  642. ,zip
  643. ,agentGroup
  644. ,cost
  645. ,margin
  646. ,agentMargin
  647. ,ve
  648. ,ne
  649. ,spFlag
  650. ,effectiveFrom
  651. ,effectiveTo
  652. ,isEnable
  653. ,createdBy
  654. ,createdDate
  655. ,modType
  656. )
  657. SELECT
  658. @seRateId
  659. ,@baseCurrency
  660. ,@localCurrency
  661. ,@sHub
  662. ,@sCountry
  663. ,@ssAgent
  664. ,@sAgent
  665. ,@sBranch
  666. ,@rHub
  667. ,@rCountry
  668. ,@rsAgent
  669. ,@rAgent
  670. ,@rBranch
  671. ,@state
  672. ,@zip
  673. ,@agentGroup
  674. ,@cost
  675. ,@margin
  676. ,@agentMargin
  677. ,@ve
  678. ,@ne
  679. ,@spFlag
  680. ,@effectiveFrom
  681. ,@effectiveTo
  682. ,@isEnable
  683. ,@user
  684. ,GETDATE()
  685. ,'U'
  686. END
  687. IF @@TRANCOUNT > 0
  688. COMMIT TRANSACTION
  689. EXEC proc_errorHandler 0, 'Record updated successfully.', @seRateId
  690. END
  691. ELSE IF @flag = 'd'
  692. BEGIN
  693. IF EXISTS (
  694. SELECT 'X' FROM seRate WITH(NOLOCK)
  695. WHERE seRateId = @seRateId AND (createdBy <> @user AND approvedBy IS NULL)
  696. )
  697. BEGIN
  698. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> You are trying to perform an illegal operation.</center>', @seRateId
  699. RETURN
  700. END
  701. IF EXISTS (
  702. SELECT 'X' FROM seRateHistory WITH(NOLOCK)
  703. WHERE seRateId = @seRateId AND approvedBy IS NULL
  704. )
  705. BEGIN
  706. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> Previous modification has not been approved yet.</center>', @seRateId
  707. RETURN
  708. END
  709. IF EXISTS(SELECT 'X' FROM seRate WITH(NOLOCK) WHERE seRateId = @seRateId AND createdBy = @user AND approvedBy IS NULL)
  710. BEGIN
  711. DELETE FROM seRate WHERE seRateId = @seRateId
  712. EXEC proc_errorHandler 0, 'Record deleted successfully.', @seRateId
  713. RETURN
  714. END
  715. INSERT INTO seRateHistory(
  716. seRateId
  717. ,baseCurrency
  718. ,localCurrency
  719. ,sHub
  720. ,sCountry
  721. ,ssAgent
  722. ,sAgent
  723. ,sBranch
  724. ,rHub
  725. ,rCountry
  726. ,rsAgent
  727. ,rAgent
  728. ,rBranch
  729. ,[state]
  730. ,zip
  731. ,agentGroup
  732. ,cost
  733. ,margin
  734. ,agentMargin
  735. ,ve
  736. ,ne
  737. ,spFlag
  738. ,effectiveFrom
  739. ,effectiveTo
  740. ,isEnable
  741. ,createdBy
  742. ,createdDate
  743. ,modType
  744. )
  745. SELECT
  746. seRateId
  747. ,baseCurrency
  748. ,localCurrency
  749. ,sHub
  750. ,sCountry
  751. ,ssAgent
  752. ,sAgent
  753. ,sBranch
  754. ,rHub
  755. ,rCountry
  756. ,rsAgent
  757. ,rAgent
  758. ,rBranch
  759. ,[state]
  760. ,zip
  761. ,agentGroup
  762. ,cost
  763. ,margin
  764. ,agentMargin
  765. ,ve
  766. ,ne
  767. ,spFlag
  768. ,effectiveFrom
  769. ,effectiveTo
  770. ,isEnable
  771. ,@user
  772. ,GETDATE()
  773. ,'D'
  774. FROM seRate WHERE seRateId = @seRateId
  775. EXEC proc_errorHandler 0, 'Record deleted successfully.', @seRateId
  776. END
  777. ELSE IF @flag IN('reject')
  778. BEGIN
  779. IF NOT EXISTS (
  780. SELECT 'X' FROM seRate WITH(NOLOCK)
  781. WHERE seRateId = @seRateId
  782. )
  783. AND
  784. NOT EXISTS (
  785. SELECT 'X' FROM seRate WITH(NOLOCK)
  786. WHERE seRateId = @seRateId AND approvedBy IS NULL
  787. )
  788. BEGIN
  789. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @seRateId
  790. RETURN
  791. END
  792. BEGIN TRANSACTION
  793. IF EXISTS (SELECT 'X' FROM seRate WHERE approvedBy IS NULL AND seRateId = @seRateId)
  794. BEGIN --New record
  795. SET @modType = 'Reject'
  796. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @seRateId, @oldValue OUTPUT
  797. INSERT INTO #msg(errorCode, msg, id)
  798. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @seRateId, @user, @oldValue, @newValue
  799. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  800. BEGIN
  801. IF @@TRANCOUNT > 0
  802. ROLLBACK TRANSACTION
  803. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @seRateId
  804. RETURN
  805. END
  806. DELETE FROM seRate WHERE seRateId = @seRateId
  807. END
  808. ELSE
  809. BEGIN
  810. SET @modType = 'Reject'
  811. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @seRateId, @oldValue OUTPUT
  812. INSERT INTO #msg(errorCode, msg, id)
  813. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @seRateId, @user, @oldValue, @newValue
  814. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  815. BEGIN
  816. IF @@TRANCOUNT > 0
  817. ROLLBACK TRANSACTION
  818. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @seRateId
  819. RETURN
  820. END
  821. DELETE FROM seRateHistory WHERE seRateId = @seRateId AND approvedBy IS NULL
  822. END
  823. IF @@TRANCOUNT > 0
  824. COMMIT TRANSACTION
  825. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @seRateId
  826. END
  827. ELSE IF @flag IN ('approve')
  828. BEGIN
  829. IF NOT EXISTS (
  830. SELECT 'X' FROM seRate WITH(NOLOCK)
  831. WHERE seRateId = @seRateId
  832. )
  833. AND
  834. NOT EXISTS (
  835. SELECT 'X' FROM seRate WITH(NOLOCK)
  836. WHERE seRateId = @seRateId AND approvedBy IS NULL
  837. )
  838. BEGIN
  839. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @seRateId
  840. RETURN
  841. END
  842. BEGIN TRANSACTION
  843. IF EXISTS (SELECT 'X' FROM seRate WHERE approvedBy IS NULL AND seRateId = @seRateId )
  844. SET @modType = 'I'
  845. ELSE
  846. SELECT @modType = modType FROM seRateHistory WHERE seRateId = @seRateId AND approvedBy IS NULL
  847. IF @modType = 'I'
  848. BEGIN --New record
  849. UPDATE seRate SET
  850. isActive = 'Y'
  851. ,approvedBy = @user
  852. ,approvedDate= GETDATE()
  853. WHERE seRateId = @seRateId
  854. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @seRateId, @newValue OUTPUT
  855. END
  856. ELSE IF @modType = 'U'
  857. BEGIN
  858. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @seRateId, @oldValue OUTPUT
  859. UPDATE main SET
  860. main.baseCurrency = mode.baseCurrency
  861. ,main.localCurrency = mode.localCurrency
  862. ,main.sHub = mode.sHub
  863. ,main.sCountry = mode.sCountry
  864. ,main.ssAgent = mode.ssAgent
  865. ,main.sAgent = mode.sAgent
  866. ,main.sBranch = mode.sBranch
  867. ,main.rHub = mode.rHub
  868. ,main.rCountry = mode.rCountry
  869. ,main.rsAgent = mode.rsAgent
  870. ,main.rAgent = mode.rAgent
  871. ,main.rBranch = mode.rBranch
  872. ,main.[state] = mode.[state]
  873. ,main.zip = mode.zip
  874. ,main.agentGroup = mode.agentGroup
  875. ,main.cost = mode.cost
  876. ,main.margin = mode.margin
  877. ,main.agentMargin = mode.agentMargin
  878. ,main.ve = mode.ve
  879. ,main.ne = mode.ne
  880. ,main.effectiveFrom = mode.effectiveFrom
  881. ,main.effectiveTo = mode.effectiveTo
  882. ,main.isEnable = mode.isEnable
  883. ,main.modifiedBy = @user
  884. ,main.modifiedDate = GETDATE()
  885. FROM seRate main
  886. INNER JOIN seRateHistory mode ON mode.seRateId = main.seRateId
  887. WHERE mode.seRateId = @seRateId AND mode.approvedBy IS NULL
  888. EXEC [dbo].proc_GetColumnToRow 'seRate', 'seRateId', @seRateId, @newValue OUTPUT
  889. END
  890. ELSE IF @modType = 'D'
  891. BEGIN
  892. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @seRateId, @oldValue OUTPUT
  893. UPDATE seRate SET
  894. isDeleted = 'Y'
  895. ,modifiedDate = GETDATE()
  896. ,modifiedBy = @user
  897. WHERE seRateId = @seRateId
  898. END
  899. UPDATE seRateHistory SET
  900. approvedBy = @user
  901. ,approvedDate = GETDATE()
  902. WHERE seRateId = @seRateId AND approvedBy IS NULL
  903. INSERT INTO #msg(errorCode, msg, id)
  904. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @seRateId, @user, @oldValue, @newValue
  905. IF @@TRANCOUNT > 0
  906. COMMIT TRANSACTION
  907. EXEC proc_errorHandler 0, 'Changes approved successfully.', @seRateId
  908. END
  909. END TRY
  910. BEGIN CATCH
  911. IF @@TRANCOUNT > 0
  912. ROLLBACK TRANSACTION
  913. DECLARE @errorMessage VARCHAR(MAX)
  914. SET @errorMessage = ERROR_MESSAGE()
  915. EXEC proc_errorHandler 1, @errorMessage, @seRateId
  916. END CATCH
  917. GO