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.

721 lines
22 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_payDomTransactionHo] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_payDomTransactionHo]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_payDomTransactionHo] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[proc_payDomTransactionHo] (
  12. @flag VARCHAR(50)
  13. ,@controlNo VARCHAR(20) = NULL
  14. ,@user VARCHAR(30) = NULL
  15. ,@agentRefId VARCHAR(20) = NULL
  16. ,@payTokenId VARCHAR(20) = NULL
  17. ,@tranId INT = NULL
  18. ,@sBranchCode VARCHAR(10) = NULL
  19. ,@sAgentCode VARCHAR(10) = NULL
  20. ,@sAgentName VARCHAR(200) = NULL
  21. ,@sBranchName VARCHAR(200) = NULL
  22. ,@txnDate DATETIME = NULL
  23. ,@sFirstName VARCHAR(30) = NULL
  24. ,@sMiddleName VARCHAR(30) = NULL
  25. ,@sLastName1 VARCHAR(30) = NULL
  26. ,@sLastName2 VARCHAR(30) = NULL
  27. ,@sMemId VARCHAR(30) = NULL
  28. ,@sId BIGINT = NULL
  29. ,@sCountry VARCHAR(50) = NULL
  30. ,@sAddress VARCHAR(100) = NULL
  31. ,@sCity VARCHAR(50) = NULL
  32. ,@sMobile VARCHAR(20) = NULL
  33. ,@sIdType VARCHAR(30) = NULL
  34. ,@sIdNo VARCHAR(30) = NULL
  35. ,@sIdValidDate VARCHAR(50) = NULL
  36. ,@sAddress1 VARCHAR(100) = NULL
  37. ,@sAddress2 VARCHAR(100) = NULL
  38. ,@sTranId VARCHAR(50) = NULL
  39. ,@rFirstName VARCHAR(30) = NULL
  40. ,@rMiddleName VARCHAR(30) = NULL
  41. ,@rLastName1 VARCHAR(30) = NULL
  42. ,@rLastName2 VARCHAR(30) = NULL
  43. ,@rMemId VARCHAR(30) = NULL
  44. ,@rId BIGINT = NULL
  45. ,@rCountry VARCHAR(50) = NULL
  46. ,@rAddress VARCHAR(100) = NULL
  47. ,@rCity VARCHAR(50) = NULL
  48. ,@rMobile VARCHAR(30) = NULL
  49. ,@rContactNo VARCHAR(50) = NULL
  50. ,@tAmt MONEY = NULL
  51. ,@cAmt MONEY = NULL
  52. ,@collCurr VARCHAR(3) = NULL
  53. ,@serviceCharge MONEY = NULL
  54. ,@custRate MONEY = NULL
  55. ,@sAgentComm MONEY = NULL
  56. ,@payoutAmt MONEY = NULL
  57. ,@payoutCurr VARCHAR(3) = NULL
  58. ,@paymentType VARCHAR(30) = NULL
  59. ,@sLocation INT = NULL
  60. ,@pLocation INT = NULL
  61. ,@sendUser VARCHAR(50) = NULL
  62. ,@rIdType VARCHAR(30) = NULL
  63. ,@rIdNumber VARCHAR(30) = NULL
  64. ,@rPlaceOfIssue VARCHAR(50) = NULL
  65. ,@rIssuedDate DATETIME = NULL
  66. ,@rValidDate DATETIME = NULL
  67. ,@rRelationType VARCHAR(50) = NULL
  68. ,@rRelativeName VARCHAR(100) = NULL
  69. ,@msgType CHAR(1) = NULL
  70. ,@sql VARCHAR(MAX) = NULL
  71. ,@pBranch INT = NULL
  72. ,@pBranchName VARCHAR(100) = NULL
  73. ,@pAgent INT = NULL
  74. ,@pAgentName VARCHAR(100) = NULL
  75. ,@pSuperAgent INT = NULL
  76. ,@pSuperAgentName VARCHAR(100) = NULL
  77. ,@settlingAgent INT = NULL
  78. ,@mapCode VARCHAR(8) = NULL
  79. ,@mapCodeDom VARCHAR(8) = NULL
  80. ,@fromPayTrnTime VARCHAR(20) = NULL
  81. ,@toPayTrnTime VARCHAR(20) = NULL
  82. ,@extCustomerId VARCHAR(50) = NULL
  83. ,@membershipId VARCHAR(50) = NULL
  84. ,@customerId VARCHAR(50) = NULL
  85. ,@rbankName VARCHAR(50) = NULL
  86. ,@rbankBranch VARCHAR(100) = NULL
  87. ,@rcheque VARCHAR(50) = NULL
  88. ,@rAccountNo VARCHAR(50) = NULL
  89. ,@relationship VARCHAR(100) = NULL
  90. ,@purpose VARCHAR(100) = NULL
  91. ,@dob DATETIME = NULL
  92. )
  93. AS
  94. SET NOCOUNT ON
  95. SET XACT_ABORT ON
  96. DECLARE @tempTicket TABLE(postedBy VARCHAR(50), postedDate DATETIME, comment VARCHAR(200))
  97. DECLARE
  98. @code VARCHAR(50)
  99. ,@userName VARCHAR(50)
  100. ,@password VARCHAR(50)
  101. EXEC proc_GetAPI @user OUTPUT,@code OUTPUT, @userName OUTPUT, @password OUTPUT
  102. DECLARE
  103. @sBranch INT
  104. ,@sAgent INT
  105. ,@sSuperAgent INT
  106. ,@sSuperAgentName VARCHAR(100)
  107. ,@pCountry VARCHAR(100)
  108. ,@pState VARCHAR(100)
  109. ,@pDistrict VARCHAR(100)
  110. ,@pLocationBranch INT
  111. ,@deliveryMethod VARCHAR(100)
  112. ,@pAmt MONEY
  113. ,@pAgentComm MONEY
  114. ,@pAgentCommCurrency VARCHAR(3)
  115. ,@pSuperAgentComm MONEY
  116. ,@pSuperAgentCommCurrency VARCHAR(3)
  117. ,@pHubComm MONEY
  118. ,@pHubCommCurrency VARCHAR(3)
  119. ,@collMode INT
  120. ,@sendingCustType INT
  121. ,@receivingCurrency INT
  122. ,@senderId INT
  123. ,@agentType INT
  124. ,@actAsBranchFlag CHAR(1)
  125. ,@tokenId BIGINT
  126. ,@controlNoEncrypted VARCHAR(20)
  127. ,@commCheck MONEY
  128. ,@tranType CHAR(1)
  129. ,@receiverName VARCHAR(100)
  130. ,@complianceAction CHAR(1)
  131. ,@compApproveRemark VARCHAR(200)
  132. ,@msg VARCHAR(200)
  133. DECLARE
  134. @pCountryId INT = NULL
  135. ,@deliveryMethodId INT = NULL
  136. ,@sCountryId INT = NULL
  137. ,@tranStatus VARCHAR(20) = NULL
  138. ,@pDistrictApi INT
  139. ,@pDistrictBranch INT
  140. ,@lockedBy VARCHAR(50)
  141. ,@payStatus VARCHAR(50)
  142. ,@IsSettlingAgent CHAR(1)
  143. SELECT @controlNo = UPPER(LTRIM(RTRIM(@controlNo)))
  144. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  145. IF @flag = 'payTran'
  146. BEGIN
  147. IF @user IS NULL
  148. BEGIN
  149. EXEC proc_errorHandler 1, 'Your session has expired. Please relogin to the system.', @controlNo
  150. RETURN
  151. END
  152. SELECT
  153. @tranId = id
  154. ,@deliveryMethod = paymentMethod
  155. ,@sCountry = sCountry
  156. ,@sBranch = sBranch
  157. ,@payoutAmt = pAmt
  158. ,@pLocation = pLocation
  159. ,@tranStatus = tranStatus
  160. ,@lockedBy = lockedBy
  161. ,@payStatus = payStatus
  162. FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
  163. SELECT
  164. @agentType = agentType
  165. , @pAgent = parentId
  166. , @pBranchName = agentName
  167. , @pState = agentState
  168. , @pDistrict = agentDistrict
  169. , @mapCode = mapCodeInt
  170. , @mapCodeDom = mapCodeDom
  171. , @pLocationBranch = agentLocation
  172. ,@IsSettlingAgent = isSettlingAgent
  173. FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  174. SET @mapCodeDom = @pAgent
  175. IF @IsSettlingAgent = 'Y'
  176. SET @mapCodeDom = @pBranch
  177. IF @tranStatus IS NULL
  178. BEGIN
  179. EXEC proc_errorHandler 1, 'Cannot post transaction for invalid transaction number', NULL
  180. RETURN
  181. END
  182. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch = @pBranch)
  183. BEGIN
  184. EXEC proc_errorHandler 1, 'Cannot process for same POS', @controlNoEncrypted
  185. RETURN
  186. END
  187. IF (@tranStatus = 'CancelRequest')
  188. BEGIN
  189. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  190. RETURN
  191. END
  192. IF (@tranStatus = 'Block')
  193. BEGIN
  194. EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
  195. RETURN
  196. END
  197. IF (@tranStatus = 'Paid')
  198. BEGIN
  199. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  200. RETURN
  201. END
  202. IF (@payStatus = 'Paid')
  203. BEGIN
  204. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  205. RETURN
  206. END
  207. IF (@tranStatus = 'Hold')
  208. BEGIN
  209. EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
  210. RETURN
  211. END
  212. IF (@tranStatus = 'Cancel')
  213. BEGIN
  214. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  215. RETURN
  216. END
  217. IF @tranStatus <> 'Lock'
  218. BEGIN
  219. EXEC proc_errorHandler 1, 'Your time for paying this transaction has expired. Please try again after a while.', @controlNoEncrypted
  220. RETURN
  221. END
  222. IF @lockedBy <> @user
  223. BEGIN
  224. EXEC proc_errorHandler 1, 'You are not authorised to pay this transaction at this time. Please try again after a while', @controlNoEncrypted
  225. RETURN
  226. END
  227. IF @rValidDate IS NOT NULL AND @rIdType <> 'Citizenship'
  228. BEGIN
  229. IF @rValidDate < CAST(CONVERT(VARCHAR,GETDATE(),101) AS DATETIME)
  230. BEGIN
  231. EXEC proc_errorHandler 1, 'Cannot process transaction, as Id is going to expire soon.', @customerId
  232. RETURN
  233. END
  234. END
  235. -- Start Location Verfication
  236. SELECT @pDistrictApi = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = @pLocation
  237. SELECT @pDistrictBranch = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = @pLocationBranch
  238. IF @pDistrictApi IS NULL
  239. BEGIN
  240. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  241. RETURN
  242. END
  243. IF @pDistrictBranch IS NULL
  244. BEGIN
  245. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  246. RETURN
  247. END
  248. IF @pDistrictApi <> @pDistrictBranch
  249. BEGIN
  250. EXEC proc_errorHandler 1, 'You are not allowed to pay this TXN. It is not within your district.', @controlNo
  251. RETURN
  252. END
  253. --End of Location Verification
  254. DECLARE @userId INT, @payPerTxn MONEY, @payPerDay MONEY, @payTodays MONEY
  255. SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
  256. SELECT @payPerDay = payPerDay, @payPerTxn = payPerTxn, @payTodays = ISNULL(payTodays, 0)
  257. FROM userWiseTxnLimit WITH(NOLOCK) WHERE userId = @userId AND ISNULL(isDeleted, 'N') = 'N'
  258. IF(@payoutAmt > @payPerTxn)
  259. BEGIN
  260. EXEC proc_errorHandler 1, 'Transfer Amount exceeds user per Pay Transaction Limit.', @controlNoEncrypted
  261. RETURN
  262. END
  263. IF(@payTodays > @payPerDay)
  264. BEGIN
  265. EXEC proc_errorHandler 1, 'User Per Day Pay Transaction Limit exceeded.', @controlNoEncrypted
  266. RETURN
  267. END
  268. --Check for branch or agent acting as branch
  269. IF @agentType = 2903
  270. BEGIN
  271. SET @pAgent = @pBranch
  272. END
  273. SELECT @pSuperAgent = parentId, @pAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
  274. SELECT @pSuperAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pSuperAgent
  275. --Commission Calculation Start
  276. SELECT @deliveryMethodId = serviceTypeId FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = @deliveryMethod AND ISNULL(isDeleted, 'N') = 'N'
  277. SELECT @pCountryId = 151
  278. SELECT @sCountryId = 151
  279. SELECT @pCountry = 'Nepal'
  280. SELECT @sCountry = 'Nepal'
  281. SELECT
  282. @pAgentComm = ISNULL(pAgentComm, 0)
  283. ,@pSuperAgentComm = ISNULL(psAgentComm, 0)
  284. ,@commCheck = pAgentComm
  285. FROM dbo.FNAGetDomesticPayComm(@sBranch, @pBranch, @deliveryMethodId, @payoutAmt)
  286. SELECT @pAgentCommCurrency = 'NPR', @pSuperAgentCommCurrency = 'NPR'
  287. IF @commCheck IS NULL
  288. BEGIN
  289. EXEC proc_errorHandler 1, 'Commission not defined. Please contact HO', @controlNo
  290. RETURN
  291. END
  292. -------Compliance Check Begin----------
  293. IF NOT EXISTS(SELECT 'X' FROM remitTranCompliancePay WITH(NOLOCK) WHERE tranId = @tranId AND approvedDate IS NOT NULL)
  294. BEGIN
  295. DECLARE @csMasterId INT, @complianceRes VARCHAR(20), @totalRows INT, @count INT, @compFinalRes VARCHAR(20), @result VARCHAR(MAX)
  296. DECLARE @csMasterRec TABLE (rowId INT IDENTITY(1,1), masterId INT)
  297. INSERT @csMasterRec(masterId)
  298. SELECT masterId FROM dbo.FNAGetComplianceRuleMaster_Pay(@pBranch, @pCountryId, NULL, @pBranch, NULL, NULL, @customerId)
  299. SELECT @totalRows = COUNT(*) FROM @csMasterRec
  300. DECLARE @denyTxn CHAR(1) = 'N'
  301. IF EXISTS(SELECT 'X' FROM @csMasterRec)
  302. BEGIN
  303. DELETE FROM remitTranCompliancePayTemp WHERE tranId = @tranId
  304. SET @count = 1
  305. WHILE(@count <= @totalRows)
  306. BEGIN
  307. SELECT @csMasterId = masterId FROM @csMasterRec WHERE rowId = @count
  308. EXEC proc_complianceRuleDetail_Pay
  309. @user = @user
  310. ,@tranId = @tranId
  311. ,@tAmt = @pAmt
  312. ,@customerId = @customerId
  313. ,@receiverId = @rIdNumber
  314. ,@receiverMemId = @membershipId
  315. ,@receiverName = @receiverName
  316. ,@receiverMobile = @rMobile
  317. ,@receiverAcNo = @rAccountNo
  318. ,@masterId = @csMasterId
  319. ,@paymentMethod = @deliveryMethodId
  320. ,@checkingFor = 'v'
  321. ,@result = @complianceRes OUTPUT
  322. SET @compFinalRes = ISNULL(@compFinalRes, '') + ISNULL(@complianceRes, '')
  323. IF @complianceRes = 'M' AND ISNULL(@complianceAction, '') <> 'C'
  324. SET @complianceAction = 'M'
  325. IF @complianceRes = 'C'
  326. SET @complianceAction = 'C'
  327. SET @count = @count + 1
  328. END
  329. END
  330. IF(ISNULL(@compFinalRes, '') <> '')
  331. BEGIN
  332. IF(@compFinalRes <> '')
  333. BEGIN
  334. IF EXISTS(SELECT 'X' FROM remitTranCompliancePayTemp WITH(NOLOCK) WHERE tranId = @tranId)
  335. BEGIN
  336. INSERT INTO remitTranCompliancePay(tranId, csDetailTranId, matchTranId)
  337. SELECT @tranId, csDetailTranId, matchTranId FROM remitTranCompliancePayTemp WITH(NOLOCK) WHERE tranId = @tranId
  338. INSERT tranPayCompliance(tranId,provider,controlNo,pBranch,receiverName,rMemId,dob,
  339. rIdType,rIdNumber,rPlaceOfIssue,rContactNo,rRelationType,rRelativeName,relWithSender,purposeOfRemit,createdBy,createdDate,bankName,branchName,chequeNo,accountNo,IdIssuedDate,IdExpiryDate)
  340. SELECT @tranId, '1002' , @controlNoEncrypted,@pBranch,@receiverName,@membershipId,@dob,
  341. @rIdType,@rIdNumber,@rPlaceOfIssue,@rMobile,@rRelationType,@rRelativeName,@relationship,@purpose,@user,GETDATE(),@rbankName,@rbankBranch,@rcheque,@raccountNo,@rIssuedDate,@rValidDate
  342. DELETE FROM dbo.remitTranCompliancePayTemp WHERE tranId = @tranId
  343. END
  344. IF ISNULL(@complianceAction, '') = 'M'
  345. BEGIN
  346. UPDATE remitTran SET
  347. tranStatus = 'Hold'
  348. WHERE id = @tranId
  349. UPDATE remitTranCompliancePay SET
  350. approvedRemarks = 'Marked for Compliance'
  351. ,approvedBy = 'system'
  352. ,approvedDate = GETDATE()
  353. WHERE tranId = @tranId
  354. UPDATE tranPayCompliance SET
  355. approvedRemarks = 'Marked for Compliance'
  356. ,approvedBy = 'system'
  357. ,approvedDate = GETDATE()
  358. WHERE tranId = @tranId
  359. END
  360. ELSE
  361. BEGIN
  362. UPDATE remitTran SET
  363. tranStatus = 'Compliance Hold Pay'
  364. WHERE id = @tranId
  365. END
  366. END
  367. IF ISNULL(@complianceAction, '') = 'C'
  368. BEGIN
  369. SET @msg = 'Sorry, This transaction is in compliance hold and cannot processed further. Please contact HO.'
  370. END
  371. SELECT 101 errorCode,@msg msg, NULL id
  372. RETURN
  373. END
  374. END
  375. -------Compliance Check End----------
  376. BEGIN TRANSACTION
  377. UPDATE remitTran SET
  378. pAgentComm = @pAgentComm
  379. ,pAgentCommCurrency = @pAgentCommCurrency
  380. ,pSuperAgentComm = @pSuperAgentComm
  381. ,pSuperAgentCommCurrency = @pSuperAgentCommCurrency
  382. ,pHubComm = @pHubComm
  383. ,pHubCommCurrency = @pHubCommCurrency
  384. ,pBranch = @pBranch
  385. ,pBranchName = @pBranchName
  386. ,pAgent = @pAgent
  387. ,pAgentName = @pAgentName
  388. ,pSuperAgent = @pSuperAgent
  389. ,pSuperAgentName = @pSuperAgentName
  390. ,pCountry = @pCountry
  391. ,pState = @pState
  392. ,pLocation = @pLocation
  393. ,pDistrict = @pDistrict
  394. ,tranStatus = 'Paid'
  395. ,payStatus = 'Paid'
  396. ,paidDate = dbo.FNAGetDateInNepalTZ()
  397. ,paidDateLocal = dbo.FNAGetDateInNepalTZ()
  398. ,paidBy = @user
  399. WHERE controlNo = @controlNoEncrypted
  400. UPDATE tranReceivers SET
  401. idType2 = @rIdType
  402. ,idNumber2 = @rIdNumber
  403. ,issuedDate2 = @rIssuedDate
  404. ,validDate2 = @rValidDate
  405. ,idPlaceOfIssue2 = @rPlaceOfIssue
  406. ,mobile = @rMobile
  407. ,homePhone = @rContactNo
  408. ,relationType = @rRelationType
  409. ,relativeName = @rRelativeName
  410. ,customerId = @customerId
  411. ,membershipId = @membershipId
  412. ,bankName = @rbankName
  413. ,branchName = @rbankBranch
  414. ,chequeNo = @rcheque
  415. ,accountNo = @raccountNo
  416. ,relWithSender = @relationship
  417. ,purposeOfRemit = @purpose
  418. ,dob = @dob
  419. WHERE tranId = @tranId
  420. IF @membershipId IS NOT NULL
  421. BEGIN
  422. UPDATE dbo.customerMaster SET
  423. paidTxn = ISNULL(paidTxn,0)+1,
  424. firstTxnDate = ISNULL(firstTxnDate,GETDATE())
  425. WHERE membershipId = @membershipId
  426. END
  427. EXEC FastMoneyPro_account.dbo.PROC_REMIT_DATA_UPDATE
  428. @flag = 'p'
  429. ,@mapCode = @mapCodeDom
  430. ,@user = @user
  431. ,@pAgentComm = @pAgentComm
  432. ,@controlNo = @controlNo
  433. -- ## Limit Update
  434. EXEC Proc_AgentBalanceUpdate @flag = 'p',@tAmt = @payoutAmt ,@settlingAgent = @pBranch
  435. IF @@TRANCOUNT > 0
  436. COMMIT TRANSACTION
  437. EXEC [proc_errorHandler] 0, 'Transaction has been paid successfully', @controlNo
  438. END
  439. IF @flag = 'paySearch'
  440. BEGIN
  441. IF @pBranch IS NULL
  442. BEGIN
  443. EXEC proc_errorHandler 1, 'Please Choose Agent', NULL
  444. RETURN
  445. END
  446. SELECT @mapCodeDom = mapCodeDom FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  447. IF (@mapCodeDom IS NULL OR @mapCodeDom = '' OR @mapCodeDom = 0)
  448. BEGIN
  449. EXEC proc_errorHandler 1, 'Invalid Map Code', NULL
  450. RETURN
  451. END
  452. SELECT
  453. @tranStatus = tranStatus,
  454. @tranId = id,
  455. @payStatus = payStatus
  456. FROM remitTran WITH(NOLOCK)
  457. WHERE controlNo = @controlNoEncrypted
  458. IF @tranStatus IS NULL
  459. BEGIN
  460. EXEC proc_errorHandler 1000, 'Transaction not found', NULL
  461. RETURN
  462. END
  463. SELECT @agentType = agentType, @pLocation = agentLocation FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  464. IF @agentType = 2903 --Agent
  465. BEGIN
  466. SET @pAgent = @pBranch
  467. END
  468. IF @tranStatus IS NOT NULL
  469. BEGIN
  470. INSERT INTO tranViewHistory(
  471. controlNumber
  472. ,tranViewType
  473. ,agentId
  474. ,createdBy
  475. ,createdDate
  476. ,tranId
  477. )
  478. SELECT
  479. @controlNoEncrypted
  480. ,'PAY'
  481. ,@pBranch
  482. ,@user
  483. ,GETDATE()
  484. ,@tranId
  485. SET @payTokenId = SCOPE_IDENTITY()
  486. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND paymentMethod = 'Bank Deposit')
  487. BEGIN
  488. EXEC proc_errorHandler 1, 'Cannot process payment for Payment Type Bank Deposit', NULL
  489. RETURN
  490. END
  491. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch = @pBranch)
  492. BEGIN
  493. EXEC proc_errorHandler 1, 'Cannot process payment for same POS', @tranId
  494. RETURN
  495. END
  496. IF (@tranStatus = 'CancelRequest')
  497. BEGIN
  498. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  499. RETURN
  500. END
  501. IF (@tranStatus = 'Lock' )
  502. BEGIN
  503. EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
  504. RETURN
  505. END
  506. IF (@tranStatus = 'Block')
  507. BEGIN
  508. EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
  509. RETURN
  510. END
  511. IF (@tranStatus = 'Paid')
  512. BEGIN
  513. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  514. RETURN
  515. END
  516. IF (@payStatus = 'Paid')
  517. BEGIN
  518. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  519. RETURN
  520. END
  521. IF (@tranStatus = 'Hold')
  522. BEGIN
  523. EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
  524. RETURN
  525. END
  526. IF (@tranStatus = 'Cancel')
  527. BEGIN
  528. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  529. RETURN
  530. END
  531. DECLARE @tranDistrictId INT, @payAgentDistrictId INT
  532. --Checking payout location for domestic txn
  533. SELECT @payAgentDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = @pLocation
  534. SELECT @tranDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = (SELECT pLocation FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted)
  535. IF @payAgentDistrictId IS NULL
  536. BEGIN
  537. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  538. RETURN
  539. END
  540. IF @tranDistrictId IS NULL
  541. BEGIN
  542. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  543. RETURN
  544. END
  545. IF(@tranDistrictId <> @payAgentDistrictId)
  546. BEGIN
  547. EXEC proc_errorHandler 1, 'You are not allowed to pay this TXN. It is not within your district.', @controlNoEncrypted
  548. RETURN
  549. END
  550. EXEC proc_errorHandler 0, 'Transaction Verification Successful', @tranId
  551. -->>Start:Checking pay tran for 30 days expiry days & more than 3,00,000 transaction
  552. DECLARE @checkPayTran TABLE(tSetFlag VARCHAR(10), eSetFlag VARCHAR(10))
  553. DECLARE @tSetFlag VARCHAR(10), @eSetFlag VARCHAR(10)
  554. --INSERT INTO @checkPayTran(tSetFlag, eSetFlag)
  555. --EXEC proc_checkPayLock @user ='admin', @controlNo = @controlNoEncrypted, @agentId = @pBranch
  556. SELECT @tSetFlag = tSetFlag, @eSetFlag = eSetFlag FROM @checkPayTran
  557. --<<End:Checking pay tran for 30 days expiry days & more than 3,00,000 transaction
  558. --End of Validation
  559. SELECT
  560. trn.id
  561. ,controlNo = dbo.FNADecryptString(trn.controlNo)
  562. ,sMemId = sen.membershipId
  563. ,sCustomerId = sen.customerId
  564. ,senderName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  565. ,sCountryName = sen.country
  566. ,sStateName = sen.state
  567. ,sDistrict = sen.district
  568. ,sCity = sen.city
  569. ,sAddress = sen.address
  570. ,sContactNo = COALESCE(sen.mobile, sen.homephone, sen.workphone)
  571. ,sIdType = sen.idType
  572. ,sIdNo = sen.idNumber
  573. ,sValidDate = sen.validDate
  574. ,sEmail = sen.email
  575. ,rMemId = rec.membershipId
  576. ,rCustomerId = rec.customerId
  577. ,receiverName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  578. ,rCountryName = rec.country
  579. ,rStateName = rec.state
  580. ,rDistrict = rec.district
  581. ,rCity = rec.city
  582. ,rAddress = rec.address
  583. ,rContactNo = COALESCE(rec.mobile, rec.homephone, rec.workphone)
  584. ,rIdType = rec.idType
  585. ,rIdNo = rec.idNumber
  586. ,sAgent = trn.sBranchName
  587. ,sAgentCountry = sa.agentCountry
  588. ,pBranchName = ISNULL(trn.pBranchName, 'Any')
  589. ,pCountryName = trn.pCountry
  590. ,pStateName = trn.pState
  591. ,pDistrictName = trn.pDistrict
  592. ,pLocationName = pLoc.districtName
  593. ,pAddress = pa.agentAddress
  594. ,trn.tAmt
  595. ,trn.serviceCharge
  596. ,handlingFee = ISNULL(trn.handlingFee, 0)
  597. ,trn.cAmt
  598. ,trn.pAmt
  599. ,relationship = ISNULL(trn.relWithSender, '-')
  600. ,purpose = ISNULL(trn.purposeOfRemit, '-')
  601. ,sourceOfFund = ISNULL(trn.sourceOfFund, '-')
  602. ,trn.pAmt
  603. ,collMode = trn.collMode
  604. ,paymentMethod = trn.paymentMethod
  605. ,trn.payoutCurr
  606. ,trn.tranStatus
  607. ,trn.payStatus
  608. ,payoutMsg = ISNULL(trn.pMessage, '-')
  609. ,send_agent = COALESCE(trn.sBranchName, trn.sAgentName)
  610. ,txn_date = trn.createdDateLocal
  611. ,payTokenId = @payTokenId
  612. ,tSetFlag = @tSetFlag
  613. ,eSetFlag = @eSetFlag
  614. FROM remitTran trn WITH(NOLOCK)
  615. LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  616. LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  617. LEFT JOIN agentMaster sa WITH(NOLOCK) ON trn.sBranch = sa.agentId
  618. LEFT JOIN agentMaster pa WITH(NOLOCK) ON trn.pBranch = pa.agentId
  619. LEFT JOIN api_districtList pLoc WITH(NOLOCK) ON trn.pLocation = pLoc.districtCode
  620. WHERE trn.controlNo = @controlNoEncrypted
  621. --End of Select payout details
  622. --Lock Transaction
  623. UPDATE remitTran SET
  624. payTokenId = @payTokenId
  625. ,tranStatus = 'Lock'
  626. ,lockedBy = @user
  627. ,lockedDate = GETDATE()
  628. ,lockedDateLocal = GETDATE()
  629. WHERE controlNo = @controlNoEncrypted
  630. --End of Lock Transaction
  631. --Log Details
  632. SELECT
  633. [message]
  634. ,trn.createdBy
  635. ,trn.createdDate
  636. FROM tranModifyLog trn WITH(NOLOCK)
  637. WHERE trn.tranId = @tranId OR ISNULL(trn.controlNo,'') = ISNULL(@controlNoEncrypted, '')
  638. ORDER BY trn.createdDate DESC
  639. --End of Log Details
  640. END
  641. END
  642. GO