Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created July 6, 2014 17:55
Show Gist options
  • Save Fhernd/270f74fbbff80e598d26 to your computer and use it in GitHub Desktop.
Save Fhernd/270f74fbbff80e598d26 to your computer and use it in GitHub Desktop.
Representa la entidad producto.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Producto.cs
//
// Original en: http://goo.gl/ZFoSzx
//
// Propósito: Representar las operaciones y atributos de la
// entidad Producto del modelo.
//
============================================================*/
using System;
namespace LaTienda.Modelo
{
/// <summary>
/// Clase Producto para representar un producto a vender en la tienda.
/// </summary>
public class Producto
{
#region Campos
/// <summary>
/// Cantidad del producto disponible en bodega.
/// </summary>
private int cantidadBodega;
/// <summary>
/// Cantidad mínima del producto que se puede tener en bodega.
/// </summary>
private int cantidadMinima;
/// <summary>
/// Unidades del producto vendidas.
/// </summary>
private int cantidadVendida;
/// <summary>
/// IVA aplicado a este producto.
/// </summary>
private TipoIva iva;
/// <summary>
/// Nombre del producto.
/// </summary>
private string nombre;
/// <summary>
/// Tipo de producto.
/// </summary>
private TipoProducto tipo;
/// <summary>
/// Valor unitario del producto.
/// </summary>
private decimal valorUnitario;
#endregion
#region Propiedades
/// <summary>
/// Obtiene la cantida de producto almacenado en bodega.
/// </summary>
public int CantidadBodega
{
get
{
return cantidadBodega;
}
}
/// <summary>
/// Obtiene la cantidad mínima de producto que se puede tener en bodega.
/// </summary>
public int CantidadMinima
{
get
{
return cantidadMinima;
}
}
/// <summary>
/// Obtiene la cantidad vendida del producto.
/// </summary>
public int CantidadVendida
{
get
{
return cantidadVendida;
}
}
/// <summary>
/// Obtiene el IVA aplicado al producto.
/// </summary>
public TipoIva Iva
{
get
{
return iva;
}
}
/// <summary>
/// Obtiene el nombre del producto.
/// </summary>
public string Nombre
{
get
{
return nombre;
}
}
/// <summary>
/// Obtiene el tipo del producto.
/// </summary>
public TipoProducto Tipo
{
get
{
return tipo;
}
}
/// <summary>
/// Obtiene el valor unitario del producto.
/// </summary>
public decimal ValorUnitario
{
get
{
return valorUnitario;
}
}
#endregion
#region Constructores
/// <summary>
/// Crea un nuevo producto.
/// </summary>
/// <param name="tipo">Tipo del producto.</param>
/// <param name="iva">IVA aplicado al producto.</param>
/// <param name="nombre">Nombre del producto.</param>
/// <param name="valorUnitario">Valor unitario del producto.</param>
/// <param name="cantidadBodega">Cantidad disponible en bodega del producto.</param>
/// <param name="cantidadMinima">Cantidad mínima que se puede tener en bodega del producto.</param>
public Producto(TipoProducto tipo, TipoIva iva, string nombre, decimal valorUnitario, int cantidadBodega, int cantidadMinima)
{
this.tipo = tipo;
this.iva = iva;
this.nombre = nombre;
this.valorUnitario = valorUnitario;
this.cantidadBodega = cantidadBodega;
this.cantidadMinima = cantidadMinima;
this.cantidadVendida = 0;
}
#endregion
#region Métodos
/// <summary>
/// Calcula el precio final teniendo en cuenta su precio unitario
/// y el IVA aplicado al producto.
/// </summary>
/// <returns>Valor final del producto.</returns>
public decimal CalcularPrecionalFinal()
{
return valorUnitario * (1 + (decimal)((int)iva/100.0M));
}
/// <summary>
/// Determina si es necesario realizar un pedido.
/// </summary>
/// <returns>true si es necesario realizar un pedido; en caso contario, false.</returns>
public bool EsNecesarioHacerPedido()
{
return cantidadBodega < cantidadMinima;
}
/// <summary>
/// Realiza un pedido de producto.
/// </summary>
/// <param name="cantidad">Cantidad a pedir.</param>
public void HacerPedido(int cantidad)
{
cantidadBodega += cantidad;
}
/// <summary>
/// Vende una cantidad del producto.
/// </summary>
/// <param name="cantidad">Cantidad del producto a vender.</param>
/// <returns>La cantidad que se ha podido vender del producto.</returns>
public int Vender(int cantidad)
{
if (cantidad > cantidadBodega)
{
cantidad = cantidadBodega;
}
cantidadVendida += cantidad;
cantidadBodega -= cantidad;
return cantidad;
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment