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
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
|
|
|