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.

455 lines
26 KiB

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