Пример #1
0
def reservar_tickets(user, dias, id_log, unit):
    """ Reserva tickets de acuerdo a los días pasados como parametros para ese
    usuario. """
    data = {}
    tickets_reservados = []
    dias_full = []
    for dia in dias:
        disponibles = get_tickets_libres(dia)
        if disponibles:
            data['id_dia'] = get_id_dia(dia)
            data['importe'] = get_categoria_importe(user['id_categoria'])
            data['unidad'] = unit  # terminal o web
            data['estado'] = 1  # reservado
            fecha = str(int(time()))
            data['barcode'] = fecha
            update_tickets_dia(data['id_dia'])  # tickets_vendidos + 1
            id_ticket = db.tickets.insert(**data)
            db.commit()
            # agregar el ticket y el día como reservado
            tickets_reservados.append((id_ticket, data['id_dia']))
            insert_ticket_log(id_ticket, id_log)
            id_ticket = str(id_ticket)
            codigo = fecha + '0' * (10 - len(id_ticket)) + id_ticket
            db(db.tickets.id == id_ticket).update(barcode=codigo)
            db.commit()
        else:
            # agregar el día como no disponible
            dias_full.append(dia)
        data = {}
    if len(dias) == (len(tickets_reservados) + len(dias_full)):
        return tickets_reservados, dias_full, 1
    else:
        return tickets_reservados, dias_full, 0
Пример #2
0
def comprar_tickets(tickets_reservados, id_log):
    """ compra los tickets reservados al cambiarles el estado de reservado(1)
    a impresos(2) e inserta el log de compra para cada ticket."""
    for id_ticket, dia in tickets_reservados:
        insert_ticket_log(id_ticket, id_log)
        db(db.tickets.id == id_ticket).update(estado=2)
        db.commit()
Пример #3
0
def cancelar_tickets(tickets_reservados):
    """ Cancela los tickets pasados como parametro cambiando el estado de
    reservado(1) a cancelado (5) y aumenta los tickets disponibles para ese
    día."""
    for id_ticket, id_dia in tickets_reservados:
        db(db.tickets.id == id_ticket).update(estado=5)
        db.commit()
        update_tickets_dia(id_dia, band=0)
Пример #4
0
def update_activo(user, valor):
    """
    Actualiza el campo activo de un usuario(user) con el valor dado.
    valor = 1 -> usuario activo(logueado en el sistema)
    valor = 0 -> usuario inactivo(no está logueado en el sistema)
    """
    db(db.usuarios.dni == user['dni']).update(activo=valor)
    db.commit()
Пример #5
0
def insert_billete(user, valor, id_maquina):
    """ Registra el ingreso de billetes, indicando el valor y la maquina. """
    data = {}
    data['fecha'] = datetime.now()
    data['dni'] = user['dni']
    data['valor'] = valor
    data['id_maquina'] = id_maquina
    db.billetes.insert(**data)
    db.commit()
Пример #6
0
def update_saldo(user, importe, band):
    """
    Actualiza el saldo del user de acuerdo al importe del ticket.
    Si band = 0 anulación/carga => suma el saldo
    Si band = 1 compra => resta el saldo
    """
    if band:
        db(db.usuarios.dni == user['dni']).update(
                                            saldo=db.usuarios.saldo - importe)
    else:
        db(db.usuarios.dni == user['dni']).update(
                                            saldo=db.usuarios.saldo + importe)
    db.commit()
Пример #7
0
def insert_ticket_grupal_log(id_ticket, id_log_usuario):
    """inserta una entrada en el log de tickets grupales"""
    try:
        data = {}
        data['id_ticket_grupal'] = id_ticket
        data['id_log_usuario'] = id_log_usuario
        id_log = db.tickets_grupales_log_usuarios.insert(**data)
        db.commit()
        if id_log:
            return id_log
        else:
            return None
    except IntegrityError:
        db.rollback()
        return None
Пример #8
0
def update_tickets_dia(id_dia, cantidad=1, band=1):
    """
    Actualiza la cantidad de tickets vendidos de acuerdo a band en cant veces.

        band = 1 -> compra aumenta la cantidad de tickets vendidos
        band = 0 -> anulación disminuye la cantidad de tickets vendidos
    """
    if band:
        db(db.dias.id == id_dia).update(
            tickets_vendidos=db.dias.tickets_vendidos + cantidad
            )
    else:
        db(db.dias.id == id_dia).update(
            tickets_vendidos=db.dias.tickets_vendidos - cantidad
        )
    db.commit()
Пример #9
0
def anular_ticket(id_ticket, user, unidad):
    """
    Anula el ticket a traves de su id actualizando el estado.
    estado = 3 -> consumido
    estado = 2 -> impreso
    estado = 1 -> activo
    estado = 0 -> anulado
    Además inserta en el log el ticket anulado, actualiza el saldo
    y los tickets vendidos de ese día.
    """
    db(db.tickets.id == id_ticket).update(estado=0)
    db.commit()
    id_log = insert_log(user, 'anular', unidad)
    insert_ticket_log(id_ticket, id_log)
    importe = get_importe_ticket(id_ticket)
    update_saldo(user, importe, 0)
    update_tickets_dia(get_dia_ticket(id_ticket), band=0)
