def transfer(): form = TransferForm(request.form) if form.validate_on_submit(): sender_account = Account.get(Account.account_number == form.sender_account_number.data) receiver_account = Account.get(Account.account_number == form.receiver_account_number.data) Account.update( balance = Account.balance - form.amount.data, updated_at = datetime.now() ).where(Account.account_number == form.sender_account_number.data).execute() Account.update( balance = Account.balance + form.amount.data, updated_at = datetime.now() ).where(Account.account_number == form.receiver_account_number.data).execute() Transaction.insert( account_number = form.sender_account_number.data, reference_number = form.receiver_account_number.data, amount = form.amount.data, type = 'FUND TRANSFER' ).execute() flash('Fund Transfer successful') return redirect(url_for('admin.transfer')) return render_template('admin/transfer.html', form=form)
def withdraw(): if request.method == 'POST': account = Account.get(Account.id == session['atm_auth']) total_amount = (Transaction.select(fn.Sum(Transaction.amount).alias('amounts')) .where( (Transaction.account_number == account.account_number) & (Transaction.created_at >= datetime.combine(datetime.today(), time.min)) & (Transaction.type == 'ATM WITHDRAW') ) .get() ).amounts or 0 if float(total_amount) + float(request.form.get('amount')) > 25000: flash('You have reached the daily maximum withdraw limit') elif int(request.form.get('amount')) < 500: flash('Amount must be greater than Php 500.00') else: Account.update(balance = Account.balance - request.form.get('amount')).where(Account.id == session['atm_auth']).execute() Transaction.insert( account_number = account.account_number, reference_number = account.account_number, amount = request.form.get('amount'), type = 'ATM WITHDRAW' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/withdraw.html')
def transfer(): accounts = Account.select().where( (Account.user_id == session['user']['id']) & (Account.type != 3)).execute() form = UserTransferForm(request.form) form.sender_account_number.choices = [ (account.account_number, "{} ({})".format(account.account_number, 'Savings' if account.type == 1 else 'ATM')) for account in accounts ] if form.validate_on_submit(): sender_account = Account.get( Account.account_number == form.sender_account_number.data) receiver_account = Account.get( Account.account_number == form.receiver_account_number.data) Account.update(balance=Account.balance - form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.sender_account_number.data).execute() Account.update(balance=Account.balance + form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.receiver_account_number.data).execute() Transaction.insert(account_number=form.sender_account_number.data, reference_number=form.receiver_account_number.data, amount=form.amount.data, type='FUND TRANSFER').execute() flash('Fund Transfer successful') return redirect(url_for('main.transfer')) return render_template('main/transfer.html', form=form)
def index(): time_deposits = TimeDeposit.select().where( (TimeDeposit.terminal_date <= datetime.now()) & (TimeDeposit.deleted == False)).execute() for time_deposit in time_deposits: Account.update(account=Account.balance + (time_deposit.amount * time_deposit.interest) + time_deposit.amount).where( Account.account_number == time_deposit.account_number).execute() TimeDeposit.update(deleted=True).where( TimeDeposit.id == time_deposit.id).execute() accounts = Account.select().where( Account.user_id == session['user']['id']).execute() transactions = len( Transaction.select(Transaction).join( Account, on=(Transaction.account_number == Account.account_number)).join( User, on=(Account.user_id == User.id)).where( User.id == session['user']['id']).dicts()) return render_template('main/index.html', accounts=accounts, transactions=transactions)
def time_deposit(): form = TimeDepositForm(request.form) form.duration.choices = ([(3, '3 months (7.0% interest)'), (6, '6 months (8.0% interest)'), (12, '12 months (9.0% interest)')]) if form.validate_on_submit(): interest_ref = {3: 7.0, 6: 8.0, 12: 9.0} Account.update( time_deposit=Account.time_deposit + form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.account_number.data).execute() TimeDeposit.insert(account_number=form.account_number.data, amount=form.amount.data, interest=interest_ref[form.duration.data], terminal_date=datetime.now() + timedelta(days=form.duration.data * 30)).execute() Transaction.insert(account_number=form.account_number.data, reference_number=form.account_number.data, amount=form.amount.data, type='TIME DEPOSIT').execute() flash('Time Deposit successful') return redirect(url_for('main.time_deposit')) return render_template('main/time_deposit.html', form=form)
def index(): time_deposits = TimeDeposit.select().where((TimeDeposit.terminal_date <= datetime.now()) & (TimeDeposit.deleted == False)).execute() history = Transaction.select().order_by(Transaction.created_at.desc()).execute() for time_deposit in time_deposits: Account.update( account = Account.balance + (time_deposit.amount * time_deposit.interest) ).where(Account.account_number == time_deposit.account_number).execute() TimeDeposit.update( deleted = True ).where(TimeDeposit.id == time_deposit.id).execute() return render_template('admin/index.html', history=history)
def deposit(): if request.method == 'POST': account = Account.get(Account.id == session['atm_auth']) Account.update(balance = Account.balance + request.form.get('amount')).where(Account.id == session['atm_auth']).execute() Transaction.insert( account_number = account.account_number, reference_number = account.account_number, amount = request.form.get('amount'), type = 'ATM DEPOSIT' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/deposit.html')
def change_pin(): form = ChangePinForm(request.form) if form.validate_on_submit(): account = Account.get(Account.id == session['atm_auth']) if check_password_hash(account.pin, form.current_pin.data): Account.update( pin = generate_password_hash(form.new_pin.data) ).where(Account.id == session['atm_auth']).execute() flash('PIN successfully updated') return redirect(url_for('teller.index')) else: flash('PIN does not match') return render_template('teller/change_pin.html', form=form)
def deposit(): form = TransactionForm(request.form) if form.validate_on_submit(): Account.update( balance=Account.balance + form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.account_number.data).execute() Transaction.insert(account_number=form.account_number.data, reference_number=form.account_number.data, amount=form.amount.data, type='DEPOSIT').execute() flash('Deposit successful') return redirect(url_for('main.deposit')) return render_template('main/deposit.html', form=form)
def transfer(): form = TransactionForm(request.form) if form.validate_on_submit(): account = Account.get(Account.id == session['atm_auth']) if form.account_number.data == account.account_number: flash('You cannot transfer funds to your own account') else: Account.update(balance = Account.balance - form.amount.data).where(Account.id == session['atm_auth']).execute() Account.update(balance = Account.balance + form.amount.data).where(Account.account_number == form.account_number.data).execute() Transaction.insert( account_number = account.account_number, reference_number = form.account_number.data, amount = request.form.get('amount'), type = 'ATM FUND TRANSFER' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/transfer.html', form=form)
def withdraw(): form = TransactionForm(request.form) if form.validate_on_submit(): account = Account.get( Account.account_number == form.account_number.data) if account.balance - form.amount.data <= 0: flash('Withdraw amount is greater than account remaining balance') else: Account.update(balance=Account.balance - form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.account_number.data).execute() Transaction.insert(account_number=form.account_number.data, reference_number=form.account_number.data, amount=form.amount.data, type='WITHDRAW').execute() flash('Withdraw successful') return redirect(url_for('main.withdraw')) return render_template('main/withdraw.html', form=form)
def index(): time_deposits = TimeDeposit.select().where( (TimeDeposit.terminal_date <= datetime.now()) & (TimeDeposit.deleted == False)).execute() for time_deposit in time_deposits: Account.update(account=Account.balance + (time_deposit.amount * time_deposit.interest) + time_deposit.amount).where( Account.account_number == time_deposit.account_number).execute() TimeDeposit.update(deleted=True).where( TimeDeposit.id == time_deposit.id).execute() try: log = (Log.select().where((Log.action == 'LOGIN') & ( Log.user_id == session['user']['id'])).order_by( Log.created_at.desc()).get() ).created_at.strftime('%d %B %Y %I:%M %p') except DoesNotExist: log = None return render_template('main/index.html', log=log)
def activate(id): Account.update( deleted=False, updated_at=datetime.now() ).where(Account.id == id).execute() return redirect(url_for('account.index'))