Created
July 6, 2014 17:55
-
-
Save Fhernd/270f74fbbff80e598d26 to your computer and use it in GitHub Desktop.
Representa la entidad producto.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ===++=== | |
// | |
// 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