Пример #10
0
def insert_log(user, accion, unidad, desc=''):
    """inserta una entrada en el log, de acuerdo a la acción realizada"""
    data = {}
    data['id_accion'] = get_id_accion(accion)
    data['fecha'] = datetime.now()
    data['dni'] = user['dni']
    data['lugar'] = unidad
    data['descripcion'] = "%s %s" % (
        get_nombre_accion(data['id_accion']),
         desc
    )
    id_log = db.log_usuarios.insert(**data)
    db.commit()
    if id_log:
        return id_log
    else:
        return None
Пример #11
0
def insert_ticket_cierre(id_log, total, unidad):
    """ Registra el ticket de cierre de acuerdo al total de dinero retirado y
    la maquina donde se hace. """
    data = {}
    data['fecha'] = datetime.now()
    data['total'] = total
    data['id_log_usuario'] = id_log
    data['id_maquina'] = unidad
    fecha = str(int(time()))
    data['barcode'] = fecha
    id_ticket = db.tickets_cierre.insert(**data)
    db.commit()
    id_ticket = str(id_ticket)
    codigo = fecha + '0' * (10 - len(id_ticket)) + id_ticket
    db(db.tickets_cierre.id == id_ticket).update(barcode=codigo)
    db.commit()
    return id_ticket
Пример #12
0
def update_totales_dia(id_dia, cantidad=1, band=1):
    """
    Actualiza la cantidad de tickets totales de acuerdo a band en cantidad
    de veces:

        band = 1 -> aumenta la cantidad de tickets totales
        band = 0 -> disminuye la cantidad de tickets totales
    """
    if band:
        db(db.dias.id == id_dia).update(
            tickets_totales=db.dias.tickets_totales + cantidad
        )
    else:
        db(db.dias.id == id_dia).update(
            tickets_totales=db.dias.tickets_totales - cantidad
        )
    db.commit()
Пример #13
0
def update_ticket_grupal(id_ticket, user, unidad, state):
    """ Actualiza el estado del ticket por su id.
    estado = 4 -> vencido
    estado = 3 -> consumido
    estado = 2 -> impreso
    estado = 1 -> reservado
    estado = 0 -> anulado
    """
    db(db.tickets_grupales.id == id_ticket).update(id_estado=state)
    db.commit()
    if state == 2:
        id_log = insert_log(user, 'imprimir_grupal', unidad)
        insert_ticket_grupal_log(id_ticket, id_log)
    elif state == 0:
        id_log = insert_log(user, 'anular_grupal', unidad)
        insert_ticket_grupal_log(id_ticket, id_log)
    else:
        pass
Пример #14
0
def comprar_ticket_grupal(cant, delegacion, categoria, date, recibo, id_log):
    """Compra un ticket grupal agregando la cant extra de días necesarios
    para la fecha date, indicando la delegación."""
    data = {}
    data['id_dia'] = get_id_dia(date)
    data['importe'] = categoria[0]  # 0 -> importe
    data['id_categoria'] = get_categoria_id(categoria[1])  # 1 -> nombre
    data['cantidad'] = cant
    data['id_estado'] = 2  # impreso
    data['delegacion'] = delegacion
    data['recibo'] = recibo
    fecha = str(int(time()))
    data['barcode'] = fecha
    update_tickets_dia(data['id_dia'], cant, 1)  # tickets_vendidos + cant
    update_totales_dia(data['id_dia'], cant, 1)  # tickets_totales + cant
    id_ticket = db.tickets_grupales.insert(**data)
    db.commit()
    insert_ticket_grupal_log(id_ticket['id'], id_log)
    id_ticket = str(id_ticket['id'])
    codigo = 'G' + fecha[1:] + '0' * (10 - len(id_ticket)) + id_ticket
    db(db.tickets_grupales.id == id_ticket).update(barcode=codigo)
    db.commit()
    return id_ticket
Пример #15
0
def update_papel_disponible(id_maquina, band=0, cant=1):
    """
    Actualiza al cantidad de tickets que se pueden imprimir una vez
    que tiene poco papel.
    band:
        0 -> tickets_disponibles -= cant
        1 -> tickets_disponibles += cant
        2 -> tickets_disponibles = cant
    """
    if band == 1:
        db(db.maquinas.id == id_maquina).update(
            tickets_disponibles=db.maquinas.tickets_disponibles + cant
        )
    elif band == 2:
        db(db.maquinas.id == id_maquina).update(tickets_disponibles=cant)
    elif band == 0:
        db(db.maquinas.id == id_maquina).update(
            tickets_disponibles=db.maquinas.tickets_disponibles - cant
        )
    else:
        return 1
    db.commit()
    return 0
Пример #16
0
def update_estado(user, valor):
    """Actualiza el estado de un usuario(user) con el valor dado"""
    db(db.usuarios.dni == user['dni']).update(estado=valor)
    db.commit()
Пример #17
0
def update_pass(user, new_pass):
    """Actualiza el password de un usuario(user) con el new_pass dado"""
    db(db.usuarios.dni == user['dni']).update(password=new_pass)
    db.commit()
Пример #18
0
def update_usuario(user, data):
    """Actualiza los datos de un usuario con un diccionario de valores"""
    db(db.usuarios.dni == user['dni']).update(**data)
    db.commit()
Пример #19
0
def update_estado_maquina(id_maquina, state):
    """ Actualiza el estado de una maquina."""
    db(db.maquinas.id == id_maquina).update(estado=state)
    db.commit()
Пример #20
0
def update_all_activos():
    """Actualiza el estado de todos los usuarios"""
    db(db.usuarios.dni != '').update(activo=0)
    db.commit()