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.

501 lines
32 KiB

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