예제 #1
0
    def update(cls, nombre, apellido, email, id_direccion, calle, altura,
               ciudad, provincia, pais, documento, id_tipo_doc,
               id_tipo_usuario, uid):
        try:
            #Valido datos personales:
            if nombre == "" or apellido == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_usuario.update()",
                    msj="El nombre o el apellido no pueden ser vacios.")

            #Valido ID Tipo de Usuario
            tus = DatosTipoUsuario.get_all()
            if not (any(x.id == int(id_tipo_usuario) for x in tus)):
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_usuario.update()",
                    msj="El ID no corresponde a un Tipo de Usuario registrado."
                )

            #Actualizo Documento
            cls.update_documento(documento, id_tipo_doc, uid)

            #Actualizo email
            cls.update_email(email, uid)

            #Actualizo Dirección
            print("La direccion es: " + str(id_direccion))
            NegocioDireccion.mod_direccion(id_direccion, calle, altura, ciudad,
                                           provincia, pais, True)

            #Actualizo Tipo de Usuario y datos personales.
            DatosUsuario.update_nombre_apellido_tu(nombre, apellido,
                                                   id_tipo_usuario, uid)

        except Exception as e:
            raise e
예제 #2
0
    def obtiene_nivel(cls, ecoPuntos):
        """
        Esta función devuelve el nivel al que pertenece una determinada cantidad de EcoPuntos, 
        recibida como parametro.
        """
        try:
            niveles = DatosNivel.get_niveles()
            for nivel in niveles:
                if int(nivel.nombre) == len(niveles):
                    if int(ecoPuntos) >= int(nivel.minimoEcoPuntos):
                        return nivel
                    else:
                        raise custom_exceptions.ErrorDeNegocio(
                            origen="negocio_nivel.obtiene_nivel()",
                            msj_adicional=
                            "Error calculando el nivel del usuario.")
                else:
                    if (int(ecoPuntos) >= int(nivel.minimoEcoPuntos)
                            and int(ecoPuntos) <= int(nivel.maximoEcoPuntos)):
                        return nivel

            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio_nivel.obtiene_nivel()",
                msj_adicional="Error calculando el nivel del usuario.")

        except custom_exceptions.ErrorDeConexion as e:
            raise e

        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.obtiene_nivel()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio calculando el nivel para una cantidad de EcoPuntos recibida como parámetro."
            )
예제 #3
0
    def get_nivel_id(cls, id, convert_desc=False):
        """
        Obtiene un nivel en base a su ID de la BD.
        """
        try:
            nivel = DatosNivel.get_nivel_id(id)
            if nivel == None:
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio.get_nivel_id()",
                    msj_adicional=
                    "Error en la capa de Negocio obtieniendo un nivel en base su ID de la capa de Datos. No existe un nivel con el ID ingresado."
                )
            if convert_desc:
                nivel.descuento = Utils.replace_dots(nivel.descuento, 1)
            return nivel

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.get_nivel_id()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio obtieniendo un nivel en base su ID de la capa de Datos."
            )
    def alta_pr(cls, nombre, estado, calle, altura, ciudad, provincia, pais,
                horarios, demora):
        """
        Gestiona el alta de un Punto de Retiro en la BD.
        """
        #Conexión con el motor de BD.
        try:
            #Valida que el nombre no esté vacío.
            if nombre == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.alta_pr()",
                    msj_adicional=
                    "Error al añadir el Punto de Retiro. El nombre no puede quedar vacío."
                )
            #Valida RN25
            if nombre in cls.get_all_names():
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.alta_p()",
                    msj_adicional=
                    "Error al añadir el Punto de Retiro. El nombre ya fue utilizado."
                )

            #Valida RN24
            estado = Utils.js_py_bool_converter(estado)
            if estado != True and estado != False:
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.alta_pr()",
                    msj_adicional=
                    "Error al añadir el Punto de Retiro. El estado no puede ser distinto de True o False."
                )

            #Validación de direccion
            NegocioDireccion.valida_direccion(calle, altura, ciudad, provincia,
                                              pais)
            #Validacion horarios
            for horario in horarios:
                NegocioHorario.valida_horarios(horario)

            #Alta de la direccion
            idDireccion = NegocioDireccion.alta_direccion(
                calle, altura, ciudad, provincia, pais)
            #Alta Punto de Retiro
            idPuntoRetiro = DatosPuntoRetiro.alta_pr(
                PuntoRetiro(None, None, nombre, None, None, demora, estado),
                idDireccion)
            #Alta horarios
            NegocioHorario.alta_horarios(horarios, idPuntoRetiro, False)

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.alta_pr()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio dando de alta un Punto de Retiro."
            )
    def mod_pr(cls, nombre, estado, calle, altura, ciudad, provincia, pais,
               horarios, demora, id_direccion, id_punto, nombre_ant):
        """
        Gestiona la modificación de un PD.
        """
        try:
            #Conexión con el motor de BD.
            #Valida que el nombre no esté vacío.
            if nombre == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.mod_pr()",
                    msj_adicional=
                    "Error al modificar el Punto de Retiro. El nombre no puede quedar vacío."
                )
            #Valida RN25
            if nombre in cls.get_all_names() and nombre != nombre_ant:
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.mod_pr()",
                    msj_adicional=
                    "Error al modificar el Punto de Retiro. El nombre ya fue utilizado."
                )
            #Valida RN24
            estado = Utils.js_py_bool_converter(estado)
            if estado != True and estado != False:
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_punto_retiro.mod_pr()",
                    msj_adicional=
                    "Error al modificar el Punto de Retiro. El estado no puede ser distinto de True o False."
                )

            #Validación de direccion
            NegocioDireccion.valida_direccion(calle, altura, ciudad, provincia,
                                              pais)
            #Validacion horarios
            for horario in horarios:
                NegocioHorario.valida_horarios(horario)

            #Modificación de la direccion
            NegocioDireccion.mod_direccion(id_direccion, calle, altura, ciudad,
                                           provincia, pais)
            #Modificación Punto de Retiro
            DatosPuntoRetiro.mod_pr(
                PuntoRetiro(id_punto, None, nombre, None, None, demora,
                            estado))
            #Modificación horarios
            NegocioHorario.mod_horarios(horarios, id_punto, False)

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.mod_pd()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio modificando un Punto de Retiro.")
예제 #6
0
    def baja_nivel(cls, id):
        """
        Da de baja un nivel en base a su nombre, validando primero las reglas de negocio pertinentes.
        """
        try:
            min_max_niveles = cls.get_min_max_niveles()
            min_nivel = min_max_niveles[0]
            max_nivel = min_max_niveles[1]
            nivel = cls.get_nivel_id(id)

            if int(nivel.nombre) == 1:
                #Valida regla RN09.
                if int(max_nivel) == int(nivel.nombre):
                    raise custom_exceptions.ErrorDeNegocio(
                        origen="negocio_nivel.baja_nivel()",
                        msj_adicional=
                        "Error al eliminar nivel. No se puede eliminar el nivel 1 si no existen otros niveles."
                    )
                else:
                    nuevo_min = 0
                    DatosNivel.baja_nivel(nuevo_min, None, None, None, nivel)
                    cls.actualiza_nivel_all()
            elif int(nivel.nombre) == int(max_nivel):
                factor_mod = (nivel.maximoEcoPuntos - nivel.minimoEcoPuntos +
                              1) / 2
                nuevo_max = round(nivel.minimoEcoPuntos) - 1
                nuevo_min = round(nivel.maximoEcoPuntos - factor_mod, 0) + 1
                DatosNivel.baja_nivel(nuevo_min,
                                      int(nivel.nombre) + 1, nuevo_max,
                                      int(nivel.nombre) - 1, nivel)
                cls.actualiza_nivel_all()
            else:
                #Valida regla RN05 y RN10
                factor_mod = (nivel.maximoEcoPuntos - nivel.minimoEcoPuntos +
                              1) / 2
                nuevo_max = round(nivel.minimoEcoPuntos + factor_mod, 0) - 1
                nuevo_min = round(nivel.maximoEcoPuntos - factor_mod, 0) + 1
                DatosNivel.baja_nivel(nuevo_min,
                                      int(nivel.nombre) + 1, nuevo_max,
                                      int(nivel.nombre) - 1, nivel)
                cls.actualiza_nivel_all()

        except custom_exceptions.ErrorDeConexion as e:
            raise e

        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.baja_nivel()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio dando de baja un nivel.")
 def add_one(cls,nombre):
     try:
         #Valida que el nombre no sea vacío.
         if nombre == "":
             raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.add_one()",
                                                     msj_adicional = "Error al añadir el Tipo de Usuario. El nombre no puede quedar vacío.")
         #Valida que el nombre no exista.
         for tu in cls.get_all():
             if tu.nombre == nombre:
                 raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.add_one()",
                                                     msj_adicional = "Error al añadir el Tipo de Usuario. El nombre ya se encuentra utilizado.")
         DatosTipoUsuario.add_one(nombre)
     except Exception as e:
         raise e
