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.
 
 
 

348 lines
12 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[PROC_POWERCALL_NEW] Script Date: 2019-12-18 오전 10:32:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <chris>
-- Create date: <2018-10-23>
-- Description: <Proc PowerCall>
-- =============================================
-- EXEC [dbo].[procedure_test] @CUSTOMERID = '40154', @useWalletMoney = 5000
ALTER PROCEDURE [dbo].[PROC_POWERCALL_NEW]
@rowId BIGINT = 0,
@FLAG VARCHAR(50) = NULL,
@customerId BIGINT,
@useWalletMoney MONEY = NULL,
@restoreMoney MONEY = NULL,
@balance MONEY = NULL,
@customerSummary VARCHAR(20) = NULL,
@bankCode VARCHAR(50) = NULL,
@bankAccount VARCHAR(20) = NULL,
@action VARCHAR(10) = NULL,
@actionBy VARCHAR(50) = NULL,
@source CHAR(1) = NULL,
@passWord VARCHAR(50) = NULL,
@customerPassWord VARCHAR (50) = NULL,
@stateMessage VARCHAR(10) = NULL,
@top BIGINT = NULL,
@fromDate DATETIME = NULL,
@toDate DATETIME = NULL,
@commision MONEY = NULL,
@phoneNo VARCHAR(11) = NULL,
@isNomal VARCHAR(1) = NULL
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
DECLARE @vWalletAccountNo VARCHAR(100)
DECLARE @vSessionId VARCHAR(40)
DECLARE @voucherDate VARCHAR(10)
DECLARE @vComment VARCHAR(500)
DECLARE @bonusPoint MONEY
DECLARE @email VARCHAR(100)
DECLARE @availablePoint MONEY
SET @vSessionId = NEWID()
DECLARE @vAccountType VARCHAR(20)
,@reqTranAmt MONEY
,@partialRefundMoney MONEY
DECLARE @vFullName VARCHAR(100)
SELECT @vAccountType=accountType,
@reqTranAmt=ISNULL(reqTranAmt,0)
from KFTC_DOMESTIC_HISTORY(nolock)
where accountType='KFTC-TOPUP'
and transferType='withdraw' and processId=@customerSummary
IF @FLAG = 'checkCharge'
BEGIN
SELECT TOP 1 *
FROM powerCallHistory(nolock)
WHERE customerId=@customerId
ORDER BY rowId desc
RETURN
END
ELSE IF @FLAG = 'checkWallet'
BEGIN
SELECT @balance = dbo.FNAGetCustomerACBal(cm.email)
,@customerPassWord = cm.customerPassword
,@actionBy = cm.email
FROM customerMaster cm WITH (NOLOCK)
WHERE customerId=@customerId
AND ISNULL(onlineUser,'N')='Y'
AND ISNULL(islocked,'N')='N'
IF(SELECT dbo.CheckCustomerPerDayAmt(@customerId,@useWalletMoney))=1
BEGIN
EXEC proc_errorHandler 1,'Easy remit Per day limit exceeded.!' ,null
RETURN
END
IF(@customerPassWord = dbo.FNAEncryptString(@passWord))
BEGIN
UPDATE customerMaster
SET invalidAttemptCount = 0
WHERE customerId = @customerId
AND ISNULL(onlineUser, 'N')='Y'
END
ELSE
BEGIN
SELECT '1' AS ErrorCode, 'Invaild PassWord' AS Msg, @customerId AS Id
RETURN
END
IF (ISNULL(@useWalletMoney,0) > @balance)
BEGIN
SELECT '1' AS ErrorCode, 'Request balance is insufficient!' AS Msg, @customerId AS Id
RETURN
END
SET @balance = @balance - @useWalletMoney
UPDATE customerMaster
SET availableBalance = @balance
WHERE customerId = @customerId
INSERT INTO KJ_AUTO_REFUND
( customerId, bankCode, bankAccountNo, customerSummary, requestAmount,
refundAmount, action, actionDate, actionBy, Balance,
refundType, reqSource)
SELECT @customerId, @bankCode, @bankAccount, @customerSummary, @useWalletMoney,
@useWalletMoney, @action, GETDATE(), @actionBy, @balance,
'PowerCall', ISNULL(@source,'M')
SET @rowId = @@IDENTITY
SELECT '0' AS ErrorCode, 'checkWallet Success' AS Msg, @rowId AS Id
RETURN
END
/* 국내선불폰 충전 완전성공 */
ELSE IF @FLAG = 'resultWalletMoney'
BEGIN
UPDATE KJ_AUTO_REFUND
SET action = 'SUCCESS'
WHERE customerSummary = @customerSummary
AND customerId = @customerId
AND action = @action
SELECT @vWalletAccountNo = walletAccountNo
,@bonusPoint = bonusPoint
,@email = email
,@vFullName = LEFT(fullName, 10)
FROM customerMaster(nolock)
WHERE customerId = @customerId
/* 10 포인트 적립 로직 */
SET @availablePoint = ISNULL(@bonusPoint,0) + 10
INSERT INTO PointHistory
(
customerId , availablePoint , tranId ,pointType, point ,createdBy ,createdDate
)
SELECT @customerId, @availablePoint , @customerSummary , '3', 10, @email, GETDATE()
IF @vAccountType='KFTC-TOPUP'
BEGIN
UPDATE customerMaster
SET availableBalance = availableBalance- @useWalletMoney
,bonusPoint = @availablePoint
WHERE customerId = @customerId
END
ELSE --only wallet
BEGIN
UPDATE customerMaster
SET bonusPoint = @availablePoint
WHERE customerId = @customerId
END
-----------------------------------------------------
-- Voucher Data
-----------------------------------------------------
DELETE FROM fastmoneypro_account.dbo.temp_tran
WHERE refrence = @customerSummary
AND field2 = 'Topup'
INSERT INTO fastmoneypro_account.dbo.temp_tran
( entry_user_id, acct_num, part_tran_type, tran_amt, field1,
field2, sessionid, refrence)
SELECT 'system', @vWalletAccountNo, 'DR', @useWalletMoney, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
UNION ALL
SELECT 'system', '161874309', 'CR', @useWalletMoney-@commision, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
UNION ALL
SELECT 'system', '161874314', 'CR', @commision, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
IF @vAccountType = 'KFTC-TOPUP'
BEGIN
--100241027580 cms account 100241011536 -- kj wallet -- GME auto debit acc no (Payment Gateway CMS AUTODEBIT)
INSERT INTO fastmoneypro_account.dbo.temp_tran
( entry_user_id, acct_num, part_tran_type, tran_amt, field1,
field2, sessionid, refrence)
SELECT 'system','100241027580', 'DR' , @useWalletMoney, @vWalletAccountNo,
'TopUp', @vSessionId , @customerSummary
UNION ALL
SELECT 'system','100241011536', 'CR' , @useWalletMoney, @vWalletAccountNo,
'TopUp', @vSessionId , @customerSummary
SET @vComment = 'Local Auto debit Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
END
ELSE SET @vComment = 'Local Wallet Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
EXEC proc_errorHandler 0, 'Data Saved Successfully!', @customerId
SELECT @voucherDate = CONVERT(VARCHAR, Getdate(), 101)
--@vComment = 'Local Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
EXEC fastmoneypro_account.dbo.[Spa_savetemptrn] @flag='i',
@sessionID= @vSessionId,
@date=@voucherDate,
@narration=@vComment,
@company_id=1,
@v_type='J',
@user='SYSTEM'
END
/* 국내선불폰 충전 부분 성공 */
ELSE IF @FLAG = 'restoreWalletMoney'
BEGIN
UPDATE KJ_AUTO_REFUND
SET action = @action, refundAmount = @useWalletMoney
WHERE customerSummary = @customerSummary
AND customerId = @customerId
AND action = 'REQ'
SELECT @vWalletAccountNo = walletAccountNo
,@bonusPoint = bonusPoint
,@email = email
,@vFullName = LEFT(fullName, 10)
FROM customerMaster(nolock)
WHERE customerId = @customerId
SET @availablePoint = ISNULL(@bonusPoint,0) + 10
INSERT INTO PointHistory
(
customerId , availablePoint , tranId , pointType, point , createdBy , createdDate
)
SELECT @customerId, @availablePoint , @customerSummary , '3', 10, @email, GETDATE()
--PRINT(@restoreMoney)
IF @vAccountType='KFTC-TOPUP'
BEGIN
SET @partialRefundMoney=@reqTranAmt- @restoreMoney
UPDATE customerMaster
SET availableBalance =availableBalance -@partialRefundMoney
,bonusPoint = @availablePoint
WHERE customerId = @customerId
END
ELSE
BEGIN
UPDATE customerMaster
SET availableBalance = availableBalance + @restoreMoney
, bonusPoint = @availablePoint
WHERE customerId = @customerId
END
-----------------------------------------------------
-- Voucher Data
-----------------------------------------------------
DELETE FROM fastmoneypro_account.dbo.temp_tran
WHERE refrence = @customerSummary
AND field2 = 'Topup'
INSERT INTO fastmoneypro_account.dbo.temp_tran
( entry_user_id, acct_num, part_tran_type, tran_amt, field1,
field2, sessionid, refrence)
SELECT 'system', @vWalletAccountNo, 'DR', @useWalletMoney, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
UNION ALL
SELECT 'system', '161874309', 'CR', @useWalletMoney-@commision, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
UNION ALL
SELECT 'system', '161874314', 'CR', @commision, @vWalletAccountNo,
'Topup', @vSessionId, @customerSummary
IF @vAccountType='KFTC-TOPUP'
BEGIN
--100241027580 cms account 100241011536 -- kj wallet -- GME auto debit acc no (Payment Gateway CMS AUTODEBIT)
INSERT INTO fastmoneypro_account.dbo.temp_tran
( entry_user_id, acct_num, part_tran_type, tran_amt, field1,
field2, sessionid, refrence)
SELECT 'system','100241027580', 'DR' , @useWalletMoney, @vWalletAccountNo,
'TopUp', @vSessionId , @customerSummary
UNION ALL
SELECT 'system','100241011536', 'CR' , @useWalletMoney, @vWalletAccountNo,
'TopUp', @vSessionId , @customerSummary
SET @vComment = 'Local Auto debit Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
END
ELSE SET @vComment = 'Local Wallet Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
EXEC proc_errorHandler 0, 'Data Saved Successfully!', @customerId
SELECT @voucherDate = CONVERT(VARCHAR, Getdate(), 101)
--@vComment = 'Local Mobile top-up done to : ' + @phoneNo + '/ ' + @vFullName
EXEC fastmoneypro_account.dbo.[Spa_savetemptrn] @flag='i',
@sessionID= @vSessionId,
@date=@voucherDate,
@narration=@vComment,
@company_id=1,
@v_type='J',
@user='SYSTEM'
END
/* 국내선불폰 충전 완전 실패 */
ELSE IF @FLAG = 'TOPUP_FAIL'
BEGIN
UPDATE KJ_AUTO_REFUND
SET action = @action
WHERE customerSummary = @customerSummary
AND customerId = @customerId
AND action = 'REQ'
/* 금융결제원 출금이체는 이미 가상계좌에 반영되었으므로, 환불 필요없음*/
IF @vAccountType IS NULL
BEGIN
UPDATE customerMaster
SET availableBalance = availableBalance + @restoreMoney
WHERE customerId = @customerId
END
EXEC proc_errorHandler 0, 'Data Saved Successfully!', @customerId
END
ELSE IF @FLAG = 'UserChargeInfo'
BEGIN
IF ISNULL(@fromDate,'') = '' AND ISNULL(@toDate,'') = ''
BEGIN
SELECT TOP 7 * FROM powercallHistory(NOLOCK)
WHERE customerId = @customerId order by rowId desc
END
ELSE
BEGIN
SELECT TOP 7 * FROM powercallHistory(NOLOCK)
WHERE customerId = @customerId
AND Convert(varchar(10),requestTime,121) BETWEEN @fromDate AND @toDate
order by rowId desc
END
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT <> 0
ROLLBACK TRANSACTION;
DECLARE @errorMessage VARCHAR(MAX);
--SET @errorMessage = ERROR_MESSAGE();
SET @errorMessage = 'Error Occur while requesting.'
EXEC proc_errorHandler 1, @errorMessage, @customerId;
END CATCH;