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