示例#1
0
def update_expense(ID, category, amount, date):
    EM = ExpenseManager()
    EM.from_csv(expense_csv)

    expense = Expense(ID, category, amount, date)
    EM.upd_expense(ID, expense)
    EM.override_to_csv(expense_csv)
示例#2
0
def display_expense_by_month():
    """ 
    Summarize all expesnses by month 
    :return: All expenses subtotal in last 12 months
    :rtype: dict
    """
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    return EM.by_month_expense()
示例#3
0
def list_all_expenses():
    """ 
    Lists all expenses in the expenses csv file
    :return: All expenses records
    :rtype: dict
    """
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    return {"expenses": EM.get_expenses()}
示例#4
0
def display_expense_by_category():
    """ Summarize all expenses by category

    :return: All expenses subtotal by category in last 12 months, with percentage
    :rtype: dict
    """
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    return EM.by_category()
示例#5
0
def edit(ID):
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)
    
    category = getattr(expense, "_Category")
    amount = getattr(expense, "_Amount")
    date = getattr(expense, "_Date")
    category=category.lower()
    
    return render_template("update.html", ID=ID,category=category, amount=amount, date=date)
示例#6
0
def delete_expense(ID):
    """ Delete the expense record from the list

    :return: None
    :rtype: None
    """
    # Load the list of expenses from csv, then put it into EM to manipulate
    # Finally put it back to the csv
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    EM.del_expense(ID)
    EM.override_to_csv(expense_csv)
示例#7
0
def update_expense(ID, category, amount, date):
    """ 
    Updates the specified expense
    :param ID: ID of expense to be updated
    :type ID: int
    
    :return: None
    :rtype: None
    """
    EM = ExpenseManager()
    EM.from_csv(expense_csv)

    expense = Expense(ID, category, amount, date)
    EM.upd_expense(ID, expense)
    EM.override_to_csv(expense_csv)
示例#8
0
def update(ID):
    try:
        category = request.form['category']
        amount = float(request.form['amount'])
        date = request.form['date']
    except ValueError:
        flash("Please enter a valid number for expense amount")
        return redirect(url_for("edit", ID=ID))
    except KeyError:
        return redirect(url_for("index"))

    flash(f'Expense #{ID} has been updated!')

    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)
    original_expense = float(getattr(expense, "_Amount"))

    # Updates balance amount
    bal_dict = from_csv(balance_csv)
    original_balance = float(bal_dict["balance"])
    updated_expense = amount

    # Deducts from balance (expense amount increased)
    if updated_expense > original_expense:
        amount_to_change = updated_expense - original_expense
        updated_balance = original_balance - amount_to_change
        flash(f'${float(amount_to_change)} deducted from balance')

    # Adds to balance (expense amount decreased)
    elif updated_expense < original_expense:
        amount_to_change = original_expense - updated_expense
        updated_balance = original_balance + amount_to_change
        flash(f'${float(amount_to_change)} added to balance')
    else:
        updated_balance = original_balance

    # Save expense
    EM.to_csv(expense_csv)

    # Save balance, budget
    add_to_csv(updated_balance, bal_dict["budget"])

    update_expense(ID, category, amount, date)
    if updated_balance < float(bal_dict["budget"]):
        flash("Your balance has exceeded your budget!")

    return redirect(url_for("index"))
示例#9
0
def delete(ID):
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)

    category = getattr(expense, "_Category")
    amount = getattr(expense, "_Amount")
    date = getattr(expense, "_Date")

    # Adds expense amount back to balance
    bal_dict = from_csv(balance_csv)
    bal_dict["balance"] = float(bal_dict["balance"]) + float(amount)

    # Save expense
    EM.to_csv(expense_csv)

    # Save balance, budget
    add_to_csv(bal_dict["balance"], bal_dict["budget"])

    delete_expense(ID)
    flash(f'Expense #{ID} has been deleted!')
    flash(f'${amount} added to balance')
    return redirect(url_for("index"))