/// <summary> /// Ejecuta la acción asociada a la opción. /// </summary> /// <exception cref="OpcionInvalidaException">Si la opción no fue ejecutada exitosamente.</exception> internal override void EjecutarAccion() { if (PuntoDeVenta.VentaActual == null) { throw new OpcionInvalidaException("La venta no fue iniciada."); } try { new OpcionListarProductos().EjecutarAccion(); CatalogoProductos catalogoProd = new CatalogoProductos(); Producto producto = null; Console.Write("Seleccione un Producto de la lista a agregar: "); try { int idProducto = int.Parse(Console.ReadLine()); producto = catalogoProd.ObtenerProducto(idProducto); if (producto == null) { throw new OpcionInvalidaException("Producto inválido."); } } catch (FormatException) { throw new OpcionInvalidaException("Número inválido !"); } int cantidad = 0; Console.Write("Seleccione la cantidad a agregar: "); try { cantidad = int.Parse(Console.ReadLine()); } catch (FormatException) { throw new OpcionInvalidaException("Cantidad inválida !"); } PuntoDeVenta.VentaActual.AgregarItem(new ItemVenta(producto, cantidad)); Console.Clear(); Console.WriteLine("Agregados {0} unidades del producto {1}.\n", cantidad, producto.Descripcion); } catch (ReglasNegocioException ex) { Console.Clear(); Console.WriteLine("Error al agregar un ítem a la venta actual: " + ex.Message); } catch (OpcionInvalidaException ex) { Console.Clear(); Console.WriteLine(ex.Message); } catch (Exception) { Console.Clear(); Console.WriteLine("Error al agregar un ítem a la venta actual."); } }
/// <summary> /// Ejecuta la acción asociada a la opción. /// </summary> internal override void EjecutarAccion() { try { CatalogoProductos catalogo = new CatalogoProductos(); List<Producto> productos = catalogo.ObtenerProductos(); Console.WriteLine("Listado de Productos"); Console.WriteLine("--------------------\n"); Console.WriteLine("{0}\t{1}\t\t{2}", "Codigo".PadRight(7), "Descripcion".PadRight(30), "Precio"); foreach (Producto producto in productos) { Console.WriteLine("{0}\t{1}\t\t{2}", producto.Codigo.ToString().PadRight(7), producto.Descripcion.PadRight(30), producto.Precio); } Console.WriteLine("\n\n"); } catch (ReglasNegocioException ex) { Console.WriteLine("Error al listar los productos: " + ex.Message); } }
/// <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; }