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.
 
 
 

149 lines
14 KiB

----------------------------------------------------------------------------------
-- Procedure ID : PROC_KFTC_DOMESTIC_TRAN_HISTORY
-- Procedure Name : Domestic Remittance 로그 테이블
-- Dev Date : 2019.09.17
-- Developer : 이다혜
-- Desc :
----------------------------------------------------------------------------------
ALTER PROC [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY]
(
@flag VARCHAR(20),
@customerId VARCHAR(20),
@fromDate VARCHAR(50) = NULL,
@toDate VARCHAR(50) = NULL,
@bankCode VARCHAR(5) = NULL,
@accountNumber VARCHAR(50) = NULL,
@userId VARCHAR(50) = NULL,
@tranId VARCHAR(50) = NULL
)
AS
DECLARE @sql VARCHAR(MAX)
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
----------------------------------------------------------------------------------
-- Procedure Start
-- exec [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY] @flag = 'RECENTLIST', @customerId = '40154'
-- exec [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY] @flag = 'RECENTLIST', @customerId = '40154',@fromDate = '2019-08-25' ,@toDate = '2019-09-25'
-- exec [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY] @flag = 'domestictranhis', @customerId = 'temp',@userId = 'maxkim@gmeremit.com'
-- exec [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY] @flag = 'domestictranhis', @customerId = '40154',@fromDate = '2019-08-25' ,@toDate = '2019-09-25'
-- exec [dbo].[PROC_KFTC_DOMESTIC_TRAN_HISTORY] @flag = 'domestictranhis', @customerId = 'temp',@tranId = '20190919144446711'
-- EXEC PROC_KFTC_DOMESTIC_TRAN_HISTORY @flag='domestictranhis', @customerId='temp', @tranId='20190919144446711'
----------------------------------------------------------------------------------
BEGIN
IF @flag = 'RECENTLIST' --송금계좌 조회,
BEGIN
/* 중복해서 계좌가 나오지 않도록 <계좌별 가장최근이체날짜>를 구해서 최근순으로 추출*/
SET @sql='SELECT B.CUSTOMERID,B.REQACCOUNTNUM RECIPIENT_ACCOUNT,B.REQACCOUNTHOLDERNAME RECIPIENT_NAME,B.ROWID,B.BANKCODE,B.BANKNAME
FROM (
SELECT A.CUSTOMERID,A.REQACCOUNTNUM,A.REQACCOUNTHOLDERNAME,A.ROWID,A.BANKCODE,A.BANKNAME,A.TRAN_DATE,rank() over(partition by A.CUSTOMERID order by A.TRAN_DATE desc) as Rank
FROM (
SELECT HIS.CUSTOMERID,HIS.REQACCOUNTNUM,HIS.REQACCOUNTHOLDERNAME,KFTCBANK.ROWID,KFTCBANK.BANKCODE,KFTCBANK.BANKNAME,MAX(HIS.REQTRANSFERDTIME) TRAN_DATE
FROM KFTC_DOMESTIC_HISTORY HIS
INNER JOIN ( SELECT rowId, bankCode, bankName
FROM KoreanBankList(nolock)
WHERE IsActive=''1'' AND (bankCode < ''040'' OR bankCode >''080'' ) ) KFTCBANK ON HIS.REQBANKCODESTD = KFTCBANK.bankCode
WHERE HIS.transferType = ''deposit''
AND HIS.CUSTOMERID = ' + @customerId
IF ISNULL(@fromDate,'') <> '' AND ISNULL(@toDate,'') <> ''
BEGIN
SET @sql=@sql+' AND Convert(varchar(10),reqTransferDtime,121) BETWEEN ''' +@fromDate+ ''' AND ''' +@toDate+ ''''
END
SET @sql=@sql+' GROUP BY HIS.CUSTOMERID,HIS.REQACCOUNTNUM,HIS.REQACCOUNTHOLDERNAME,KFTCBANK.ROWID,KFTCBANK.BANKCODE,KFTCBANK.BANKNAME
) A
) B'
IF ISNULL(@fromDate,'') = '' AND ISNULL(@toDate,'') = '' -- 날짜값이 없다면 최근 5건만 추출
BEGIN
SET @sql=@sql+' WHERE B.Rank <= 5'
END
SET @sql=@sql+' ORDER BY B.Rank'
-- PRINT(@sql)
EXEC(@sql)
END
ELSE IF @flag = 'RecipientMobileNo' --송금계좌의 전화번호 조회
BEGIN
DECLARE @reqMobileNo VARCHAR(20)
SET @reqMobileNo = (
SELECT TOP 1 HIS.reqMobileNo
FROM KFTC_DOMESTIC_HISTORY HIS
WHERE HIS.transferType = 'deposit'
AND HIS.customerId = @customerId
AND HIS.reqBankCodeStd = @bankCode
AND HIS.reqAccountNum = @accountNumber
ORDER BY HIS.reqTransferDtime DESC
)
SELECT '0' errorCode,@customerId customerId,@reqMobileNo Id
END
ELSE IF @flag='domestictranhis'
BEGIN
IF @customerId = 'temp'
BEGIN
SELECT @customerId = customerId
FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.mobile=@userId OR cm.email=@userId
END
SET @sql=
'SELECT_FIRST withdraw.customerId,withdraw.processId,CONVERT(VARCHAR(10),withdraw.reqTransferDtime,121) tran_date
,withdraw.reqBankCodeStd sendBandCode,WKFTCBANK.bankName sendBankName,withdraw.reqAccountNum sendAccountNum
,deposit.reqBankCodeStd recipientBandCode,DKFTCBANK.bankName recipientBankName,deposit.reqAccountNum recipientAccountNum,deposit.reqAccountHolderName recipientName,deposit.reqMobileNo recipientPhone
,convert(varchar,deposit.reqAmt) sendAmount,convert(varchar,withdraw.serviceFee) serviceFee
,case when deposit.resRspCode = ''A0000'' then ''SUCCESS'' else ''FAIL'' end depositStatus
FROM
(
SELECT customerId,processId,reqTransferDtime,reqBankCodeStd,reqAccountNum,resRspCode,reqMobileNo,serviceFee
FROM KFTC_DOMESTIC_HISTORY
WHERE transferType = ''withdraw''
AND resRspCode = ''A0000'''
+' AND customerId = '+ @customerId
+' ) withdraw
INNER JOIN (
SELECT customerId,processId,reqBankCodeStd,reqAccountNum,reqAccountHolderName,reqAmt,reqMobileNo,resRspCode
FROM KFTC_DOMESTIC_HISTORY
WHERE transferType = ''deposit''
AND resRspCode = ''A0000'''
+' AND customerId = '+ @customerId
+' ) deposit ON withdraw.customerId = deposit.customerId AND withdraw.processId = deposit.processId
LEFT OUTER JOIN (
SELECT rowId, bankCode, bankName
FROM KoreanBankList(nolock)
WHERE IsActive=''1'' AND (bankCode < ''040'' OR bankCode >''080'' ) ) WKFTCBANK ON withdraw.reqBankCodeStd = WKFTCBANK.bankCode
LEFT OUTER JOIN (
SELECT rowId, bankCode, bankName
FROM KoreanBankList(nolock)
WHERE IsActive=''1'' AND (bankCode < ''040'' OR bankCode >''080'' ) ) DKFTCBANK ON deposit.reqBankCodeStd = DKFTCBANK.bankCode'
IF ISNULL(@tranId,'') <> '' --@tranId가 있는 경우는 1건만 추출
BEGIN
SET @sql=REPLACE(REPLACE(@sql,'AND customerId = temp',''),'SELECT_FIRST','SELECT') + ' WHERE withdraw.processId = '''+@tranId+''''
END
ELSE IF ISNULL(@fromDate,'') <> '' AND ISNULL(@toDate,'') <> '' -- 날짜값이 있다면 전체추출
BEGIN
SET @sql=REPLACE(@sql,'SELECT_FIRST','SELECT') + ' AND CONVERT(VARCHAR(10),withdraw.reqTransferDtime,121) BETWEEN '''+@fromDate+''' AND '''+ @toDate +' 23:59:59'''
END
ELSE --모두 없다면 최근 7건만 추출
BEGIN
SET @sql = REPLACE(@sql,'SELECT_FIRST','SELECT TOP 7 ')
END
SET @sql=@sql+ ' ORDER BY withdraw.reqTransferDtime DESC'
PRINT(@sql)
EXEC(@sql)
END
END
----------------------------------------------------------------------------------
-- Procedure End
----------------------------------------------------------------------------------
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET NOCOUNT OFF