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
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()
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)
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()
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()
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()
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
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()
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)
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
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
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()
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
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
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
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()
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()
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()
def update_estado_maquina(id_maquina, state): """ Actualiza el estado de una maquina.""" db(db.maquinas.id == id_maquina).update(estado=state) db.commit()
def update_all_activos(): """Actualiza el estado de todos los usuarios""" db(db.usuarios.dni != '').update(activo=0) db.commit()