예제 #8
0
    def valida_horarios(cls, horario_):
        """
        Valida las RN referidas a los horarios.
        """
        #Conexión con el motor de BD.
        try:
            horaDesde = horario_[0]
            horaHasta = horario_[1]
            dia = horario_[2]
            #Valida RN33
            if horaDesde == "" and horaHasta != "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_horarios.valida_horarios()",
                    msj_adicional=
                    "Error al añadir el Horario. El horario de cierre no puede quedar vacío si el horario de apertura está asignado."
                )
            #Valida RN33
            elif horaDesde != "" and horaHasta == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_horarios.valida_horarios()",
                    msj_adicional=
                    "Error al añadir el Horario. El horario de apertura no puede quedar vacío si el horario de cierre está asignado."
                )

            if horaDesde == "" and horaHasta == "":
                horario = Horario(None, None, None, dia)
            else:
                horario = Horario(None,
                                  datetime.strptime(horaDesde, '%H:%M').time(),
                                  datetime.strptime(horaHasta, '%H:%M').time(),
                                  dia)
                #Valida RN32
                if horario.horaDesde >= horario.horaHasta:
                    raise custom_exceptions.ErrorDeNegocio(
                        origen="neogocio_horarios.valida_horarios()",
                        msj_adicional=
                        "Error al añadir el Horario. La hora de apertura debe ser menor a la de cierre."
                    )
            return horario

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="neogocio_horarios.valida_horarios()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio validando las RN de un horario.")
예제 #9
0
    def modifica_nivel_logic(cls, niveles_baja, nivel_mod, nuevo_des,
                             nuevo_minEP, nuevo_maxEP):
        """
        Maneja la logica para el borrado de elementos en base a las modificaciones realizadas, y llama a la capa de datos para guardar estos cambios.
        """
        try:
            niveles = DatosNivel.get_niveles()
            niv = []
            for nivel in niveles:
                niv.append(int(nivel.nombre))
            nuevos_niveles = Utils.difference_between_lists(niv, niveles_baja)
            mas_cercano_inf = Utils.nearest_element(
                Utils.lower_higher_elements_than(nuevos_niveles, nivel_mod)[0],
                nivel_mod)
            mas_cercano_sup = Utils.nearest_element(
                Utils.lower_higher_elements_than(nuevos_niveles, nivel_mod)[1],
                nivel_mod)
            DatosNivel.baja_nivel_mod(niveles_baja, nivel_mod, nuevo_des,
                                      nuevo_minEP, nuevo_maxEP,
                                      mas_cercano_inf, mas_cercano_sup,
                                      nuevos_niveles)
            cls.actualiza_nivel_all()

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocioNivel.modifica_nivel_logic()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio en el manejo de la lógica de la modifiacion del nivel."
            )
    def alta_direccion(cls,
                       calle,
                       altura,
                       ciudad,
                       provincia,
                       pais,
                       validar=False):
        """
        Añade una dirección a la BD.
        """
        #Conexión con el motor de BD.
        try:
            if validar:
                if NegocioDireccion.valida_direccion(calle, altura, ciudad,
                                                     provincia, pais):
                    return DatosDireccion.alta_direccion(
                        Direccion(None, calle, altura, ciudad, provincia,
                                  pais))
            else:
                return DatosDireccion.alta_direccion(
                    Direccion(None, calle, altura, ciudad, provincia, pais))

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio_direccion.alta_direccion()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio dando de alta una direccion.")
 def update(cls, idEnt, nombre):
     """
     Actualiza el nombre de una entidad de destino en la BD
     """
     try:
         if not DatosEntidadDestino.check_name_repeats(nombre):
             #Valida regla RN11
             raise custom_exceptions.ErrorReglaDeNegocio(
                 origen="negocio_entidad_destino.update()",
                 msj_adicional=
                 "Error en la capa de negocio al validar regla RN11: Todas las entidades de destino deben tener nombres distintos."
             )
         elif nombre == "":
             #Valida regla RN12
             raise custom_exceptions.ErrorReglaDeNegocio(
                 origen="negocio_entidad_destino.update()",
                 msj_adicional=
                 "Error en la capa de negocio al validar regla RN12: Una entidad no puede tener nombre vacio."
             )
         else:
             DatosEntidadDestino.update(idEnt, nombre)
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_entidad_destino.update()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio actualizando una Entidad destino de la base de Datos"
         )
 def add(cls, nombre):
     """
     Da de alta una nueva entidad destino en el sistema.
     """
     try:
         if not DatosEntidadDestino.check_name_repeats(nombre):
             #Valida regla RN11
             raise custom_exceptions.ErrorReglaDeNegocio(
                 origen="negocio_entidad_destino.add()",
                 msj_adicional=
                 "Error en la capa de negocio al validar regla RN11: Todas las entidades de destino deben tener nombres distintos."
             )
         elif nombre == "":
             #Valida regla RN12
             raise custom_exceptions.ErrorReglaDeNegocio(
                 origen="negocio_entidad_destino.add()",
                 msj_adicional=
                 "Error en la capa de negocio al validar regla RN12: Una entidad no puede tener nombre vacio."
             )
         else:
             DatosEntidadDestino.add(nombre)
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_entidad_destino.add()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio dando de alta una nueva entidad de destino."
         )
    def abre_toda_semana(cls, horarios):
        """
        Dtermina si un Punto de Depósito abre de lunes a viernes.
        """
        #Conexión con el motor de BD.
        try:
            lunes = next(x for x in horarios if x.dia == "Lunes")
            martes = next(x for x in horarios if x.dia == "Martes")
            miercoles = next(x for x in horarios if x.dia == "Miércoles")
            jueves = next(x for x in horarios if x.dia == "Jueves")
            viernes = next(x for x in horarios if x.dia == "Viernes")

            if lunes.horaDesde != False and lunes.horaHasta != False:
                if martes.horaDesde != False and martes.horaHasta != False:
                    if miercoles.horaDesde != False and miercoles.horaHasta != False:
                        if jueves.horaDesde != False and jueves.horaHasta != False:
                            if viernes.horaDesde != False and viernes.horaHasta != False:
                                return True
            return False
        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.abre_toda_semana()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio calculando si un PD abre de corrido durante la semana."
            )
 def get_materialesPd_by_id(cls, idPunto, json_return=True):
     """
     Obtiene los materiales que acepta un punto de depósito en base al ID que recibe como parámetro.
     """
     #Conexión con el motor de BD.
     try:
         materiales = DatosMaterial.get_all_byIdPuntoDep(idPunto)
         materiales_ = []
         if json_return == False:
             return materiales
         else:
             for material in materiales:
                 materiales_.append({
                     "id": material.id,
                     "nombre": material.nombre,
                     "unidadMedida": material.unidadMedida,
                     "color": material.color,
                     "estado": material.estado
                 })
             return materiales_
     except custom_exceptions.ErrorDeConexion as e:
         raise e
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio.get_materialesPd_by_id()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio obtieniendo los materiales que acepta un PD de la capa de Datos."
         )
