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.

402 lines
14 KiB

1 year ago
  1. CREATE OR ALTER PROC proc_TransactionModification
  2. @flag VARCHAR(50) = NULL
  3. ,@controlNo VARCHAR(20) = NULL
  4. ,@rowId INT = NULL
  5. ,@newValue VARCHAR(500) = NULL
  6. ,@oldValue VARCHAR(500) = NULL
  7. ,@changeType VARCHAR(200) = NULL
  8. ,@user VARCHAR(100) = NULL
  9. ,@ScChargeMod MONEY = NULL
  10. ,@createdBy VARCHAR(100) = NULL
  11. ,@fieldValue VARCHAR(MAX) = NULL
  12. ,@fieldName VARCHAR(MAX) = NULL
  13. ,@pageNumber INT = NULL
  14. ,@branchId INT = NULL
  15. ,@tranId BIGINT = NULL
  16. ,@apiSuccess CHAR(1) = NULL
  17. AS
  18. SET NOCOUNT ON;
  19. BEGIN TRY
  20. DECLARE @message VARCHAR(100)
  21. ,@encryptedControlNo VARCHAR(100)
  22. ,@pCountry VARCHAR(100)
  23. ,@MAXID INT
  24. ,@MINID INT
  25. ,@modifyId INT
  26. ,@payoutPartner VARCHAR(20)
  27. /* For Modification */
  28. DECLARE @FirstName VARCHAR(100)
  29. ,@MiddleName VARCHAR(100)
  30. ,@LastName VARCHAR(100)
  31. ,@lastName1 VARCHAR(100)
  32. ,@LastName2 VARCHAR(100)
  33. ,@xml XML
  34. ,@receiverName VARCHAR(200)
  35. ,@senderName VARCHAR(200)
  36. ,@isPatner CHAR(1)
  37. ,@Paystatus VARCHAR(20)
  38. ,@tranStatus VARCHAR(20)
  39. /*
  40. 393228 CONTACT Settling Agent
  41. 393863 DUTCH-BANGLA BANK LTD.
  42. 415208 Xpress Money Settling Agent
  43. */
  44. IF @controlNo IS NOT NULL
  45. SELECT @encryptedControlNo = dbo.FNAEncryptString(@controlNo)
  46. SELECT TOP 1 @tranId = id,@Paystatus = payStatus, @isPatner = CASE WHEN pAgent IN(393228,393864,415208,585120) THEN 'Y' ELSE 'N' END
  47. ,@payoutPartner = CASE WHEN pAgent ='393228' THEN 'CONTACT'
  48. WHEN pAgent ='393864' THEN 'DBBL'
  49. WHEN pAgent ='415208' THEN 'XPRESS'
  50. WHEN pAgent ='585120' THEN 'KORONAPAY'
  51. END
  52. ,@tranStatus=tranStatus
  53. FROM dbo.remitTran (NOLOCK)
  54. WHERE controlNo = @encryptedControlNo
  55. IF @flag = 'i' -->> TXN modification Rquest part
  56. BEGIN
  57. IF (@fieldName ='accountNo' AND LEN(@newValue) < 5)
  58. BEGIN
  59. EXEC proc_errorHandler 0,'Account number field is out of range. Min Size 5 characters.',NULL
  60. RETURN
  61. END
  62. IF (@fieldName ='senderName' AND LEN(@newValue) > 100)
  63. BEGIN
  64. EXEC proc_errorHandler 0,'Sender name field is out of range. Max Size 100 characters.',NULL
  65. RETURN
  66. END
  67. IF (@fieldName ='receiverName' AND LEN(@newValue) > 100)
  68. BEGIN
  69. EXEC proc_errorHandler 0,'Receiver name field is out of range. Max Size 100 characters.',NULL
  70. RETURN
  71. END
  72. IF (@fieldName ='rAddress' AND LEN(@newValue) > 150)
  73. BEGIN
  74. EXEC proc_errorHandler 0,'Receiver address field is out of range. Max Size 100 characters.',NULL
  75. RETURN
  76. END
  77. IF (@fieldName ='rContactNo' AND LEN(@newValue) > 20)
  78. BEGIN
  79. EXEC proc_errorHandler 0,'Receiver contact field is out of range. Max Size 20 characters.',NULL
  80. RETURN
  81. END
  82. IF (@fieldName ='rIdNo' AND LEN(@newValue) > 50)
  83. BEGIN
  84. EXEC proc_errorHandler 0,'Receiver id number field is out of range. Max Size 50 characters.',NULL
  85. RETURN
  86. END
  87. IF EXISTS(
  88. SELECT 'X' FROM tranModifyLog
  89. WHERE fieldName = @fieldName
  90. AND [status] = 'Request'
  91. AND controlNo = @encryptedControlNo
  92. )
  93. BEGIN
  94. EXEC proc_errorHandler 0,'Transaction already requested for modification',NULL
  95. RETURN
  96. END
  97. IF EXISTS(SELECT 'A' FROM remitTran(nolock) where controlNo = @encryptedControlNo)
  98. BEGIN
  99. SELECT @tranId = rt.id, @oldValue = CASE
  100. WHEN @fieldName ='rIdType' THEN ISNULL(c.idType, c.idType2)
  101. WHEN @fieldName ='rAddress' THEN c.address
  102. WHEN @fieldName ='rContactNo' THEN c.mobile
  103. WHEN @fieldName ='rIdNo' THEN c.idNumber
  104. WHEN @fieldName ='accountNo' THEN rt.accountNo
  105. WHEN @fieldName ='senderName' THEN b.firstName + ISNULL(' '+b.middleName,'') + ISNULL(' '+b.lastName1,'') + ISNULL(' '+b.lastName2,'')
  106. WHEN @fieldName ='receiverName' THEN c.firstName + ISNULL(' '+c.middleName,'') + ISNULL(' '+c.lastName1,'') + ISNULL(' '+c.lastName2,'')
  107. END
  108. FROM remitTran rt WITH(NOLOCK)
  109. INNER JOIN tranSenders b WITH(NOLOCK) ON rt.id=b.tranId
  110. INNER JOIN tranReceivers c WITH(NOLOCK) ON rt.id=c.tranId
  111. WHERE rt.controlNo = @encryptedControlNo
  112. -->> ## INSERTING REQUESTED LIST
  113. INSERT INTO tranModifyLog(tranId,controlNo, MESSAGE, createdBy, createdDate,status ,fieldName , fieldValue,msgType,oldValue)
  114. SELECT @tranId,@encryptedControlNo,ISNULL(@changeType,'NULL')+' [<b>'+isnull(@oldValue,'')+'</b>] has been requested to change by [<b>' + ISNULL(@newValue, 'NULL')+'</b>]', @user, GETDATE(),'Request',@fieldName,@fieldValue,'MODIFY',@oldValue
  115. -->> ## SELECTING REQUESTED LIST
  116. SELECT [message],ScChargeMod,rowId FROM tranModifyLog(NOLOCK)
  117. WHERE [status] = 'Request' AND controlNo = @encryptedControlNo
  118. END
  119. END
  120. ELSE IF @flag = 'update'
  121. BEGIN
  122. IF NOT EXISTS(SELECT 'X' FROM tranModifyLog(NOLOCK) WHERE [status] = 'Request' AND controlNo = @encryptedControlNo AND createdBy = @user)
  123. BEGIN
  124. EXEC proc_errorHandler 1,'Please add the modification detail!',@controlNo
  125. RETURN;
  126. END
  127. IF @isPatner = 'Y'
  128. BEGIN
  129. IF OBJECT_ID('tempdb..#TEMPTABLE') IS NOT NULL
  130. DROP TABLE #TEMPTABLE
  131. CREATE TABLE #TEMPTABLE
  132. (
  133. tranId INT NULL,
  134. modifyId INT NULL,
  135. fieldName VARCHAR(100) NULL,
  136. fieldValue VARCHAR(MAX) NULL,
  137. oldValue VARCHAR(500) NULL,
  138. MSG VARCHAR(MAX) NULL
  139. )
  140. INSERT INTO #TEMPTABLE(tranId,modifyId,fieldName,fieldValue,oldValue,MSG)
  141. SELECT @tranId,rowId,fieldName,fieldValue,oldValue,message
  142. FROM tranModifyLog(NOLOCK)
  143. WHERE tranId = @tranId AND STATUS = 'Request'
  144. AND createdBy = @user
  145. ALTER TABLE #TEMPTABLE ADD rowId INT IDENTITY(1,1)
  146. SELECT @MAXID = MAX(rowId) FROM #TEMPTABLE
  147. SET @MINID = 1
  148. WHILE @MAXID >= @MINID
  149. BEGIN
  150. SELECT @modifyId = modifyId,
  151. @fieldName = fieldName,
  152. @fieldValue = fieldValue,
  153. @oldValue = oldValue
  154. FROM #TEMPTABLE WITH(NOLOCK)
  155. WHERE rowId = @MINID
  156. IF @fieldName = 'senderName'
  157. BEGIN
  158. SET @xml = @fieldValue
  159. SELECT
  160. @firstName = p.value('@firstName','VARCHAR(50)')
  161. ,@middleName = p.value('@middleName','VARCHAR(50)')
  162. ,@lastName1 = p.value('@firstLastName','VARCHAR(50)')
  163. ,@lastName2 = p.value('@secondLastName','VARCHAR(50)')
  164. FROM @xml.nodes('/root/row') AS tmp(p)
  165. SELECT @firstName = UPPER(@firstName), @middleName = UPPER(@middleName), @lastName1 = UPPER(@lastName1), @lastName2 = UPPER(@lastName2)
  166. SET @senderName = @firstName + ISNULL(' '+@middleName,'') + ISNULL(' '+@lastName1,'') + ISNULL(' '+@lastName2,'')
  167. UPDATE tranSenders SET
  168. firstName = ISNULL(@firstName,'')
  169. ,middleName = ISNULL(@middleName,'')
  170. ,lastName1 = ISNULL(@lastName1,'')
  171. ,lastName2 = ISNULL(@lastName2,'')
  172. ,fullName = @senderName
  173. WHERE tranId = @tranId
  174. UPDATE remitTran SET
  175. senderName = @senderName
  176. WHERE id = @tranId
  177. SET @message = 'Sender Name [<b>'+@oldValue+'</b>] has been replaced to [<b>' + ISNULL(@firstName, '') + ISNULL(' ' + @middleName, '') + ISNULL(' ' + @lastName1, '') + ISNULL(' ' +@lastName2, '')+'</b>]'
  178. END
  179. ELSE IF @fieldName = 'receiverName'
  180. BEGIN
  181. SET @xml = @fieldValue
  182. SELECT
  183. @firstName = p.value('@firstName','VARCHAR(50)')
  184. ,@middleName = p.value('@middleName','VARCHAR(50)')
  185. ,@lastName1 = p.value('@firstLastName','VARCHAR(50)')
  186. ,@lastName2 = p.value ('@secondLastName','VARCHAR(50)')
  187. FROM @xml.nodes('/root/row') AS tmp(p)
  188. SELECT @firstName = UPPER(@firstName), @middleName = UPPER(@middleName), @lastName1 = UPPER(@lastName1), @lastName2 = UPPER(@lastName2)
  189. SET @receiverName = @firstName + ISNULL(' ' + @middleName, '') + ISNULL(' ' + @lastName1, '') + ISNULL(' ' + @lastName2, '')
  190. UPDATE tranReceivers SET
  191. firstName = ISNULL(@firstName,'')
  192. ,middleName = ISNULL(@middleName,'')
  193. ,lastName1 = ISNULL(@lastName1,'')
  194. ,lastName2 = ISNULL(@lastName2,'')
  195. ,fullName = @receiverName
  196. WHERE tranId = @tranId
  197. UPDATE remitTran SET
  198. receiverName = @receiverName
  199. WHERE id = @tranId
  200. SET @message = 'Receiver Name [<b>'+@oldValue+'</b>] has been replaced to [<b>' + ISNULL(@firstName, '') + ISNULL(' ' + @middleName, '') + ISNULL(' ' + @lastName1, '') + ISNULL(' ' + @lastName2, '')+'</b>]'
  201. END
  202. ELSE IF @fieldName = 'rIdType'
  203. BEGIN
  204. UPDATE tranReceivers SET idType = @fieldValue WHERE tranId = @tranId
  205. SET @message = 'Receiver Id Type [<b>'+ISNULL(@oldValue, '') +'</b>] has been replaced to [<b>'+isnull(@fieldValue,'')+'</b>]'
  206. END
  207. ELSE IF @fieldName = 'rAddress'
  208. BEGIN
  209. UPDATE tranReceivers SET address = @fieldValue WHERE tranId = @tranId
  210. SET @message = 'Receiver Address [<b>'+ISNULL(@oldValue, '')+'</b>] has been replaced to [<b>'+isnull(@fieldValue,'')+'</b>]'
  211. END
  212. ELSE IF @fieldName = 'rContactNo'
  213. BEGIN
  214. UPDATE tranReceivers SET mobile = @fieldValue WHERE tranId = @tranId
  215. SET @message = 'Receiver Contact No [<b>'+ISNULL(@oldValue, '')+'</b>] has been replaced to [<b>'+isnull(@fieldValue,'')+'</b>]'
  216. END
  217. ELSE IF @fieldName = 'rIdNo'
  218. BEGIN
  219. UPDATE tranReceivers SET idNumber = @fieldValue WHERE tranId = @tranId
  220. SET @message = 'Receiver ID No [<b>'+ISNULL(@oldValue, '')+'</b>] has been replaced to [<b>'+isnull(@fieldValue,'')+'</b>]'
  221. END
  222. ELSE IF @fieldName = 'accountNo'
  223. BEGIN
  224. UPDATE remitTran SET accountNo = @fieldValue WHERE id = @tranId
  225. SET @message = 'Receiver Bank Ac No [<b>'+ISNULL(@oldValue, '')+'</b>] has been replaced to [<b>'+isnull(@fieldValue,'')+'</b>]'
  226. END
  227. UPDATE tranModifyLog SET
  228. MESSAGE = @message
  229. ,MsgType = 'MODIFY'
  230. ,status = CASE WHEN @Paystatus = 'Unpaid' AND @tranStatus = 'Payment' THEN 'ModificationRequest'
  231. WHEN @Paystatus = 'Post' AND @tranStatus = 'Payment' THEN 'ModificationRequest'
  232. END
  233. ,resolvedBy = CASE WHEN @Paystatus = 'Unpaid' AND @tranStatus = 'Payment' THEN @user ELSE RESOLVEDBY END
  234. ,resolvedDate = CASE WHEN @Paystatus = 'Unpaid' AND @tranStatus = 'Payment' THEN GETDATE() ELSE resolvedDate END
  235. WHERE rowId = @modifyId AND status = 'Request'
  236. SET @MINID = @MINID + 1
  237. END
  238. UPDATE remitTran
  239. SET tranStatus = CASE WHEN @Paystatus = 'Unpaid' AND tranStatus = 'Payment' THEN tranStatus
  240. WHEN @Paystatus = 'Post' AND tranStatus = 'Payment' THEN 'ModificationRequest'
  241. ELSE tranStatus
  242. END
  243. WHERE controlNo = @encryptedControlNo
  244. AND tranStatus = 'Payment' AND payStatus IN('UNPAID','POST')
  245. SELECT '0' errorCode,'The modification request has been completed.' Msg,@controlNo id, @isPatner Extra
  246. RETURN
  247. END
  248. ELSE
  249. BEGIN
  250. -->> UPDATE LOCAL DB STATUS AS ModificationRequest
  251. UPDATE remitTran
  252. SET tranStatus = 'ModificationRequest'
  253. WHERE controlNo = @encryptedControlNo
  254. AND tranStatus = 'Payment' AND payStatus IN('UNPAID','POST')
  255. SELECT '0' errorCode,'The modification request has been processed.GME Remit Help Desk will get back to you shortly' Msg,@controlNo id, @isPatner Extra
  256. RETURN
  257. END
  258. END
  259. ELSE IF @flag = 'details'
  260. BEGIN
  261. IF EXISTS(SELECT 'A' FROM remitTran(nolock) where controlNo = @encryptedControlNo AND tranStatus = 'ModificationRequest' )
  262. BEGIN
  263. IF @payoutPartner = 'KORONAPAY'
  264. BEGIN
  265. SELECT TOP 1
  266. firstName = tr.firstName
  267. ,middleName = ISNULL(tr.middleName,'')
  268. ,lastName = ISNULL(tr.lastName1,'') + ISNULL(' ' +tr.lastName2,'')
  269. ,phone = ISNULL(tr.mobile,'')
  270. ,GmeControlNo = ISNULL(rt.ContNo,'')--- unique id send from api response
  271. ,RefrenceNo = ISNULL(rt.ContNo,'')--- unique id send from api response
  272. ,rt.payStatus
  273. ,providerName = 'KORONAPAY'
  274. FROM remitTran rt WITH(NOLOCK)
  275. INNER JOIN tranReceivers tr WITH(NOLOCK) ON rt.id = tr.tranId
  276. WHERE rt.controlNo = @encryptedControlNo
  277. AND tranStatus = 'ModificationRequest'
  278. RETURN
  279. END
  280. ELSE IF @payoutPartner = 'CONTACT'
  281. BEGIN
  282. EXEC PROC_SCHEDULER_PUSH_TXN_CONTACT @flag='modification-request',@ControlNo = @controlNo
  283. RETURN
  284. END
  285. ELSE IF @payoutPartner = 'XPRESS'
  286. BEGIN
  287. EXEC PROC_SCHEDULAR_UPDATE_TXN_XPRESS @flag='modification-request',@ControlNo = @controlNo
  288. RETURN
  289. END
  290. ELSE IF @payoutPartner = 'DBBL'
  291. BEGIN
  292. EXEC PROC_SCHEDULAR_PUSH_TXN_DBBL @flag='modification-request',@ControlNo = @controlNo
  293. RETURN
  294. END
  295. ELSE IF @payoutPartner = 'MONEYGRAM'
  296. BEGIN
  297. SELECT
  298. '601410' AS PartnerId
  299. ,dbo.FNADecryptString(controlNo) AS ControlNo
  300. ,id AS TranId
  301. ,'http://localhost:59420/MoneyGram' AS [url]
  302. , '62412ABE-2CBB-4EB6-8584-45F5FFFD2FE3' AS [authorization]
  303. FROM dbo.remitTran(NOLOCK)
  304. WHERE ControlNo = dbo.FNAEncryptString(@controlNo)
  305. RETURN
  306. END
  307. END
  308. END
  309. ELSE IF @flag='statusUpdate'
  310. BEGIN
  311. IF @apiSuccess = 'Y'
  312. BEGIN
  313. UPDATE remitTran
  314. SET tranStatus = 'Payment'
  315. WHERE controlNo = @encryptedControlNo AND tranStatus = 'ModificationRequest'
  316. -->> ## INSERTING REQUESTED LIST
  317. INSERT INTO tranModifyLog(tranId,controlNo, MESSAGE, createdBy, createdDate,status ,msgType,resolvedBy,resolvedDate)
  318. SELECT @tranId,@encryptedControlNo,'Thirdparty API Modification request success', @user, GETDATE(),'Approved','MODIFY',@user,GETDATE()
  319. EXEC proc_errorHandler 0,'Modification request success',@controlNo
  320. RETURN;
  321. END
  322. ELSE
  323. BEGIN
  324. -->> ## INSERTING REQUESTED LIST
  325. INSERT INTO tranModifyLog(tranId,controlNo, MESSAGE, createdBy, createdDate,status ,msgType)
  326. SELECT @tranId,@encryptedControlNo,'Thirdparty API Modification request failed', 'system', GETDATE(),'Not Resolved','MODIFY'
  327. EXEC proc_errorHandler 1,'Modification request failed from partner',@controlNo
  328. RETURN;
  329. END
  330. END
  331. ELSE IF @flag='showModifiedLog'
  332. BEGIN
  333. SELECT
  334. ROW_NUMBER() OVER(ORDER BY ROWID) [SN],
  335. message [Message]
  336. FROM tranModifyLog WITH(NOLOCK)
  337. WHERE controlNo = @encryptedControlNo AND status = 'ModificationRequest'
  338. UPDATE tranModifyLog SET
  339. resolvedDate = GETDATE()
  340. ,resolvedBy = @user
  341. ,status = 'Approved'
  342. WHERE controlNo = @encryptedControlNo AND status ='ModificationRequest'
  343. RETURN
  344. END
  345. END TRY
  346. BEGIN CATCH
  347. IF @@TRANCOUNT > 0
  348. ROLLBACK TRANSACTION
  349. DECLARE @errorMessage VARCHAR(MAX)
  350. SET @errorMessage = ERROR_MESSAGE()
  351. EXEC proc_errorHandler 1, @errorMessage, @rowId
  352. END CATCH