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.
 
 
 

126 lines
3.1 KiB

ALTER PROC proc_mobile_withdrawFromWallet
(
@FLAG VARCHAR(30)
,@USER VARCHAR(150) = NULL
,@AMOUNT MONEY = NULL
,@TXN_ID BIGINT = NULL
)
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN
IF @FLAG = 'request'
BEGIN
DECLARE @CUSTOMER_ID BIGINT = NULL, @BANK_NAME VARCHAR(100), @ACC_NUM VARCHAR(50), @BANK_ID INT, @AVAILABLE_BALANCE MONEY
SELECT @CUSTOMER_ID = CM.CUSTOMERID,
@BANK_ID = CM.bankName,
@BANK_NAME = KB.BankName,
@ACC_NUM = CM.bankAccountNo,
@AVAILABLE_BALANCE = DBO.FNAGetCustomerAvailableBalance(CM.CUSTOMERID)
FROM customerMaster CM(NOLOCK)
INNER JOIN KoreanBankList KB(NOLOCK) ON KB.rowId = CM.bankName
WHERE email = @USER
IF @CUSTOMER_ID IS NULL
BEGIN
SELECT 1 Code, 'Invalid customer!' Msg, NULL Id
RETURN
END
IF ISNULL(@ACC_NUM, 0) = ''
BEGIN
SELECT 1 Code, 'Invalid or empty customer bank acount number!' Msg, NULL Id
RETURN
END
IF ISNULL(@BANK_ID, 0) = 0
BEGIN
SELECT 1 Code, 'Invalid or empty customer bank!' Msg, NULL Id
RETURN
END
IF @AMOUNT <= 0
BEGIN
SELECT 1 Code, 'Amount can not be 0 or negative!' Msg, NULL Id
RETURN
END
IF ISNULL(@AVAILABLE_BALANCE, 0) < @AMOUNT
BEGIN
SELECT 1 Code, 'Insufficient balance for withdraw!' Msg, NULL Id
RETURN
END
IF @AMOUNT < 1000
BEGIN
SELECT 1 Code, 'You can not transfer below 1000!' Msg, NULL Id
RETURN
END
IF @AMOUNT > 100000
BEGIN
SELECT 1 Code, 'You can not transfer more than 100000!' Msg, NULL Id
RETURN
END
INSERT INTO TBL_WALLET_WITHDRAW(USERID, CUSTOMER_ID, CUSTOMER_BANK_ID, CUSTOMER_ACCOUNT_NO, CUSTOMER_BANK_NAME, WITHDRAW_AMOUNT, CHARGE_AMOUNT,
REQUESTED_DATE)
SELECT @USER, @CUSTOMER_ID, @BANK_ID, @ACC_NUM, @BANK_NAME, @AMOUNT, 0, GETDATE()
SET @TXN_ID = @@IDENTITY
SELECT Code = 0,
Msg = 'Success',
txnId = @TXN_ID,
bankName = @BANK_NAME,
accountNo = @ACC_NUM,
amount = @AMOUNT,
serviceCharge = 0,
noticeMessage = 'Test notice msg!'
END
ELSE IF @FLAG = 'CONFIRM'
BEGIN
IF NOT EXISTS (SELECT * FROM TBL_WALLET_WITHDRAW (NOLOCK) WHERE ROW_ID = @TXN_ID AND RESPONSE_CODE IS NULL)
BEGIN
SELECT 1 Code, 'Request already confirmed!' Msg, NULL Id
RETURN
END
SELECT @CUSTOMER_ID = CUSTOMERID,
@AVAILABLE_BALANCE = DBO.FNAGetCustomerAvailableBalance(CM.CUSTOMERID)
FROM customerMaster CM(NOLOCK)
WHERE email = @USER
IF @CUSTOMER_ID IS NULL
BEGIN
SELECT 1 Code, 'Invalid customer!' Msg, NULL Id
RETURN
END
IF ISNULL(@AVAILABLE_BALANCE, 0) < ISNULL(@AMOUNT, -1)
BEGIN
SELECT 1 Code, 'Insufficient balance for withdraw!' Msg, NULL Id
RETURN
END
IF NOT EXISTS(SELECT * FROM TBL_WALLET_WITHDRAW (NOLOCK) WHERE ROW_ID = @TXN_ID AND CUSTOMER_ID = @CUSTOMER_ID AND WITHDRAW_AMOUNT = @AMOUNT)
BEGIN
SELECT 1 Code, 'Invalid request!' Msg, NULL Id
RETURN
END
UPDATE CUSTOMERMASTER SET AVAILABLEBALANCE = ISNULL(AVAILABLEBALANCE, 0) - @AMOUNT
WHERE CUSTOMERID = @CUSTOMER_ID
UPDATE TBL_WALLET_WITHDRAW SET RESPONSE_CODE = 0, RESPONSE_MSG = 'Success', CONFIRMED_DATE = GETDATE() WHERE ROW_ID = @TXN_ID
SELECT 0 Code, 'Success!' Msg, NULL Id
--VOUCHER ENTRY
RETURN
END
END