Exemplo n.º 1
0
    def get_max_ecoPuntos(cls):
        """
        Obtiene el máximo de EcoPuntos asignados a un nivel.
        """
        try:
            max_ep = DatosNivel.get_max_ecoPuntos()
            return int(Utils.replace_dots(max_ep, 0))

        except custom_exceptions.ErrorDeConexion as e:
            raise e

        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.get_max_ecoPuntos()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio obtieniendo el máximo de EcoPuntos del último nivel la capa de Datos."
            )
Exemplo n.º 2
0
    def alta_nivel(cls, numeroNivel, descuento, minEcoPuntos, maxEcoPuntos):
        """
        Realiza las validaciones de negocio de un nivel, y si no hay errores, instancia el 
        nuevo nivel y llama al método de la Capa de Datos que lo registra en la BD.
        """
        try:
            #Reestructuración de los datos:
            max_nivel = int(cls.get_min_max_niveles()[1])
            max_level = DatosNivel.get_nivel_nombre(max_nivel)
            maxDescuento = Utils.round_float(DatosNivel.get_max_descuento(), 2)
            maxEP = Utils.round_float(DatosNivel.get_max_ecoPuntos(), 1)
            minEcoPuntos = int(Utils.round_float(minEcoPuntos, 0))
            maxEcoPuntos = int(Utils.round_float(maxEcoPuntos, 0))
            descuento = Utils.round_float(descuento, 2)

            #Validación de Reglas de Negocio:
            if max_level.descuento == 100:
                #Valida regla RN06
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir el nivel. No se pueden añadir más niveles ya que hay uno con un descuento del 100%. Para añadir otro nivel, modifique primero el descuento del último nivel existente."
                )
            elif int(numeroNivel) != int(max_nivel + 1):
                #Valida regla RN01
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir el nivel. El número de nivel no es correcto."
                )
            elif Utils.round_float(minEcoPuntos, 2) >= Utils.round_float(
                    maxEcoPuntos, 2):
                #Valida regla RN02
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir el nivel. El mínimo de EcoPuntos no puede ser menor al máximo de EcoPuntos del máximo nivel."
                )
            elif descuento < maxDescuento:
                #Valida regla RN03
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir el nivel. El descuento no puede ser menor al máximo descuento asignado ("
                    + str(maxDescuento) + "%).")
            elif descuento < 0 or descuento > 100:
                #Valida regla RN04
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir el nivel. El descuento debe estar entre 0% y 100%."
                )
            elif minEcoPuntos != (int(Utils.round_float(maxEP, 0)) + 1):
                #Valida regla RN05
                raise custom_exceptions.ErrorDeNegocio(
                    origen="negocio_nivel.alta_nivel()",
                    msj_adicional=
                    "Error al añadir nivel. El mínimo de EcoPuntos debe ser " +
                    str(int(Utils.round_float(maxEP, 0))) + " EcoPuntos.")
            else:
                nivel = Nivel(None, numeroNivel, minEcoPuntos, maxEcoPuntos,
                              descuento)
                DatosNivel.alta_nivel(nivel)
                cls.actualiza_nivel_all()

        except custom_exceptions.ErrorDeConexion as e:
            raise e
        except custom_exceptions.ErrorDeNegocio as e:
            raise e
        except Exception as e:
            raise custom_exceptions.ErrorDeNegocio(
                origen="negocio.alta_nivel()",
                msj=str(e),
                msj_adicional=
                "Error en la capa de Negocio dando de alta un nuevo nivel.")