Esempio n. 1
0
def view_details(cid):
    current_user = g.user
    store_id = get_or_set_store_id()

    customer = Customer.find_by_id_and_store(cid, store_id)

    if not customer:
        abort(404)

    orders = Order.find_all_by_customer_sales(customer.id)
    appts = Appointment.find_all_by_customer_sales(customer.id)
    receptions = Reception.find_all_by_customer_sales(customer.id)
    calllogs = Calllog.find_all_by_customer_id(customer.id)

    form = CustomerReassignForm()
    form.saleses_list.choices = get_sales_selection(store_id)

    if current_user.is_receptionist() or (
            current_user.is_sales()
            and current_user.is_role_in_store_id(store_id, 'manager') == False
            and customer.sales_id != current_user.id):
        abort(401)

    if request.method == 'GET':
        form.saleses_list.data = customer.sales_id

    if request.method == 'POST' and (
            form.saleses_list.data not in ('None', customer.sales_id)
            and current_user.is_role_in_store_id(store_id, 'manager')):
        customer.reassign(int(form.saleses_list.data))
        customer.save_and_flush()
        flash_success(u'重新分配成功')
        return redirect(url_for('customers.view_details',
                                cid=cid,
                                back_url=back_url(
                                    url_for('customers.customers'))),
                        code=303)

    return render_template('customers/detail.html',
                           selected_menu=CUSTOMER_MGMT,
                           customer=customer,
                           orders=orders,
                           appts=appts,
                           receptions=receptions,
                           calllogs=calllogs,
                           form=form,
                           back_url=back_url(url_for('customers.customers')))
Esempio n. 2
0
    def reset_status(self):
        from application.models.appointment import Appointment

        if self.status == 'defeated':
            return
        elif len(Order.find_all_by_customer_sales(self.id, self.sales_id)):
            self.status = 'ordered'
            return
        elif Appointment.exist_opened_of_sales_customer(self.sales_id, self.id):
            self.status = 'enlist'
            return
        elif self.has_required_fields_filled():
            self.status = 'formal'
            return
        else:
            self.status = 'draft'
            return
Esempio n. 3
0
def get_all_customer_orders(customer_id):
    sales_id = request.args.get("sales_id", None)
    return Order.find_all_by_customer_sales(customer_id, sales_id)