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.

1088 lines
32 KiB

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