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.

488 lines
28 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_bonusOperationSetup] 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 * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[proc_bonusOperationSetup]') AND TYPE IN (N'P', N'PC'))
  10. DROP PROCEDURE [dbo].proc_bonusOperationSetup
  11. GO
  12. */
  13. /*
  14. EXEC proc_bonusOperationSetup @flag = 'scheme-list'
  15. */
  16. CREATE proc [dbo].[proc_bonusOperationSetup]
  17. @flag VARCHAR(50) = NULL
  18. ,@schemePrizeId INT = NULL
  19. ,@bonusSchemeId INT = NULL
  20. ,@schemeName VARCHAR(50) = NULL
  21. ,@sendingCountry VARCHAR(50) = NULL
  22. ,@sendingAgent VARCHAR(500) = NULL
  23. ,@sendingBranch VARCHAR(50) = NULL
  24. ,@receivingCountry VARCHAR(50) = NULL
  25. ,@receivingAgent VARCHAR(50) = NULL
  26. ,@schemeStartDate DATETIME = NULL
  27. ,@schemeEndDate DATETIME = NULL
  28. ,@basis VARCHAR(100) = NULL
  29. ,@unit INT = NULL
  30. ,@points INT = NULL
  31. ,@user VARCHAR(50) = NULL
  32. ,@isActive VARCHAR(2) = NULL
  33. ,@giftItem INT = NULL
  34. ,@pageSize VARCHAR(50) = NULL
  35. ,@pageNumber VARCHAR(50) = NULL
  36. ,@sortBy VARCHAR(50) = NULL
  37. ,@sortOrder VARCHAR(50) = NULL
  38. ,@maxPointsPerTxn INT = NULL
  39. ,@minTxnForRedeem INT = NULL
  40. AS
  41. /*
  42. flag Purpose
  43. ----------------------------
  44. i insert
  45. u update
  46. d delete
  47. a selectById
  48. s select prizeList
  49. i-scheme insert scheme
  50. d-scheme delete scheme
  51. u-scheme update scheme
  52. a-scheme selectById scheme
  53. scheme-list list of scheme prize
  54. */
  55. SET NOCOUNT ON
  56. SET XACT_ABORT ON
  57. BEGIN TRY
  58. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  59. DECLARE
  60. @sql VARCHAR(MAX)
  61. ,@oldValue VARCHAR(MAX)
  62. ,@newValue VARCHAR(MAX)
  63. ,@module VARCHAR(10)
  64. ,@tableAlias VARCHAR(100)
  65. ,@logIdentifier VARCHAR(50)
  66. ,@logParamMain VARCHAR(100)
  67. ,@table VARCHAR(MAX)
  68. ,@select_field_list VARCHAR(MAX)
  69. ,@extra_field_list VARCHAR(MAX)
  70. ,@sql_filter VARCHAR(MAX)
  71. ,@modType VARCHAR(6)
  72. ,@filterFlag VARCHAR(MAX)
  73. ,@id VARCHAR(50)
  74. ,@modeType VARCHAR(10)
  75. ,@msg VARCHAR(MAX)
  76. IF @flag = 'i'
  77. BEGIN
  78. IF EXISTS (SELECT 'X' FROM bonusPrizeSetup WHERE bonusSchemeId = @bonusSchemeId AND giftItem = @giftItem)
  79. BEGIN
  80. EXEC proc_errorHandler 1, 'Cannot Insert Duplicate GiftItems For Same Scheme', NULL
  81. RETURN
  82. END
  83. BEGIN TRANSACTION
  84. INSERT INTO bonusPrizeSetup (
  85. bonusSchemeId
  86. ,points
  87. ,giftItem
  88. ,createdBy
  89. ,createdDate
  90. )
  91. SELECT
  92. @bonusSchemeId
  93. ,@points
  94. ,@giftItem
  95. ,@user
  96. ,GETDATE()
  97. SET @id = SCOPE_IDENTITY()
  98. SET @modeType = 'insert'
  99. EXEC [dbo].proc_GetColumnToRow 'bonusPrizeSetup', 'schemePrizeId', @id, @newValue OUTPUT
  100. INSERT INTO #msg(errorCode, msg, id)
  101. EXEC proc_applicationLogs 'i', NULL, @modeType, 'Bonus Operation Setup', @id, @user, @oldValue, @newValue
  102. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  103. BEGIN
  104. IF @@TRANCOUNT > 0
  105. ROLLBACK TRANSACTION
  106. EXEC proc_errorHandler 1, 'Failed to Insert.', @id
  107. RETURN
  108. END
  109. IF @@TRANCOUNT > 0
  110. COMMIT TRANSACTION
  111. EXEC proc_errorHandler 0, 'Record has been Inserted successfully.', @id
  112. END
  113. IF @flag = 'u'
  114. BEGIN
  115. IF EXISTS (SELECT 'X' FROM bonusPrizeSetup
  116. WHERE bonusSchemeId = @bonusSchemeId AND giftItem = @giftItem AND schemePrizeId <> @schemePrizeId)
  117. BEGIN
  118. EXEC proc_errorHandler 1, 'Cannot Update Duplicate GiftItems For Same Scheme', NULL
  119. RETURN
  120. END
  121. BEGIN TRANSACTION;
  122. UPDATE bonusPrizeSetup SET
  123. bonusSchemeId = @bonusSchemeId
  124. ,points = @points
  125. ,giftItem = @giftItem
  126. ,modifiedBy = @user
  127. ,modifiedDate = GETDATE()
  128. WHERE schemePrizeId = @schemePrizeId
  129. SET @modeType = 'update'
  130. EXEC proc_errorHandler 0, 'Record has been updated successfully.', @schemePrizeId
  131. EXEC [dbo].proc_GetColumnToRow 'bonusPrizeSetup', 'schemePrizeId', @schemePrizeId, @newValue OUTPUT
  132. INSERT INTO #msg(errorCode, msg, id)
  133. EXEC proc_applicationLogs 'i', NULL, @modeType, 'Bonus Prize Setup', @schemePrizeId, @user, @oldValue, @newValue
  134. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  135. BEGIN
  136. IF @@TRANCOUNT > 0
  137. ROLLBACK TRANSACTION
  138. EXEC proc_errorHandler 1, 'Failed to Update.', @schemePrizeId
  139. RETURN
  140. END
  141. IF @@TRANCOUNT > 0
  142. COMMIT TRANSACTION
  143. EXEC proc_errorHandler 0, 'Record has been Updated successfully.', @schemePrizeId
  144. END
  145. ELSE IF @flag = 'd'
  146. BEGIN
  147. BEGIN TRANSACTION
  148. DELETE FROM bonusPrizeSetup
  149. WHERE schemePrizeId = @schemePrizeId
  150. SET @modeType = 'delete'
  151. EXEC proc_errorHandler 0, 'Record has been Deleted successfully.', @schemePrizeId
  152. EXEC [dbo].proc_GetColumnToRow 'bonusPrizeSetup', 'schemePrizeId', @schemePrizeId, @newValue OUTPUT
  153. INSERT INTO #msg(errorCode, msg, id)
  154. EXEC proc_applicationLogs 'i', NULL, @modeType, 'Bonus Prize Setup', @schemePrizeId, @user, @oldValue, @newValue
  155. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  156. BEGIN
  157. IF @@TRANCOUNT > 0
  158. ROLLBACK TRANSACTION
  159. EXEC proc_errorHandler 1, 'Failed to Delete.', @schemePrizeId
  160. RETURN
  161. END
  162. IF @@TRANCOUNT > 0
  163. COMMIT TRANSACTION
  164. EXEC proc_errorHandler 0, 'Record has been Deleted successfully.', @schemePrizeId
  165. END
  166. ELSE IF @flag = 'a'
  167. BEGIN
  168. SELECT
  169. bs.schemeName
  170. ,bp.points
  171. ,bp.giftItem
  172. FROM bonusPrizeSetup bp WITH(NOLOCK)
  173. LEFT JOIN bonusOperationSetup bs WITH (NOLOCK)
  174. ON bp.bonusSchemeId = bs.bonusSchemeId
  175. WHERE bp.schemePrizeId = @schemePrizeId
  176. END
  177. ELSE IF @flag = 's'
  178. BEGIN
  179. SELECT 1 totalRow, 1 pageNumber, 1 totalPage, 0 pageSize
  180. SELECT
  181. sn = ROW_NUMBER() OVER (ORDER BY bp.schemePrizeId ASC)
  182. ,bp.schemePrizeId
  183. ,bs.schemeName
  184. ,bp.points
  185. --,bp.giftItem
  186. ,sd.detailTitle [giftItem]
  187. FROM bonusPrizeSetup bp WITH(NOLOCK)
  188. INNER JOIN bonusOperationSetup bs WITH (NOLOCK)
  189. ON bp.bonusSchemeId = bs.bonusSchemeId
  190. INNER JOIN staticDataValue sd WITH (NOLOCK)
  191. ON sd.valueId= bp.giftItem
  192. WHERE bp.bonusSchemeId = @bonusSchemeId
  193. ORDER BY bs.schemeName ASC
  194. RETURN
  195. END
  196. ELSE IF @flag = 'scheme-list'
  197. BEGIN
  198. IF @sortBy IS NULL
  199. SET @sortBy = 'bonusSchemeId'
  200. IF @sortOrder IS NULL
  201. SET @sortOrder = 'ASC'
  202. SET @table = '(
  203. SELECT bs.bonusSchemeId
  204. ,bs.schemeName
  205. ,ISNULL(cms.countryName,''ALL'') [sendingCountry]
  206. ,ISNULL(cmr.countryName,''ALL'') [receivingCountry]
  207. ,ISNULL(ams.agentName,''ALL'') [sendingAgent]
  208. ,ISNULL(amr.agentName,''ALL'') [receivingAgent]
  209. ,CONVERT(VARCHAR,bs.schemeStartDate,101) [schemeStartDate]
  210. ,CONVERT(VARCHAR,bs.schemeEndDate,101) [schemeEndDate]
  211. ,bs.basis
  212. ,bs.unit
  213. ,bs.points
  214. FROM bonusOperationSetup bs WITH(NOLOCK)
  215. LEFT JOIN countryMaster cms WITH(NOLOCK) ON bs.sendingCountry = cms.countryId
  216. LEFT JOIN countryMaster cmr WITH(NOLOCK) ON bs.receivingCountry = cmr.countryId
  217. LEFT JOIN agentMaster ams WITH(NOLOCK) ON bs.sendingAgent = ams.agentId
  218. LEFT JOIN agentMaster amr WITH(NOLOCK) ON bs.receivingAgent = amr.agentId
  219. --WHERE ISNULL(bs.isActive,''N'') <> ''N''
  220. )x '
  221. SET @sql_filter = ''
  222. IF @schemeName IS NOT NULL
  223. SET @sql_filter = @sql_filter + 'AND x.schemeName LIKE '''+ @schemeName +'%'''
  224. IF @sendingCountry IS NOT NULL
  225. SET @sql_filter = @sql_filter + 'AND x.sendingCountry LIKE '''+ @sendingCountry +'%'''
  226. IF @receivingCountry IS NOT NULL
  227. SET @sql_filter = @sql_filter + 'AND x.receivingCountry LIKE '''+ @receivingCountry +'%'''
  228. SET @select_field_list ='
  229. bonusSchemeId
  230. ,schemeName
  231. ,sendingCountry
  232. ,sendingAgent
  233. ,receivingCountry
  234. ,receivingAgent
  235. ,schemeStartDate
  236. ,schemeEndDate
  237. ,basis
  238. ,unit
  239. ,points
  240. '
  241. PRINT @TABLE
  242. EXEC dbo.proc_paging
  243. @table
  244. ,@sql_filter
  245. ,@select_field_list
  246. ,@extra_field_list
  247. ,@sortBy
  248. ,@sortOrder
  249. ,@pageSize
  250. ,@pageNumber
  251. RETURN
  252. END
  253. ELSE IF @flag = 'a-scheme'
  254. BEGIN
  255. SELECT bs.schemeName
  256. ,cms.countryName [sendingCountry]
  257. ,bs.sendingCountry [sendingCountryVal]
  258. ,cmr.countryName [receivingCountry]
  259. ,bs.receivingCountry [receivingCountryVal]
  260. ,amb.agentName [sendingBranch]
  261. ,bs.sendingBranch [sendingBranchVal]
  262. ,ams.agentName [sendingAgent]
  263. ,bs.sendingAgent [sendingAgentVal]
  264. ,amr.agentName [receivingAgent]
  265. ,bs.receivingAgent [receivingAgentVal]
  266. ,CONVERT( VARCHAR ,bs.schemeStartDate,101)schemeStartDate
  267. ,CONVERT( VARCHAR ,bs.schemeEndDate,101)schemeEndDate
  268. ,bs.basis
  269. ,bs.unit
  270. ,bs.points
  271. ,bs.isActive
  272. ,bs.maxPointsPerTxn
  273. ,bs.minTxnForRedeem
  274. FROM bonusOperationSetup bs WITH(NOLOCK)
  275. LEFT JOIN countryMaster cms WITH(NOLOCK) ON bs.sendingCountry = cms.countryId
  276. LEFT JOIN countryMaster cmr WITH(NOLOCK) ON bs.receivingCountry = cmr.countryId
  277. LEFT JOIN agentMaster ams WITH(NOLOCK) ON bs.sendingAgent = ams.agentId
  278. LEFT JOIN agentMaster amr WITH(NOLOCK) ON bs.receivingAgent = amr.agentId
  279. LEFT JOIN agentMaster amb WITH(NOLOCK) ON bs.sendingBranch = amb.agentId
  280. WHERE --ISNULL(bs.isActive,'N') <> 'N'AND
  281. bonusSchemeId = @bonusSchemeId
  282. END
  283. ELSE IF @flag = 'd-scheme'
  284. BEGIN
  285. BEGIN TRANSACTION
  286. DELETE FROM bonusOperationSetup
  287. WHERE bonusSchemeId = @bonusSchemeId
  288. EXEC [dbo].proc_GetColumnToRow 'bonusOperationSetup', 'bonusSchemeId', @bonusSchemeId, @newValue OUTPUT
  289. INSERT INTO #msg(errorCode, msg, id)
  290. EXEC proc_applicationLogs 'i', NULL, 'd', 'Bonus Operation Setup', @bonusSchemeId, @user, @oldValue, @newValue
  291. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  292. BEGIN
  293. IF @@TRANCOUNT > 0
  294. ROLLBACK TRANSACTION
  295. EXEC proc_errorHandler 1, 'Failed to Delete.', @bonusSchemeId
  296. RETURN
  297. END
  298. IF @@TRANCOUNT > 0
  299. COMMIT TRANSACTION
  300. EXEC proc_errorHandler 0, 'Record has been Deleted successfully.', @bonusSchemeId
  301. END
  302. ELSE IF @flag = 'u-scheme'
  303. BEGIN
  304. IF EXISTS (SELECT 'X' FROM bonusOperationSetup WHERE schemeName = @schemeName AND bonusSchemeId <> @bonusSchemeId)
  305. BEGIN
  306. SET @msg = 'Cannot Update Duplicate Value ' + @schemeName
  307. EXEC proc_errorHandler 1, @msg, NULL
  308. RETURN
  309. END
  310. IF EXISTS (SELECT 'X' WHERE @sendingCountry = @receivingCountry)
  311. BEGIN
  312. EXEC proc_errorHandler 1, 'Sending And Receiving Country Cannot Be Same', NULL
  313. RETURN
  314. END
  315. IF EXISTS (SELECT 'X' FROM bonusOperationSetup
  316. WHERE
  317. sendingCountry = @sendingCountry
  318. and receivingCountry = @receivingCountry
  319. AND @schemeStartDate BETWEEN schemeStartDate AND schemeEndDate
  320. AND bonusSchemeId <> @bonusSchemeId)
  321. BEGIN
  322. EXEC proc_errorHandler 1, 'Already Exists Scheme Date', NULL
  323. RETURN
  324. END
  325. BEGIN TRANSACTION
  326. UPDATE bonusOperationSetup SET
  327. schemeName = @schemeName
  328. ,sendingCountry = @sendingCountry
  329. ,sendingAgent = @sendingAgent
  330. ,sendingBranch = @sendingBranch
  331. ,receivingCountry= @receivingCountry
  332. ,receivingAgent = @receivingAgent
  333. ,schemeStartDate= @schemeStartDate
  334. ,schemeEndDate = @schemeEndDate
  335. ,basis = @basis
  336. ,unit = @unit
  337. ,points = @points
  338. ,isActive = @isActive
  339. ,modifiedBy = @user
  340. ,modifiedDate = GETDATE()
  341. ,maxPointsPerTxn = @maxPointsPerTxn
  342. ,minTxnForRedeem = @minTxnForRedeem
  343. WHERE bonusSchemeId = @bonusSchemeId
  344. EXEC [dbo].proc_GetColumnToRow 'bonusOperationSetup', 'bonusSchemeId', @bonusSchemeId, @newValue OUTPUT
  345. INSERT INTO #msg(errorCode, msg, id)
  346. EXEC proc_applicationLogs 'i', NULL, 'u', 'Bonus Operation Setup', @bonusSchemeId, @user, @oldValue, @newValue
  347. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  348. BEGIN
  349. IF @@TRANCOUNT > 0
  350. ROLLBACK TRANSACTION
  351. EXEC proc_errorHandler 1, 'Failed to Update.', @bonusSchemeId
  352. RETURN
  353. END
  354. IF @@TRANCOUNT > 0
  355. COMMIT TRANSACTION
  356. EXEC proc_errorHandler 0, 'Record has been Updated successfully.', @bonusSchemeId
  357. END
  358. ELSE IF @flag = 'i-scheme'
  359. BEGIN
  360. IF EXISTS (SELECT 'X' FROM bonusOperationSetup WHERE schemeName = @schemeName)
  361. BEGIN
  362. SET @msg = 'Cannot Insert Duplicate Value ' + @schemeName
  363. EXEC proc_errorHandler 1, @msg, NULL
  364. RETURN
  365. END
  366. IF EXISTS (SELECT 'X' WHERE @sendingCountry = @receivingCountry)
  367. BEGIN
  368. EXEC proc_errorHandler 1, 'Sending And Receiving Country Cannot Be Same', NULL
  369. RETURN
  370. END
  371. IF EXISTS (SELECT 'X' FROM bonusOperationSetup WHERE sendingCountry = @sendingCountry
  372. and receivingCountry = @receivingCountry
  373. and @schemeStartDate BETWEEN schemeStartDate AND schemeEndDate)
  374. BEGIN
  375. EXEC proc_errorHandler 1, 'Already Exists Scheme Date', NULL
  376. RETURN
  377. END
  378. INSERT INTO bonusOperationSetup(
  379. schemeName
  380. ,sendingCountry
  381. ,sendingAgent
  382. ,sendingBranch
  383. ,receivingCountry
  384. ,receivingAgent
  385. ,schemeStartDate
  386. ,schemeEndDate
  387. ,basis
  388. ,unit
  389. ,points
  390. ,isActive
  391. ,createdBy
  392. ,createdDate
  393. ,maxPointsPerTxn
  394. ,minTxnForRedeem
  395. )
  396. SELECT
  397. @schemeName
  398. ,@sendingCountry
  399. ,@sendingAgent
  400. ,@sendingBranch
  401. ,@receivingCountry
  402. ,@receivingAgent
  403. ,@schemeStartDate
  404. ,@schemeEndDate
  405. ,@basis
  406. ,@unit
  407. ,@points
  408. ,@isActive
  409. ,@user
  410. ,GETDATE()
  411. ,@maxPointsPerTxn
  412. ,@minTxnForRedeem
  413. SET @id = SCOPE_IDENTITY()
  414. EXEC [dbo].proc_GetColumnToRow 'bonusOperationSetup', 'bonusSchemeId', @id, @newValue OUTPUT
  415. INSERT INTO #msg(errorCode, msg, id)
  416. EXEC proc_applicationLogs 'i', NULL, 'i', 'Bonus Operation Setup', @id, @user, @oldValue, @newValue
  417. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  418. BEGIN
  419. IF @@TRANCOUNT > 0
  420. ROLLBACK TRANSACTION
  421. EXEC proc_errorHandler 1, 'Failed to Insert.', @id
  422. RETURN
  423. END
  424. IF @@TRANCOUNT > 0
  425. COMMIT TRANSACTION
  426. EXEC proc_errorHandler 0, 'Record has been Added successfully.', @id
  427. END
  428. END TRY
  429. BEGIN CATCH
  430. IF @@TRANCOUNT > 0
  431. ROLLBACK TRANSACTION
  432. DECLARE @errorMessage VARCHAR(MAX)
  433. SET @errorMessage = ERROR_MESSAGE()
  434. EXEC proc_errorHandler 1, @errorMessage, NULL
  435. END CATCH
  436. GO