예제 #15
0
    def getDescuentosAntPost(cls, numero):
        """
        Obtiene el descuento anterior y posterior en base a un determinado numero de nivel, y los devuelve en un diccionario.
        """
        try:
            maxLevel = int(DatosNivel.get_max_nivel().nombre)
            if numero == 1 and numero == maxLevel:
                anterior = 0
                posterior = 100
            elif numero == 1:
                anterior = 0
                posterior = DatosNivel.get_nivel_nombre(int(numero) +
                                                        1).descuento
            elif numero == maxLevel:
                anterior = DatosNivel.get_nivel_nombre(int(numero) -
                                                       1).descuento
                posterior = 100.01
            else:
                anterior = DatosNivel.get_nivel_nombre(int(numero -
                                                           1)).descuento
                posterior = DatosNivel.get_nivel_nombre(int(numero) +
                                                        1).descuento
            result = {'anterior': anterior, 'posterior': posterior}
            return result

        except custom_exceptions.ErrorDeConexion as e:
            raise e

        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.getDescuentosAntPost()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio obtieniendo los descuentos de los niveles anteriores y posteriores a un nivel por numero."
            )
예제 #16
0
 def update_email(cls, email, uid):
     try:
         #Valida RN18
         if cls.check_email(email):
             if email not in cls.get_all_emails(uid):
                 DatosUsuario.update_email(email, uid)
             else:
                 raise custom_exceptions.ErrorDeNegocio(
                     origen="negocio_usuario.update_email()",
                     msj="El email no puede estar repetido.")
         else:
             raise custom_exceptions.ErrorDeNegocio(
                 origen="negocio_usuario.update_email()",
                 msj="El email tiene un formato incorrecto.")
     except Exception as e:
         raise e
