def get_all(cls):
     """
     Busca todos depósitos de la BD.
     """
     try:
         return DatosDeposito.get_all()
     except Exception as e:
         raise e
 def get_by_id_PD(cls,id):
     """
     Busca todos depósitos realizados en un PD de la BD.
     """
     try:
         return DatosDeposito.get_by_id_PD(id)
     except Exception as e:
         raise e
 def get_user_id(cls,id):
     """
     Busca el id del usuario de un deposito segun su id.
     """
     try:
         return DatosDeposito.get_user_id(id)
     except Exception as e:
         raise e
 def get_by_id_usuario(cls,uid, limit=False):
     """
     Busca los depósitos que correspondan a un usuario en base a su ID.
     """
     try:
         return DatosDeposito.get_by_id_usuario(uid, limit)
     except Exception as e:
         raise e
 def get_by_id(cls,id):
     """
     Busca un depósito según su ID de la BD.
     """
     try:
         return DatosDeposito.get_by_id(id)
     except Exception as e:
         raise e
 def alta(cls, id_mat,id_pd,cantidad,cant_ep):
     """
     Añade un nuevo depósito.
     """
     try:
         DatosMaterial.addStock(id_mat,cantidad)
         return DatosDeposito.add(int(id_mat),int(id_pd),float(cantidad),float(cant_ep))
     except Exception as e:
         raise e
    def verificar_codigo(cls,cod,user):
        """
        Verifica que el codigo corresponda a un deposito y le asigna el deposito al usuario correspondiente
        Devuelve la cantidad de EP acreditados
        """
        try:
            return DatosDeposito.verificar_codigo(cod,user.id)

        except Exception as e:
            raise e
 def get_info_cancelar(cls, id):
     errores = {"EP":-1,"Stock":0}
     dep = DatosDeposito.get_by_id(id)
     if dep.isAcreditado():
         errores["EP"] = 0
         user_id = cls.get_user_id(id)
         user = NegocioUsuario.get_by_id(user_id)
         if user.totalEcopuntos < dep.ecoPuntos.cantidad:
             errores["EP"] = dep.ecoPuntos.cantidad-user.totalEcopuntos 
     
     material = DatosMaterial.get_by_id(dep.material.idMaterial)
     if material.stock < dep.material.cantidad:
         errores["Stock"] = dep.material.cantidad-material.stock
     return errores
 def cancelar(cls,id):
     """
     Cancela un depósito. Si el depósito ha sido acreditado, los EP se le restan al
     usuario. Si el usuario no tiene suficientes EP para restar, se lo deja en 0 EP.
     Se descuenta, asimismo, el stock de materiales generado por el deposito. Si no
     hay suficiente stock para restar, se genera una entrada correspondiente al
     stock faltante
     """
     try:
         dep = DatosDeposito.get_by_id(id)
         DatosDeposito.update_estado(id,"cancelado")
         if dep.isAcreditado():
             user_id = cls.get_user_id(id)
             NegocioUsuario.descontarEPDeposito(user_id,dep.ecoPuntos.cantidad)
         
         material = DatosMaterial.get_by_id(dep.material.idMaterial)
         if material.stock >= dep.material.cantidad:
             DatosMaterial.updateStock(material.id,material.stock - dep.material.cantidad)
         else:
             DatosMaterial.updateStock(material.id,0)
             restante = dep.material.cantidad-material.stock
             DatosEntradaExterna.add_one(material.id,restante,"Compensación por cancelación de depósito número "+str(id)+".",datetime.now())         
     except Exception as e:
         raise e
