コード例 #1
0
def login():
    if request.method == "POST":
        username = request.form['username']
        password = request.form['password']
        user = User.find_user(User, username, password)
        if user:
            role = user.get_role()
            if role == "cashier":
                if not Session.get_current_session(Session, user.cashier):
                    login_user(user, True)
                    Session(user.cashier)
                    return redirect(url_for('user.login'))
                else:
                    flash(
                        "You are logged in another location. Please logout before logging in again",
                        "info")
                    session.close()
                    return redirect(url_for('user.login'))
            elif role == "manager":
                login_user(user, True)
                session.close()
                return redirect(url_for('email.send_email'))
            elif role == "chef":
                login_user(user, True)
                session.close()
                return redirect(url_for('sale.get_food_sales'))
            flash("User not found", "danger")
            session.close()
            return redirect(url_for('user.login'))
        else:
            flash("User not found", "danger")
            session.close()
            return redirect(url_for('user.login'))
    elif request.method == "GET":
        if current_user.is_authenticated:
            if current_user.cashier_id:
                session.close()
                return redirect(url_for('order.get_orders'))
            elif current_user.manager_id:
                session.close()
                return redirect(url_for('sale.get_sales'))
            elif current_user.chef_id:
                session.close()
                return redirect(url_for('sale.get_food_sales'))
        else:
            managers = Manager.read(Manager)
            manager_available = True
            if len(managers) == 0:
                manager_available = False
            session.close()
            return render_template('global/login.html',
                                   mod=module,
                                   manager_available=manager_available)
コード例 #2
0
def get_sessions():
    if request.method == "GET":
        sessions = Session.read(Session)
        session_page = Session.read_limit(Session, 1, 10)
        cashiers = Cashier.read(Cashier)
        return render_template('manager/cashier-session.html',
                               sessions=sessions,
                               session_page=session_page,
                               mod=module,
                               cashiers=cashiers)
    elif request.method == "POST":
        return redirect(url_for('session.get_sessions'))
コード例 #3
0
def filter_sessions():
    if request.method == "GET":
        cashiers = Cashier.read(Cashier)

        cashier = request.args["cashier"]
        _from = request.args["from"]
        to = request.args["to"]

        if _from:
            _from = utils.convert_date_from_html(_from)
        else:
            _from = datetime.datetime(2000, 1, 1)
        if to:
            to = utils.convert_date_from_html(to)
        else:
            to = datetime.datetime(3000, 1, 1)

        sessions = Session.filter(Session, cashier, _from, to)

        # Avoid error on changing str to int
        if cashier == "":
            cashier = 0

        return render_template("manager/cashier-session.html",
                               mod=module,
                               sessions=sessions,
                               cashiers=cashiers,
                               cashier_id=int(cashier),
                               today=_from,
                               tomorrow=to)
コード例 #4
0
def terminate(id):
    if current_user.manager and request.method == "POST":
        cash = request.form["cash"]
        session = Session.read_one(Session, id)
        session.update(cash)
        flash("Session has been terminated successfully", "info")
        return redirect(url_for("session.get_sessions"))
コード例 #5
0
def add_sales():
    if request.method == "POST":
        sales = request.form["sales"]
        waiter_id = request.form["waiter"]
        cashier_id = request.form["cashier"]
        customer = request.form["customer"]

        waiter = Waiter.read_one(Waiter, waiter_id)
        cashier = Cashier.read_one(Cashier, cashier_id)

        new_order = Order(customer, waiter, cashier)

        sales = json.loads(sales)
        food_sales = sales["food_items"]
        drink_sales = sales["drink_items"]

        verified_bill = 0

        for drink_sale in drink_sales.values():
            brand = Brand.read_one(Brand, drink_sale["id"])
            reduce_quantity = float(drink_sale["quantity"]) / float(
                drink_sale["quantity_ratio"])
            Sale(drink_sale["sale_unit"],
                 drink_sale["sale_price"],
                 drink_sale["quantity"],
                 new_order,
                 waiter,
                 cashier,
                 brand=brand,
                 reduce_quantity=reduce_quantity,
                 sale_guide_id=drink_sale["sale_guide_id"])
            verified_bill += int(drink_sale["quantity"]) * int(
                drink_sale["sale_price"])

        for food_sale in food_sales.values():
            food = Food.read_one(Food, food_sale["id"])
            reduce_quantity = float(food_sale["quantity"]) / float(
                food_sale["quantity_ratio"])
            Sale(food_sale["sale_unit"],
                 food_sale["sale_price"],
                 food_sale["quantity"],
                 new_order,
                 waiter,
                 cashier,
                 food=food,
                 reduce_quantity=reduce_quantity)
            verified_bill += int(food_sale["quantity"]) * int(
                food_sale["sale_price"])

        new_order.bill = verified_bill
        current_session = Session.get_current_session(Session,
                                                      current_user.cashier)
        current_session.orders.append(new_order)
        session.commit()
        flash("Order submitted successfully", "success")
        order_id = new_order.id
        session.close()
        return redirect(url_for('order.get_order', id=order_id))
