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)
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())
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 = dbapi.get(alm_id, Store) 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=dbapi.search(Store))
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 = dbapi.db_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 = dbapi.get(i.bodega_id, Bodega).nombre i.count = counts[i.bodega_id] counts[i.bodega_id] -= i.delta bodegas = dbapi.search(Bodega) 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)
def ver_gastos(): today = datetime.datetime.today() start, end = parse_start_end_date_with_default( request.query, today, today) all_spent = dbapi.db_session.query(NSpent).filter( NSpent.inputdate >= start, NSpent.inputdate <= end + datetime.timedelta(days=1)) temp = jinja_env.get_template('invoice/ver_gastos.html') return temp.render(start=start, end=end, all_spent=all_spent)
def list_checks(): today = datetime.date.today() start, end = parse_start_end_date_with_default( request.query, today, today - datetime.timedelta(hours=12)) result = paymentapi.list_checks(paymentdate=(start, end)) temp = jinja_env.get_template('invoice/list_cheque.html') return temp.render(start=start, end=end, checks=result, title='Cheques Guardados', accounts=dbapi.search(DepositAccount), thisurl=request.url)
def ver_gastos(): today = datetime.datetime.today() start, end = parse_start_end_date_with_default(request.query, today, today) all_spent = dbapi.db_session.query(NSpent).filter( NSpent.inputdate >= start, NSpent.inputdate <= end + datetime.timedelta(days=1)) temp = jinja_env.get_template('invoice/ver_gastos.html') return temp.render(start=start, end=end, all_spent=all_spent)
def list_checks_deposit(): today = datetime.date.today() start, end = parse_start_end_date_with_default( request.query, today, today) if start.isoweekday() == 1: start = start - datetime.timedelta(days=2) result = paymentapi.list_checks(checkdate=(start, end)) temp = jinja_env.get_template('invoice/list_cheque.html') return temp.render(start=start, end=end, checks=result, title='Cheques para depositar', accounts=dbapi.search(Store), thisurl=request.url)
def list_checks_deposit(): today = datetime.date.today() start, end = parse_start_end_date_with_default(request.query, today, today) if start.isoweekday() == 1: start = start - datetime.timedelta(days=2) result = paymentapi.list_checks(checkdate=(start, end)) temp = jinja_env.get_template('invoice/list_cheque.html') return temp.render(start=start, end=end, checks=result, title='Cheques para depositar', accounts=dbapi.search(Store), thisurl=request.url)
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(dbapi.db_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)
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)
def ver_cheques_por_titular(): start, end = parse_start_end_date_with_default(request.query, None, None) titular = request.query.titular if titular: result = dbapi.db_session.query(NCheck).filter( NCheck.holder.contains(titular)) if start is not None: result = result.filter(NCheck.checkdate >= start) if end is not None: result = result.filter(NCheck.checkdate <= end) result = map(Check.from_db_instance, result) else: result = [] temp = jinja_env.get_template('invoice/list_cheque.html') return temp.render(start=start, end=end, checks=result, title='Cheques para depositar', accounts=dbapi.search(DepositAccount), thisurl=request.url, show_titular=True, titular=titular)