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.

816 lines
24 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_csDetail] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_csDetail]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_csDetail] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE proc [dbo].[proc_csDetail]
  12. @flag VARCHAR(50) = NULL
  13. ,@user VARCHAR(30) = NULL
  14. ,@csDetailId VARCHAR(30) = NULL
  15. ,@csMasterId BIGINT = NULL
  16. ,@condition INT = NULL
  17. ,@collMode INT = NULL
  18. ,@paymentMode INT = NULL
  19. ,@tranCount INT = NULL
  20. ,@amount MONEY = NULL
  21. ,@period INT = NULL
  22. ,@nextAction CHAR(1) = NULL
  23. ,@criteria VARCHAR(MAX) = NULL
  24. ,@sortBy VARCHAR(50) = NULL
  25. ,@sortOrder VARCHAR(5) = NULL
  26. ,@pageSize INT = NULL
  27. ,@pageNumber INT = NULL
  28. AS
  29. SET NOCOUNT ON
  30. SET XACT_ABORT ON
  31. BEGIN TRY
  32. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  33. DECLARE
  34. @sql VARCHAR(MAX)
  35. ,@oldValue VARCHAR(MAX)
  36. ,@newValue VARCHAR(MAX)
  37. ,@module VARCHAR(10)
  38. ,@tableAlias VARCHAR(100)
  39. ,@logIdentifier VARCHAR(50)
  40. ,@logParamMod VARCHAR(100)
  41. ,@logParamMain VARCHAR(100)
  42. ,@table VARCHAR(MAX)
  43. ,@select_field_list VARCHAR(MAX)
  44. ,@extra_field_list VARCHAR(MAX)
  45. ,@sql_filter VARCHAR(MAX)
  46. ,@id VARCHAR(10)
  47. ,@modType VARCHAR(6)
  48. ,@ApprovedFunctionId INT
  49. SELECT
  50. @ApprovedFunctionId = 2019020
  51. ,@logIdentifier = 'csDetailId'
  52. ,@logParamMain = 'csDetail'
  53. ,@logParamMod = 'csDetailHistory'
  54. ,@module = '20'
  55. ,@tableAlias = 'Compliance Rule Setup Detail'
  56. DECLARE @criteriaList TABLE(criteriaId INT)
  57. IF @flag = 'i'
  58. BEGIN
  59. --IF @condition ='4601' AND ISNULL(@tranCount,'0')=0
  60. --BEGIN
  61. -- EXEC proc_errorHandler 0, 'Sorry, Tran count can not be 0!', @csDetailId
  62. -- --SELECT * FROM staticDataValue WHERE typeID=4601
  63. -- return;
  64. --END
  65. /*
  66. IF @condition IN ('4600','4602','4603') AND ISNULL(@tranCount,'0')=0
  67. BEGIN
  68. EXEC proc_errorHandler 1, 'Sorry, Tran count can not be 0!', @csDetailId
  69. return;
  70. END
  71. */
  72. --IF @condition IN ('4600','4602','4603') AND ISNULL(@period,'0')=0
  73. --BEGIN
  74. -- EXEC proc_errorHandler 1, 'Sorry, Period(In days) can not be 0!', @csDetailId
  75. -- return;
  76. --END
  77. --IF @condition IN ('4600','4602','4603') AND ISNULL(@amount,'0')=0
  78. --BEGIN
  79. -- EXEC proc_errorHandler 1, 'Sorry, Amount can not be 0!', @csDetailId
  80. -- return;
  81. --END
  82. BEGIN TRANSACTION
  83. INSERT INTO csDetail (
  84. csMasterId
  85. ,condition
  86. ,collMode
  87. ,paymentMode
  88. ,tranCount
  89. ,amount
  90. ,period
  91. ,nextAction
  92. ,createdBy
  93. ,createdDate
  94. ,isEnable
  95. )
  96. SELECT
  97. @csMasterId
  98. ,@condition
  99. ,@collMode
  100. ,@paymentMode
  101. ,@tranCount
  102. ,@amount
  103. ,@period
  104. ,@nextAction
  105. ,@user
  106. ,GETDATE()
  107. ,'Y'
  108. SET @csDetailId = SCOPE_IDENTITY()
  109. SET @sql = '
  110. SELECT valueId FROM staticDataValue
  111. WHERE valueId IN (' + @criteria + ')'
  112. INSERT @criteriaList
  113. EXEC (@sql)
  114. INSERT csCriteriaHistory(csDetailId, criteriaId, modType, createdBy, createdDate)
  115. SELECT @csDetailId, criteriaId, 'U', @user, GETDATE() FROM @criteriaList
  116. IF @@TRANCOUNT > 0
  117. COMMIT TRANSACTION
  118. EXEC proc_errorHandler 0, 'Record has been added successfully.', @csDetailId
  119. END
  120. ELSE IF @flag = 'a'
  121. BEGIN
  122. IF EXISTS (
  123. SELECT 'X' FROM csDetailHistory WITH(NOLOCK)
  124. WHERE csDetailId = @csDetailId AND createdBy = @user AND approvedBy IS NULL
  125. )
  126. BEGIN
  127. SELECT
  128. mode.*
  129. ,amount1 = CAST(mode.amount as DECIMAL(38, 2))
  130. ,criteria = dbo.FNAGetCsvValue(@csDetailId, 1000, @user)
  131. FROM csDetailHistory mode WITH(NOLOCK)
  132. INNER JOIN csDetail main WITH(NOLOCK) ON mode.csDetailId = main.csDetailId
  133. WHERE mode.csDetailId= @csDetailId AND mode.approvedBy IS NULL
  134. END
  135. ELSE
  136. BEGIN
  137. SELECT
  138. *
  139. ,amount1 = CAST(amount AS DECIMAL(38, 2))
  140. ,criteria = dbo.FNAGetCsvValue(@csDetailId, 1000, @user)
  141. FROM csDetail WITH(NOLOCK) WHERE csDetailId = @csDetailId
  142. END
  143. END
  144. ELSE IF @flag = 'u'
  145. BEGIN
  146. IF EXISTS (
  147. SELECT 'X' FROM csDetail WITH(NOLOCK)
  148. WHERE csDetailId = @csDetailId AND ( createdBy <> @user AND approvedBy IS NULL)
  149. )
  150. BEGIN
  151. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @csDetailId
  152. RETURN
  153. END
  154. IF EXISTS (
  155. SELECT 'X' FROM csDetailHistory WITH(NOLOCK)
  156. WHERE csDetailId = @csDetailId AND approvedBy IS NULL AND (createdBy<> @user OR modType = 'D')
  157. )
  158. BEGIN
  159. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @csDetailId
  160. RETURN
  161. END
  162. BEGIN TRANSACTION
  163. IF EXISTS (SELECT 'X' FROM csDetail WHERE approvedBy IS NULL AND csDetailId = @csDetailId)
  164. BEGIN
  165. UPDATE csDetail SET
  166. csMasterId = @csMasterId
  167. ,condition = @condition
  168. ,collMode = @collMode
  169. ,paymentMode = @paymentMode
  170. ,tranCount = @tranCount
  171. ,amount = @amount
  172. ,period = @period
  173. ,nextAction = @nextAction
  174. ,modifiedBy = @user
  175. ,modifiedDate = GETDATE()
  176. WHERE csDetailId = @csDetailId
  177. SET @sql = '
  178. SELECT valueId FROM staticDataValue
  179. WHERE valueId IN (' + @criteria + ')'
  180. INSERT @criteriaList
  181. EXEC (@sql)
  182. DELETE FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  183. INSERT csCriteriaHistory(csDetailId, criteriaId, modType, createdBy, createdDate)
  184. SELECT @csDetailId, criteriaId, 'U', @user, GETDATE() FROM @criteriaList
  185. END
  186. ELSE
  187. BEGIN
  188. DELETE FROM csDetailHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  189. INSERT INTO csDetailHistory(
  190. csDetailId
  191. ,condition
  192. ,collMode
  193. ,paymentMode
  194. ,tranCount
  195. ,amount
  196. ,period
  197. ,nextAction
  198. ,isEnable
  199. ,createdBy
  200. ,createdDate
  201. ,modType
  202. )
  203. SELECT
  204. @csDetailId
  205. ,@condition
  206. ,@collMode
  207. ,@paymentMode
  208. ,@tranCount
  209. ,@amount
  210. ,@period
  211. ,@nextAction
  212. ,'Y'
  213. ,@user
  214. ,GETDATE()
  215. ,'U'
  216. SET @sql = '
  217. SELECT valueId FROM staticDataValue
  218. WHERE valueId IN (' + @criteria + ')'
  219. INSERT @criteriaList
  220. EXEC (@sql)
  221. DELETE FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  222. INSERT csCriteriaHistory(csDetailId, criteriaId, modType, createdBy, createdDate)
  223. SELECT @csDetailId, criteriaId, 'U', @user, GETDATE() FROM @criteriaList
  224. END
  225. IF @@TRANCOUNT > 0
  226. COMMIT TRANSACTION
  227. EXEC proc_errorHandler 0, 'Record updated successfully.', @csDetailId
  228. END
  229. ELSE IF @flag = 'd'
  230. BEGIN
  231. IF EXISTS (
  232. SELECT 'X' FROM csDetail WITH(NOLOCK)
  233. WHERE csDetailId = @csDetailId AND (createdBy <> @user AND approvedBy IS NULL)
  234. )
  235. BEGIN
  236. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> You are trying to perform an illegal operation.</center>', @csDetailId
  237. RETURN
  238. END
  239. IF EXISTS (
  240. SELECT 'X' FROM csDetailHistory WITH(NOLOCK)
  241. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  242. )
  243. BEGIN
  244. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> Previous modification has not been approved yet.</center>', @csDetailId
  245. RETURN
  246. END
  247. IF EXISTS(SELECT 'X' FROM csDetail WITH(NOLOCK) WHERE csDetailId = @csDetailId AND createdBy = @user AND approvedBy IS NULL)
  248. BEGIN
  249. DELETE FROM csDetail WHERE csDetailId = @csDetailId
  250. DELETE FROM csCriteriaHistory WHERE csDetailId = @csDetailId
  251. EXEC proc_errorHandler 0, 'Record deleted successfully.', @csDetailId
  252. RETURN
  253. END
  254. INSERT INTO csDetailHistory(
  255. csDetailId
  256. ,condition
  257. ,collMode
  258. ,paymentMode
  259. ,tranCount
  260. ,amount
  261. ,period
  262. ,nextAction
  263. ,createdBy
  264. ,createdDate
  265. ,modType
  266. )
  267. SELECT
  268. csDetailId
  269. ,condition
  270. ,collMode
  271. ,paymentMode
  272. ,tranCount
  273. ,amount
  274. ,period
  275. ,nextAction
  276. ,@user
  277. ,GETDATE()
  278. ,'D'
  279. FROM csDetail
  280. WHERE csDetailId = @csDetailId
  281. SET @modType = 'delete'
  282. INSERT INTO csCriteriaHistory(
  283. csCriteriaId
  284. ,csDetailId
  285. ,criteriaId
  286. ,createdBy
  287. ,createdDate
  288. ,modType
  289. )
  290. SELECT
  291. csCriteriaId
  292. ,csDetailId
  293. ,criteriaId
  294. ,@user
  295. ,GETDATE()
  296. ,'D'
  297. FROM csCriteria WHERE csDetailId = @csDetailId
  298. EXEC proc_errorHandler 0, 'Record deleted successfully.', @csDetailId
  299. END
  300. ELSE IF @flag IN ('s')
  301. BEGIN
  302. IF @sortBy IS NULL
  303. SET @sortBy = 'condition'
  304. IF @sortOrder IS NULL
  305. SET @sortOrder = 'ASC'
  306. SET @pageNumber = 1
  307. SET @pageSize = 10000
  308. SET @table = '(
  309. SELECT
  310. csDetailId = ISNULL(mode.csDetailId, main.csDetailId)
  311. ,condition = ISNULL(mode.condition, main.condition)
  312. ,collMode = ISNULL(mode.collMode, main.collMode)
  313. ,paymentMode = ISNULL(mode.paymentMode, main.paymentMode)
  314. ,tranCount = ISNULL(mode.tranCount, main.tranCount)
  315. ,amount = ISNULL(mode.amount, main.amount)
  316. ,period = ISNULL(mode.period, main.period)
  317. ,nextAction=ISNULL(mode.nextAction, main.nextAction)
  318. ,isDisabled=CASE WHEN ISNULL(ISNULL(mode.isEnable, main.isEnable),''n'')=''y'' then ''Enabled'' else ''Disabled'' END
  319. ,main.createdBy
  320. ,main.createdDate
  321. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  322. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  323. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  324. (mode.csDetailId IS NOT NULL)
  325. THEN ''Y'' ELSE ''N'' END
  326. FROM csDetail main WITH(NOLOCK)
  327. LEFT JOIN csDetailHistory mode ON main.csDetailId = mode.csDetailId AND mode.approvedBy IS NULL
  328. AND (
  329. mode.createdBy = ''' + @user + '''
  330. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  331. )
  332. WHERE main.csMasterId = ' + CAST (@csMasterId AS VARCHAR) + ' AND ISNULL(main.isDeleted, ''N'') <> ''Y''
  333. AND (
  334. main.approvedBy IS NOT NULL
  335. OR main.createdBy = ''' + @user + '''
  336. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  337. )
  338. --AND NOT(ISNULL(mode.modType, '''') = ''D'' AND mode.createdBy = ''' + @user + ''')
  339. ) '
  340. SET @table = '(
  341. SELECT
  342. csDetailId
  343. ,condition
  344. ,condition1 = ISNULL(con.detailTitle,''All'')
  345. ,collMode
  346. ,collMode1 = ISNULL(cm.detailTitle, ''All'')
  347. ,paymentMode
  348. ,paymentMode1 = ISNULL(pm.typeTitle, ''All'')
  349. ,tranCount
  350. ,amount
  351. ,period
  352. ,nextAction
  353. ,nextAction1 = CASE WHEN main.nextAction = ''H'' THEN ''Hold'' WHEN main.nextAction= ''B'' THEN ''Block'' WHEN main.nextAction= ''M'' THEN ''Mark'' END
  354. ,isDisabled
  355. ,main.createdBy
  356. ,main.createdDate
  357. ,main.modifiedBy
  358. ,main.modifiedDate
  359. ,hasChanged
  360. FROM ' + @table + ' main
  361. LEFT JOIN staticDataValue con WITH(NOLOCK) ON main.condition = con.valueId
  362. LEFT JOIN staticDataValue cm WITH(NOLOCK) ON main.collMode = cm.valueId
  363. LEFT JOIN serviceTypeMaster pm WITH(NOLOCK) ON main.paymentMode = pm.serviceTypeId
  364. WHERE main.csDetailId NOT IN(
  365. SELECT
  366. csDetailId
  367. FROM csDetailHistory cdh WITH(NOLOCK)
  368. WHERE createdBy = ''' + @user + ''' AND modType = ''D''
  369. )
  370. ) x'
  371. SET @sql_filter = ''
  372. IF @condition IS NOT NULL
  373. SET @sql_filter = @sql_filter + ' AND condition = ' + CAST(@condition AS VARCHAR(50))
  374. IF @collMode IS NOT NULL
  375. SET @sql_filter = @sql_filter + ' AND collMode = ' + CAST(@collMode AS VARCHAR(50))
  376. IF @paymentMode IS NOT NULL
  377. SET @sql_filter = @sql_filter + ' AND paymentMode = ' + CAST(@paymentMode AS VARCHAR(50))
  378. IF @nextAction IS NOT NULL
  379. SET @sql_filter = @sql_filter + ' AND nextAction = ''' + CAST(@nextAction AS VARCHAR(50))+''''
  380. PRINT (@table+@sql_filter)
  381. SET @select_field_list ='
  382. csDetailId
  383. ,condition
  384. ,condition1
  385. ,collMode
  386. ,collMode1
  387. ,paymentMode
  388. ,paymentMode1
  389. ,tranCount
  390. ,amount
  391. ,period
  392. ,nextAction
  393. ,nextAction1
  394. ,isDisabled
  395. ,createdBy
  396. ,createdDate
  397. ,modifiedBy
  398. ,modifiedDate
  399. ,hasChanged
  400. '
  401. EXEC dbo.proc_paging
  402. @table
  403. ,@sql_filter
  404. ,@select_field_list
  405. ,@extra_field_list
  406. ,@sortBy
  407. ,@sortOrder
  408. ,@pageSize
  409. ,@pageNumber
  410. END
  411. ELSE IF @flag = 'reject'
  412. BEGIN
  413. IF NOT EXISTS (
  414. SELECT 'X' FROM csDetail WITH(NOLOCK)
  415. WHERE csDetailId = @csDetailId
  416. )
  417. AND
  418. NOT EXISTS (
  419. SELECT 'X' FROM csDetail WITH(NOLOCK)
  420. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  421. )
  422. BEGIN
  423. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @csDetailId
  424. RETURN
  425. END
  426. IF EXISTS (SELECT 'X' FROM csDetail WHERE approvedBy IS NULL AND csDetailId = @csDetailId)
  427. BEGIN --New record
  428. BEGIN TRANSACTION
  429. SET @modType = 'Reject'
  430. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @csDetailId, @oldValue OUTPUT
  431. INSERT INTO #msg(errorCode, msg, id)
  432. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @csDetailId, @user, @oldValue, @newValue
  433. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  434. BEGIN
  435. IF @@TRANCOUNT > 0
  436. ROLLBACK TRANSACTION
  437. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @csDetailId
  438. RETURN
  439. END
  440. DELETE FROM csDetail WHERE csDetailId = @csDetailId
  441. DELETE FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  442. IF @@TRANCOUNT > 0
  443. COMMIT TRANSACTION
  444. END
  445. ELSE
  446. BEGIN
  447. BEGIN TRANSACTION
  448. SET @modType = 'Reject'
  449. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @csDetailId, @oldValue OUTPUT
  450. INSERT INTO #msg(errorCode, msg, id)
  451. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @csDetailId, @user, @oldValue, @newValue
  452. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  453. BEGIN
  454. IF @@TRANCOUNT > 0
  455. ROLLBACK TRANSACTION
  456. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @csDetailId
  457. RETURN
  458. END
  459. DELETE FROM csDetailHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  460. DELETE FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  461. IF @@TRANCOUNT > 0
  462. COMMIT TRANSACTION
  463. END
  464. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @csDetailId
  465. END
  466. ELSE IF @flag = 'approve'
  467. BEGIN
  468. IF NOT EXISTS (
  469. SELECT 'X' FROM csDetail WITH(NOLOCK)
  470. WHERE csDetailId = @csDetailId
  471. )
  472. AND
  473. NOT EXISTS (
  474. SELECT 'X' FROM csDetail WITH(NOLOCK)
  475. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  476. )
  477. BEGIN
  478. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @csDetailId
  479. RETURN
  480. END
  481. BEGIN TRANSACTION
  482. DECLARE @newCriteriaValue VARCHAR(MAX)
  483. IF EXISTS (SELECT 'X' FROM csDetail WHERE approvedBy IS NULL AND csDetailId = @csDetailId )
  484. SET @modType = 'I'
  485. ELSE
  486. SELECT @modType = modType FROM csDetailHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  487. IF @modType = 'I'
  488. BEGIN --New record
  489. UPDATE csDetail SET
  490. isActive = 'Y'
  491. ,approvedBy = @user
  492. ,approvedDate= GETDATE()
  493. WHERE csDetailId = @csDetailId
  494. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @csDetailId, @newValue OUTPUT
  495. SELECT
  496. @newCriteriaValue = ISNULL(@newValue + ',', '') + CAST(criteriaId AS VARCHAR(50))
  497. FROM csCriteriaHistory
  498. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  499. EXEC [dbo].proc_GetColumnToRow 'csCriteria', 'csDetailId', @csDetailId, @oldValue OUTPUT
  500. DELETE FROM csCriteria WHERE csDetailId = @csDetailId
  501. INSERT csCriteria(criteriaId, csDetailId, createdBy, createdDate)
  502. SELECT criteriaId, @csDetailId, @user, GETDATE() FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  503. SELECT @tranCount = ISNULL(tranCount, 0), @amount = ISNULL(amount, 0) FROM csDetail cd WITH(NOLOCK)
  504. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  505. WHERE cd.csDetailId = @csDetailId
  506. IF ISNULL(@amount, 0) <> 0
  507. BEGIN
  508. INSERT INTO csDetailRec(
  509. csMasterId
  510. ,csDetailId
  511. ,condition
  512. ,collMode
  513. ,paymentMode
  514. ,checkType
  515. ,parameter
  516. ,period
  517. ,criteria
  518. ,nextAction
  519. ,isEnable
  520. ,createdBy
  521. ,createdDate
  522. )
  523. SELECT
  524. csMasterId
  525. ,cd.csDetailId
  526. ,condition
  527. ,collMode
  528. ,paymentMode
  529. ,'Sum'
  530. ,amount
  531. ,period
  532. ,cch.criteriaId
  533. ,cd.nextAction
  534. ,'Y'
  535. ,@user
  536. ,GETDATE()
  537. FROM csDetail cd WITH(NOLOCK)
  538. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  539. WHERE cd.csDetailId = @csDetailId
  540. END
  541. IF ISNULL(@tranCount, 0) <> 0
  542. BEGIN
  543. INSERT INTO csDetailRec(
  544. csMasterId
  545. ,csDetailId
  546. ,condition
  547. ,collMode
  548. ,paymentMode
  549. ,checkType
  550. ,parameter
  551. ,period
  552. ,criteria
  553. ,nextAction
  554. ,isEnable
  555. ,createdBy
  556. ,createdDate
  557. )
  558. SELECT
  559. csMasterId
  560. ,cd.csDetailId
  561. ,condition
  562. ,collMode
  563. ,paymentMode
  564. ,'Count'
  565. ,tranCount
  566. ,period
  567. ,cch.criteriaId
  568. ,cd.nextAction
  569. ,'Y'
  570. ,@user
  571. ,GETDATE()
  572. FROM csDetail cd WITH(NOLOCK)
  573. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  574. WHERE cd.csDetailId = @csDetailId
  575. END
  576. INSERT INTO #msg(errorCode, msg, id)
  577. EXEC proc_applicationLogs 'i', NULL, 'update', 'Compliance Rule Criteria', @csDetailId, @user, @oldValue, @newCriteriaValue
  578. END
  579. ELSE IF @modType = 'U'
  580. BEGIN
  581. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @csDetailId, @oldValue OUTPUT
  582. UPDATE main SET
  583. main.condition = mode.condition
  584. ,main.collMode = mode.collMode
  585. ,main.paymentMode = mode.paymentMode
  586. ,main.tranCount = mode.tranCount
  587. ,main.amount = mode.amount
  588. ,main.period = mode.period
  589. ,main.nextAction = mode.nextAction
  590. ,main.modifiedDate = GETDATE()
  591. ,main.modifiedBy = @user
  592. FROM csDetail main
  593. INNER JOIN csDetailHistory mode ON mode.csDetailId = main.csDetailId
  594. WHERE mode.csDetailId = @csDetailId AND mode.approvedBy IS NULL
  595. EXEC [dbo].proc_GetColumnToRow 'csDetail', 'csDetailId', @csDetailId, @newValue OUTPUT
  596. SELECT
  597. @newCriteriaValue = ISNULL(@newValue + ',', '') + CAST(criteriaId AS VARCHAR(50))
  598. FROM csCriteriaHistory
  599. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  600. EXEC [dbo].proc_GetColumnToRow 'csCriteria', 'csDetailId', @csDetailId, @oldValue OUTPUT
  601. DELETE FROM csCriteria WHERE csDetailId = @csDetailId
  602. INSERT csCriteria(criteriaId, csDetailId, createdBy, createdDate)
  603. SELECT criteriaId, @csDetailId, @user, GETDATE() FROM csCriteriaHistory WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  604. SELECT @tranCount = ISNULL(tranCount, 0), @amount = ISNULL(amount, 0) FROM csDetail cd WITH(NOLOCK)
  605. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  606. WHERE cd.csDetailId = @csDetailId
  607. UPDATE csDetailRec SET
  608. isEnable = 'N'
  609. WHERE csDetailId = @csDetailId
  610. /*IF ISNULL(@amount, 0) <> 0
  611. BEGIN
  612. DECLARE @csDetailRecId INT
  613. SELECT @csDetailRecId = csDetailRecId FROM csDetailRec WITH(NOLOCK) WHERE csDetailId = @csDetailId AND ISNULL(@amount, 0) <> 0
  614. UPDATE csDetailRec SET
  615. WHERE csDetailRecId = @csDetailRecId
  616. END*/
  617. IF @amount <> 0
  618. BEGIN
  619. INSERT INTO csDetailRec(
  620. csMasterId
  621. ,csDetailId
  622. ,condition
  623. ,collMode
  624. ,paymentMode
  625. ,checkType
  626. ,parameter
  627. ,period
  628. ,criteria
  629. ,isEnable
  630. ,createdBy
  631. ,createdDate
  632. )
  633. SELECT
  634. csMasterId
  635. ,cd.csDetailId
  636. ,condition
  637. ,collMode
  638. ,paymentMode
  639. ,'Sum'
  640. ,amount
  641. ,period
  642. ,cch.criteriaId
  643. ,'Y'
  644. ,@user
  645. ,GETDATE()
  646. FROM csDetail cd WITH(NOLOCK)
  647. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  648. WHERE cd.csDetailId = @csDetailId
  649. END
  650. IF @tranCount <> 0
  651. BEGIN
  652. INSERT INTO csDetailRec(
  653. csMasterId
  654. ,csDetailId
  655. ,condition
  656. ,collMode
  657. ,paymentMode
  658. ,checkType
  659. ,parameter
  660. ,period
  661. ,criteria
  662. ,isEnable
  663. ,createdBy
  664. ,createdDate
  665. )
  666. SELECT
  667. csMasterId
  668. ,cd.csDetailId
  669. ,condition
  670. ,collMode
  671. ,paymentMode
  672. ,'Count'
  673. ,tranCount
  674. ,period
  675. ,cch.criteriaId
  676. ,'Y'
  677. ,@user
  678. ,GETDATE()
  679. FROM csDetail cd WITH(NOLOCK)
  680. LEFT JOIN csCriteriaHistory cch WITH(NOLOCK) ON cd.csDetailId = cch.csDetailId AND cch.approvedBy IS NULL
  681. WHERE cd.csDetailId = @csDetailId
  682. END
  683. INSERT INTO #msg(errorCode, msg, id)
  684. EXEC proc_applicationLogs 'i', NULL, 'update', 'Compliance Rule Criteria', @csDetailId, @user, @oldValue, @newCriteriaValue
  685. END
  686. ELSE IF @modType = 'D'
  687. BEGIN
  688. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @csDetailId, @oldValue OUTPUT
  689. UPDATE csDetail SET
  690. isDeleted = 'Y'
  691. ,modifiedDate = GETDATE()
  692. ,modifiedBy = @user
  693. WHERE csDetailId = @csDetailId
  694. DELETE FROM csCriteria WHERE csDetailId = @csDetailId
  695. END
  696. UPDATE csDetailHistory SET
  697. approvedBy = @user
  698. ,approvedDate = GETDATE()
  699. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  700. UPDATE csCriteriaHistory SET
  701. approvedBy = @user
  702. ,approvedDate = GETDATE()
  703. WHERE csDetailId = @csDetailId AND approvedBy IS NULL
  704. INSERT INTO #msg(errorCode, msg, id)
  705. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @csDetailId, @user, @oldValue, @newValue
  706. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  707. BEGIN
  708. IF @@TRANCOUNT > 0
  709. ROLLBACK TRANSACTION
  710. EXEC proc_errorHandler 1, 'Could not approve the changes.', @csDetailId
  711. RETURN
  712. END
  713. IF @@TRANCOUNT > 0
  714. COMMIT TRANSACTION
  715. EXEC proc_errorHandler 0, 'Changes approved successfully.', @csDetailId
  716. END
  717. ELSE IF @flag = 'disabled'
  718. BEGIN
  719. --UPDATE csDetail SET isDisabled=case when isDisabled='y' then 'n' else 'y' end where csDetailId=@csDetailId
  720. --EXEC proc_errorHandler 0, 'Record disabled successfully.', @csDetailId
  721. IF (SELECT isnull(isEnable,'n') FROM csDetail WHERE csDetailId = @csDetailId)='n'
  722. begin
  723. UPDATE csDetail SET isEnable='y' WHERE csDetailId = @csDetailId
  724. EXEC proc_errorHandler 0, 'Record enabled successfully.', @csDetailId
  725. return;
  726. end
  727. else
  728. begin
  729. UPDATE csDetail SET isEnable='n' WHERE csDetailId = @csDetailId
  730. EXEC proc_errorHandler 0, 'Record disabled successfully.', @csDetailId
  731. return;
  732. end
  733. IF (SELECT isnull(isEnable,'n') FROM csDetailHistory WHERE csDetailId = @csDetailId)='n'
  734. begin
  735. UPDATE csDetailHistory SET isEnable='y' WHERE csDetailId = @csDetailId
  736. EXEC proc_errorHandler 0, 'Record enabled successfully.', @csDetailId
  737. return;
  738. end
  739. else
  740. begin
  741. UPDATE csDetailHistory SET isEnable='n' WHERE csDetailId = @csDetailId
  742. EXEC proc_errorHandler 0, 'Record disabled successfully.', @csDetailId
  743. return;
  744. end
  745. END
  746. END TRY
  747. BEGIN CATCH
  748. IF @@TRANCOUNT > 0
  749. ROLLBACK TRANSACTION
  750. DECLARE @errorMessage VARCHAR(MAX)
  751. SET @errorMessage = ERROR_MESSAGE()
  752. EXEC proc_errorHandler 1, @errorMessage, @csDetailId
  753. END CATCH