Пример #1
0
def cust_home():
    allproducts = Products.fetch_all()
    if 'email' in session:
        if request.method == 'POST':
            email = session['email']
            product = request.form['productname']
            company = request.form['name']
            qun = request.form['quantity']
            date = request.form['date']

            # check for the product quantity
            # product_to_check = Products.query.filter_by(name=product).first()

            if qun > 0:
                flash('Quantity ordered is higher than stock remaining',
                      'danger')
                return redirect(url_for('cust_home'))
            else:
                ch = Orders(email=email,
                            product=product,
                            orderdate=date,
                            customer_id=session['uid'],
                            company=company)
                ch.create_record()

                flash('Order successfully made', 'success')
                return redirect(url_for('cust_home'))

        return render_template('customerorder.html', products=allproducts)
    else:
        flash('Please login', 'danger')
        return redirect(url_for('login'))
Пример #2
0
 def confirm_select_order(self):
     inputs = self.getInput()
     try:
         product = Products.get(Products.id == int(inputs['product']))
         user =Users.get(Users.name == self.isLogin())
         price = inputs['price']
         if inputs.has_key('add'):
             order = Orders.create(
                 owner = user,
                 price = price,
                 description = product.category.name,
             )
         else:
             if not inputs.has_key('selected'):
                 return self.orders_list()
             order = Orders.get(Orders.id == int(inputs['selected']))
         
         details = OrderDetails.create(
             name = product.category.name + "   "+product.diameter,
             product = product,
             count = user,
             price = price,
             ratio = 0.0,
             order = order,
         )
         return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order.id}))
     except Exception, e:
         print 'exc',e
         return self.error(msg='保存订单失败!')
Пример #3
0
def orderJson():
    if session:
        data = request.get_json(force=True)
        stock_item = Products.query.filter_by(id=data['product_id']).first()

        if int(data['quantity']) > int(stock_item.quantity):
            flash('Quantity ordered is higher than stock remaining', 'danger')

            return 'We have an error', 400
        else:
            # update the product's stock quantity when an order is made
            stock_item.quantity = int(stock_item.quantity) - int(
                data['quantity'])
            db.session.add(stock_item)
            db.session.commit()

            o = Orders(email=session['email'],
                       quantity=data['quantity'],
                       total=data['total'],
                       product_id=data['product_id'],
                       company=session['companyname'],
                       customer_id=session['uid'])
            o.create_record()

            return 'Order successfully saved', 200
Пример #4
0
def orderJson():
    data = request.get_json(force=True)
    o = Orders(email=session['email'],
               quantity=data['quantity'],
               total=data['total'],
               product_id=data['product_id'],
               company=data['company'])  #,customer_id=session['uid']
    o.create_record()
    return 'Order successfully saved'
Пример #5
0
    def export_price_sheet(self):
        inputParams = self.getInput()
        try:
            order = Orders.get(Orders.id == int(inputParams['id']))
            details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc())
            self.privData['ORDER'] = order
            self.privData['DETAILS'] = details
            import pdfcrowd
            # create an API client instance
            client = pdfcrowd.Client("luo_brian", "8fee9a05739553c92673004a3ec80201")

            # convert an HTML string and save the result to a file
            import os
            import config
            import utils
           
            tmpFile = os.path.join(config.UPLOAD_DIR, 'temp', '%s.pdf' % utils.uuidgen())
            ofile = open(tmpFile, 'wb')
            html = self.display('price-sheet-details-pdf')
            #html="<head></head><body>我的转换</body>"
            client.convertHtml(html, ofile)
            ofile.close()
            buf = open(tmpFile).read()
            os.unlink(tmpFile)
            web.header('Content-Type', 'application/pdf') 
            return buf
        except Exception, e:
            print e
            return self.error(msg='获取订单详情失败!')