Ejemplo n.º 10
0
    def get_by_id(cls, id, noClose=False):
        """
        Busca un usuario en la BD segun su id.
        """
        try:
            cls.abrir_conexion()
            sql = ("SELECT usuarios.idUsuario, \
                usuarios.nroDoc, \
                usuarios.nombre, \
                usuarios.apellido, \
                usuarios.email, \
                usuarios.password, \
                usuarios.idTipoUsuario, \
                usuarios.idTipoDoc, \
                usuarios.idDireccion, \
                usuarios.idNivel, \
                usuarios.img \
                from usuarios where usuarios.idUsuario = {}").format(id)
            cls.cursor.execute(sql)
            usuarios = cls.cursor.fetchall()
            if len(usuarios) > 0:
                usu = usuarios[0]
                direc = DatosDireccion.get_one_id(usu[8])
                depositos = DatosDeposito.get_by_id_usuario(usu[0])
                ped = DatosPedido.get_by_user_id(usu[0])
                usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3],
                                  usu[5], usu[6], direc, depositos, ped,
                                  usu[9], [], [], [], usu[4], usu[10])
                usuario.calcularTotalEcopuntos()
                return usuario
            else:
                raise custom_exceptions.ErrorDeConexion(
                    origen="data_usuario.get_by_id()",
                    msj_adicional="Usuario inexistente")

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data_usuario.get_by_id()",
                msj=str(e),
                msj_adicional="Error buscando usuario en la BD.")
        finally:
            if not (noClose):
                cls.cerrar_conexion()
Ejemplo n.º 11
0
 def buscar_info_user(cls, busqueda):
     """
     Obtiene todos los usuarios según su ID, nombre completo, email, o documento
     """
     try:
         cls.abrir_conexion()
         sql = ("SELECT usuarios.idUsuario, \
             usuarios.nroDoc, \
             usuarios.nombre, \
             usuarios.apellido, \
             usuarios.email, \
             usuarios.password, \
             usuarios.idTipoUsuario, \
             usuarios.idTipoDoc, \
             usuarios.idDireccion, \
             usuarios.idNivel, \
             usuarios.img \
             from usuarios WHERE estado = \"habilitado\" AND (idUsuario=\"{}\" OR email=\"{}\" OR nroDOC=\"{}\")"
                ).format(busqueda, busqueda, busqueda)
         cls.cursor.execute(sql)
         usuarios = cls.cursor.fetchall()
         users = []
         for usu in usuarios:
             direc = DatosDireccion.get_one_id(usu[8])
             depositos = DatosDeposito.get_by_id_usuario(usu[0])
             ped = DatosPedido.get_by_user_id(usu[0])
             tipo_doc = DatosTipoDocumento.get_by_id(usu[7])
             usuario = Usuario(usu[0], usu[1], tipo_doc, usu[2], usu[3],
                               usu[5], usu[6], direc, depositos, ped,
                               usu[9], [], [], [], usu[4], usu[10])
             usuario.calcularTotalEcopuntos()
             users.append(usuario)
         return users
     except custom_exceptions.ErrorDeConexion as e:
         raise e
     except Exception as e:
         raise custom_exceptions.ErrorDeConexion(
             origen="data_usuario.buscar_info_user()",
             msj=str(e),
             msj_adicional="Error buscando usuarios.")
     finally:
         cls.cerrar_conexion()
Ejemplo n.º 12
0
 def get_all(cls, noFilter=False):
     """
     Obtiene todos los usuarios. El No filter solamente filtra los no-activos y los no-verificados, no se incluyen nunca los eliminados.
     """
     try:
         cls.abrir_conexion()
         if noFilter:
             sql = ("SELECT usuarios.idUsuario, \
                 usuarios.nroDoc, \
                 usuarios.nombre, \
                 usuarios.apellido, \
                 usuarios.email, \
                 usuarios.password, \
                 usuarios.idTipoUsuario, \
                 usuarios.idTipoDoc, \
                 usuarios.idDireccion, \
                 usuarios.idNivel, \
                 usuarios.img, \
                 usuarios.estado \
                 from usuarios where estado != 'eliminado' order by nombre IS NULL, nombre,estado ASC"
                    )
         else:
             sql = ("SELECT usuarios.idUsuario, \
                 usuarios.nroDoc, \
                 usuarios.nombre, \
                 usuarios.apellido, \
                 usuarios.email, \
                 usuarios.password, \
                 usuarios.idTipoUsuario, \
                 usuarios.idTipoDoc, \
                 usuarios.idDireccion, \
                 usuarios.idNivel, \
                 usuarios.img, \
                 usuarios.estado \
                 from usuarios WHERE estado = \"habilitado\" order by nombre ASC"
                    )
         cls.cursor.execute(sql)
         usuarios = cls.cursor.fetchall()
         users = []
         if noFilter:
             for usu in usuarios:
                 print(usu[0])
                 print(usu[11])
                 if usu[11] != 'habilitado':
                     direc = None
                     depositos = None
                     ped = None
                     usuario = Usuario(usu[0], usu[1], usu[7], usu[2],
                                       usu[3], usu[5], usu[6], direc,
                                       depositos, ped, usu[9], [], [], [],
                                       usu[4], usu[10], usu[11])
                     users.append(usuario)
                 else:
                     direc = DatosDireccion.get_one_id(usu[8])
                     depositos = DatosDeposito.get_by_id_usuario(usu[0])
                     ped = DatosPedido.get_by_user_id(usu[0])
                     usuario = Usuario(usu[0], usu[1], usu[7], usu[2],
                                       usu[3], usu[5], usu[6], direc,
                                       depositos, ped, usu[9], [], [], [],
                                       usu[4], usu[10], usu[11])
                     usuario.calcularTotalEcopuntos()
                     users.append(usuario)
         else:
             for usu in usuarios:
                 direc = DatosDireccion.get_one_id(usu[8])
                 depositos = DatosDeposito.get_by_id_usuario(usu[0])
                 ped = DatosPedido.get_by_user_id(usu[0])
                 usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3],
                                   usu[5], usu[6], direc, depositos, ped,
                                   usu[9], [], [], [], usu[4], usu[10],
                                   usu[11])
                 usuario.calcularTotalEcopuntos()
                 users.append(usuario)
         return users
     except custom_exceptions.ErrorDeConexion as e:
         raise e
     except Exception as e:
         raise custom_exceptions.ErrorDeConexion(
             origen="data_usuario.get_all()",
             msj=str(e),
             msj_adicional="Error obteniendo todos los usuarios.")
     finally:
         cls.cerrar_conexion()
Ejemplo n.º 13
0
    def login(cls, email, password, noClose=False):
        """
        Busca un usuario en la BD que tenga el email y la contraseña que recibe como parámetro. Si no hay ninguno, devuelve False.
        """
        try:
            cls.abrir_conexion()
            sql = ("SELECT usuarios.idUsuario, \
                usuarios.nroDoc, \
                usuarios.nombre, \
                usuarios.apellido, \
                usuarios.email, \
                usuarios.password, \
                usuarios.idTipoUsuario, \
                usuarios.idTipoDoc, \
                usuarios.idDireccion, \
                usuarios.idNivel, \
                usuarios.img, \
                usuarios.estado \
                from usuarios where email = %s and password = %s and estado != 'eliminado'"
                   )
            values = (email, password)
            cls.cursor.execute(sql, values)
            usuarios = cls.cursor.fetchall()
            if len(usuarios) > 0:
                usu = usuarios[0]
                if usu[11] != "habilitado":
                    usuario = Usuario(usu[0],
                                      None,
                                      None,
                                      None,
                                      None,
                                      usu[5],
                                      None,
                                      None,
                                      email=usu[4],
                                      estado=usu[11])
                else:
                    direc = DatosDireccion.get_one_id(usu[8])
                    depositos = DatosDeposito.get_by_id_usuario(usu[0])
                    ped = DatosPedido.get_by_user_id(usu[0])
                    usuario = Usuario(usu[0], usu[1], usu[7], usu[2], usu[3],
                                      usu[5], usu[6], direc, depositos, ped,
                                      usu[9], [], [], [], usu[4], usu[10],
                                      usu[11])
                usuario.calcularTotalEcopuntos()
                return usuario
            else:
                raise custom_exceptions.ErrorDeConexion(
                    origen="data_usuario.login()",
                    msj_adicional="Usuario inexistente")

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data_usuario.login()",
                msj=str(e),
                msj_adicional=
                "Error buscando usuario en la BD para realizar el login.")
        finally:
            if not (noClose):
                cls.cerrar_conexion()
 def acreditar(cls,dip,uid):
     try:
         dep = cls.get_by_id(dip)
         return DatosDeposito.verificar_codigo(dep.codigo,uid)
     except Exception as e:
         raise e