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.

154 lines
6.0 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[PROC_CHECK_KFTC_LIMIT] Script Date: 7/4/2019 11:35:48 AM ******/
  4. --DROP PROCEDURE [dbo].[PROC_CHECK_KFTC_LIMIT]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[PROC_CHECK_KFTC_LIMIT] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. -----------------------------------------------------------------------------------
  12. -- PROCEDURE ID : PROC_CHECK_KFTC_LIMIT
  13. -- PROCEDURE NAME : KFTC 이용기관 출금이체 한도 초과 체크
  14. -- DEV DATE : 2019.04.18
  15. -- DEVELOPER : 김한성
  16. -- DESC :
  17. -- TEXT DESC : 돋움체, 9PT, TAB=8
  18. -- RETURN VALUE :
  19. -- SAMPLE :
  20. -----------------------------------------------------------------------------------
  21. CREATE OR ALTER PROCEDURE [dbo].[PROC_CHECK_KFTC_LIMIT]
  22. (
  23. @flag VARCHAR(50) = NULL
  24. )
  25. AS
  26. SET NOCOUNT ON
  27. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  28. ----------------------------------------------------------------------------------
  29. -- Procedure Start
  30. ----------------------------------------------------------------------------------
  31. DECLARE @V_DTS_TODAY VARCHAR(8)
  32. DECLARE @V_WITHDRAWAL MONEY
  33. DECLARE @V_PHONE_NUMBER VARCHAR(500)
  34. SET @V_PHONE_NUMBER = 'John^01041637562|Subash^01030436864|Eric^01085567562|Choi^01053554993|Pagna^01059580644|Max^01092161470|Pralhad^01074518940'
  35. --SET @V_PHONE_NUMBER = 'Max^01092161470'
  36. DECLARE @V_TEMP MONEY
  37. SET @V_WITHDRAWAL = 0
  38. SET @V_TEMP = 0
  39. DECLARE @V_TODAY VARCHAR(20)
  40. DECLARE @V_TOMORROW VARCHAR(20)
  41. DECLARE @V_ROWID BIGINT
  42. --DECLARE @P_DTS_INSERT NVARCHAR(14)
  43. --SET @P_DTS_INSERT = REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(20), GETDATE(), 120), '-',''), ' ', ''),':','')
  44. BEGIN
  45. IF (@flag = 'WITHDRAW')
  46. BEGIN
  47. SELECT @V_TODAY = CONVERT(date, GETDATE())
  48. SELECT @V_TOMORROW = CONVERT(date, DATEADD(DAY, 1, @V_TODAY))
  49. SELECT @V_DTS_TODAY = CONVERT(VARCHAR(8), GETDATE(), 112) --AS [YYYYMMDD]
  50. --PRINT @V_DTS_TODAY
  51. --------------------------------------------------------------------
  52. -- KFTC 출금이체 API를 통한 고객의 출금이체 총금액을 구하는 로직
  53. --------------------------------------------------------------------
  54. -- select sum(CAST(tranAmt as MONEY)) from KFTC_CUSTOMER_TRANSFER(nolock) where apiTranDtm > '20190417'
  55. --------------------------------------------------------------------
  56. -- 해외송금에서 출금이체 API를 이용한 금액
  57. --------------------------------------------------------------------
  58. SELECT @V_TEMP = SUM(CAST(tranAmt AS MONEY))
  59. FROM KFTC_CUSTOMER_TRANSFER(NOLOCK)
  60. WHERE apiTranDtm > @V_DTS_TODAY
  61. SET @V_WITHDRAWAL = @V_WITHDRAWAL + @V_TEMP
  62. --------------------------------------------------------------------
  63. -- 국내송금에서 출금이체 API를 이용한 금액
  64. --------------------------------------------------------------------
  65. SELECT @V_TEMP = SUM(CAST(reqTranAmt AS MONEY))
  66. FROM KFTC_DOMESTIC_HISTORY(NOLOCK)
  67. WHERE accountType = 'autodebit'
  68. AND transferType= 'withdraw'
  69. AND resRspCode = 'A0000'
  70. AND reqTransferDtime > @V_TODAY
  71. SET @V_WITHDRAWAL = @V_WITHDRAWAL + @V_TEMP
  72. --------------------------------------------------------------------
  73. -- TOPUP에서 출금이체 API를 이용한 금액
  74. --------------------------------------------------------------------
  75. SELECT @V_TEMP = SUM(CAST(reqTranAmt AS MONEY))
  76. FROM KFTC_DOMESTIC_HISTORY(NOLOCK)
  77. WHERE accountType = 'KFTC-TOPUP'
  78. AND transferType= 'withdraw'
  79. AND resRspCode = 'A0000'
  80. AND reqTransferDtime > @V_TODAY
  81. SET @V_WITHDRAWAL = @V_WITHDRAWAL + @V_TEMP
  82. -------------------------------------------------------------------
  83. -- KFTC 출금이체가 하루동안 40억의 70%(28억)를 초과하면 문자메시지를 전송
  84. --------------------------------------------------------------------
  85. IF @V_WITHDRAWAL > CONVERT(MONEY, '2800000000')
  86. BEGIN
  87. IF NOT EXISTS (
  88. SELECT 1
  89. FROM TBL_KFTC_LIMIT(NOLOCK)
  90. WHERE CHECK_TYPE = 'WITHDRAW'
  91. AND LIMIT_CHECK_1 BETWEEN @V_TODAY AND @V_TOMORROW
  92. )
  93. BEGIN
  94. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  95. SELECT 'globalmoney',0,'Notice','[GME Notice] KFTC withdrawal limit exceeded 70%',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@V_PHONE_NUMBER
  96. INSERT INTO TBL_KFTC_LIMIT ( CHECK_TYPE, LIMIT_CHECK_1 )
  97. SELECT 'WITHDRAW', GETDATE()
  98. END
  99. END
  100. --------------------------------------------------------------------
  101. -- KFTC 출금이체가 하루동안 40억의 90%(36억)를 초과하면 문자메시지를 전송
  102. --------------------------------------------------------------------
  103. IF @V_WITHDRAWAL > CONVERT(MONEY, '3600000000')
  104. BEGIN
  105. IF NOT EXISTS (
  106. SELECT 1
  107. FROM TBL_KFTC_LIMIT(NOLOCK)
  108. WHERE CHECK_TYPE = 'WITHDRAW'
  109. AND LIMIT_CHECK_2 BETWEEN @V_TODAY AND @V_TOMORROW
  110. )
  111. BEGIN
  112. INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
  113. SELECT 'globalmoney',0,'Notice','[GME Notice] KFTC withdrawal limit exceeded 90%',FORMAT(GETDATE(),'yyyyMMddHHmmss'),FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@V_PHONE_NUMBER
  114. SELECT @V_ROWID = [rowId]
  115. FROM TBL_KFTC_LIMIT(NOLOCK)
  116. WHERE CHECK_TYPE = 'WITHDRAW'
  117. AND LIMIT_CHECK_1 BETWEEN @V_TODAY AND @V_TOMORROW
  118. IF @V_ROWID IS NULL
  119. BEGIN
  120. INSERT INTO TBL_KFTC_LIMIT ( CHECK_TYPE, LIMIT_CHECK_2 )
  121. SELECT 'WITHDRAW', GETDATE()
  122. END
  123. ELSE
  124. BEGIN
  125. UPDATE TBL_KFTC_LIMIT
  126. SET LIMIT_CHECK_2 = GETDATE()
  127. WHERE [rowId] = @V_ROWID
  128. END
  129. END
  130. END
  131. END
  132. END
  133. ----------------------------------------------------------------------------------
  134. -- Procedure End
  135. ----------------------------------------------------------------------------------
  136. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  137. SET NOCOUNT OFF
  138. GO