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.

316 lines
10 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[INBOUND_PROC_SCHEDULER_RECEIVER_SCANNER] Script Date: 3/16/2020 10:36:46 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[INBOUND_PROC_SCHEDULER_RECEIVER_SCANNER]
  9. (
  10. @Flag VARCHAR(30) = NULL
  11. ,@user VARCHAR(100) = NULL
  12. ,@bank VARCHAR(100) = NULL
  13. ,@accountNo VARCHAR(100) = NULL
  14. ,@mobile VARCHAR(100) = NULL
  15. ,@id BIGINT = NULL
  16. ,@processId VARCHAR(100) = NULL
  17. ,@customerId BIGINT = NULL
  18. ,@controlNo VARCHAR(100) = NULL
  19. )
  20. AS
  21. SET NOCOUNT ON
  22. DECLARE @tranId BIGINT
  23. ,@EncryptedprocessId VARCHAR(100)
  24. DECLARE @controlNoEncrypted VARCHAR(20)
  25. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  26. BEGIN TRY
  27. IF @Flag='getUnpaidTxn'
  28. BEGIN
  29. SELECT TOP 100 rt.id, rt.pBank,rt.accountNo,rt.receiverName,rt.senderName,rt.sCountry ,tr.mobile
  30. FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) rt
  31. INNER JOIN dbo.INBOUND_TRAN_RECEIVERS (NOLOCK) tr ON tr.tranId=rt.id
  32. WHERE tranStatus='Payment' AND payStatus='Hold'
  33. AND rt.id NOT IN (SELECT tranId FROM dbo.INBOUND_PROCESSID(NOLOCK))
  34. RETURN
  35. END
  36. IF @Flag='checkBankDetails'
  37. BEGIN
  38. DECLARE @IsCustomerExist BIT = 0, @IsCustomerApproved BIT =0
  39. ,@IsPennyTest BIT = 0, @CustomerApproved VARCHAR(100)
  40. ,@customerType VARCHAR(100)
  41. SELECT TOP 1 @customerId=customerId,@CustomerApproved=approvedDate,
  42. @customerType=CASE WHEN customerType='11018' THEN 1 ELSE 0 END
  43. FROM dbo.customerMaster (NOLOCK)
  44. WHERE bankName=@bank AND bankAccountNo=@accountNo
  45. AND approvedDate IS NOT NULL
  46. IF @CustomerId IS NOT NULL
  47. SET @IsCustomerExist = 1
  48. IF @CustomerApproved IS NOT NULL
  49. SET @IsCustomerApproved = 1
  50. IF @IsCustomerExist = 0
  51. BEGIN
  52. IF EXISTS(SELECT 'X' FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
  53. INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
  54. WHERE t.accountNo = @accountNo AND k.rowId = @bank AND t.isPennyTest = 1)
  55. BEGIN
  56. SELECT
  57. @customerId = t.customerId
  58. ,@IsPennyTest = CASE WHEN t.isPennyTest = 1 THEN 1 ELSE 0 END
  59. FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
  60. INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
  61. WHERE t.accountNo = @accountNo AND k.rowId = @bank AND t.isPennyTest = 1
  62. SELECT
  63. @IsCustomerExist = CASE WHEN @customerId IS NOT NULL THEN 1 ELSE 0 END
  64. ,@IsCustomerApproved = CASE WHEN approvedDate IS NOT NULL THEN 1 ELSE 0 END
  65. FROM dbo.customerMaster(NOLOCK) WHERE customerId = @customerId
  66. END
  67. END
  68. --SELECT @IsCustomerExist,@IsCustomerApproved,@IsPennyTest
  69. --RETURN
  70. IF EXISTS(SELECT 'X' FROM dbo.INBOUND_CUSTOMERBANKLIST (NOLOCK) WHERE customerId=@CustomerId AND action='SUCCESS')
  71. BEGIN
  72. SET @IsPennyTest = 1
  73. END
  74. IF EXISTS(SELECT 'X' FROM dbo.TblCustomerBankVerification (NOLOCK) WHERE customerId=@CustomerId AND action='SUCCESS')
  75. BEGIN
  76. SET @IsPennyTest = 1
  77. IF NOT EXISTS(SELECT * FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
  78. INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
  79. WHERE t.accountNo = @accountNo AND k.rowId = @bank )
  80. BEGIN
  81. INSERT INTO dbo.INBOUND_CUSTOMERBANKLIST
  82. (
  83. customerId,customerName,certNumber,certLimitCount,bankCode,
  84. accountNo,isPennyTest,action,
  85. createdDate, createdBy, reqDate, certDate
  86. )
  87. SELECT @CustomerId,cm.firstName,cv.certNumber,cv.certLimitCount,cm.bankName
  88. ,cv.bankAccountNo,1,cv.action,GETDATE(),'system',cv.reqDate,cv.certDate
  89. FROM dbo.TblCustomerBankVerification (nolock) cv
  90. INNER JOIN dbo.customerMaster (NOLOCK) cm ON cm.customerId = cv.customerId WHERE cm.customerId=@CustomerId AND action='SUCCESS'
  91. END
  92. END
  93. /*Already existing customer */
  94. IF(@IsCustomerExist= 1 AND @IsCustomerApproved= 1 AND @IsPennyTest= 1)
  95. BEGIN
  96. BEGIN TRANSACTION
  97. UPDATE dbo.INBOUND_REMIT_TRAN SET
  98. payStatus='Unpaid'
  99. ,postedDate=GETDATE()
  100. ,postedBy='system'
  101. WHERE id =@id
  102. UPDATE INBOUND_TRAN_RECEIVERS SET
  103. customerId=@customerId
  104. WHERE tranId=@id
  105. IF @@TRANCOUNT > 0
  106. COMMIT TRANSACTION
  107. SELECT 0 ErrorCode, 'Transaction post successfully!' Msg,NULL Id
  108. RETURN
  109. END
  110. SELECT @processId=LEFT(CONVERT(VARCHAR(36), NEWID()), 8)
  111. SET @EncryptedprocessId=dbo.FNAEncryptString(@processId)
  112. /*New customer*/
  113. IF(@IsCustomerExist= 0 AND @IsCustomerApproved= 0 AND @IsPennyTest= 0 )
  114. BEGIN
  115. IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Register'))
  116. BEGIN
  117. BEGIN TRANSACTION
  118. INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,remarks,createdDate)SELECT @processId,@id,'Register',GETDATE()
  119. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  120. SELECT 'globalmoney',0,'Inbound','Test Registration Link.(http://gmeuat.gmeremit.com:5023/Register?ib='+CAST(@EncryptedprocessId AS VARCHAR(100))+')',FORMAT(GETDATE(),'yyyyMMddHHmmss')
  121. ,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
  122. IF @@TRANCOUNT > 0
  123. COMMIT TRANSACTION
  124. SELECT 0 ErrorCode, 'New Customer' Msg,NULL Id
  125. RETURN
  126. END
  127. SELECT 1 ErrorCode, 'New Customer!. Sms already sent.' Msg,NULL Id
  128. RETURN
  129. END
  130. /*penny test */
  131. IF(@IsCustomerExist= 1 AND @IsPennyTest= 0 )--AND @customerType=1)
  132. BEGIN
  133. IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Penny'))
  134. BEGIN
  135. BEGIN TRANSACTION
  136. INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,customerId,remarks,createdDate)
  137. SELECT @processId,@id,@customerId,'Penny',GETDATE()
  138. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  139. SELECT 'globalmoney',0,'Inbound','Test Penny Link.(http://gmeuat.gmeremit.com:5023/PennyCertificate?ib='+CAST(@CustomerId AS VARCHAR(50))+'&pi='+CAST(@EncryptedprocessId AS VARCHAR(100))+')',FORMAT(GETDATE(),'yyyyMMddHHmmss')
  140. ,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
  141. IF @@TRANCOUNT > 0
  142. COMMIT TRANSACTION
  143. SELECT 0 ErrorCode, 'Penny Test' Msg,NULL Id
  144. RETURN
  145. END
  146. SELECT 1 ErrorCode, 'Penny Test!.Sms already sent.' Msg,NULL Id
  147. RETURN
  148. END
  149. --/*approve customer */
  150. --IF(@IsCustomerExist= 1 AND @IsCustomerApproved = 0 )
  151. --BEGIN
  152. -- IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Approve'))
  153. -- BEGIN
  154. -- BEGIN TRANSACTION
  155. -- INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,customerId,remarks,createdDate)
  156. -- SELECT @processId,@id,@customerId,'Approve',GETDATE()
  157. -- INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  158. -- SELECT 'inbound',0,'Notice','Test document approval.',FORMAT(GETDATE(),'yyyyMMddHHmmss')
  159. -- ,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
  160. -- IF @@TRANCOUNT > 0
  161. -- COMMIT TRANSACTION
  162. -- SELECT 0 ErrorCode, 'Customer approval pending' Msg,NULL Id
  163. -- RETURN
  164. -- END
  165. -- SELECT 1 ErrorCode, 'Customer approval pending.Sms already sent' Msg,NULL Id
  166. -- RETURN
  167. --END
  168. SELECT 1 ErrorCode, 'No record found' Msg,NULL Id
  169. RETURN
  170. END
  171. IF @Flag='getCustBankDetails' --autoload bank name and accounno ddl in online system
  172. BEGIN
  173. SELECT @tranId=tranId FROM dbo.INBOUND_PROCESSID (NOLOCK) WHERE processID =dbo.FNADecryptString(@processId)
  174. SELECT TOP 1 pBank ,accountNo FROM INBOUND_REMIT_TRAN(NOLOCK)
  175. WHERE id=@tranId
  176. RETURN
  177. END
  178. IF @Flag='checkInboundRequest' --check processid of inbound request
  179. BEGIN
  180. IF EXISTS(SELECT 'X' FROM dbo.INBOUND_PROCESSID (NOLOCK) WHERE processID =dbo.FNADecryptString(@processId) AND customerId=@customerId)
  181. BEGIN
  182. SELECT 0 ErrorCode, 'Valid request' Msg,@customerId Id
  183. RETURN
  184. END
  185. SELECT 1 ErrorCode, 'InValid request for penny test.Please contact GME.' Msg,NULL Id
  186. RETURN
  187. END
  188. IF @Flag='checkCustomerType' --check inbound customer
  189. BEGIN
  190. IF EXISTS(SELECT 'X' FROM dbo.customerMaster(NOLOCK) WHERE customerId=@customerId )
  191. BEGIN
  192. SELECT customerType =CASE WHEN customerType='11018' THEN 'INBOUND' ELSE 'OUTBOUND' END
  193. FROM dbo.customerMaster(NOLOCK) WHERE customerId=@customerId
  194. RETURN
  195. END
  196. END
  197. IF @Flag='getTxnForPaid'
  198. BEGIN
  199. SELECT rt.id AS tranId, rt.controlNo
  200. FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) rt
  201. WHERE tranStatus='Payment' AND payStatus='Unpaid'
  202. RETURN
  203. END
  204. IF @flag='Post'
  205. BEGIN
  206. IF EXISTS ( SELECT 1 FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) WHERE controlNo=@controlNo AND tranStatus='Payment' AND payStatus='Unpaid')
  207. BEGIN
  208. UPDATE INBOUND_REMIT_TRAN
  209. SET payStatus='Post',postedDate=GETDATE(),postedDateLocal=GETDATE(),postedBy='system'
  210. WHERE controlNo =@controlNo
  211. AND tranStatus='Payment' AND payStatus='Unpaid' AND id=@id
  212. SELECT TOP 1
  213. kb.bankCode AS receiveInstitution
  214. ,accountNo AS receiveAccountNo
  215. ,senderName
  216. ,pAmt AS amount
  217. FROM INBOUND_REMIT_TRAN (NOLOCK) rt
  218. INNER JOIN dbo.KoreanBankList(NOLOCK) kb ON kb.rowId = rt.pBank
  219. WHERE controlNo =@controlNo
  220. AND tranStatus='Payment' AND payStatus='Post' AND id=@id
  221. END
  222. END
  223. IF @flag='Paid'
  224. BEGIN
  225. DECLARE @tId BIGINT, @ctrlNo VARCHAR(100)
  226. SELECT @tId = id, @ctrlNo = dbo.FNADecryptString(controlNo) FROM INBOUND_REMIT_TRAN(NOLOCK) WHERE controlNo =@controlNo
  227. AND tranStatus='Payment' AND payStatus='Post'
  228. BEGIN TRAN
  229. UPDATE INBOUND_REMIT_TRAN SET
  230. tranStatus = 'Paid'
  231. ,payStatus = 'Paid'
  232. ,paidDate = GETDATE()
  233. ,paidBy = 'system'
  234. WHERE controlNo = @controlNo
  235. AND tranStatus='Payment' AND payStatus='Post'
  236. INSERT INTO dbo.inboundVoucherMaster
  237. (
  238. tranId,
  239. controlNo,
  240. category,
  241. seq,
  242. VoucherGeneratedDate,
  243. isGenerated
  244. )
  245. VALUES
  246. ( @tId, -- tranId - bigint
  247. @ctrlNo, -- controlNo - varchar(50)
  248. 'paid', -- category - varchar(50)
  249. 2, -- seq - int
  250. NULL, -- VoucherGeneratedDate - datetime
  251. 0 -- isGenerated - bit
  252. )
  253. COMMIT TRAN
  254. EXEC proc_errorHandler 0, 'Transaction has been successfully Paid', @id
  255. END
  256. END TRY
  257. BEGIN CATCH
  258. IF @@TRANCOUNT > 0
  259. ROLLBACK TRAN
  260. EXEC proc_errorHandler 1 ,'Exception occured' ,NULL
  261. END CATCH