async def read_products(): """ Obtiene listado de productos desde la BD. @return: listado de FProduct """ session = next(get_db()) products = session.query(t_ARTICULO).all() return to_array_of_json(products, t_ARTICULO)
async def read_fast_products(): """ Obtiene listado de productos. @return: List[FProduct] El listado de productos, sin calcular el stock. """ session = next(get_db()) products = session.query(t_ARTICULO).all() return to_array_of_json(products, t_ARTICULO)
async def read_sellers(): """ Obtiene listado de vendedores existentes en el sistema. """ session = next(get_db()) sellers = session.query(t_MSOVENDEDOR).all() # sellers = session.query(t_MSOVENDEDOR).filter(t_MSOVENDEDOR.c.tipo == 1).all() return to_array_of_json(sellers, t_MSOVENDEDOR, columns=("codigo", "nombre", "rut"))
async def read_detail_of_sales_of_client(id: str): """ Obtiene el detalle de ventas del id. :param id: Id del encabezado de ventas :return Lista de cantidad de ventas """ session = next(get_db()) details = session.query(t_DETALLEDOCUMENTO).filter( t_DETALLEDOCUMENTO.c.id == id).order_by("linea") return to_array_of_json(details, t_DETALLEDOCUMENTO, columns=("articulo", "cantidad", "totallinea", "descripcion", "precioventa", "linea"))
async def read_clients_of_seller_and_route(seller: str, route: str): """ Obtiene listado de clientes asociados al par (vendedor, ruta). :param seller Vendedor del que se quieren los clientes. :param route Ruta de donde se obtienen los clientes. @return JSON listado de clientes. """ session = next(get_db()) t = t_MSOCLIENTES clients = session.query(t).filter(t.c.Vendedor == seller, t.c.Ruta == route).all() return to_array_of_json(clients, t, columns=('rut', 'codigo', 'razon', 'telefono', 'direccion', 'ciudad'))
async def read_routes(): """ Obitiene listado de rutas que existentes en el sistema. """ try: session = next(get_db()) rutas = session.query(t_MSOSTTABLAS).filter( t_MSOSTTABLAS.columns.tabla == "017").all() result = to_array_of_json(rutas, t_MSOSTTABLAS, columns=("codigo", "descripcion")) return result except: logger.error("Error al tratar de obtener listado de rutas") raise HTTPException(status_code=400, detail="No existen rutas")
async def list_sale_by_sale_by_rut_by_date(sale: str, rut: str, date: int): """Listado de todos los registros de ventas por vendedor y cliente en una fecha determinada. :param sale (str): Código del vendedor :param rut (str): Rut del cliente. :param date (int): Fecha, el sistema considera solo la fecha. No considera hora, minutos y segundos. @return: JSON: Listado de registros de ventas """ session = next(get_db()) t = t_EOS_REGISTROS fechai = datetime.datetime.fromtimestamp(date) details = session.query(t).filter( t.c.rut == rut, t.c.vendedor == sale, t.c.fecha.cast(Date) == fechai).order_by("fila").all() return to_array_of_json(details, t_EOS_REGISTROS)
async def read_client_by_rut(rut: str): """ Obtiene listado de clientes que cumplen un rut. Un cliente puede tener varias sucursales, cada una tiene el mismo rut y diferente código. :param rut Rut del usuario que se busca @return: Datos del cliente """ session = next(get_db()) r = rut.strip().replace(".", "").replace("-", "") r = r.rjust(10, '0') client = session.query(t_MSOCLIENTES).filter( t_MSOCLIENTES.columns.rut == r).all() return to_array_of_json(client, t_MSOCLIENTES, columns=('rut', 'codigo', 'razon', 'telefono', 'direccion', 'ciudad'))
async def read_header_of_sales_of_client(code: str, rut: str, quantity: int): """ Obtiene el encabezado de las últimas (quantity) ventas realizadas al cliente. La lista es ordenada de la más nueva a la más antigua. :param code Código del cliente :param rut Rut del cliente :param quantity Cantidad de ventas que quiere revisar. :return: Lista de cantidad de ventas """ session = next(get_db()) sales = session.query(t_ENCABEZADOCUMENTO). \ filter(t_ENCABEZADOCUMENTO.c.rut == rut, t_ENCABEZADOCUMENTO.c.codigo == code, t_ENCABEZADOCUMENTO.c.tipo == '06', t_ENCABEZADOCUMENTO.c.vigente == 1). \ order_by(t_ENCABEZADOCUMENTO.c.fecha.desc()). \ limit(quantity) return to_array_of_json(sales, t_ENCABEZADOCUMENTO, columns=("rut", "codigo", "fecha", "id", "numero"))
async def get_configuration(): session = next(get_db()) t = t_EOS_CONFIGURACION details = session.query(t).all() return to_array_of_json(details, t)