コード例 #6
0
def logout():
    cashier_id = request.form["cashier"]
    cashier = Cashier.read_one(Cashier, cashier_id)
    current_session = Session.get_current_session(Session, cashier)
    if current_session:
        current_session.update(0)
    else:
        logout_user()
        flash("Login to start a new session", "info")
    return redirect(url_for('user.login'))
コード例 #7
0
def get_session_page():
    page = request.args.get("page")
    if page:
        page = int(page)
        if page == 0:
            return redirect(url_for('session.get_sessions'))
        session_page = Session.read_limit(Session, page, 10)
        sessions = session_page.items
        cashiers = Cashier.read(Cashier)
        return render_template("manager/cashier-session.html",
                               mod=module,
                               sessions=sessions,
                               session_page=session_page,
                               current_page=page,
                               cashiers=cashiers)
    else:
        return redirect(url_for("order.get_sessions"))
コード例 #8
0
def close_session():
    if request.method == "GET":
        return render_template('cashier/close-session.html', mod=module)
    elif request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]
        cash = request.form["cash"]
        user = User.find_user(User, username, password)
        if user and user.cashier == current_user.cashier:
            current_session = Session.get_current_session(
                Session, current_user.cashier)
            if current_session:
                current_session.update(cash)
                return redirect(url_for('user.logout'))
            else:
                flash("Looks like you do not have a session running", "info")
                return redirect(url_for('session.close_session'))
        else:
            flash("Unknown User", "danger")
            return redirect(url_for('session.close_session'))
コード例 #9
0
def get_orders():
    cashiers = Cashier.read(Cashier)
    waiters = Waiter.read(Waiter)
    order_page = Order.read_limit(Order, 1, 10)

    if current_user.manager:
        orders = Order.read(Order)
        total_bill, total_paid = utils.compute_total_bill_and_total_paid_from_orders(orders)
        return render_template("manager/orders.html", order_page=order_page, mod=module, orders=orders, total_bill=total_bill, total_paid=total_paid, waiters=waiters, cashiers=cashiers)
    elif current_user.cashier:
        current_session = Session.get_current_session(Session, current_user.cashier)
        if current_session:
            orders = current_session.orders
            orders.reverse()
            total_bill, total_paid = utils.compute_total_bill_and_total_paid_from_orders(orders)
            return render_template("cashier/orders.html", mod=module, orders=orders, waiters=waiters, total_bill=total_bill, total_paid=total_paid)
        flash("No session was found! Login to start a new session", "info")
        return redirect(url_for('user.logout'))
    elif current_user.chef:
        orders = Order.read(Order)
        return render_template("chef/orders.html", mod=module, orders=orders, waiters=waiters)
コード例 #10
0
def search():
    if request.method == "GET":
        search_string = request.args.get("search-string")

        if current_user.cashier:
            current_session = Session.get_current_session(Session, current_user.cashier)

            orders = Order.search_customer(Order, search_string, current_session.id)

            total_bill, total_paid = utils.compute_total_bill_and_total_paid_from_orders(orders)

            cashiers = Cashier.read(Cashier)
            waiters = Waiter.read(Waiter)

            return render_template("cashier/orders.html", mod=module, orders=orders, total_bill=total_bill,
                                       total_paid=total_paid, cashiers=cashiers, waiters=waiters)
        else:
            orders = Order.search_customer(Order, search_string, None)
            total_bill, total_paid = utils.compute_total_bill_and_total_paid_from_orders(orders)

            cashiers = Cashier.read(Cashier)
            waiters = Waiter.read(Waiter)
            return render_template("manager/orders.html", mod=module, orders=orders, total_bill=total_bill,
                                   total_paid=total_paid, cashiers=cashiers, waiters=waiters)