Пример #6
0
    def select_order(self):
        inputs = self.getInput()
        if inputs.has_key('query'):
            return self.orders_list()

        try:
            price, product_id = inputs['product'].split(' ')
            product = Products.get(Products.id == int(product_id))
            order = int(inputs['order'])

            if order > 0:
                details = OrderDetails.create(
                    name = product.category.name +"   "+product.diameter,
                    product = product,
                    count = 1,
                    price = price,
                    ratio = 0.0,
                    order = order,
                )
                return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order}))
            else:
                ordersList = Orders.select().order_by(Orders.id.desc())
                self.privData['ORDERS_LIST'] = ordersList
                self.privData['PRICE'] = price
                self.privData['PRODUCT'] = product
                return self.display('select-order')
        except Exception, e:
            print e
            return self.error(msg='加入订单失败!')
Пример #7
0
    def save_price_sheet(self):
        inputs = self.getInput()
        print inputs
        try:
            if inputs.has_key('add'):
                return web.seeother(self.makeUrl('/wap/categories', {'parent': 1, 'order': int(inputs['id'])}))

            order = Orders.get(Orders.id == int(inputs['id']))

            attrs = {}
            for k, v in inputs.items():
                try:
                    attr, oid = k.split('_')
                except Exception, e:
                    continue

                if not attrs.has_key(oid):
                    attrs[oid] = {}
                attrs[oid][attr] = v

            if not inputs['customer'] or not inputs['description']:
                raise Exception("询价方或备注不能为空!")

            order.customer = inputs['customer']
            order.description = inputs['description']
            order.owner = Users.get(Users.name == self.isLogin())
            order.save()

            for k, v in attrs.items():
                #import pdb;pdb.set_trace()
                import traceback
                if not v['count'] or not v['ratio']:
                    raise Exception("数量或利润率不能为空!")
                nameform = v['name']
                diameterform = v['diameter']
                oldinput= v['can']
                name, diameter = oldinput.split('   ')
                details = OrderDetails.get(OrderDetails.id == int(k))
                details.name = oldinput
                flag = v['bool']
                if flag.find("True")>=0:
                   details.flag=True
                elif details.name!=(details.product.category.name+'   '+details.product.diameter):
                   details.flag=True
                else:                   
                   details.flag=False
                   
                try:
                    product = Products().get(Products.name==name,Products.diameter == diameter)
                except Exception,e:
                    details.price = float(v['input'])
                    details.count = v['count']
                    details.ratio = float(v['ratio'])/100.0
                    details.save()
                  
                details.price = float(v['input'])
                details.count = v['count']
                details.ratio = float(v['ratio'])/100.0
                details.save()
Пример #8
0
 def delete_price_sheet(self):
     inputs = self.getInput()
     try:
         order = Orders.get(Orders.id == int(inputs['id']))
         order.delete_instance()
         return self.orders_list()
     except Exceptions, e:
         return self.error(msg='删除订单失败!')
Пример #9
0
    def delete(self):
        inputParams = self.getInput()

        try:
            order = Orders.get(Orders.id == int(inputParams['id']))
            order.delete_instance()
        except Exception, e:
            return self.error(msg = '删除失败: %s' % e, url=self.makeUrl('/admin/orders/list'))
Пример #10
0
def approve_order(id):

    apr = request.form['approve']

    update = Orders.update_by_id(id=id, status=apr)

    if update:
        return redirect(url_for('all_orders'))
Пример #11
0
def all_orders():
    orderszote = Orders.fetch_all()
    order_value = 0
    for order in orderszote:
        order_value += order.total

    return render_template('allorders.html',
                           orderszote=orderszote,
                           order_value=f'{order_value:,.0f}')
Пример #12
0
def customers():
    allproducts = Products.fetch_all()

    if request.method == 'POST':

        email = request.form['email']
        products = request.form['productname']
        date = request.form['date']
        company = request.form['company']

        o = Orders(email=email,
                   product=products,
                   orderdate=date,
                   company=company)
        o.create_record()
        flash('Order successfull made', 'success')
        return redirect(url_for('customers'))

    return render_template('customers.html', products=allproducts)
