/// <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);
        }
示例#4
0
        /// <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;
        }