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.

494 lines
27 KiB

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