Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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')
Пример #4
0
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')
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
def inquiry():
    balance = "{0:,.2f}".format(Account.get(Account.id == session['atm_auth']).balance)
    return render_template('teller/inquiry.html', balance=balance)