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

1 year ago
  1. ALTER PROC proc_mobile_withdrawFromWallet
  2. (
  3. @FLAG VARCHAR(30)
  4. ,@USER VARCHAR(150) = NULL
  5. ,@AMOUNT MONEY = NULL
  6. ,@TXN_ID BIGINT = NULL
  7. )
  8. AS
  9. SET NOCOUNT ON;
  10. SET XACT_ABORT ON;
  11. BEGIN
  12. IF @FLAG = 'request'
  13. BEGIN
  14. DECLARE @CUSTOMER_ID BIGINT = NULL, @BANK_NAME VARCHAR(100), @ACC_NUM VARCHAR(50), @BANK_ID INT, @AVAILABLE_BALANCE MONEY
  15. SELECT @CUSTOMER_ID = CM.CUSTOMERID,
  16. @BANK_ID = CM.bankName,
  17. @BANK_NAME = KB.BankName,
  18. @ACC_NUM = CM.bankAccountNo,
  19. @AVAILABLE_BALANCE = DBO.FNAGetCustomerAvailableBalance(CM.CUSTOMERID)
  20. FROM customerMaster CM(NOLOCK)
  21. INNER JOIN KoreanBankList KB(NOLOCK) ON KB.rowId = CM.bankName
  22. WHERE email = @USER
  23. IF @CUSTOMER_ID IS NULL
  24. BEGIN
  25. SELECT 1 Code, 'Invalid customer!' Msg, NULL Id
  26. RETURN
  27. END
  28. IF ISNULL(@ACC_NUM, 0) = ''
  29. BEGIN
  30. SELECT 1 Code, 'Invalid or empty customer bank acount number!' Msg, NULL Id
  31. RETURN
  32. END
  33. IF ISNULL(@BANK_ID, 0) = 0
  34. BEGIN
  35. SELECT 1 Code, 'Invalid or empty customer bank!' Msg, NULL Id
  36. RETURN
  37. END
  38. IF @AMOUNT <= 0
  39. BEGIN
  40. SELECT 1 Code, 'Amount can not be 0 or negative!' Msg, NULL Id
  41. RETURN
  42. END
  43. IF ISNULL(@AVAILABLE_BALANCE, 0) < @AMOUNT
  44. BEGIN
  45. SELECT 1 Code, 'Insufficient balance for withdraw!' Msg, NULL Id
  46. RETURN
  47. END
  48. IF @AMOUNT < 1000
  49. BEGIN
  50. SELECT 1 Code, 'You can not transfer below 1000!' Msg, NULL Id
  51. RETURN
  52. END
  53. IF @AMOUNT > 100000
  54. BEGIN
  55. SELECT 1 Code, 'You can not transfer more than 100000!' Msg, NULL Id
  56. RETURN
  57. END
  58. INSERT INTO TBL_WALLET_WITHDRAW(USERID, CUSTOMER_ID, CUSTOMER_BANK_ID, CUSTOMER_ACCOUNT_NO, CUSTOMER_BANK_NAME, WITHDRAW_AMOUNT, CHARGE_AMOUNT,
  59. REQUESTED_DATE)
  60. SELECT @USER, @CUSTOMER_ID, @BANK_ID, @ACC_NUM, @BANK_NAME, @AMOUNT, 0, GETDATE()
  61. SET @TXN_ID = @@IDENTITY
  62. SELECT Code = 0,
  63. Msg = 'Success',
  64. txnId = @TXN_ID,
  65. bankName = @BANK_NAME,
  66. accountNo = @ACC_NUM,
  67. amount = @AMOUNT,
  68. serviceCharge = 0,
  69. noticeMessage = 'Test notice msg!'
  70. END
  71. ELSE IF @FLAG = 'CONFIRM'
  72. BEGIN
  73. IF NOT EXISTS (SELECT * FROM TBL_WALLET_WITHDRAW (NOLOCK) WHERE ROW_ID = @TXN_ID AND RESPONSE_CODE IS NULL)
  74. BEGIN
  75. SELECT 1 Code, 'Request already confirmed!' Msg, NULL Id
  76. RETURN
  77. END
  78. SELECT @CUSTOMER_ID = CUSTOMERID,
  79. @AVAILABLE_BALANCE = DBO.FNAGetCustomerAvailableBalance(CM.CUSTOMERID)
  80. FROM customerMaster CM(NOLOCK)
  81. WHERE email = @USER
  82. IF @CUSTOMER_ID IS NULL
  83. BEGIN
  84. SELECT 1 Code, 'Invalid customer!' Msg, NULL Id
  85. RETURN
  86. END
  87. IF ISNULL(@AVAILABLE_BALANCE, 0) < ISNULL(@AMOUNT, -1)
  88. BEGIN
  89. SELECT 1 Code, 'Insufficient balance for withdraw!' Msg, NULL Id
  90. RETURN
  91. END
  92. IF NOT EXISTS(SELECT * FROM TBL_WALLET_WITHDRAW (NOLOCK) WHERE ROW_ID = @TXN_ID AND CUSTOMER_ID = @CUSTOMER_ID AND WITHDRAW_AMOUNT = @AMOUNT)
  93. BEGIN
  94. SELECT 1 Code, 'Invalid request!' Msg, NULL Id
  95. RETURN
  96. END
  97. UPDATE CUSTOMERMASTER SET AVAILABLEBALANCE = ISNULL(AVAILABLEBALANCE, 0) - @AMOUNT
  98. WHERE CUSTOMERID = @CUSTOMER_ID
  99. UPDATE TBL_WALLET_WITHDRAW SET RESPONSE_CODE = 0, RESPONSE_MSG = 'Success', CONFIRMED_DATE = GETDATE() WHERE ROW_ID = @TXN_ID
  100. SELECT 0 Code, 'Success!' Msg, NULL Id
  101. --VOUCHER ENTRY
  102. RETURN
  103. END
  104. END