예제 #17
0
 def checkStock(cls, idTA, cant):
     articulo = DatosArticulo.get_by_id(idTA)
     nueva_cant = articulo.stock - cant
     if nueva_cant < 0:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_articulo.disminuirStock()",
             msj="error-stock",
             msj_adicional="Stock insuficiente para realizar pedido")
예제 #18
0
 def checkEP(cls, id, totalEP):
     """Comprueba que se puede gastar cierta cantidad de EP. Si no es así, levanta una excepción de negocio"""
     user = DatosUsuario.get_by_id(id)
     nueva_cant_ep = user.totalEcopuntos - totalEP
     if nueva_cant_ep < 0:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_usuario.useEP()",
             msj="error-ep",
             msj_adicional="EP insuficientes para realizar pedido")
예제 #19
0
    def update_documento(cls, nro, tipo, uid):
        try:
            #Valida RN30
            if str(nro).isalnum():
                #Valida RN20
                if str(nro) not in cls.get_all_documentos(uid):
                    DatosUsuario.update_documento(nro, tipo, uid)
                else:
                    raise custom_exceptions.ErrorDeNegocio(
                        origen="negocio_usuario.update_documento()",
                        msj="El número de documento no puede estar repetido.")
            else:
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_usuario.update_documento()",
                    msj="El número de documento solo puede ser alfanumérico.")

        except Exception as e:
            raise e
    def valida_direccion(cls, calle, altura, ciudad, provincia, pais):
        """
        Realiza las validaciones de negocio de una direccion.
        """
        #Conexión con el motor de BD.
        try:
            #Valida RN27
            if altura == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. La altura no puede quedar vacía."
                )
            #Valida RN31
            elif not (isinstance(int(altura), int)):
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. La altura debe ser numérica."
                )
            #Valida RN26
            elif calle == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. La calle no puede quedar vacía."
                )
            #Valida RN28
            elif ciudad == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. La ciudad no puede quedar vacía."
                )
            #Valida RN29
            elif provincia == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. La provincia no puede quedar vacía."
                )
            #Valida RN30
            elif pais == "":
                raise custom_exceptions.ErrorDeNegocio(
                    origen="neogocio_direccion.alta_pd()",
                    msj_adicional=
                    "Error al validar una dirección. El país no puede quedar vacío."
                )
            return True

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio_direccion.valida_direccion()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio validando las Reglas de Negocio de una direccion."
            )
예제 #21
0
 def get_movimientos_stock(cls,id,stock):
     """
     Obtiene los movimientos de stock de un insumo durante el último año en base a su ID, recibiendo stock actual como parámetro.
     """
     try:
         return DatosInsumo.get_movimientos_stock(id,stock)[::-1]
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(origen="negocio_material.get_movimientos_stock()",
                                                msj=str(e),
                                                msj_adicional="Error en la capa de Negocio obteniendo los movimientos de stock de la base de Datos")
