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.

561 lines
34 KiB

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