Class Articulo

java.lang.Object
model.articulos.Articulo
Direct Known Subclasses:
ArticuloEscolar, ArticuloLibreria, ArticuloOficina

public abstract class Articulo extends Object
Clase abstracta que representa un articulo en el inventario de la papelería. Contiene los atributos y comportamientos comunes a todos los tipos de articulos (Libreria, Oficina, Escolar). Gestiona informacion como precio, stock, categoría, proveedores, calificaciones y descuentos.
Version:
1.0
Author:
ISC Israel de Jesus Mar Parada
See Also:
  • Field Details

    • codigoUnico

      protected String codigoUnico
      Codigo unico identificador del articulo.
    • nombre

      protected String nombre
      Nombre del articulo.
    • precioBase

      protected BigDecimal precioBase
      Precio base del articulo sin descuentos ni impuestos.
    • cantidadStock

      protected int cantidadStock
      Cantidad actual en stock del articulo.
    • categoria

      protected Categoria categoria
      Categoria a la que pertenece el articulo.
    • stockMinimo

      protected int stockMinimo
      Stock minimo para generar alertas de reabastecimiento.
    • descuentoAplicable

      protected BigDecimal descuentoAplicable
      Porcentaje de descuento aplicable al articulo.
    • fechaIngreso

      protected LocalDateTime fechaIngreso
      Fecha de ingreso del articulo al inventario.
    • estaActivo

      protected boolean estaActivo
      Indica si el articulo esta activo en el inventario.
    • esImportado

      protected boolean esImportado
      Indica si el articulo es importado.
    • calificacionPromedio

      protected BigDecimal calificacionPromedio
      Calificacion promedio del articulo (1-5 estrellas).
    • proveedores

      protected List<Proveedor> proveedores
      Lista de proveedores que suministran el articulo.
    • calificaciones

      protected List<Integer> calificaciones
      Lista de calificaciones individuales para calcular promedio.
  • Constructor Details

    • Articulo

      public Articulo(String codigoUnico, String nombre, BigDecimal precioBase)
      Constructor para crear un nuevo articulo. Inicializa stock en 0, stock minimo en 5, descuento en 0, fecha de ingreso actual, activo true, calificacion promedio 0, y listas de proveedores y calificaciones vacias.
      Parameters:
      codigoUnico - Codigo unico identificador del articulo
      nombre - Nombre del articulo
      precioBase - Precio base del articulo
  • Method Details

    • CalcularPrecioFinal

      public BigDecimal CalcularPrecioFinal()
      Calcula el precio final del articulo aplicando descuentos e IVA. Formula: (precioBase - descuento) + IVA de la categoria.
      Returns:
      Precio final redondeado a 2 decimales
    • AplicarDescuento

      public void AplicarDescuento(BigDecimal porcentaje)
      Aplica un descuento al articulo.
      Parameters:
      porcentaje - Porcentaje de descuento a aplicar (ej: 0.10 = 10%)
    • ValidarStockMinimo

      public boolean ValidarStockMinimo()
      Verifica si el stock actual esta por debajo del minimo requerido.
      Returns:
      true si el stock es suficiente, false si esta bajo el minimo
    • ActualizarCalificacion

      public void ActualizarCalificacion(BigDecimal nuevaCalificacion)
      Actualiza la calificacion promedio del articulo. Agrega una nueva calificacion y recalcula el promedio.
      Parameters:
      nuevaCalificacion - Nueva calificacion (1-5)
    • agregarProveedor

      public void agregarProveedor(Proveedor proveedor)
      Agrega un proveedor a la lista de proveedores del articulo. No permite duplicados.
      Parameters:
      proveedor - Proveedor a agregar
    • getTipoArticulo

      public abstract String getTipoArticulo()
      Obtiene el tipo de articulo como texto.
      Returns:
      Tipo de articulo (LIBRERIA, OFICINA, ESCOLAR)
    • getCodigoUnico

      public String getCodigoUnico()
      Returns:
      Codigo unico del articulo
    • setCodigoUnico

      public void setCodigoUnico(String codigoUnico)
      Parameters:
      codigoUnico - Nuevo codigo unico
    • getNombre

      public String getNombre()
      Returns:
      Nombre del articulo
    • setNombre

      public void setNombre(String nombre)
      Parameters:
      nombre - Nuevo nombre
    • getPrecioBase

      public BigDecimal getPrecioBase()
      Returns:
      Precio base
    • setPrecioBase

      public void setPrecioBase(BigDecimal precioBase)
      Parameters:
      precioBase - Nuevo precio base
    • getCantidadStock

      public int getCantidadStock()
      Returns:
      Cantidad en stock
    • setCantidadStock

      public void setCantidadStock(int cantidadStock)
      Parameters:
      cantidadStock - Nueva cantidad en stock
    • getCategoria

      public Categoria getCategoria()
      Returns:
      Categoria del articulo
    • setCategoria

      public void setCategoria(Categoria categoria)
      Parameters:
      categoria - Nueva categoria
    • getStockMinimo

      public int getStockMinimo()
      Returns:
      Stock minimo requerido
    • setStockMinimo

      public void setStockMinimo(int stockMinimo)
      Parameters:
      stockMinimo - Nuevo stock minimo
    • getDescuentoAplicable

      public BigDecimal getDescuentoAplicable()
      Returns:
      Descuento aplicable
    • setDescuentoAplicable

      public void setDescuentoAplicable(BigDecimal descuentoAplicable)
      Parameters:
      descuentoAplicable - Nuevo descuento
    • getFechaIngreso

      public LocalDateTime getFechaIngreso()
      Returns:
      Fecha de ingreso
    • setFechaIngreso

      public void setFechaIngreso(LocalDateTime fechaIngreso)
      Parameters:
      fechaIngreso - Nueva fecha de ingreso
    • isEstaActivo

      public boolean isEstaActivo()
      Returns:
      true si esta activo
    • setEstaActivo

      public void setEstaActivo(boolean estaActivo)
      Parameters:
      estaActivo - Nuevo estado activo
    • isEsImportado

      public boolean isEsImportado()
      Returns:
      true si es importado
    • setEsImportado

      public void setEsImportado(boolean esImportado)
      Parameters:
      esImportado - Nuevo estado de importacion
    • getCalificacionPromedio

      public BigDecimal getCalificacionPromedio()
      Returns:
      Calificacion promedio
    • setCalificacionPromedio

      public void setCalificacionPromedio(BigDecimal calificacionPromedio)
      Parameters:
      calificacionPromedio - Nueva calificacion promedio
    • getProveedores

      public List<Proveedor> getProveedores()
      Returns:
      Lista de proveedores
    • setProveedores

      public void setProveedores(List<Proveedor> proveedores)
      Parameters:
      proveedores - Nueva lista de proveedores
    • toString

      public String toString()
      Devuelve una representacion textual del articulo. Formato: "codigo - nombre - $precioBase - Stock: cantidadStock"
      Overrides:
      toString in class Object
      Returns:
      Cadena con la informacion principal del articulo