Esempio n. 1
0
def ver_transacciones():
    prod_id = request.query.prod_id or '123'
    bodega_id = request.query.bodega_id or 1
    today = datetime.date.today()
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    items = sorted(transactionapi.get_transactions(prod_id, start, end),
                   key=lambda i: i.fecha, reverse=True)
    counts = {}
    count_expr = sessionmanager.session.query(NContenido).filter_by(
        prod_id=prod_id)
    if bodega_id is not None:
        bodega_id = int(bodega_id)
        if bodega_id == -1:
            bodega_id = None

    for x in count_expr:
        counts[x.bodega_id] = x.cant
    if bodega_id:
        items = filter(lambda i: i.bodega_id == bodega_id, items)
    for i in items:
        i.bodega_name = bodegaapi.get(i.bodega_id).nombre
        i.count = counts[i.bodega_id]
        counts[i.bodega_id] -= i.delta
    bodegas = bodegaapi.search()
    bodegas.append(Bodega(id=-1, nombre='Todas'))
    temp = jinja_env.get_template('ver_transacciones.html')
    return temp.render(items=items, start=start, end=end,
                       prod_id=prod_id, bodegas=bodegas, bodega_id=bodega_id)
Esempio n. 2
0
def sale_by_product():
    today = datetime.datetime.now()
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    alm_id = int(request.query.get('almacen_id', 1))
    almacen = storeapi.get(alm_id)

    prods_sale = defaultdict(Item)
    for inv, x in full_invoice_items(invapi, start, end):
        if inv.almacen_id != almacen.almacen_id:
            continue
        obj = prods_sale[x.prod.prod_id]
        obj.prod = x.prod
        if obj.cant:
            obj.cant += x.cant
        else:
            obj.cant = x.cant
    temp = jinja_env.get_template('ver_ventas_por_prod.html')
    values = sorted(prods_sale.values(),
                    key=lambda x: -x.cant * x.prod.precio1)
    for x in values:
        print x.serialize()
    return temp.render(items=values,
                       start=start,
                       end=end,
                       almacen=almacen.nombre,
                       almacenes=storeapi.search())
Esempio n. 3
0
def sale_by_product():
    today = datetime.datetime.now()
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    alm_id = int(request.query.get('almacen_id', 1))
    almacen = storeapi.get(alm_id)

    prods_sale = defaultdict(Item)
    for inv, x in full_invoice_items(invapi, start, end):
        if inv.almacen_id != almacen.almacen_id:
            continue
        obj = prods_sale[x.prod.prod_id]
        obj.prod = x.prod
        if obj.cant:
            obj.cant += x.cant
        else:
            obj.cant = x.cant
    temp = jinja_env.get_template('ver_ventas_por_prod.html')
    values = sorted(prods_sale.values(),
                    key=lambda x: -x.cant * x.prod.precio1)
    for x in values:
        print x.serialize()
    return temp.render(items=values, start=start, end=end,
                       almacen=almacen.nombre,
                       almacenes=storeapi.search())
Esempio n. 4
0
def ver_transacciones():
    prod_id = request.query.prod_id or '123'
    bodega_id = request.query.bodega_id or 1
    today = datetime.date.today()
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    items = sorted(transactionapi.get_transactions(prod_id, start, end),
                   key=lambda i: i.fecha,
                   reverse=True)
    counts = {}
    count_expr = sessionmanager.session.query(NContenido).filter_by(
        prod_id=prod_id)
    if bodega_id is not None:
        bodega_id = int(bodega_id)
        if bodega_id == -1:
            bodega_id = None

    for x in count_expr:
        counts[x.bodega_id] = x.cant
    if bodega_id:
        items = filter(lambda i: i.bodega_id == bodega_id, items)
    for i in items:
        i.bodega_name = bodegaapi.get(i.bodega_id).nombre
        i.count = counts[i.bodega_id]
        counts[i.bodega_id] -= i.delta
    bodegas = bodegaapi.search()
    bodegas.append(Bodega(id=-1, nombre='Todas'))
    temp = jinja_env.get_template('ver_transacciones.html')
    return temp.render(items=items,
                       start=start,
                       end=end,
                       prod_id=prod_id,
                       bodegas=bodegas,
                       bodega_id=bodega_id)