Пример #13
0
    def list(self):
        inputParams = self.getInput()
        page = int(inputParams['page']) if inputParams.has_key('page') else 1
        count = config.COUNT_PER_PAGE

        ordersList = Orders.select().order_by(Orders.id.desc())
        pageString = self.getPageStr(self.makeUrl('/admin/orders/list'), page, count, ordersList.count())
        self.privData['ORDERS_LIST'] = ordersList.paginate(page, count)
        self.privData['PAGE_STRING'] = pageString
        return self.display('ordersList')
Пример #14
0
 def orders_list(self):
     try:
         #import pdb; pdb.set_trace()
         user = Users.get(Users.name == self.isLogin())
         ordersList = Orders.select().where(Orders.owner == user).order_by(Orders.id.desc())
         self.privData['ORDERS_LIST'] = ordersList
         return self.display('orders-list')
     except Exception, e:
         print e
         return self.error(msg='获取报价单列表失败!')
Пример #15
0
def approve_order(id):

    apr = request.form['approve']

    update = Orders.update_by_id(id=id, status=apr)

    if update:
        return redirect(url_for('all_orders'))


#if __name__ == '__main__':
#   app.run(debug=True)
Пример #16
0
    def search(self):
        inputParams = self.getInput()
        keywords = inputParams['keywords'].strip().lower() if inputParams.has_key('keywords') else ''
        
        page = int(inputParams['page']) if inputParams.has_key('page') else 1
        count = config.COUNT_PER_PAGE

        ordersList = Orders.select().where(Orders.name.contains(keywords)).order_by(Orders.id.desc())
        pageString = self.getPageStr(self.makeUrl('/admin/orders/list'), page, count, ordersList.count())
        self.privData['NEWS_LIST'] = ordersList.paginate(page, count)
        self.privData['PAGE_STRING'] = pageString
        return self.display('ordersList')
Пример #17
0
 def add_price_sheet(self):
     try:
         user =Users.get(Users.name == self.isLogin())
         order = Orders.create(
             owner = user,
             price = 0.0,
             description = '新报价单',
         )
         return web.seeother(self.makeUrl('/wap/edit_price_sheet', {'id': order.id}))
         #return self.orders_list()
     except Exception, e:
         return self.error(msg='保存订单失败!')
Пример #18
0
 def price_sheet_details(self):
     inputParams = self.getInput()
     try:
         #import pdb;pdb.set_trace();
         order = Orders.get(Orders.id == int(inputParams['id']))
         details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc())
         for od in details:
             print od.product.diameter
         self.privData['ORDER'] = order
         self.privData['DETAILS'] = details
         return self.display('price-sheet-details')
     except Exception, e:
         print e
         return self.error(msg='获取订单详情失败!')
Пример #19
0
 def edit_price_sheet(self):
     inputs = self.getInput()
     try:
         #import pdb; pdb.set_trace()
         order = Orders.get(Orders.id == int(inputs['id']))
         details = OrderDetails.select().where(OrderDetails.order == order).order_by(OrderDetails.id.desc())
         for each_d in details:
             print each_d.name
             print each_d.flag
         self.privData['ORDER'] = order
         self.privData['DETAILS'] = details
         return self.display('edit-price-sheet')
     except Exception,e:
         print e
         return self.error(msg='获取报价单详情信息失败!')
Пример #20
0
def cust_home():
    allproducts = Products.fetch_all()
    if 'email' in session:
        if request.method == 'POST':
            email = session['email']
            product = request.form['productname']
            company = request.form['name']

            qun = request.form['quantity']

            date = request.form['date']

            ch = Orders(email=email,
                        product=product,
                        orderdate=date,
                        customer_id=session['uid'],
                        company=company)
            ch.create_record()
            flash('Order successfully made', 'success')
            return redirect(url_for('cust_home'))
        return render_template('customerorder.html', products=allproducts)
    else:
        flash('Please login', 'danger')
        return redirect(url_for('login'))
Пример #21
0
def all_orders():

    orderszote = Orders.fetch_all()

    return render_template('allorders.html', orderszote=orderszote)
Пример #22
0
def orders():
    if 'email' in session:
        orders = Orders.fetch_by_id(session['uid'])

    return render_template('eachorder.html', orders=orders)