def ordermanagement(): makers = Maker.query.all() curr_maker_id = session['maker_id'] if session['maker_id'] else Maker.query.first().id products = Product.query.filter_by(active_flg=True).filter_by(maker_id=curr_maker_id).all() form_edit_qty = EditQtyStockForm() if form_edit_qty.is_submitted(): # sumbitting products to order if 'checked-items-ids-hid' in request.form: order_items_ids = request.form['checked-items-ids-hid'] return redirect(url_for('createOrder', maker_to_order=curr_maker_id, order_items_ids=order_items_ids)) #submitting min. stock quantities if form_edit_qty.validate(): qty = form_edit_qty.qty_stock.data id_text = request.form['product_id'] ids = id_text.split(',') if ((qty and ids) or (qty == 0 and ids)) and ids != ['']: for curr_id in ids: product = Product.query.filter_by(id=int(curr_id)).first() if product: product.min_stock_limit = qty db.session.add(product) db.session.commit() flash(gettext('Minimum stock limit successfully updated.')) else: flash(gettext('Input value error.')) else: flash(gettext('Input value error.')) return redirect(url_for("ordermanagement")) return render_template('orders/ordermanagement.html', title=gettext("Order management"), makers=makers, curr_maker_id=curr_maker_id, products=products, form_edit_qty=form_edit_qty)
def stock(page=1): #Query products with conditions products = Product.query.filter_by(active_flg=True) curr_search = None if session['search_string']: curr_search = session['search_string'] products = products.filter(or_(Product.code.ilike('%' + session['search_string'] + '%'), (Product.desc_CS.ilike('%' + session['search_string'] + '%')), (Product.desc_JP.ilike('%' + session['search_string'] + '%')))) if g.maker_id is not None: products = products.filter(Product.maker_id == int(g.maker_id)) g.category_id = Maker.query.filter_by(id=g.maker_id).one().category_id if g.category_id: curr_category = Category.query.filter_by(id=g.category_id).one() products = products.filter_by(category_id=int(g.category_id)) available_makers_id = [maker.id for maker in curr_category.makers] else: available_makers_id = [maker.id for maker in Maker.query.all()] #Custom ordering if session['order_type']: order_type = session['order_type'].split('-') if order_type[0] == 'csdesc': property = Product.desc_CS elif order_type[0] == 'maker': property = Product.maker_id elif order_type[0] == 'jpdesc': property = Product.desc_CS elif order_type[0] == 'unitp': property = Product.price_unit elif order_type[0] == 'retap': property = Product.price_retail elif order_type[0] == 'stock': property = Product.qty_stock elif order_type[0] == 'req': property = Product.request_qty elif order_type[0] == 'ord': property = Product.order_qty elif order_type[0] == 'net': property = (Product.qty_stock - Product.request_qty + Product.order_qty) else: session['order_type'] = None property = None style = order_type[1] if style: if style == '3' or style == '4': products = products.filter(property > 0) if style == '5' or style == '6': products = products.filter(property <= 0) if style == '1' or style == '3' or style == '5': products = products.order_by(property.desc()) else: products = products.order_by(property) products = products.order_by(Product.maker_id, Product.code) products = products.paginate(page, current_user.products_per_page, False) #Query end categories = Category.query.order_by(Category.order.asc()).all() makers = Maker.query.filter(Maker.id.in_(available_makers_id)).all() curr_maker_name = Maker.query.filter_by(id=g.maker_id).one().name if g.maker_id else None form = EditQtyStockForm() if form.is_submitted(): if form.validate(): qty = form.qty_stock.data id = request.form['product_id'] if (qty and id) or (qty == 0 and id): product = Product.query.filter_by(id=int(id)).first() if product: product.qty_stock = qty db.session.add(product) db.session.commit() flash(gettext('Stock quantity successfully updated.')) else: flash(gettext('Input value error.')) else: flash(gettext('Input value error.')) page = request.form['page'] if request.form['product_id'] else 1 return redirect(url_for("stock", page=page)) for p in products.items: urls = getImgUrls(p.id) if urls: p.img_url = urls[0] return render_template("stock.html", title=gettext('Stock condition'), categories=categories, makers=makers, curr_maker_name=curr_maker_name, curr_search=curr_search, form=form, form_search=SearchForm(), axm_product_url=AXM_PRODUCT_URL, products=products)