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.

418 lines
15 KiB

1 year ago
  1. SET QUOTED_IDENTIFIER ON
  2. SET ANSI_NULLS ON
  3. GO
  4. /*
  5. mobile_proc_txnDetail @flag='detail'
  6. */
  7. ALTER PROC mobile_proc_txnDetail(
  8. @flag VARCHAR(100)=NULL
  9. ,@User VARCHAR(100)=NULL
  10. ,@SenderId VARCHAR(100)=NULL
  11. ,@ReceiverId VARCHAR(100)=NULL
  12. ,@DeliveryMethodId VARCHAR(100)=NULL
  13. ,@PBranch VARCHAR(100)=NULL
  14. ,@PAgent VARCHAR(100)=NULL
  15. ,@PCurr VARCHAR(100)=NULL
  16. ,@CollCurr VARCHAR(100)=NULL
  17. ,@CollAmt VARCHAR(100)=NULL
  18. ,@PayoutAmt VARCHAR(100)=NULL
  19. ,@TransferAmt VARCHAR(100)=NULL
  20. ,@ServiceCharge VARCHAR(100)=NULL
  21. ,@Discount VARCHAR(100)=NULL
  22. ,@ExRate VARCHAR(100)=NULL
  23. ,@CalBy VARCHAR(100)=NULL
  24. ,@IpAddress VARCHAR(100)=NULL
  25. ,@TpExRate VARCHAR(100)=NULL
  26. ,@TpPCurr VARCHAR(100)=NULL
  27. ,@PayOutPartner VARCHAR(100)=NULL
  28. ,@FOREX_SESSION_ID VARCHAR(100)=NULL
  29. ,@KftcLogId VARCHAR(100)=NULL
  30. ,@PaymentType VARCHAR(100)=NULL
  31. ,@IsAgreed VARCHAR(100)=NULL
  32. ,@TxnPassword VARCHAR(100)=NULL
  33. ,@ProcessId VARCHAR(100)=NULL
  34. ,@ReceiverAccountNo VARCHAR(100)=NULL
  35. ,@controlNo VARCHAR(30) =NULL
  36. ,@tranId BIGINT =NULL
  37. ,@Message VARCHAR(200)=NULL
  38. ,@Xml XML =NULL
  39. )AS
  40. SET NOCOUNT ON;
  41. SET XACT_ABORT ON;
  42. BEGIN
  43. IF @flag='detail'
  44. BEGIN
  45. DECLARE @ErrorCode VARCHAR(10)='0',@Msg VARCHAR(100)='Success'
  46. IF ISNULL(@IsAgreed,'False') = 'False'
  47. BEGIN
  48. EXEC proc_errorHandler '1','Please agree term and condition.' ,null
  49. RETURN
  50. END
  51. IF @PaymentType NOT IN ('WALLET','AUTODEBIT')
  52. BEGIN
  53. EXEC proc_errorHandler '1','Oops something went wrong,Please relogin and try again.' ,null
  54. RETURN
  55. END
  56. --IF @PaymentType = 'AUTODEBIT'
  57. --BEGIN
  58. -- IF NOT EXISTS(SELECT 'A' FROM KFTC_CUSTOMER_SUB(NOLOCK) WHERE RowId = @KftcLogId)
  59. -- BEGIN
  60. -- EXEC proc_errorHandler '1','Invalid auto debit transaction requested.' ,null
  61. -- RETURN
  62. -- END
  63. --END
  64. IF OBJECT_ID('tempdb..#sender') IS NOT NULL
  65. DROP TABLE #sender
  66. IF OBJECT_ID('tempdb..#receiver') IS NOT NULL
  67. DROP TABLE #receiver
  68. IF EXISTS(SELECT 'A' FROM dbo.customerMaster(NOLOCK) WHERE customerId = @SenderId AND sourceOfFund IS NULL)
  69. UPDATE dbo.customerMaster SET sourceOfFund = 'Family maintenance' WHERE customerId = @SenderId
  70. IF EXISTS(SELECT 'A' FROM dbo.receiverInformation(NOLOCK) WHERE receiverId = @ReceiverId AND purposeOfRemit IS NULL)
  71. UPDATE dbo.receiverInformation SET purposeOfRemit = 'Family maintenance' WHERE receiverId = @ReceiverId
  72. SELECT TOP 1
  73. (SELECT firstName FROM dbo.FNASplitName(CM.firstName)) as SenderFirstName
  74. ,(SELECT middleName FROM dbo.FNASplitName(CM.firstName)) as SenderMiddleName
  75. ,(SELECT lastName1+ ISNULL(' '+lastName2,'') FROM dbo.FNASplitName(CM.firstName)) as SenderLastName1
  76. ,'' SenderLastName2
  77. ,CASE WHEN idType='8008' THEN '2059-12-12' ELSE CM.idExpiryDate END as SenderIdExpiryDate
  78. ,CM.occupation as SenderOccuption
  79. ,FORMAT(CM.dob,'yyyy/MM/dd') as SenderBirthDate
  80. ,CASE WHEN @PayOutPartner='415207' THEN '' ELSE CM.email END as SenderEmail
  81. ,CM.city as SenderCity
  82. ,CM.postalCode as SenderPostalCode
  83. ,CM.nativeCountry as SenderNativeCountry
  84. ,(SELECT TOP 1 SDV.detailTitle FROM dbo.staticDataValue (NOLOCK)AS SDV WHERE SDV.valueId=CM.idType) as SenderIdType
  85. ,CM.idNumber as SenderIdNo
  86. ,CM.mobile as SenderMobile
  87. ,ISNULL(CM.address,CM.city+',South Korea') as SenderAddress
  88. ,sourceOfFund = ISNULL(CM.sourceOfFund,'Family maintenance')
  89. ,'1' AS SS
  90. INTO #sender
  91. FROM dbo.customerMaster(NOLOCK) AS CM
  92. WHERE CM.customerId = @SenderId
  93. IF EXISTS(SELECT 'A' FROM receiverInformation(NOLOCK) WHERE receiverId = @ReceiverId AND customerId = @SenderId AND ISNULL(state,'0') ='0')
  94. UPDATE receiverInformation SET state='Any State',district='Any District' WHERE receiverId = @ReceiverId AND customerId = @SenderId
  95. SELECT TOP 1
  96. ReceiverFullName = RI.firstName + ISNULL(' '+RI.middleName,'')+ ISNULL(' '+RI.lastName1,'')+ ISNULL(' '+RI.lastName2,'')
  97. ,RI.firstName AS ReceiverFirstName
  98. ,ReceiverMiddleName = CASE WHEN LEN(RI.lastName2)>1 AND RI.country='Uzbekistan' THEN RI.middleName +ISNULL(' '+RI.lastName1,'') ELSE RI.middleName END
  99. ,ReceiverLastName = CASE WHEN LEN(RI.lastName2)>1 AND RI.country='Uzbekistan' THEN RI.lastName2 ELSE ISNULL(RI.lastName1,'')+ISNULL(' '+RI.lastName2,'') END
  100. ----,ISNULL(RI.lastName1,'')+ISNULL(' '+RI.lastName2,'') as ReceiverLastName
  101. ,'' as ReceiverIdType
  102. ,'' as ReceiverIdNo
  103. ,'' as ReceiverIdValid
  104. ,'' as ReceiverDob
  105. ,RI.homePhone as ReceiverTel
  106. ,RI.mobile as ReceiverMobile
  107. ,RI.nativeCountry as ReceiverNativeCountry
  108. ,ISNULL(RI.city,RI.address) as ReceiverCity
  109. ,RI.address as ReceiverAdd1
  110. ,RI.email as ReceiverEmail
  111. ,UPPER(@ReceiverAccountNo) AS ReceiverAccountNo
  112. ,CM.countryName as ReceiverCountry
  113. ,CM.countryId as ReceiverCountryId
  114. ,swl.rowId AS RState
  115. ,RI.state AS RStateText
  116. ,Sl.rowId AS RLocation
  117. ,RI.district AS RLocationText
  118. ,'1' AS RR
  119. ,RI.purposeOfRemit
  120. ,RI.relationship
  121. INTO #receiver
  122. FROM dbo.receiverInformation(NOLOCK) AS RI
  123. INNER JOIN dbo.countryMaster(NOLOCK) AS CM ON RI.country=CM.countryName
  124. LEFT JOIN dbo.tblSubLocation (NOLOCK) sl ON sl.subLocation=ri.district
  125. LEFT JOIN dbo.tblServicewiseLocation (NOLOCK) swl ON swl.location=ri.state
  126. WHERE RI.receiverId = @ReceiverId
  127. AND RI.customerId = @SenderId
  128. DECLARE @PBranchName VARCHAR(100),@PAgentName VARCHAR(100)
  129. SELECT @PBranchName = AM.agentName FROM dbo.agentMaster(NOLOCK) AS AM WHERE AM.agentId = @PBranch
  130. SELECT @PAgentName = AM.agentName FROM dbo.agentMaster(NOLOCK) AS AM WHERE AM.agentId = @PAgent
  131. --415207:xpress money, Pakistan bank branch is required (live only)
  132. SET @PBranchName = CASE WHEN @PayOutPartner = '415207' AND @PBranchName IS NULL THEN 'Any Branch' ELSE @PBranchName END
  133. --SELECT * FROM #sender AS S
  134. --SELECT * FROM #receiver AS R
  135. ----## USED FOR RIA
  136. DECLARE @partnerCostRate MONEY , @PaymentAmount DECIMAL(8,2)=0.0
  137. SELECT @partnerCostRate = pCurrCostRate FROM dbo.exRateCalcHistory(NOLOCK) WHERE FOREX_SESSION_ID = @FOREX_SESSION_ID
  138. IF @PayOutPartner = 393865
  139. SET @PaymentAmount = ROUND(CONVERT(DECIMAL(8,2),CONVERT(MONEY,@PayoutAmt)/@partnerCostRate),2)
  140. SELECT
  141. @ErrorCode AS ErrorCode
  142. ,@Msg AS Msg
  143. ,@User as [User]
  144. ,@SenderId as SenderId
  145. ,S.*
  146. ,@ReceiverId as ReceiverId
  147. ,R.*
  148. ,DeliveryMethod = (select typeTitle from serviceTypeMaster(nolock) where serviceTypeId = @DeliveryMethodId)
  149. ,@DeliveryMethodId as DeliveryMethodId
  150. ,@PBranch as PBranch
  151. ,@PBranchName as PBranchName
  152. ,'' as PBranchCity
  153. ,@PAgent as PAgent
  154. ,@PAgentName as PAgentName
  155. ,'M' as PBankType
  156. ,@PCurr as PCurr
  157. ,@CollCurr as CollCurr
  158. ,@CollAmt as CollAmt
  159. ,@PayoutAmt as PayoutAmt
  160. ,@PaymentAmount as PaymentAmount
  161. ,@TransferAmt as TransferAmt
  162. ,@ServiceCharge as ServiceCharge
  163. ,@Discount as Discount
  164. ,@ExRate as ExRate
  165. ,@CalBy as CalBy
  166. ,PurposeOfRemittance = R.purposeOfRemit
  167. ,RelWithSender = R.relationship
  168. ,Occupation = S.SenderOccuption
  169. ,'' as PayoutMsg
  170. ,'2080' as SendingAgent
  171. ,'GME Online' as SendingAgentName
  172. ,'1008' as SendingSuperAgent
  173. ,@IpAddress as IpAddress
  174. ,'118' as SCountryId
  175. ,'South Korea' as SenderCountry
  176. ,'' as AgentRefId
  177. ,'2080' as SBranch
  178. ,@TpExRate as TpExRate
  179. ,@TpPCurr as TpPCurr
  180. ,'' as TpRefNo
  181. ,'' as TpTranId
  182. ,@PayOutPartner as PayOutPartner
  183. ,@FOREX_SESSION_ID as FOREX_SESSION_ID
  184. ,@KftcLogId as KftcLogId
  185. ,@PaymentType as PaymentType
  186. ,@ProcessId as ProcessId
  187. ,'' as DepositMode
  188. FROM #sender AS S INNER JOIN #receiver AS R ON R.RR=S.SS
  189. END
  190. ELSE IF @flag='track-transaction'
  191. BEGIN
  192. DECLARE @payStatus VARCHAR(100);
  193. IF NOT EXISTS(SELECT 'x' FROM dbo.remitTran(NOLOCK) rt WHERE rt.controlNo=dbo.FNAEncryptString(@controlNo))
  194. BEGIN
  195. SELECT '1' ErrorCode, 'Control No Not Found' Msg, NULL Id
  196. RETURN
  197. END
  198. --@payStatus= CASE WHEN (rt.payStatus='Unpaid' AND rt.transtatus='Payment') THEN 'In Send Queue'
  199. -- WHEN (rt.payStatus = 'Post' AND rt.tranStatus = 'Payment') THEN 'Ready for Payment'
  200. -- WHEN (rt.payStatus='Unpaid' AND rt.transtatus='Hold') THEN 'Waiting for Approval'
  201. -- WHEN (rt.payStatus='Unpaid' AND rt.transtatus='Compliance Hold') THEN 'Waiting for Approval'
  202. -- ELSE rt.payStatus
  203. -- END
  204. SELECT
  205. errorCode='0'
  206. ,payStatus=rt.payStatus
  207. ,bank=rt.pBankName
  208. ,branch=rt.pBankBranchName
  209. ,AccountNo=rt.accountNo
  210. ,Receiver=rt.receiverName
  211. ,SendDate=CONVERT(VARCHAR(10),rt.createdDate,120)
  212. ,CollAmt=CAST(rt.cAmt AS DECIMAL)
  213. ,PayAmount=rt.pAmt
  214. FROM remittran(NOLOCK) rt
  215. WHERE dbo.FNAEncryptString(@controlNo)=rt.controlNo
  216. END
  217. ELSE IF @flag='amend-transaction'
  218. BEGIN
  219. SET @controlNo = dbo.FNAEncryptString(@controlNo)
  220. select @tranId = id from remittran where holdTranId = @tranId
  221. IF NOT EXISTS(SELECT 'x' FROM dbo.remitTran(NOLOCK) rt WHERE rt.controlNo = @controlNo AND rt.Id = @tranId)
  222. BEGIN
  223. SELECT '1' ErrorCode, 'Wrong Control No/TransactionId.' Msg, NULL Id
  224. --SELECT '1' ErrorCode, 'Hello world.' + dbo.fnadecryptstring(@controlNo) + isnull(cast(@tranId as varchar),'') Msg, NULL Id
  225. RETURN
  226. END
  227. INSERT INTO tranModifyLog(tranId,controlNo,[message],createdBy,createdDate,MsgType,[status] )
  228. SELECT @tranId,@controlNo,'Amend Request: ' + @message,@user,GETDATE(),'MODIFY','REQUEST'
  229. SELECT '0' ErrorCode,'Your request for Amend transaction is successful...' Msg,NULL Id
  230. END
  231. ELSE IF @flag='amend-transaction-v2'
  232. BEGIN
  233. DECLARE @holdTranId BIGINT = NULL, @OldValue VARCHAR(250), @FieldName VARCHAR(100), @FieldValue VARCHAR(250), @TranStatus VARCHAR(50), @PaymentMethod VARCHAR(50)
  234. SELECT IDENTITY(INT, 1, 1) AS RowId
  235. ,[ColumnName] = p.value('@CloumnName', 'VARCHAR(100)')
  236. ,[ColumnValue] = p.value('@ColumnValue', 'VARCHAR(200)')
  237. INTO #TempAmendTable
  238. FROM @xml.nodes('/root/row') AS tmp ( p );
  239. IF NOT EXISTS (SELECT TOP 1 1 FROM #TempAmendTable)
  240. BEGIN
  241. SELECT '1' ErrorCode, 'No data to amend/update request.' Msg, NULL Id
  242. RETURN
  243. END
  244. SET @controlNo = dbo.FNAEncryptString(@controlNo)
  245. SELECT @holdTranId = holdTranId
  246. , @TranStatus = tranStatus
  247. , @PayStatus = PayStatus
  248. , @PaymentMethod = paymentMethod
  249. FROM remitTran (NOLOCK)
  250. WHERE controlNo = @controlNo
  251. AND createdBy = @User
  252. IF @holdTranId IS NULL
  253. BEGIN
  254. SELECT '2' ErrorCode, 'Invalid transaction.' Msg, NULL Id
  255. RETURN
  256. END
  257. IF @TranStatus IN ('Cancel', 'Paid')
  258. BEGIN
  259. SELECT '3' ErrorCode, 'Transaction can not be requested for amendment/update.' Msg, NULL Id
  260. RETURN
  261. END
  262. IF @PayStatus IN ('Cancel', 'Paid')
  263. BEGIN
  264. SELECT '3' ErrorCode, 'Transaction can not be requested for amendment/update.' Msg, NULL Id
  265. RETURN
  266. END
  267. IF ISNULL(@PaymentMethod, '') <> 'Bank Deposit' AND EXISTS(SELECT * FROM #TempAmendTable WHERE [ColumnName] = 'accountNo')
  268. BEGIN
  269. SELECT '4' ErrorCode, 'Invalid transaction to update account number.' Msg, NULL Id
  270. RETURN
  271. END
  272. IF EXISTS(SELECT 'X'
  273. FROM tranModifyLog TML(NOLOCK)
  274. INNER JOIN #TempAmendTable TMP ON TMP.[ColumnName] = TML.fieldName
  275. WHERE TML.[status] = 'Request'
  276. AND TML.tranId = @holdTranId
  277. )
  278. BEGIN
  279. EXEC proc_errorHandler 5,'Cannot Insert Duplicate Request!',NULL
  280. RETURN
  281. END
  282. ALTER TABLE #TempAmendTable ADD IsUpdated BIT, [NewColumnName] VARCHAR(80)
  283. UPDATE #TempAmendTable SET IsUpdated = 0
  284. UPDATE #TempAmendTable SET [NewColumnName] = [ColumnName]
  285. UPDATE #TempAmendTable SET [NewColumnName] = 'receiverName' WHERE [ColumnName] IN ('firstName', 'LastName', 'MiddleName')
  286. DECLARE @RowId INT, @ReceiverName VARCHAR(250)
  287. WHILE EXISTS(SELECT * FROM #TempAmendTable WHERE IsUpdated = 0)
  288. BEGIN
  289. IF EXISTS(SELECT * FROM #TempAmendTable WHERE IsUpdated = 0 AND [NewColumnName] = 'receiverName')
  290. BEGIN
  291. SELECT @ReceiverName = [ColumnValue]
  292. FROM #TempAmendTable
  293. WHERE IsUpdated = 0
  294. AND [ColumnName] = 'firstName'
  295. SELECT @ReceiverName = ISNULL(@ReceiverName, '')
  296. SELECT @ReceiverName = @ReceiverName + ISNULL(' ' + [ColumnValue], '')
  297. FROM #TempAmendTable
  298. WHERE IsUpdated = 0
  299. AND [ColumnName] = 'MiddleName'
  300. SELECT @ReceiverName = @ReceiverName + ISNULL(' ' + [ColumnValue], '')
  301. FROM #TempAmendTable
  302. WHERE IsUpdated = 0
  303. AND [ColumnName] = 'LastName'
  304. UPDATE #TempAmendTable SET IsUpdated = 1 WHERE IsUpdated = 0 AND [NewColumnName] = 'receiverName'
  305. SELECT @RowId = 0, @fieldName = 'receiverName', @FieldValue = NULL
  306. END
  307. ELSE
  308. BEGIN
  309. SET @ReceiverName = NULL
  310. SELECT @RowId = RowId
  311. , @FieldName = [ColumnName]
  312. , @FieldValue = [ColumnValue]
  313. FROM #TempAmendTable
  314. WHERE IsUpdated = 0
  315. END
  316. --rIdType must be table.column.detailTitle of table.staticDataValue
  317. SELECT @tranId = rt.id
  318. , @OldValue = CASE
  319. WHEN @fieldName = 'rIdType' THEN ISNULL(tr.idType, tr.idType2)
  320. WHEN @fieldName = 'rAddress' THEN tr.address
  321. WHEN @fieldName = 'rContactNo' THEN tr.mobile
  322. WHEN @fieldName = 'rIdNo' THEN tr.idNumber
  323. WHEN @fieldName = 'accountNo' THEN rt.accountNo
  324. WHEN @fieldName = 'receiverName' THEN tr.firstName + ISNULL(' ' + tr.middleName, '') + ISNULL(' ' + tr.lastName1, '') + ISNULL(' ' + tr.lastName2, '')
  325. END
  326. FROM remitTran rt WITH(NOLOCK)
  327. INNER JOIN tranReceivers tr WITH(NOLOCK) ON rt.id = tr.tranId
  328. WHERE rt.holdTranId = @holdTranId
  329. -->> ## INSERTING REQUESTED LIST
  330. INSERT INTO tranModifyLog(tranId,controlNo, MESSAGE, createdBy, createdDate,status ,fieldName , fieldValue,msgType,oldValue)
  331. SELECT @holdTranId,@controlNo,ISNULL(@fieldName, 'NULL')+' [<b>'+isnull(@oldValue,'')+'</b>] has been requested to change by [<b>' + ISNULL(@ReceiverName, @FieldValue)+'</b>]'
  332. , @User, GETDATE(),'REQUEST',@fieldName, ISNULL(@ReceiverName, @FieldValue), 'MODIFY', @oldValue
  333. UPDATE #TempAmendTable SET IsUpdated = 1 WHERE RowId = @RowId
  334. END
  335. UPDATE remitTran
  336. SET tranStatus ='ModificationRequest'
  337. WHERE controlNo=@controlNo
  338. SELECT '0' ErrorCode,'Your request for Amend transaction is successful...' Msg,NULL Id
  339. END
  340. ELSE IF @flag='cancel-transaction'
  341. BEGIN
  342. IF NOT EXISTS(SELECT 'x' FROM dbo.remitTran(NOLOCK) rt WHERE rt.controlNo=dbo.FNAEncryptString(@controlNo) AND (rt.id=@tranId OR rt.holdtranid = @tranId))
  343. BEGIN
  344. SELECT '1' ErrorCode, 'Wrong Control No/TransactionId.' Msg, NULL Id
  345. RETURN
  346. END
  347. IF EXISTS(SELECT 'x' FROM dbo.remitTran(NOLOCK) rt WHERE rt.controlNo=dbo.FNAEncryptString(@controlNo) AND (rt.id=@tranId OR rt.holdtranid = @tranId) AND tranStatus IN ('CancelRequest', 'Cancel') )
  348. BEGIN
  349. SELECT '2' ErrorCode, 'Transaction already cancelled or requested.' Msg, NULL Id
  350. RETURN
  351. END
  352. INSERT INTO tranModifyLog(tranId,controlNo,[message],createdBy,createdDate,MsgType,[status] )
  353. SELECT @tranId,@controlNo,'Cancel Request: ' + @message,@user,GETDATE(),'CANCEL','REQUEST'
  354. INSERT INTO tranCancelrequest(tranId, controlNo, cancelReason, cancelStatus, createdBy, createdDate, tranStatus)
  355. SELECT ID, CONTROLNO, @message, 'CancelRequest', @user, GETDATE(), tranStatus
  356. FROM dbo.remitTran(NOLOCK) rt WHERE rt.controlNo=dbo.FNAEncryptString(@controlNo) AND (rt.id=@tranId OR rt.holdtranid = @tranId)
  357. UPDATE dbo.remitTran SET tranStatus='CancelRequest'
  358. WHERE controlNo=dbo.FNAEncryptString(@controlNo)
  359. AND (id=@tranId OR holdtranid = @tranId)
  360. SELECT '0' ErrorCode,'Your request for Cancel transaction is successful...' Msg,NULL Id
  361. END
  362. END
  363. GO