Esempio n. 5
0
def ver_prod_advanced(pid):
    session = sessionmanager.session
    prod = session.query(NProducto).filter_by(codigo=pid).first()
    contenidos = list(session.query(NContenido).filter_by(prod_id=pid))
    pricelist = list(session.query(NPriceList).filter(
        NPriceList.prod_id.in_((pid, pid + '+', pid + '-'))))
    images = imgserver.getimg('prod', pid)
    temp = jinja_env.get_template('adv_producto.html')
    return temp.render(prod=prod, contenidos=contenidos, pricelist=pricelist, images=images)
Esempio n. 6
0
def get_price_list():
    almacen_id = request.query.get('almacen_id')
    prefix = request.query.get('prefix')
    if not prefix:
        prefix = ''
    if almacen_id is None:
        abort(400, 'input almacen_id')
    prods = dbapi.search(**{'nombre-prefix': prefix, 'almacen_id': almacen_id})
    temp = jinja_env.get_template('buscar_precios.html')
    return temp.render(prods=prods)
Esempio n. 7
0
def get_price_list():
    almacen_id = request.query.get('almacen_id')
    prefix = request.query.get('prefix')
    if not prefix:
        prefix = ''
    if almacen_id is None:
        abort(400, 'input almacen_id')
    prods = dbapi.search(**{'nombre-prefix': prefix,
                               'almacen_id': almacen_id})
    temp = jinja_env.get_template('buscar_precios.html')
    return temp.render(prods=prods)
Esempio n. 8
0
def ver_prod_advanced(pid):
    session = sessionmanager.session
    prod = session.query(NProducto).filter_by(codigo=pid).first()
    contenidos = list(session.query(NContenido).filter_by(prod_id=pid))
    pricelist = list(
        session.query(NPriceList).filter(
            NPriceList.prod_id.in_((pid, pid + '+', pid + '-'))))
    images = imgserver.getimg('prod', pid)
    temp = jinja_env.get_template('adv_producto.html')
    return temp.render(prod=prod,
                       contenidos=contenidos,
                       pricelist=pricelist,
                       images=images)
Esempio n. 9
0
def vendidos_por_categoria():
    cat = request.query.categoria_id
    start, end = parse_start_end_date(request.query)
    prods = sessionmanager.session.query(
        NProducto.codigo).filter_by(categoria_id=cat)
    all_codigos = {p.codigo for p in prods}
    all_items = []
    total = 0
    for inv, x in full_invoice_items(invapi, start, end):
        if x.prod.prod_id in all_codigos:
            x.prod.precio = (x.prod.precio1 if x.cant >= x.prod.cant_mayorista
                             else x.prod.precio2)
            x.subtotal = x.prod.precio * x.cant
            total += x.subtotal
            all_items.append((inv, x))
    temp = jinja_env.get_template('ver_vendidos.html')
    return temp.render(items=all_items, total=total)
Esempio n. 10
0
def ver_comentarios():
    today = datetime.datetime.now() + datetime.timedelta(days=1)
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    comments = list(sessionmanager.session.query(NComment).filter(
        NComment.timestamp >= start, NComment.timestamp < end).order_by(
        desc(NComment.timestamp)))
    obj_template = {
        ObjType.CHECK: '/app/ver_cheque/{}',
        ObjType.INV: '/app/nota/{}',
        ObjType.TRANS: '/app/ingreso/{}',
    }
    for c in comments:
        c.url = obj_template[c.objtype].format(c.objid)

    temp = jinja_env.get_template('ver_comentarios.html')
    return temp.render(comentarios=comments, start=start, end=end)
