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.

514 lines
33 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_approveTran] 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. SELECT * FROM remitTran
  10. EXEC proc_cancelTran @flag = 'details', @user = 'shree_b1', @tranId = '1', @controlNo = '91885218404'
  11. */
  12. ALTER proc [dbo].[proc_approveTran] (
  13. @flag VARCHAR(50)
  14. ,@controlNo VARCHAR(20) = NULL
  15. ,@user VARCHAR(30) = NULL
  16. ,@agentRefId VARCHAR(20) = NULL
  17. ,@tranId INT = NULL
  18. ,@sCountry INT = NULL
  19. ,@sFirstName VARCHAR(30) = NULL
  20. ,@sMiddleName VARCHAR(30) = NULL
  21. ,@sLastName1 VARCHAR(30) = NULL
  22. ,@sLastName2 VARCHAR(30) = NULL
  23. ,@sMemId VARCHAR(30) = NULL
  24. ,@sId BIGINT = NULL
  25. ,@sTranId VARCHAR(50) = NULL
  26. ,@rCountry INT = NULL
  27. ,@rFirstName VARCHAR(30) = NULL
  28. ,@rMiddleName VARCHAR(30) = NULL
  29. ,@rLastName1 VARCHAR(30) = NULL
  30. ,@rLastName2 VARCHAR(30) = NULL
  31. ,@rMemId VARCHAR(30) = NULL
  32. ,@rId BIGINT = NULL
  33. ,@pCountry INT = NULL
  34. ,@customerId INT = NULL
  35. ,@agentId INT = NULL
  36. ,@senderId INT = NULL
  37. ,@benId INT = NULL
  38. ,@cancelReason VARCHAR(200) = NULL
  39. ,@cAmt MONEY = NULL
  40. ,@sortBy VARCHAR(50) = NULL
  41. ,@sortOrder VARCHAR(5) = NULL
  42. ,@pageSize INT = NULL
  43. ,@pageNumber INT = NULL
  44. )
  45. AS
  46. DECLARE
  47. @select_field_list VARCHAR(MAX)
  48. ,@extra_field_list VARCHAR(MAX)
  49. ,@table VARCHAR(MAX)
  50. ,@sql_filter VARCHAR(MAX)
  51. SET NOCOUNT ON
  52. SET XACT_ABORT ON
  53. SELECT @pageSize = 1000, @pageNumber = 1
  54. DECLARE @sBranch INT
  55. DECLARE @controlNoEncrypted VARCHAR(100)
  56. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  57. IF @flag = 'approve'
  58. BEGIN
  59. --Check if the approver is the same user who sent transaction
  60. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND createdBy = @user)
  61. BEGIN
  62. EXEC proc_errorHandler 1, 'Process denied for same user', @controlNoEncrypted
  63. RETURN
  64. END
  65. DECLARE @tranStatus VARCHAR(20) = NULL
  66. SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  67. SELECT @tranStatus = tranStatus, @cAmt = cAmt FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
  68. IF @sBranch <> dbo.FNAGetHOAgentId() --Head Office
  69. BEGIN
  70. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch <> @sBranch)
  71. BEGIN
  72. EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
  73. RETURN
  74. END
  75. END
  76. IF (@tranStatus = 'CancelRequest')
  77. BEGIN
  78. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  79. RETURN
  80. END
  81. IF (@tranStatus = 'Payment')
  82. BEGIN
  83. EXEC proc_errorHandler 1, 'Transaction already been approved and ready for payment', @controlNoEncrypted
  84. RETURN
  85. END
  86. IF (@tranStatus = 'Paid')
  87. BEGIN
  88. EXEC proc_errorHandler 1, 'Transaction is already been paid', @controlNoEncrypted
  89. RETURN
  90. END
  91. IF (@tranStatus = 'Cancel')
  92. BEGIN
  93. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  94. RETURN
  95. END
  96. IF (@tranStatus = 'Lock')
  97. BEGIN
  98. EXEC proc_errorHandler 1, 'Transaction is locked. Please Contact HO', @controlNoEncrypted
  99. RETURN
  100. END
  101. DECLARE @userId INT, @sendPerTxn MONEY, @sendPerDay MONEY, @sendTodays MONEY
  102. SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
  103. SELECT @sendPerDay = sendPerDay, @sendPerTxn = sendPerTxn, @sendTodays = ISNULL(sendTodays, 0) FROM userWiseTxnLimit WITH(NOLOCK) WHERE userId = @userId AND ISNULL(isActive, 'N') = 'Y' AND ISNULL(isDeleted, 'N') = 'N'
  104. IF(@cAmt > @sendPerTxn)
  105. BEGIN
  106. EXEC proc_errorHandler 1, 'Transfer Amount exceeds user per transaction limit.', @controlNoEncrypted
  107. RETURN
  108. END
  109. IF(@sendTodays > @sendPerDay)
  110. BEGIN
  111. EXEC proc_errorHandler 1, 'User Per Day Transaction Limit exceeded.', @controlNoEncrypted
  112. RETURN
  113. END
  114. BEGIN TRANSACTION
  115. UPDATE remitTran SET
  116. tranStatus = 'Payment' --Payment
  117. ,approvedBy = @user
  118. ,approvedDate = GETDATE()
  119. ,approvedDateLocal = DBO.FNADateFormatTZ(GETDATE(), @user)
  120. WHERE controlNo = @controlNoEncrypted
  121. UPDATE userWiseTxnLimit SET
  122. sendTodays = ISNULL(sendTodays, 0) + @cAmt
  123. WHERE userId = @userId AND ISNULL(isActive, 'N') = 'Y'
  124. IF @@TRANCOUNT > 0
  125. COMMIT TRANSACTION
  126. EXEC proc_errorHandler 0, 'Transaction Approved Successfully', @tranId
  127. END
  128. ELSE IF @flag = 'reject'
  129. BEGIN
  130. BEGIN TRANSACTION
  131. UPDATE remitTran SET
  132. tranStatus = 'Cancel' --Cancel
  133. ,approvedBy = @user
  134. ,approvedDate = GETDATE()
  135. ,approvedDateLocal = DBO.FNADateFormatTZ(GETDATE(), @user)
  136. WHERE id = @tranId
  137. --A/C Master
  138. SELECT @cAmt = cAmt FROM remitTran WHERE id = @tranId
  139. UPDATE creditLimit SET
  140. todaysSent = todaysSent - @cAmt
  141. WHERE agentId = (
  142. SELECT parentId FROM agentMaster WHERE agentId = (
  143. SELECT agentId FROM applicationUsers WHERE userName = @user
  144. )
  145. )
  146. IF @@TRANCOUNT > 0
  147. COMMIT TRANSACTION
  148. EXEC [proc_errorHandler] 0, 'Transaction cancelled successfully', @tranId
  149. END
  150. ELSE IF @flag = 'details'
  151. BEGIN
  152. SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  153. SELECT @tranStatus = tranStatus FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
  154. IF (@tranStatus IS NOT NULL)
  155. BEGIN
  156. INSERT INTO tranViewHistory(
  157. controlNumber
  158. ,tranViewType
  159. ,agentId
  160. ,createdBy
  161. ,createdDate
  162. )
  163. SELECT
  164. @controlNoEncrypted
  165. ,'A'
  166. ,@sBranch
  167. ,@user
  168. ,GETDATE()
  169. END
  170. ELSE
  171. BEGIN
  172. EXEC proc_errorHandler 1000, 'No Transaction Found', @controlNoEncrypted
  173. RETURN
  174. END
  175. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch <> @sBranch)
  176. BEGIN
  177. EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
  178. RETURN
  179. END
  180. IF (@tranStatus = 'CancelRequest')
  181. BEGIN
  182. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  183. RETURN
  184. END
  185. IF (@tranStatus = 'Payment')
  186. BEGIN
  187. EXEC proc_errorHandler 1, 'Transaction already been approved and ready for payment', @controlNoEncrypted
  188. RETURN
  189. END
  190. IF (@tranStatus = 'Paid')
  191. BEGIN
  192. EXEC proc_errorHandler 1, 'Transaction is already been paid', @controlNoEncrypted
  193. RETURN
  194. END
  195. IF (@tranStatus = 'Cancel')
  196. BEGIN
  197. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  198. RETURN
  199. END
  200. IF (@tranStatus = 'Lock')
  201. BEGIN
  202. EXEC proc_errorHandler 1, 'Transaction is locked. Please Contact HO', @controlNoEncrypted
  203. RETURN
  204. END
  205. EXEC proc_errorHandler 0, 'Transaction Found', @controlNoEncrypted
  206. SELECT
  207. trn.id
  208. ,controlNo = dbo.FNADecryptString(trn.controlNo)
  209. ,sMemId = sen.membershipId
  210. ,sCustomerId = sen.customerId
  211. ,senderName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  212. ,sCountryName = sen.country
  213. ,sStateName = sen.state
  214. ,sDistrict = sen.district
  215. ,sCity = sen.city
  216. ,sAddress = sen.address
  217. ,sContactNo = COALESCE(sen.mobile, sen.homephone, sen.workphone)
  218. ,sIdType = sen.idType
  219. ,sIdNo = sen.idNumber
  220. ,sValidDate = sen.validDate
  221. ,sEmail = sen.email
  222. ,rMemId = rec.membershipId
  223. ,rCustomerId = rec.customerId
  224. ,receiverName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  225. ,rCountryName = rec.country
  226. ,rStateName = rec.state
  227. ,rDistrict = rec.district
  228. ,rCity = rec.city
  229. ,rAddress = rec.address
  230. ,rContactNo = COALESCE(rec.mobile, rec.homephone, rec.workphone)
  231. ,rIdType = rec.idType
  232. ,rIdNo = rec.idNumber
  233. ,sBranchName = trn.sBranchName
  234. ,sAgentName = CASE WHEN trn.sAgent = trn.sBranch THEN trn.sSuperAgentName ELSE trn.sAgentName END
  235. ,sAgentLocation = sLoc.districtName
  236. ,sAgentDistrict = sa.agentDistrict
  237. ,sAgentCity = sa.agentCity
  238. ,sAgentCountry = sa.agentCountry
  239. ,pAgentName = CASE WHEN trn.pAgentName = trn.pBranchName THEN trn.pSuperAgentName ELSE trn.pAgentName END
  240. ,pBranchName = trn.pBranchName
  241. ,pAgentCountry = trn.pCountry
  242. ,pAgentState = trn.pState
  243. ,pAgentDistrict = trn.pDistrict
  244. ,pAgentLocation = pLoc.districtName
  245. ,pAgentCity = pa.agentCity
  246. ,pAgentAddress = pa.agentAddress
  247. ,trn.tAmt
  248. ,trn.serviceCharge
  249. ,handlingFee = ISNULL(trn.handlingFee, 0)
  250. ,trn.cAmt
  251. ,trn.pAmt
  252. ,relationship = ISNULL(trn.relWithSender, '-')
  253. ,purpose = ISNULL(trn.purposeOfRemit, '-')
  254. ,sourceOfFund = ISNULL(trn.sourceOfFund, '-')
  255. ,collMode = trn.collMode
  256. ,trn.collCurr
  257. ,paymentMethod = trn.paymentMethod
  258. ,trn.payoutCurr
  259. ,BranchName = trn.pBankBranchName
  260. ,trn.accountNo
  261. ,BankName = trn.pBankName
  262. ,trn.tranStatus
  263. ,trn.payStatus
  264. ,payoutMsg = ISNULL(trn.pMessage, '-')
  265. ,trn.createdBy
  266. ,trn.createdDate
  267. FROM remitTran trn WITH(NOLOCK)
  268. LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  269. LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  270. LEFT JOIN agentMaster sa WITH(NOLOCK) ON trn.sBranch = sa.agentId
  271. LEFT JOIN agentMaster pa WITH(NOLOCK) ON trn.pBranch = pa.agentId
  272. LEFT JOIN api_districtList sLoc WITH(NOLOCK) ON sa.agentLocation = sLoc.districtCode
  273. LEFT JOIN api_districtList pLoc WITH(NOLOCK) ON trn.pLocation = pLoc.districtCode
  274. WHERE
  275. trn.controlNo = LTRIM(RTRIM(@controlNoEncrypted))
  276. END
  277. --Load Data For Approve For Agent-----------------------------------------------------------------------------------------
  278. ELSE IF @flag = 's'
  279. BEGIN
  280. SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  281. SET @table = '(
  282. SELECT
  283. trn.id
  284. ,controlNo = dbo.FNADecryptString(trn.controlNo)
  285. ,sCustomerId = sen.customerId
  286. ,senderName = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
  287. ,sCountryName = sen.country
  288. ,sStateName = sen.state
  289. ,sCity = sen.city
  290. ,sAddress = sen.address
  291. ,rCustomerId = rec.customerId
  292. ,receiverName = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  293. ,rCountryName = rec.country
  294. ,rStateName = rec.state
  295. ,rCity = rec.city
  296. ,rAddress = rec.address
  297. FROM remitTran trn WITH(NOLOCK)
  298. LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  299. LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  300. WHERE
  301. trn.tranStatus = ''Hold'' AND
  302. trn.payStatus = ''Unpaid'' AND
  303. trn.approvedBy IS NULL AND
  304. (trn.sBranch = ''' + CAST(@sBranch AS VARCHAR) + ''' OR trn.sAgent = ''' + CAST(@sBranch AS VARCHAR) + ''')
  305. '
  306. SET @sql_filter = ''
  307. IF @controlNo IS NOT NULL
  308. SET @table = @table + ' AND trn.controlNo = ''' + LTRIM(RTRIM(@controlNoEncrypted)) + ''''
  309. IF @sFirstName IS NOT NULL
  310. SET @table = @table + ' AND sen.firstName LIKE ''' + @sFirstName + '%'''
  311. IF @sMiddleName IS NOT NULL
  312. SET @table = @table + ' AND sen.middleName LIKE ''' + @sMiddleName + '%'''
  313. IF @sLastName1 IS NOT NULL
  314. SET @table = @table + ' AND sen.lastName1 LIKE ''' + @sLastName1 + '%'''
  315. IF @sLastName2 IS NOT NULL
  316. SET @table = @table + ' AND sen.lastName2 LIKE ''' + @sLastName2 + '%'''
  317. IF @sMemId IS NOT NULL
  318. SET @table = @table + ' AND sen.membershipId = ' + CAST(@sMemId AS VARCHAR)
  319. IF @rFirstName IS NOT NULL
  320. SET @table = @table + ' AND rec.firstName LIKE ''' + @rFirstName + '%'''
  321. IF @rMiddleName IS NOT NULL
  322. SET @table = @table + ' AND rec.middleName LIKE ''' + @rMiddleName + '%'''
  323. IF @rLastName1 IS NOT NULL
  324. SET @table = @table + ' AND rec.lastName1 LIKE ''' + @rLastName1 + '%'''
  325. IF @rLastName2 IS NOT NULL
  326. SET @table = @table + ' AND rec.lastName2 LIKE ''' + @rLastName2 + '%'''
  327. IF @rMemId IS NOT NULL
  328. SET @table = @table + ' AND c.membershipId = ' + CAST(@rMemId AS VARCHAR)
  329. SET @select_field_list ='
  330. id
  331. ,controlNo
  332. ,sCustomerId
  333. ,senderName
  334. ,sCountryName
  335. ,sStateName
  336. ,sCity
  337. ,sAddress
  338. ,rCustomerId
  339. ,receiverName
  340. ,rCountryName
  341. ,rStateName
  342. ,rCity
  343. ,rAddress
  344. '
  345. SET @table = @table + ') x'
  346. EXEC dbo.proc_paging
  347. @table
  348. ,@sql_filter
  349. ,@select_field_list
  350. ,@extra_field_list
  351. ,@sortBy
  352. ,@sortOrder
  353. ,@pageSize
  354. ,@pageNumber
  355. END
  356. ----------------------------------------------------------------------------------------------------------------
  357. ELSE IF @flag = 'sho'
  358. BEGIN
  359. SET @table = '(
  360. SELECT
  361. trn.id
  362. ,controlNo = dbo.FNADecryptString(trn.controlNo)
  363. ,sCustomerId = sen.customerId
  364. ,senderName = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
  365. ,sCountryName = sen.country
  366. ,sStateName = sen.state
  367. ,sCity = sen.city
  368. ,sAddress = sen.address
  369. ,rCustomerId = rec.customerId
  370. ,receiverName = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  371. ,rCountryName = rec.country
  372. ,rStateName = rec.state
  373. ,rCity = rec.city
  374. ,rAddress = rec.address
  375. FROM remitTran trn WITH(NOLOCK)
  376. LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  377. LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  378. INNER JOIN applicationUsers au WITH(NOLOCK) ON trn.createdBy = au.userName
  379. WHERE
  380. trn.tranStatus = ''Hold'' AND
  381. trn.payStatus = ''Unpaid'' AND
  382. trn.approvedBy IS NULL AND
  383. au.agentId = dbo.FNAGetHOAgentId()
  384. '
  385. SET @sql_filter = ''
  386. IF @controlNo IS NOT NULL
  387. SET @table = @table + ' AND trn.controlNo = ''' + @controlNoEncrypted + ''''
  388. if @cAmt=0
  389. set @cAmt=null
  390. IF @cAmt IS NOT NULL
  391. SET @table = @table + ' AND trn.cAmt = ''' + CAST(@cAmt AS VARCHAR)+ ''''
  392. IF @sFirstName IS NOT NULL
  393. SET @table = @table + ' AND sen.firstName LIKE ''' + @sFirstName + '%'''
  394. IF @sMiddleName IS NOT NULL
  395. SET @table = @table + ' AND sen.middleName LIKE ''' + @sMiddleName + '%'''
  396. IF @sLastName1 IS NOT NULL
  397. SET @table = @table + ' AND sen.lastName1 LIKE ''' + @sLastName1 + '%'''
  398. IF @sLastName2 IS NOT NULL
  399. SET @table = @table + ' AND sen.lastName2 LIKE ''' + @sLastName2 + '%'''
  400. IF @sMemId IS NOT NULL
  401. SET @table = @table + ' AND sen.membershipId = ' + CAST(@sMemId AS VARCHAR)
  402. IF @rFirstName IS NOT NULL
  403. SET @table = @table + ' AND rec.firstName LIKE ''' + @rFirstName + '%'''
  404. IF @rMiddleName IS NOT NULL
  405. SET @table = @table + ' AND rec.middleName LIKE ''' + @rMiddleName + '%'''
  406. IF @rLastName1 IS NOT NULL
  407. SET @table = @table + ' AND rec.lastName1 LIKE ''' + @rLastName1 + '%'''
  408. IF @rLastName2 IS NOT NULL
  409. SET @table = @table + ' AND rec.lastName2 LIKE ''' + @rLastName2 + '%'''
  410. IF @rMemId IS NOT NULL
  411. SET @table = @table + ' AND c.membershipId = ' + CAST(@rMemId AS VARCHAR)
  412. SET @select_field_list ='
  413. id
  414. ,controlNo
  415. ,sCustomerId
  416. ,senderName
  417. ,sCountryName
  418. ,sStateName
  419. ,sCity
  420. ,sAddress
  421. ,rCustomerId
  422. ,receiverName
  423. ,rCountryName
  424. ,rStateName
  425. ,rCity
  426. ,rAddress
  427. '
  428. SET @table = @table + ') x'
  429. --select @table
  430. --return;
  431. EXEC dbo.proc_paging
  432. @table
  433. ,@sql_filter
  434. ,@select_field_list
  435. ,@extra_field_list
  436. ,@sortBy
  437. ,@sortOrder
  438. ,@pageSize
  439. ,@pageNumber
  440. END
  441. ----------------------------------------------------------------------------------------------------------------
  442. ELSE IF @flag = 'va' --Verify Amount
  443. BEGIN
  444. IF NOT EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted)
  445. BEGIN
  446. EXEC proc_errorHandler 1, 'Transaction not found', NULL
  447. END
  448. IF NOT EXISTS(SELECT 'X' FROM remitTran WITh(NOLOCK) WHERE controlNo = @controlNoEncrypted AND cAmt = @cAmt)
  449. BEGIN
  450. EXEC proc_errorHandler 1, 'Collection amount doesnot match. Please enter the correct amount', NULL
  451. RETURN
  452. END
  453. EXEC proc_errorHandler 0, 'Success', NULL
  454. END
  455. GO