/// <summary> /// Agrega un ítem a la venta. /// </summary> /// <param name="item">El ítem a agregar.</param> /// <exception cref="ArgumentException">Si el parámetro es inválido.</exception> public void AgregarItem(ItemVenta item) { if (item == null || item.Producto == null || item.Cantidad.Equals(0)) { throw new ArgumentException("El ítem es inválido."); } Items.Add(item); }
/// <summary> /// Obtiene los ítems de una venta. /// </summary> /// <param name="venta">La venta cuyos ítems se van a obtener.</param> /// <returns>Los ítems de la venta.</returns> /// <exception cref="ReglasNegocioException">Si ocurre un error de negocio.</exception> private List <ItemVenta> ObtenerItemsVenta(Venta venta) { List <ItemVenta> items = new List <ItemVenta>(); try { string sql = "SELECT Codigo, Cantidad, CodigoProducto FROM ItemsVenta WHERE CodigoVenta=@venta"; BaseDatos db = new BaseDatos(); db.Conectar(); db.CrearComando(sql); db.AsignarParametroEntero("@venta", venta.Codigo); DbDataReader datosItems = db.EjecutarConsulta(); ItemVenta item = null; CatalogoProductos catalogoProd = new CatalogoProductos(); while (datosItems.Read()) { try { Producto producto = catalogoProd.ObtenerProducto(datosItems.GetInt32(2)); item = new ItemVenta(datosItems.GetInt32(0), producto, datosItems.GetInt32(1)); venta.AgregarItem(item); } catch (InvalidCastException ex) { throw new ReglasNegocioException("Los tipos no coinciden.", ex); } catch (DataException ex) { throw new ReglasNegocioException("Error de ADO.NET.", ex); } } datosItems.Close(); db.Desconectar(); } catch (BaseDatosException) { throw new ReglasNegocioException("Error al acceder a la base de datos para obtener los ítems de venta."); } catch (ReglasNegocioException ex) { throw new ReglasNegocioException("Error a obtener los ítems de venta. " + ex.Message); } return(items); }
/// <summary> /// Obtiene los ítems de una venta. /// </summary> /// <param name="venta">La venta cuyos ítems se van a obtener.</param> /// <returns>Los ítems de la venta.</returns> /// <exception cref="ReglasNegocioException">Si ocurre un error de negocio.</exception> private List<ItemVenta> ObtenerItemsVenta(Venta venta) { List<ItemVenta> items = new List<ItemVenta>(); try { string sql = "SELECT Codigo, Cantidad, CodigoProducto FROM ItemsVenta WHERE CodigoVenta=@venta"; BaseDatos db = new BaseDatos(); db.Conectar(); db.CrearComando(sql); db.AsignarParametroEntero("@venta", venta.Codigo); DbDataReader datosItems = db.EjecutarConsulta(); ItemVenta item = null; CatalogoProductos catalogoProd = new CatalogoProductos(); while (datosItems.Read()) { try { Producto producto = catalogoProd.ObtenerProducto(datosItems.GetInt32(2)); item = new ItemVenta(datosItems.GetInt32(0), producto, datosItems.GetInt32(1)); venta.AgregarItem(item); } catch (InvalidCastException ex) { throw new ReglasNegocioException("Los tipos no coinciden.", ex); } catch (DataException ex) { throw new ReglasNegocioException("Error de ADO.NET.", ex); } } datosItems.Close(); db.Desconectar(); } catch (BaseDatosException) { throw new ReglasNegocioException("Error al acceder a la base de datos para obtener los ítems de venta."); } catch (ReglasNegocioException ex) { throw new ReglasNegocioException("Error a obtener los ítems de venta. " + ex.Message); } return items; }