Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)