예제 #22
0
 def baja(cls, uid):
     try:
         users = DatosUsuario.get_all(True)
         if not (any(x.id == int(uid) for x in users)):
             raise custom_exceptions.ErrorDeNegocio(
                 origen="negocio_usuario.baja()",
                 msj="El ID no corresponde a un Usuario registrado.")
         DatosUsuario.baja(uid)
     except Exception as e:
         raise e
예제 #23
0
 def verificacion(cls, code):
     try:
         if len(code) > 0:
             return DatosUsuario.verificacion(code)
         else:
             raise custom_exceptions.ErrorDeNegocio(
                 origen="negocio_usuario.verificacion()",
                 msj_adicional="Error al verificar el codigo")
     except Exception as e:
         raise e
예제 #24
0
 def adress_format(cls, value):
     """
     Convierte la dirección al formato deseado para mostrar (elimina la ciudad).
     """
     try:
         return (value.partition(",")[0])
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="utils.adress_format()",
             msj=str(e),
             msj_adicional="Error convirtiendo el formato de la dirección.")
예제 #25
0
 def difference_between_lists(cls, lista1, lista2):
     """
     Obtiene la diferencia de la lista 1 con repsecto de la lista 2 listas, y devuelve el resultado.
     """
     try:
         return list(set(lista1).difference(lista2))
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="utils.difference_between_lists()",
             msj=str(e),
             msj_adicional="Error obteniendo la diferencia entre dos listas."
         )
    def baja(cls,idTipoUsuario,idTuReemplazo):
        try:
            #Valida que no sean vacíos.
            if idTipoUsuario == None and idTuReemplazo == None:
                raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()",
                                                        msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no pueden ser vacíos.")
            #Valido que sean distintos entre sí.
            if idTipoUsuario == idTuReemplazo:
                raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()",
                                                        msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no pueden ser iguales.")
            #Valido que existan
            tus = cls.get_all()
            if not (any(x.id == int(idTipoUsuario) for x in tus) and any(x.id == int(idTuReemplazo) for x in tus)):
                raise custom_exceptions.ErrorDeNegocio(origen="negocio_tipo_usuario.baja()",
                                                        msj_adicional = "Error al eliminando el Tipo de Usuario. Los ids no corresponden a Tipos de Usuario registrados.")

            DatosTipoUsuario.baja(idTipoUsuario,idTuReemplazo)

            return True
        except Exception as e:
            raise e
예제 #27
0
 def delete(cls, id):
     """
     Elimina un artículo de la BD a partir de su id
     """
     try:
         DatosArticulo.delete(id)
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_articulo.delete()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio eliminando un artículo de la base de Datos"
         )
예제 #28
0
 def lower_higher_elements_than(cls, lista, valor):
     """
     Filtra de una lista, aquellos elementos que son menores que el valor pasado como parametro, y aquellos que son mayores. Devuelve una lista para cada caso de la forma [[menores], [mayores]]
     """
     try:
         mayores = sorted(i for i in lista if i > valor)
         menores = sorted(i for i in lista if i < valor)
         return [menores, mayores]
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="utils.difference_between_lists()",
             msj=str(e),
             msj_adicional="Error obteniendo elementos menores y mayores.")
 def delete(cls, id):
     """
     Elimina una entidad de destino de la BD a partir de su id
     """
     try:
         DatosEntidadDestino.delete(id)
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_entidad_destino.delete()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio eliminando una Entidad destino de la base de Datos"
         )
예제 #30
0
 def get_by_not_in_id_array(cls, ids):
     """
     Obtiene TiposArticulos de la BD en base a los que no estan en una lista de IDs
     """
     try:
         articulos = DatosArticulo.get_by_not_in_id_array(ids)
         return articulos
     except Exception as e:
         raise custom_exceptions.ErrorDeNegocio(
             origen="negocio_articulo.get_by_not_in_id_array()",
             msj=str(e),
             msj_adicional=
             "Error en la capa de Negocio obtieniendo tipos de articulo de la capa de Datos."
         )