Class Promocion

java.lang.Object
model.Promocion
Direct Known Subclasses:
Promocion2x1, PromocionCantidad, PromocionMembresia

public abstract class Promocion extends Object
Clase abstracta que representa una promocion del restaurante/cafeteria. Contiene los atributos y comportamientos comunes a todos los tipos de promociones (2x1, Cantidad, Membresia). Gestiona fechas de vigencia, dias aplicables, horarios, maximo de aplicaciones y estado activo/inactivo.
Version:
1.0
Author:
ISC Israel de Jesus Mar Parada
See Also:
  • Field Details

    • idPromocion

      protected int idPromocion
      Identificador unico de la promocion.
    • nombrePromocion

      protected String nombrePromocion
      Nombre descriptivo de la promocion.
    • fechaInicio

      protected LocalDateTime fechaInicio
      Fecha y hora de inicio de la vigencia.
    • fechaFin

      protected LocalDateTime fechaFin
      Fecha y hora de fin de la vigencia.
    • diasAplicable

      protected List<DayOfWeek> diasAplicable
      Lista de dias de la semana en que aplica la promocion.
    • horarioAplicable

      protected RangoHorario horarioAplicable
      Rango horario en que aplica la promocion.
    • maximoAplicaciones

      protected int maximoAplicaciones
      Numero maximo de veces que se puede aplicar la promocion.
    • activa

      protected boolean activa
      Indica si la promocion esta activa.
  • Constructor Details

    • Promocion

      public Promocion(int idPromocion, String nombrePromocion)
      Constructor para crear una nueva promocion. Inicializa la promocion como activa por defecto.
      Parameters:
      idPromocion - Identificador unico de la promocion
      nombrePromocion - Nombre descriptivo de la promocion
  • Method Details

    • EsAplicable

      public boolean EsAplicable(LocalDateTime fecha)
      Verifica si la promocion es aplicable en una fecha especifica. Condiciones: - La promocion debe estar activa - La fecha debe estar entre fechaInicio y fechaFin - El dia de la semana debe estar en diasAplicable (si se especifico) - La hora debe estar dentro del rango horario (si se especifico)
      Parameters:
      fecha - Fecha a validar
      Returns:
      true si la promocion es aplicable, false en caso contrario
    • CalcularDescuento

      public abstract BigDecimal CalcularDescuento(BigDecimal subtotal)
      Calcula el descuento aplicable segun el tipo de promocion.
      Parameters:
      subtotal - Subtotal del pedido
      Returns:
      Monto del descuento a aplicar
    • getIdPromocion

      public int getIdPromocion()
      Returns:
      Identificador de la promocion
    • setIdPromocion

      public void setIdPromocion(int idPromocion)
      Parameters:
      idPromocion - Nuevo identificador
    • getNombrePromocion

      public String getNombrePromocion()
      Returns:
      Nombre de la promocion
    • setNombrePromocion

      public void setNombrePromocion(String nombrePromocion)
      Parameters:
      nombrePromocion - Nuevo nombre
    • getFechaInicio

      public LocalDateTime getFechaInicio()
      Returns:
      Fecha de inicio
    • setFechaInicio

      public void setFechaInicio(LocalDateTime fechaInicio)
      Parameters:
      fechaInicio - Nueva fecha de inicio
    • getFechaFin

      public LocalDateTime getFechaFin()
      Returns:
      Fecha de fin
    • setFechaFin

      public void setFechaFin(LocalDateTime fechaFin)
      Parameters:
      fechaFin - Nueva fecha de fin
    • getDiasAplicable

      public List<DayOfWeek> getDiasAplicable()
      Returns:
      Lista de dias aplicables
    • setDiasAplicable

      public void setDiasAplicable(List<DayOfWeek> diasAplicable)
      Parameters:
      diasAplicable - Nueva lista de dias
    • getHorarioAplicable

      public RangoHorario getHorarioAplicable()
      Returns:
      Rango horario aplicable
    • setHorarioAplicable

      public void setHorarioAplicable(RangoHorario horarioAplicable)
      Parameters:
      horarioAplicable - Nuevo rango horario
    • getMaximoAplicaciones

      public int getMaximoAplicaciones()
      Returns:
      Maximo de aplicaciones
    • setMaximoAplicaciones

      public void setMaximoAplicaciones(int maximoAplicaciones)
      Parameters:
      maximoAplicaciones - Nuevo maximo
    • isActiva

      public boolean isActiva()
      Returns:
      true si esta activa
    • setActiva

      public void setActiva(boolean activa)
      Parameters:
      activa - Nuevo estado de activacion