Ejemplo n.º 1
0
def all_orders():
    state = request.args.get("state", "need_preparing_orders")

    if state == "need_preparing_orders":
        page = "Need Preparing Orders"
        orders = Order.read_all_orders_filter(
            and_(Order.is_prepared == False, Order.is_terminated == False))
    elif state == "pre_orders":
        page = "Pre Orders"
        orders = Order.read_all_orders_filter(
            and_(Order.is_prepared == False, Order.is_terminated == False,
                 Order.pre_order == True))
    elif state == "prepared_orders":
        page = "Prepared Orders"
        orders = Order.read_all_orders_filter(Order.is_prepared == True)

    elif state == "received_orders":
        page = "Recieved Orders"
        orders = Order.read_all_orders_filter(Order.customer_received == True)

    elif state == "need_transporting":
        page = "Need Transporting"
        orders = Order.read_all_orders_filter(Order.customer_received == False,
                                              Order.is_prepared == True,
                                              Order.is_terminated == False)

    return render_template('orders/all_orders_base_1.html',
                           orders=orders,
                           page=page,
                           state=state)
Ejemplo n.º 2
0
def customer_care_order_detail(order_id):
    form = ReasonForm()
    order = Order.read_order(id=int(order_id))
    cart_items_sum = Cart.customer_order_items_total(order.id)
    courier_districts = Courier.read_courier_districts()
    order_return_form = OrderReturnsForm()
    order_return_form.order_ref.data = order.id

    order_products = []
    order_return_form.order_products.choices = order_products
    timezone = pytz.timezone("Africa/Kampala")
    _date = timezone.localize(order.pre_order_time)
    order_date = _date.astimezone(timezone).strftime("%a %b %d %H:%M:%S %Z %Y")
    for item in order.cart:
        order_products.append(
            (item.product_id,
             f"{item.product_name},{item.quantity} @{item.unit_price}"))

    if request.method == "POST":
        Order.customer_care_register_order_sales(data=request.json,
                                                 order=order)
        return jsonify()

    return render_template('orders/order/order_detail.html',
                           order_date=order_date,
                           order=order,
                           cart_items_sum=cart_items_sum,
                           districts=courier_districts,
                           form=form,
                           order_return_form=order_return_form)
Ejemplo n.º 3
0
    def post(self, id):
        customer_id = id
        reason = request.json["reason"]

        Order.terminate_order(customer_id=customer_id, reason=reason)

        return Order.read_customer_orders(customer_id)
Ejemplo n.º 4
0
def dashboard():
    product_sales_today = Sales.read_sales_sum(
        Sales.amount,
        Sales.sales_day == DateUtil().current_date.day,
        Sales.sales_month == DateUtil().current_date.month,
        Sales.sales_year == DateUtil().current_date.year,
    )

    commission_sales_today = Sales.read_sales_sum(
        Sales.commision_amount,
        Sales.sales_day == DateUtil().current_date.day,
        Sales.sales_month == DateUtil().current_date.month,
        Sales.sales_year == DateUtil().current_date.year,
    )
    customer_count = Customer.read_customer_count()
    vendors_count = Resturant.read_restaurants_count()
    products_count = Products.read_products_count()
    orders_count = Order.read_orders_count()
    total_revenue = Sales.read_sales_sum(Sales.amount)

    context = dict(product_sales_today=product_sales_today,
                   commission_sales_today=commission_sales_today,
                   total_revenue=total_revenue,
                   shipping_sales_today=0,
                   standard_shipping_sales_td=0,
                   pickup_station_sales_td=0,
                   vendors_count=vendors_count,
                   customer_count=customer_count,
                   products_count=products_count,
                   orders_count=orders_count)

    return render_template('dashboard.html', **context)
Ejemplo n.º 5
0
def courier_details(courier_id):
    courier = Courier.read_courier(id=courier_id)
    orders = Order.read_all_orders_delivery_details_filter(
        DeliveryDetails.courier_id == courier_id)
    return render_template('courier_detail.html',
                           courier=courier,
                           orders=orders,
                           order_count=len(orders))
Ejemplo n.º 6
0
def customer_care_orders():
    page = int(request.args.get("page", 1))
    orders = Order.read_all_orders()
    pagination = Paginate(orders, page, 8)
    next_url = url_for(
        ".customer_care_orders",
        page=pagination.next_page) if pagination.has_next else None
    prev_url = url_for(
        ".customer_care_orders",
        page=pagination.previous_page) if pagination.has_previous else None
    return render_template('orders/orders.html',
                           orders=orders,
                           next_url=next_url,
                           prev_url=prev_url,
                           pagination=pagination,
                           current_page=page)
Ejemplo n.º 7
0
    def post(self):
        method = request.json["payment_method"]
        customer_id = request.json["customer_id"]
        delivery_contact = request.json["deliveryContact"]
        delivery_fee = request.json["deliveryFee"]
        address = request.json["address"]
        county = address['county']
        sub_county = address['sub_county']
        village = address['village']
        other_details = address['other_details']
        pre_order = request.json["pre_order"]
        pre_order_time = check_for_pre_order_date(
            request.json["pre_order_date"])

        if (Order.place_customer_order(payment_method=method,
                                       customer_id=customer_id,
                                       county=county,
                                       sub_county=sub_county,
                                       village=village,
                                       other_details=other_details,
                                       delivery_contact=delivery_contact,
                                       delivery_fee=delivery_fee,
                                       pre_order=pre_order,
                                       pre_order_time=pre_order_time)):
            response = {
                "status": "success",
                "message": "Order placed successfully.",
                "data": 0
            }

            return response

        else:

            response = {
                "status": "error",
                "message":
                "There was a problem while trying to place your order. Please try again",
                "data": 0
            }

            return response
Ejemplo n.º 8
0
def terminate_order(order_id):
    form = ReasonForm()
    order = Order.read_order(id=order_id)
    if order.is_terminated and order.termination_reason:
        flash("Order already terminated", "danger")
        return redirect(
            url_for(".customer_care_order_detail", order_id=order_id))

    if order.is_paid:
        flash(
            "Cannot terminate already paid order, items have to be returned and customer compensated",
            "danger")
        return redirect(
            url_for(".customer_care_order_detail", order_id=order_id))

    if form.validate_on_submit() and order:
        if order.customer_care_terminate_order(form.reason.data):
            flash("Order terminated successfully", "success")
        else:
            flash("Failed to terminate order", "danger")
    else:
        flash("Failed to terminate order", "danger")

    return redirect(url_for(".customer_care_order_detail", order_id=order_id))
Ejemplo n.º 9
0
def orders_not_prepared():
    orders_not_prepared = Order.read_orders_not_prepared_count()
    return jsonify(orders_not_prepared=orders_not_prepared)
Ejemplo n.º 10
0
def init_cusomter_care_page():
    orders_not_prepared = Order().read_orders_not_prepared_count()
    _session["orders_not_prepared"] = orders_not_prepared
Ejemplo n.º 11
0
def cancelled_orders():
    orders_terminated = Order.read_all_orders_filter(
        Order.is_terminated == True)
    return render_template('orders/cancelled_orders.html',
                           orders_terminated=orders_terminated)
Ejemplo n.º 12
0
 def get(self, id):
     customer_orders = Order.read_customer_orders(id)
     return customer_orders