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.

453 lines
13 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_payTransactionDetail] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_payTransactionDetail]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_payTransactionDetail] 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 PROCEDURE [dbo].[proc_payTransactionDetail](
  12. @flag VARCHAR(1)
  13. ,@user VARCHAR(50)
  14. ,@rowId BIGINT = NULL
  15. ,@securityNo VARCHAR(50) = NULL
  16. ,@transactionDate DATETIME = NULL
  17. ,@sendingCountry VARCHAR(50) = NULL
  18. ,@senderName VARCHAR(50) = NULL
  19. ,@senderAddress VARCHAR(50) = NULL
  20. ,@senderContactNo VARCHAR(50) = NULL
  21. ,@senderCountry VARCHAR(50) = NULL
  22. ,@senderIdNo VARCHAR(50) = NULl
  23. ,@senderIdType VARCHAR(50) = NULl
  24. ,@recName VARCHAR(50) = NULl
  25. ,@recAddress VARCHAR(50) = NULl
  26. ,@recContactNo VARCHAR(50) = NULl
  27. ,@recIdType VARCHAR(50) = NULl
  28. ,@recIdNo VARCHAR(50) = NULl
  29. ,@pAmount VARCHAR(50) = NULl
  30. ,@relationType VARCHAR(50) = NULl
  31. ,@relativeName VARCHAR(50) = NULl
  32. ,@rIdPlaceOfIssue VARCHAR(50) = NULl
  33. ,@partnerId VARCHAR(30) = NULL
  34. ,@pBranchId VARCHAR(50) = NULL
  35. ,@branchName VARCHAR(200) = NULL
  36. )
  37. AS
  38. IF @Flag='s'
  39. BEGIN
  40. DECLARE @agentGrp INT,@cotrolNo VARCHAR(50),@subPartnerId int
  41. IF @pBranchId IS NOT NULL
  42. SELECT @branchName = agentName, @agentGrp = agentGrp FROM agentMaster am WITH(NOLOCK) WHERE agentId = @pBranchId
  43. DECLARE
  44. @mapCodeDom VARCHAR(50)
  45. ,@tranStatus VARCHAR(50)
  46. ,@tranId INT
  47. ,@payStatus VARCHAR(50)
  48. ,@controlNoEncrypted VARCHAR(50)
  49. ,@agentType VARCHAR(50)
  50. ,@pTxnLocation VARCHAR(50)
  51. ,@pAgentLocation VARCHAR(50)
  52. ,@pAgent VARCHAR(50)
  53. ,@controlNo VARCHAR(50)
  54. ,@paymentMethod VARCHAR(50)
  55. ,@sBranchId VARCHAR(50)
  56. ,@mapCodeInt VARCHAR(50)
  57. ,@lockStatus VARCHAR(50)
  58. ,@payTokenId VARCHAR(50)
  59. IF (@partnerId='IME-D') /***** IME DOMESTIC*****/
  60. BEGIN
  61. IF @pBranchId IS NULL
  62. BEGIN
  63. EXEC proc_errorHandler 1, 'Please Choose Paying Agent', NULL
  64. RETURN
  65. END
  66. SELECT
  67. @mapCodeDom = mapCodeDom,
  68. @agentType = agentType,
  69. @pAgentLocation = agentLocation,
  70. @branchName = agentName
  71. FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranchId
  72. IF (@mapCodeDom IS NULL OR @mapCodeDom = '' OR @mapCodeDom = 0)
  73. BEGIN
  74. EXEC proc_errorHandler 1, 'Invalid Map Code', NULL
  75. RETURN
  76. END
  77. SELECT
  78. @tranStatus = tranStatus,
  79. @tranId = id,
  80. @payStatus = payStatus ,
  81. @controlNoEncrypted = controlNo,
  82. @paymentMethod = paymentMethod,
  83. @sBranchId = sBranch,
  84. @pTxnLocation = pLocation
  85. FROM remitTran WITH(NOLOCK)
  86. WHERE id = LTRIM(RTRIM(@rowId))
  87. IF @tranStatus IS NULL
  88. BEGIN
  89. EXEC proc_errorHandler 1000, 'Transaction not found', NULL
  90. RETURN
  91. END
  92. IF @agentType = 2903
  93. BEGIN
  94. SET @pAgent = @pBranchId
  95. END
  96. INSERT INTO tranViewHistory(controlNumber,tranViewType,agentId,createdBy,createdDate,tranId
  97. )
  98. SELECT @controlNoEncrypted,'PAY',@pBranchId,@user,GETDATE(),@tranId
  99. IF @paymentMethod = 'Bank Deposit'
  100. BEGIN
  101. EXEC proc_errorHandler 1, 'Cannot process payment for Payment Type Bank Deposit', NULL
  102. RETURN
  103. END
  104. IF @sBranchId = @pBranchId
  105. BEGIN
  106. EXEC proc_errorHandler 1, 'Cannot process payment for same POS', @tranId
  107. RETURN
  108. END
  109. IF (@tranStatus = 'CancelRequest')
  110. BEGIN
  111. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  112. RETURN
  113. END
  114. IF (@tranStatus = 'Lock' )
  115. BEGIN
  116. EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
  117. RETURN
  118. END
  119. IF (@tranStatus = 'Block')
  120. BEGIN
  121. EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
  122. RETURN
  123. END
  124. IF (@tranStatus = 'Paid')
  125. BEGIN
  126. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  127. RETURN
  128. END
  129. IF (@payStatus = 'Paid')
  130. BEGIN
  131. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  132. RETURN
  133. END
  134. IF (@tranStatus = 'Hold')
  135. BEGIN
  136. EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
  137. RETURN
  138. END
  139. IF (@tranStatus = 'Cancel')
  140. BEGIN
  141. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  142. RETURN
  143. END
  144. DECLARE @tranDistrictId INT, @payAgentDistrictId INT
  145. SELECT @payAgentDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = @pAgentLocation
  146. SELECT @tranDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = @pTxnLocation
  147. IF @payAgentDistrictId IS NULL
  148. BEGIN
  149. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  150. RETURN
  151. END
  152. IF @tranDistrictId IS NULL
  153. BEGIN
  154. EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
  155. RETURN
  156. END
  157. IF(@tranDistrictId <> @payAgentDistrictId)
  158. BEGIN
  159. EXEC proc_errorHandler 1, 'You are not allowed to pay this TXN. It is not within your district.', @controlNoEncrypted
  160. RETURN
  161. END
  162. EXEC proc_errorHandler 0, 'Transaction Verification Successful', @tranId
  163. SET @payTokenId = SCOPE_IDENTITY()
  164. SELECT TOP 1
  165. rowId =trn.id
  166. ,securityNo =dbo.FNADecryptString(trn.controlNo)
  167. ,transactionDate =trn.createdDateLocal
  168. ,senderName =sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  169. ,senderAddress =sen.address
  170. ,senderCity =sen.city
  171. ,senderMobile =sen.mobile
  172. ,senderTel =sen.homephone
  173. ,senderIdType =sen.idType
  174. ,senderIdNo =sen.idNumber
  175. ,recName =rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  176. ,recAddress =rec.address
  177. ,recMobile =rec.mobile
  178. ,recTelePhone =rec.homephone
  179. ,recIdType =rec.idType
  180. ,recIdNo =rec.idNumber
  181. ,recCity =rec.city
  182. ,recCountry =rec.country
  183. ,pAmount =isnull(trn.pAmt,0)
  184. ,rCurrency =trn.collCurr
  185. ,pCurrency =trn.payoutCurr
  186. ,remarks =pMessage
  187. ,paymentMethod =trn.paymentMethod
  188. ,tokenId =trn.payTokenId
  189. ,amt =tAmt
  190. ,pBranch =trn.pBranch
  191. ,sendingCountry =trn.sCountry
  192. ,sendingAgent =trn.sAgentName
  193. ,branchName =@branchName
  194. ,providerName ='BRN Domestic'
  195. ,orderNo = ''
  196. ,agentGrp = @agentGrp
  197. ,subPartnerId = 0
  198. FROM remitTran trn WITH(NOLOCK)
  199. INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  200. INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  201. WHERE trn.id = LTRIM(RTRIM(@rowId))
  202. -- ## Lock Transaction
  203. UPDATE remitTran SET
  204. payTokenId = @payTokenId
  205. ,tranStatus = 'Lock'
  206. ,lockedBy = @user
  207. ,lockedDate = GETDATE()
  208. ,lockedDateLocal = GETDATE()
  209. WHERE id = LTRIM(RTRIM(@rowId))
  210. -- ## Log Details
  211. SELECT
  212. [message]
  213. ,trn.createdBy
  214. ,trn.createdDate
  215. FROM tranModifyLog trn WITH(NOLOCK)
  216. WHERE trn.tranId = LTRIM(RTRIM(@tranId)) OR ISNULL(trn.controlNo,'') = ISNULL(LTRIM(RTRIM(@controlNoEncrypted)), '')
  217. ORDER BY trn.createdDate DESC
  218. -- ## Compliance pay details Details
  219. SELECT tranId
  220. ,controlNo
  221. ,pBranch
  222. ,receiverName
  223. ,rMemId
  224. ,dob = CONVERT(VARCHAR(10),dob,101)
  225. ,rIdType
  226. ,rIdNumber
  227. ,rPlaceOfIssue
  228. ,rContactNo
  229. ,rRelationType
  230. ,rRelativeName
  231. ,relWithSender
  232. ,purposeOfRemit = ISNULL(sd.detailTitle,purposeOfRemit)
  233. ,purposeOfRemitId = purposeOfRemit
  234. ,reason
  235. ,bankName
  236. ,branchName
  237. ,chequeNo
  238. ,accountNo
  239. ,alternateMobileNo FROM tranPayCompliance tc WITH(NOLOCK)
  240. LEFT JOIN staticDataValue sd WITH(NOLOCK) ON tc.purposeOfRemit=sd.valueId
  241. WHERE tc.tranId = LTRIM(RTRIM(@tranId)) OR ISNULL(tc.controlNo,'') = ISNULL(LTRIM(RTRIM(@controlNoEncrypted)), '')
  242. END
  243. IF (@partnerId='IME-I') /***** IME INTERNATIONAL *****/
  244. BEGIN
  245. IF @pBranchId IS NULL
  246. BEGIN
  247. EXEC proc_errorHandler 1, 'Please Choose Agent', NULL
  248. RETURN
  249. END
  250. SELECT
  251. @mapCodeInt = mapCodeInt
  252. ,@agentType = agentType
  253. ,@pAgentLocation = agentLocation
  254. FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranchId
  255. IF (@mapCodeInt IS NULL OR @mapCodeInt = '' OR @mapCodeInt = 0)
  256. BEGIN
  257. EXEC proc_errorHandler 1, 'Invalid Map Code', NULL
  258. RETURN
  259. END
  260. SELECT
  261. @tranStatus = tranStatus
  262. , @tranId = id
  263. , @lockStatus = lockStatus
  264. , @payStatus = payStatus
  265. , @sBranchId = sBranch
  266. , @paymentMethod = paymentMethod
  267. , @controlNoEncrypted = controlNo
  268. FROM remitTran WITH(NOLOCK) WHERE id = LTRIM(RTRIM(@rowId))
  269. IF @tranStatus IS NULL
  270. BEGIN
  271. EXEC proc_errorHandler 1000, 'Transaction not found', NULL
  272. RETURN
  273. END
  274. IF @agentType = 2903
  275. BEGIN
  276. SET @pAgent = @pBranchId
  277. END
  278. INSERT INTO tranViewHistory(
  279. controlNumber
  280. ,tranViewType
  281. ,agentId
  282. ,createdBy
  283. ,createdDate
  284. ,tranId
  285. )
  286. SELECT
  287. @controlNoEncrypted
  288. ,'PAY'
  289. ,@pBranchId
  290. ,@user
  291. ,GETDATE()
  292. ,@tranId
  293. IF @paymentMethod = 'Bank Deposit'
  294. BEGIN
  295. EXEC proc_errorHandler 1, 'Cannot process payment for Payment Type Bank Deposit', NULL
  296. RETURN
  297. END
  298. IF @sBranchId = @pBranchId
  299. BEGIN
  300. EXEC proc_errorHandler 1, 'Cannot process payment for same POS', @tranId
  301. RETURN
  302. END
  303. IF (@tranStatus = 'CancelRequest')
  304. BEGIN
  305. EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
  306. RETURN
  307. END
  308. IF (@lockStatus = 'Lock' )
  309. BEGIN
  310. EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
  311. RETURN
  312. END
  313. IF (@tranStatus = 'Lock' )
  314. BEGIN
  315. EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
  316. RETURN
  317. END
  318. IF (@tranStatus = 'Block')
  319. BEGIN
  320. EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
  321. RETURN
  322. END
  323. IF (@tranStatus = 'Paid')
  324. BEGIN
  325. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  326. RETURN
  327. END
  328. IF (@payStatus = 'Paid')
  329. BEGIN
  330. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  331. RETURN
  332. END
  333. IF (@tranStatus = 'Hold')
  334. BEGIN
  335. EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
  336. RETURN
  337. END
  338. IF (@tranStatus = 'Cancel')
  339. BEGIN
  340. EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
  341. RETURN
  342. END
  343. EXEC proc_errorHandler 0, 'Transaction Verification Successful', @tranId
  344. SET @payTokenId = SCOPE_IDENTITY()
  345. SELECT TOP 1
  346. rowId =trn.id
  347. ,securityNo =dbo.FNADecryptString(trn.controlNo)
  348. ,transactionDate =trn.createdDateLocal
  349. ,senderName =sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  350. ,senderAddress =sen.address
  351. ,senderCity =sen.city
  352. ,senderMobile =sen.mobile
  353. ,senderTel =sen.homephone
  354. ,senderIdType =sen.idType
  355. ,senderIdNo =sen.idNumber
  356. ,recName =rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  357. ,recAddress =rec.address
  358. ,recMobile =rec.mobile
  359. ,recTelePhone =rec.homephone
  360. ,recIdType =rec.idType
  361. ,recIdNo =rec.idNumber
  362. ,recCity =rec.city
  363. ,recCountry =rec.country
  364. ,pAmount =isnull(trn.pAmt,0)
  365. ,rCurrency =trn.collCurr
  366. ,pCurrency =trn.payoutCurr
  367. ,remarks =pMessage
  368. ,paymentMethod =trn.paymentMethod
  369. ,tokenId =trn.payTokenId
  370. ,amt =trn.pAmt
  371. ,pBranch =trn.pBranch
  372. ,sendingCountry =trn.sCountry
  373. ,sendingAgent =trn.sAgentName
  374. ,branchName =dbo.GetAgentNameFromId(@pBranchId)
  375. ,providerName ='BRN International'
  376. ,orderNo = ''
  377. ,agentGrp = @agentGrp
  378. ,subPartnerId = 0
  379. FROM remitTran trn WITH(NOLOCK)
  380. INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  381. INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  382. WHERE trn.id = LTRIM(RTRIM(@rowId))
  383. -- ## Lock Transaction
  384. UPDATE remitTran SET
  385. payTokenId = @payTokenId
  386. ,lockStatus = 'locked'
  387. ,lockedBy = @user
  388. ,lockedDate = GETDATE()
  389. ,lockedDateLocal = GETDATE()
  390. WHERE id = LTRIM(RTRIM(@rowId))
  391. -- ## Log Details
  392. SELECT
  393. [message]
  394. ,trn.createdBy
  395. ,trn.createdDate
  396. FROM tranModifyLog trn WITH(NOLOCK)
  397. WHERE trn.tranId = LTRIM(RTRIM(@tranId)) OR ISNULL(trn.controlNo,'') = LTRIM(RTRIM(@controlNoEncrypted))
  398. ORDER BY trn.createdDate DESC
  399. -- ## Compliance pay details Details
  400. SELECT tranId
  401. ,controlNo
  402. ,pBranch
  403. ,receiverName
  404. ,rMemId
  405. ,dob = CONVERT(VARCHAR(10),dob,101)
  406. ,rIdType
  407. ,rIdNumber
  408. ,rPlaceOfIssue
  409. ,rContactNo
  410. ,rRelationType
  411. ,rRelativeName
  412. ,relWithSender
  413. ,purposeOfRemit = ISNULL(sd.detailTitle,purposeOfRemit)
  414. ,purposeOfRemitId = purposeOfRemit
  415. ,reason
  416. ,bankName
  417. ,branchName
  418. ,chequeNo
  419. ,accountNo
  420. ,alternateMobileNo FROM tranPayCompliance tc WITH(NOLOCK)
  421. LEFT JOIN staticDataValue sd WITH(NOLOCK) ON tc.purposeOfRemit=sd.valueId
  422. WHERE tc.tranId = LTRIM(RTRIM(@tranId)) OR ISNULL(tc.controlNo,'') = ISNULL(LTRIM(RTRIM(@controlNoEncrypted)), '')
  423. END
  424. END
  425. GO