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.

518 lines
32 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_dcSendDetail] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_dcSendDetail]
  9. @flag VARCHAR(50) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@dcSendDetailId VARCHAR(30) = NULL
  12. ,@dcSendMasterId INT = NULL
  13. ,@fromAmt MONEY = NULL
  14. ,@toAmt MONEY = NULL
  15. ,@pcnt FLOAT = NULL
  16. ,@minAmt MONEY = NULL
  17. ,@maxAmt MONEY = NULL
  18. ,@sortBy VARCHAR(50) = NULL
  19. ,@sortOrder VARCHAR(5) = NULL
  20. ,@pageSize INT = NULL
  21. ,@pageNumber INT = NULL
  22. AS
  23. SET NOCOUNT ON
  24. SET XACT_ABORT ON
  25. BEGIN TRY
  26. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  27. DECLARE
  28. @sql VARCHAR(MAX)
  29. ,@oldValue VARCHAR(MAX)
  30. ,@newValue VARCHAR(MAX)
  31. ,@module VARCHAR(10)
  32. ,@tableAlias VARCHAR(100)
  33. ,@logIdentifier VARCHAR(50)
  34. ,@logParamMod VARCHAR(100)
  35. ,@logParamMain VARCHAR(100)
  36. ,@table VARCHAR(MAX)
  37. ,@select_field_list VARCHAR(MAX)
  38. ,@extra_field_list VARCHAR(MAX)
  39. ,@sql_filter VARCHAR(MAX)
  40. ,@id VARCHAR(10)
  41. ,@modType VARCHAR(6)
  42. ,@ApprovedFunctionId INT
  43. ,@MSG VARCHAR(100)
  44. SELECT
  45. @ApprovedFunctionId = 20131030
  46. ,@logIdentifier = 'dcSendDetailId'
  47. ,@logParamMain = 'dcSendDetail'
  48. ,@logParamMod = 'dcSendDetailHistory'
  49. ,@module = '20'
  50. ,@tableAlias = 'Default Send Commission Detail'
  51. IF @flag IN ('i', 'u')
  52. BEGIN
  53. SET @sql = '
  54. SELECT
  55. fromAmt
  56. ,toAmt
  57. FROM dcSendDetail
  58. WHERE dcSendMasterId = '+ CAST(ISNULL(@dcSendMasterId, 0) AS VARCHAR) + '
  59. AND dcSendDetailId <> ' + CAST(ISNULL(@dcSendDetailId, 0) AS VARCHAR) + ' AND ISNULL(isDeleted, ''N'') <> ''Y''
  60. '
  61. DECLARE @success INT
  62. EXEC dbo.proc_CheckRange
  63. @sql = @sql
  64. ,@from = @fromAmt
  65. ,@to = @toAmt
  66. ,@id = @dcSendDetailId
  67. ,@success = @success OUTPUT
  68. IF ISNULL(@success, 0) = 0
  69. RETURN
  70. IF(@maxAmt < @minAmt)
  71. BEGIN
  72. EXEC proc_errorHandler 0, 'Min Amount is greater than Max Amount!!!', @dcSendDetailId
  73. RETURN
  74. END
  75. END
  76. IF @flag = 'i'
  77. BEGIN
  78. IF EXISTS (
  79. SELECT 'X' FROM dcSendMaster WITH(NOLOCK)
  80. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  81. )
  82. BEGIN
  83. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  84. RETURN
  85. END
  86. IF EXISTS (
  87. SELECT 'X' FROM dcSendMasterHistory WITH(NOLOCK)
  88. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  89. )
  90. BEGIN
  91. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  92. RETURN
  93. END
  94. IF (dbo.FNACheckSlab(@pcnt,@minAmt,@maxAmt)!= 'Y')
  95. BEGIN
  96. SET @MSG = dbo.FNACheckSlab(@pcnt,@minAmt,@maxAmt)
  97. EXEC proc_errorHandler 1,@MSG, @dcSendDetailId
  98. RETURN
  99. END
  100. BEGIN TRANSACTION
  101. INSERT INTO dcSendDetail (
  102. dcSendMasterId
  103. ,fromAmt
  104. ,toAmt
  105. ,pcnt
  106. ,minAmt
  107. ,maxAmt
  108. ,createdBy
  109. ,createdDate
  110. )
  111. SELECT
  112. @dcSendMasterId
  113. ,@fromAmt
  114. ,@toAmt
  115. ,@pcnt
  116. ,@minAmt
  117. ,@maxAmt
  118. ,@user
  119. ,GETDATE()
  120. SET @dcSendDetailId = SCOPE_IDENTITY()
  121. IF @@TRANCOUNT > 0
  122. COMMIT TRANSACTION
  123. EXEC proc_errorHandler 0, 'Record has been added successfully.', @dcSendDetailId
  124. END
  125. ELSE IF @flag = 'a'
  126. BEGIN
  127. IF EXISTS (
  128. SELECT 'X' FROM dcSendDetailHistory WITH(NOLOCK)
  129. WHERE dcSendDetailId = @dcSendDetailId AND createdBy = @user AND approvedBy IS NULL
  130. )
  131. BEGIN
  132. SELECT
  133. mode.*
  134. FROM dcSendDetailHistory mode WITH(NOLOCK)
  135. INNER JOIN dcSendDetail main WITH(NOLOCK) ON mode.dcSendDetailId = main.dcSendDetailId
  136. WHERE mode.dcSendDetailId= @dcSendDetailId AND mode.approvedBy IS NULL
  137. END
  138. ELSE
  139. BEGIN
  140. SELECT * FROM dcSendDetail WITH(NOLOCK) WHERE dcSendDetailId = @dcSendDetailId
  141. END
  142. END
  143. ELSE IF @flag = 'u'
  144. BEGIN
  145. IF EXISTS (
  146. SELECT 'X' FROM dcSendMaster WITH(NOLOCK)
  147. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  148. )
  149. BEGIN
  150. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  151. RETURN
  152. END
  153. IF EXISTS (
  154. SELECT 'X' FROM dcSendMasterHistory WITH(NOLOCK)
  155. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  156. )
  157. BEGIN
  158. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  159. RETURN
  160. END
  161. IF EXISTS (
  162. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  163. WHERE dcSendDetailId = @dcSendDetailId AND ( createdBy <> @user AND approvedBy IS NULL)
  164. )
  165. BEGIN
  166. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendDetailId
  167. RETURN
  168. END
  169. IF EXISTS (
  170. SELECT 'X' FROM dcSendDetailHistory WITH(NOLOCK)
  171. WHERE dcSendDetailId = @dcSendDetailId AND (createdBy<> @user OR modType = 'delete')
  172. )
  173. BEGIN
  174. EXEC proc_errorHandler 1, '<center>You can not modify this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendDetailId
  175. RETURN
  176. END
  177. IF (dbo.FNACheckSlab(@pcnt,@minAmt,@maxAmt)!= 'Y')
  178. BEGIN
  179. SET @MSG = dbo.FNACheckSlab(@pcnt,@minAmt,@maxAmt)
  180. EXEC proc_errorHandler 1,@MSG, @dcSendDetailId
  181. RETURN
  182. END
  183. BEGIN TRANSACTION
  184. IF EXISTS (SELECT 'X' FROM dcSendDetail WHERE approvedBy IS NULL AND dcSendDetailId = @dcSendDetailId)
  185. BEGIN
  186. UPDATE dcSendDetail SET
  187. dcSendMasterId = @dcSendMasterId
  188. ,fromAmt = @fromAmt
  189. ,toAmt = @toAmt
  190. ,pcnt = @pcnt
  191. ,minAmt = @minAmt
  192. ,maxAmt = @maxAmt
  193. ,modifiedBy = @user
  194. ,modifiedDate = GETDATE()
  195. WHERE dcSendDetailId = @dcSendDetailId
  196. END
  197. ELSE
  198. BEGIN
  199. DELETE FROM dcSendDetailHistory WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  200. INSERT INTO dcSendDetailHistory(
  201. dcSendDetailId
  202. ,fromAmt
  203. ,toAmt
  204. ,pcnt
  205. ,minAmt
  206. ,maxAmt
  207. ,createdBy
  208. ,createdDate
  209. ,modType
  210. )
  211. SELECT
  212. @dcSendDetailId
  213. ,@fromAmt
  214. ,@toAmt
  215. ,@pcnt
  216. ,@minAmt
  217. ,@maxAmt
  218. ,@user
  219. ,GETDATE()
  220. ,'U'
  221. END
  222. IF @@TRANCOUNT > 0
  223. COMMIT TRANSACTION
  224. EXEC proc_errorHandler 0, 'Record updated successfully.', @dcSendDetailId
  225. END
  226. ELSE IF @flag = 'd'
  227. BEGIN
  228. IF EXISTS (
  229. SELECT 'X' FROM dcSendMaster WITH(NOLOCK)
  230. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  231. )
  232. BEGIN
  233. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  234. RETURN
  235. END
  236. IF EXISTS (
  237. SELECT 'X' FROM dcSendMasterHistory WITH(NOLOCK)
  238. WHERE dcSendMasterId = @dcSendMasterId AND ( createdBy <> @user AND approvedBy IS NULL)
  239. )
  240. BEGIN
  241. EXEC proc_errorHandler 1, 'You can not modify this record. You are trying to perform an illegal operation.', @dcSendDetailId
  242. RETURN
  243. END
  244. IF EXISTS (
  245. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  246. WHERE dcSendDetailId = @dcSendDetailId AND (createdBy <> @user AND approvedBy IS NULL)
  247. )
  248. BEGIN
  249. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> You are trying to perform an illegal operation.</center>', @dcSendDetailId
  250. RETURN
  251. END
  252. IF EXISTS (
  253. SELECT 'X' FROM dcSendDetailHistory WITH(NOLOCK)
  254. WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  255. )
  256. BEGIN
  257. EXEC proc_errorHandler 1, '<center>You can not delete this record. <br /> Previous modification has not been approved yet.</center>', @dcSendDetailId
  258. RETURN
  259. END
  260. SELECT @dcSendMasterId = dcSendMasterId FROM dcSendDetail WHERE dcSendDetailId = @dcSendDetailId
  261. IF EXISTS(SELECT 'X' FROM dcSendDetail WITH(NOLOCK) WHERE dcSendDetailId = @dcSendDetailId AND createdBy = @user AND approvedBy IS NULL)
  262. BEGIN
  263. DELETE FROM dcSendDetail WHERE dcSendDetailId = @dcSendDetailId
  264. EXEC proc_errorHandler 0, 'Record deleted successfully.', @dcSendMasterId
  265. RETURN
  266. END
  267. INSERT INTO dcSendDetailHistory(
  268. dcSendDetailId
  269. ,fromAmt
  270. ,toAmt
  271. ,pcnt
  272. ,minAmt
  273. ,maxAmt
  274. ,createdBy
  275. ,createdDate
  276. ,modType
  277. )
  278. SELECT
  279. dcSendDetailId
  280. ,fromAmt
  281. ,toAmt
  282. ,pcnt
  283. ,minAmt
  284. ,maxAmt
  285. ,@user
  286. ,GETDATE()
  287. ,'D'
  288. FROM dcSendDetail
  289. WHERE dcSendDetailId = @dcSendDetailId
  290. SET @modType = 'delete'
  291. EXEC proc_errorHandler 0, 'Record deleted successfully.', @dcSendMasterId
  292. END
  293. ELSE IF @flag IN ('s', 'p')
  294. BEGIN
  295. IF @sortBy IS NULL
  296. SET @sortBy = 'dcSendDetailId'
  297. IF @sortOrder IS NULL
  298. SET @sortOrder = 'ASC'
  299. SET @table = '(
  300. SELECT
  301. dcSendDetailId = ISNULL(mode.dcSendDetailId, main.dcSendDetailId)
  302. ,fromAmt = ISNULL(mode.fromAmt, main.fromAmt)
  303. ,toAmt = ISNULL(mode.toAmt, main.toAmt)
  304. ,pcnt = ISNULL(mode.pcnt, main.pcnt)
  305. ,minAmt = ISNULL(mode.minAmt, main.minAmt)
  306. ,maxAmt = ISNULL(mode.maxAmt, main.maxAmt)
  307. ,main.createdBy
  308. ,main.createdDate
  309. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  310. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  311. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  312. (mode.dcSendDetailId IS NOT NULL)
  313. THEN ''Y'' ELSE ''N'' END
  314. FROM dcSendDetail main WITH(NOLOCK)
  315. LEFT JOIN dcSendDetailHistory mode ON main.dcSendDetailId = mode.dcSendDetailId AND mode.approvedBy IS NULL
  316. AND (
  317. mode.createdBy = ''' + @user + '''
  318. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  319. )
  320. WHERE main.dcSendMasterId = ' + CAST (@dcSendMasterId AS VARCHAR) + ' AND ISNULL(main.isDeleted, ''N'') <> ''Y''
  321. AND (
  322. main.approvedBy IS NOT NULL
  323. OR main.createdBy = ''' + @user + '''
  324. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  325. )
  326. --AND NOT(ISNULL(mode.modType, '''') = ''D'' AND mode.createdBy = ''' + @user + ''')
  327. ) x'
  328. SET @sql_filter = ''
  329. SET @select_field_list ='
  330. dcSendDetailId
  331. ,fromAmt
  332. ,toAmt
  333. ,pcnt
  334. ,minAmt
  335. ,maxAmt
  336. ,createdBy
  337. ,createdDate
  338. ,modifiedBy
  339. ,hasChanged
  340. '
  341. EXEC dbo.proc_paging
  342. @table
  343. ,@sql_filter
  344. ,@select_field_list
  345. ,@extra_field_list
  346. ,@sortBy
  347. ,@sortOrder
  348. ,@pageSize
  349. ,@pageNumber
  350. END
  351. ELSE IF @flag = 'reject'
  352. BEGIN
  353. IF NOT EXISTS (
  354. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  355. WHERE dcSendDetailId = @dcSendDetailId
  356. )
  357. AND
  358. NOT EXISTS (
  359. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  360. WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  361. )
  362. BEGIN
  363. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @dcSendDetailId
  364. RETURN
  365. END
  366. IF EXISTS (SELECT 'X' FROM dcSendDetail WHERE approvedBy IS NULL AND dcSendDetailId = @dcSendDetailId)
  367. BEGIN --New record
  368. BEGIN TRANSACTION
  369. SET @modType = 'Reject'
  370. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendDetailId, @oldValue OUTPUT
  371. INSERT INTO #msg(errorCode, msg, id)
  372. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendDetailId, @user, @oldValue, @newValue
  373. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  374. BEGIN
  375. IF @@TRANCOUNT > 0
  376. ROLLBACK TRANSACTION
  377. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @dcSendDetailId
  378. RETURN
  379. END
  380. DELETE FROM dcSendDetail WHERE dcSendDetailId = @dcSendDetailId
  381. IF @@TRANCOUNT > 0
  382. COMMIT TRANSACTION
  383. END
  384. ELSE
  385. BEGIN
  386. BEGIN TRANSACTION
  387. SET @modType = 'Reject'
  388. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendDetailId, @oldValue OUTPUT
  389. INSERT INTO #msg(errorCode, msg, id)
  390. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendDetailId, @user, @oldValue, @newValue
  391. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  392. BEGIN
  393. IF @@TRANCOUNT > 0
  394. ROLLBACK TRANSACTION
  395. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @dcSendDetailId
  396. RETURN
  397. END
  398. DELETE FROM dcSendDetailHistory WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  399. IF @@TRANCOUNT > 0
  400. COMMIT TRANSACTION
  401. END
  402. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @dcSendDetailId
  403. END
  404. ELSE IF @flag = 'approve'
  405. BEGIN
  406. IF NOT EXISTS (
  407. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  408. WHERE dcSendDetailId = @dcSendDetailId
  409. )
  410. AND
  411. NOT EXISTS (
  412. SELECT 'X' FROM dcSendDetail WITH(NOLOCK)
  413. WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  414. )
  415. BEGIN
  416. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @dcSendDetailId
  417. RETURN
  418. END
  419. BEGIN TRANSACTION
  420. IF EXISTS (SELECT 'X' FROM dcSendDetail WHERE approvedBy IS NULL AND dcSendDetailId = @dcSendDetailId )
  421. SET @modType = 'I'
  422. ELSE
  423. SELECT @modType = modType FROM dcSendDetailHistory WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  424. IF @modType = 'I'
  425. BEGIN --New record
  426. UPDATE dcSendDetail SET
  427. isActive = 'Y'
  428. ,approvedBy = @user
  429. ,approvedDate= GETDATE()
  430. WHERE dcSendDetailId = @dcSendDetailId
  431. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendDetailId, @newValue OUTPUT
  432. END
  433. ELSE IF @modType = 'U'
  434. BEGIN
  435. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendDetailId, @oldValue OUTPUT
  436. UPDATE main SET
  437. main.fromAmt = mode.fromAmt
  438. ,main.toAmt = mode.toAmt
  439. ,main.pcnt = mode.pcnt
  440. ,main.minAmt = mode.minAmt
  441. ,main.maxAmt = mode.maxAmt
  442. ,main.modifiedDate = GETDATE()
  443. ,main.modifiedBy = @user
  444. FROM dcSendDetail main
  445. INNER JOIN dcSendDetailHistory mode ON mode.dcSendDetailId = main.dcSendDetailId
  446. WHERE mode.dcSendDetailId = @dcSendDetailId AND mode.approvedBy IS NULL
  447. EXEC [dbo].proc_GetColumnToRow 'dcSendDetail', 'dcSendDetailId', @dcSendDetailId, @newValue OUTPUT
  448. END
  449. ELSE IF @modType = 'D'
  450. BEGIN
  451. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @dcSendDetailId, @oldValue OUTPUT
  452. UPDATE dcSendDetail SET
  453. isDeleted = 'Y'
  454. ,modifiedDate = GETDATE()
  455. ,modifiedBy = @user
  456. WHERE dcSendDetailId = @dcSendDetailId
  457. END
  458. UPDATE dcSendDetailHistory SET
  459. approvedBy = @user
  460. ,approvedDate = GETDATE()
  461. WHERE dcSendDetailId = @dcSendDetailId AND approvedBy IS NULL
  462. INSERT INTO #msg(errorCode, msg, id)
  463. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @dcSendDetailId, @user, @oldValue, @newValue
  464. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  465. BEGIN
  466. IF @@TRANCOUNT > 0
  467. ROLLBACK TRANSACTION
  468. EXEC proc_errorHandler 1, 'Could not approve the changes.', @dcSendDetailId
  469. RETURN
  470. END
  471. IF @@TRANCOUNT > 0
  472. COMMIT TRANSACTION
  473. EXEC proc_errorHandler 0, 'Changes approved successfully.', @dcSendDetailId
  474. END
  475. END TRY
  476. BEGIN CATCH
  477. IF @@TRANCOUNT > 0
  478. ROLLBACK TRANSACTION
  479. DECLARE @errorMessage VARCHAR(MAX)
  480. SET @errorMessage = ERROR_MESSAGE()
  481. EXEC proc_errorHandler 1, @errorMessage, @dcSendDetailId
  482. END CATCH
  483. GO