Esempio n. 11
0
def vendidos_por_categoria():
    cat = request.query.categoria_id
    start, end = parse_start_end_date(request.query)
    prods = sessionmanager.session.query(NProducto.codigo).filter_by(
        categoria_id=cat)
    all_codigos = {p.codigo for p in prods}
    all_items = []
    total = 0
    for inv, x in full_invoice_items(invapi, start, end):
        if x.prod.prod_id in all_codigos:
            x.prod.precio = (x.prod.precio1 if x.cant >= x.prod.cant_mayorista
                else x.prod.precio2)
            x.subtotal = x.prod.precio * x.cant
            total += x.subtotal
            all_items.append((inv, x))
    temp = jinja_env.get_template('ver_vendidos.html')
    return temp.render(items=all_items, total=total)
Esempio n. 12
0
def ver_comentarios():
    today = datetime.datetime.now() + datetime.timedelta(days=1)
    start, end = parse_start_end_date_with_default(
        request.query, today - datetime.timedelta(days=7), today)
    comments = list(
        sessionmanager.session.query(NComment).filter(
            NComment.timestamp >= start,
            NComment.timestamp < end).order_by(desc(NComment.timestamp)))
    obj_template = {
        ObjType.CHECK: '/app/ver_cheque/{}',
        ObjType.INV: '/app/nota/{}',
        ObjType.TRANS: '/app/ingreso/{}',
    }
    for c in comments:
        c.url = obj_template[c.objtype].format(c.objid)

    temp = jinja_env.get_template('ver_comentarios.html')
    return temp.render(comentarios=comments, start=start, end=end)
Esempio n. 13
0
def show_items():
    all_itemgroups = dbapi.search(ProdItemGroup)
    items = dbapi.search(ProdItem)
    pricelist = dbapi.search(PriceList)

    by_id = defaultdict(Prod)

    def get_id(x):
        if x[-1] == '+':
            return x[:-1].upper()
        return x.upper()

    for x in all_itemgroups:
        by_id[get_id(x.prod_id)].prod = x
    for x in items:
        by_id[get_id(x.prod_id)].items.append(x)
    for x in pricelist:
        by_id[get_id(x.prod_id)].pricelist.append(x)

    temp = jinja_env.get_template('items.html')
    return temp.render(all=by_id)
Esempio n. 14
0
def show_items():
    all_itemgroups = dbapi.search(ProdItemGroup)
    items = dbapi.search(ProdItem)
    pricelist = dbapi.search(PriceList)

    by_id = defaultdict(Prod)

    def get_id(x):
        if x[-1] == '+':
            return x[:-1].upper()
        return x.upper()

    for x in all_itemgroups:
        by_id[get_id(x.prod_id)].prod = x
    for x in items:
        by_id[get_id(x.prod_id)].items.append(x)
    for x in pricelist:
        by_id[get_id(x.prod_id)].pricelist.append(x)

    temp = jinja_env.get_template('items.html')
    return temp.render(all=by_id)
Esempio n. 15
0
def index():
    return jinja_env.get_template('base.html').render()
Esempio n. 16
0
def show_todos():
    todos = todoapi.search(status='PENDING')
    temp = jinja_env.get_template('todos.html')
    return temp.render(todos=todos)
Esempio n. 17
0
def edit_note(uid):
    note = sessionmanager.session.query(NNota).filter_by(id=uid).first()
    temp = jinja_env.get_template('edit_note.html')
    return temp.render(note=note)
Esempio n. 18
0
def edit_note(uid):
    note = sessionmanager.session.query(NNota).filter_by(id=uid).first()
    temp = jinja_env.get_template('edit_note.html')
    return temp.render(note=note)
Esempio n. 19
0
def show_todos():
    todos = todoapi.search(status='PENDING')
    temp = jinja_env.get_template('todos.html')
    return temp.render(todos=todos)
Esempio n. 20
0
def vendidos_por_categoria_form():
    temp = jinja_env.get_template('vendidos_por_categoria_form.html')
    categorias = prodapi.category.search()
    return temp.render(cat=categorias)
Esempio n. 21
0
def vendidos_por_categoria_form():
    temp = jinja_env.get_template('vendidos_por_categoria_form.html')
    categorias = prodapi.category.search()
    return temp.render(cat=categorias)
Esempio n. 22
0
def index():
    return jinja_env.get_template('base.html').render()