private void saveProduct() { try { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); // _infoProducto.PRO_ID = 100; _infoProducto.CAT_ID = Convert.ToInt16(UC_categoria1.DropDownList.SelectedValue); _infoProducto.PRO_CODIGO = txtCodigo.Text; _infoProducto.PRO_NOMBRE = txtNombre.Text; _infoProducto.PRO_DESC = txtDescripcion.Text; _infoProducto.PRO_IMAGEN = "C:/imagen"; _infoProducto.PRO_PRECIO_COMPRA = Convert.ToDecimal(txtPrecioCompra.Text); _infoProducto.PRO_PRECIO_VENTA = Convert.ToDecimal(txtPrecioVenta.Text); _infoProducto.PRO_STOCKMAXIMO = txtStockMaximo.Text; _infoProducto.PRO_STOCKMINIMO = txtStockMinimo.Text; Task <bool> _taskSaveProducto = Task.Run(() => LogicaProducto.saveProduct(_infoProducto)); _taskSaveProducto.Wait(); var resultado = _taskSaveProducto.Result; if (resultado) { lblMensaje.Text = "Registro Guardado Correctamente"; } } catch (Exception ex) { lblMensaje.Text = ex.Message; } }
private void loadProducto(int idProducto) { var task = Task.Run(() => LogicaProducto.getAllProductxId(idProducto)); task.Wait(); _infoPro = task.Result; }
private List <SelectListItem> ListaProductos() { //Creamos la lista resultante List <SelectListItem> resultado = new List <SelectListItem>(); //Instanciamos la logica de productos LogicaProducto unaLogica = new LogicaProducto(); //Traemos la lista de productos List <ProductoDTO> listaDTO = unaLogica.ListaProductos(); //Filtramos solo los productos habilitados List <ProductoModel> lista = HerramientasM.ProductosHabilitados(listaDTO); foreach (ProductoModel unProducto in lista) { //Agregamos los productos habilitados a la lista resultado.Add(new SelectListItem { Text = (unProducto.Id + " - " + unProducto.Nombre + " " + unProducto.Marca), Value = unProducto.Id.ToString(), Selected = false }); } //Retornamos la lista return(resultado); }
//forma independiente //1ra forma void Uc_Datos_RowCommand(object sender, GridViewCommandEventArgs e) { string codigo = Convert.ToString(e.CommandArgument); if (e.CommandName == "Modificar") { //Encriptar Response.Redirect("wfmProductoNuevo.aspx?cod=" + codigo, true); } if (e.CommandName == "Eliminar") { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var taskProducto = Task.Run(() => LogicaProducto.getProductXId(int.Parse(codigo))); taskProducto.Wait(); _infoProducto = taskProducto.Result; if (_infoProducto != null) { Task <bool> _taskSaveProduct = Task.Run(() => LogicaProducto.deleteProduct(_infoProducto)); _taskSaveProduct.Wait(); var resultado = _taskSaveProduct.Result; if (resultado) { Response.Write("<script>alert('Registro Eliminado Correctamente')</script>"); Task <List <TBL_PRODUCTO> > _taskProductos = Task.Run(() => LogicaProducto.getAllProduct()); _taskProductos.Wait(); var _listaProducto = _taskProductos.Result; loadProductos(_listaProducto); } } } }
private void loadCatalogo() { Task <List <TBL_PRODUCTO> > _taskProductos = Task.Run(() => LogicaProducto.getAllProduct()); _taskProductos.Wait(); var _listaProducto = _taskProductos.Result; loadProductos(_listaProducto); }
private bool ActualizarProducto(int IdProducto, int IdCategoria, string Producto, string Descripcion, int Stock, int StockMinimo, decimal UltPrecioCosto, decimal UltPrecioVenta) { LogicaProducto logicaProducto = new LogicaProducto(); bool resu = logicaProducto.ActualizarProducto(IdProducto, IdCategoria, Producto, Descripcion, Stock, StockMinimo, UltPrecioCosto, UltPrecioVenta); return(resu); }
void rellenacomboproducto() { try { LogicaProducto objeto = new LogicaProducto(); cmbProducto.DataSource = objeto.MostrarProducto(); cmbProducto.DisplayMember = "Producto"; cmbProducto.ValueMember = "Código"; } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Task <List <TBL_PRODUCTO> > _taskProductos = Task.Run(() => LogicaProducto.getAllProduct()); _taskProductos.Wait(); var _listaProducto = _taskProductos.Result; loadProductos(_listaProducto); } UC_DatosEventos(); }
public static void LlenarMarcas(DropDownList marcas, string proveedor) { marcas.Items.Clear(); List <string> listaMarcas = new List <string>(); LogicaProducto logicaProducto = new LogicaProducto(); listaMarcas = logicaProducto.ObtenerMarcas(proveedor); foreach (string marca in listaMarcas) { marcas.Items.Add(marca); } }
public static void LlenarCategorias(DropDownList categorias) { categorias.Items.Clear(); List <string> listaCategorias = new List <string>(); LogicaProducto logicaProducto = new LogicaProducto(); listaCategorias = logicaProducto.ObtenerCategorias(); foreach (string categoria in listaCategorias) { categorias.Items.Add(categoria); } }
public void PruebaEditarProductoGenerico() { string nombre = "Guantes latex"; //Edito un producto generico de la BD Producto producto = new Producto(); producto.Nombre = "Guantes de latex"; producto.Tipo = "Producto medico"; producto.Categoria = "Guantes"; LogicaProducto logicaProducto = new LogicaProducto(); Assert.IsNotNull(producto); Assert.IsTrue(logicaProducto.EditarProductoGenerico(producto, nombre)); }
private void loadCatalogo() { Task <List <TBL_PRODUCTO> > _taskProducto = Task.Run(() => LogicaProducto.getAllProduct()); _taskProducto.Wait(); var _listaProdcutos = _taskProducto.Result; DataList1.DataSource = _listaProdcutos.Select(data => new { ID = data.pro_id, Nombre = data.pro_nombre, Precio = data.pro_precioventa.ToString("0.00"), URL = data.pro_imagen }).ToList(); DataList1.DataBind(); }
private void loadCatalogo() { Task <List <TBL_PRODUCTO> > _taskProductos = Task.Run(() => LogicaProducto.getAllProduct()); _taskProductos.Wait(); var _listaProducto = _taskProductos.Result; DataList1.DataSource = _listaProducto.Select(data => new { ID = data.PRO_ID, Nombre = data.PRO_NOMBRE, Precio = data.PRO_PRECIOVENTA.ToString("0.00"), Url = data.PRO_IMAGEN }).ToList(); DataList1.DataBind(); }
private void loadProducto(int idProducto) { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getProductXId(idProducto)); task.Wait(); _infoProducto = task.Result; if (_infoProducto != null) { imgProducto.ImageUrl = _infoProducto.pro_imagen; lblIdProducto.Text = _infoProducto.pro_id.ToString(); lblCodigoProducto.Text = _infoProducto.pro_codigo.ToString(); lblNombre.Text = _infoProducto.pro_nombre; lblDescripcion.Text = _infoProducto.pro_descripcion; lblPrecio.Text = _infoProducto.pro_precioventa.ToString("0.00"); } }
private void updateProducto() { try { TBL_PRODUCTO _infoPro = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getAllProductxId(int.Parse(lblId.Text))); task.Wait(); _infoPro = task.Result; if (_infoPro != null) { _infoPro.PRO_ID = int.Parse(lblId.Text); _infoPro.CAT_ID = Convert.ToInt32(UC_CAT1.DropDownList.SelectedValue); _infoPro.PRO_CODIGO = txtCod.Text; _infoPro.PRO_DESCRIPCION = txtDes.Text; _infoPro.PRO_NOMBRE = txtNom.Text; var d = fuimagen; if (fuimagen.HasFile) { fuimagen.SaveAs(Server.MapPath("~/img") + "//" + fuimagen.FileName); _infoPro.PRO_IMAGEN = "~/img/" + fuimagen.FileName; } _infoPro.PRO_PRECIO_COMPRA = Convert.ToDecimal(txtPC.Text); _infoPro.PRO_PRECIO_VENTA = Convert.ToDecimal(txtPV.Text); _infoPro.PRO_STOCK_MINIMO = Convert.ToInt32(txtSMin.Text); _infoPro.PRO_STOCK_MAXIMO = Convert.ToInt32(txtSMax.Text); Task <bool> _taskSave = Task.Run(() => LogicaProducto.updateProduct(_infoPro)); _taskSave.Wait(); var resultado = _taskSave.Result; if (resultado) { lblMessage.Text = "Registro guardado"; Response.Redirect("WfmProductoNuevo.aspx?cod=" + _infoPro.PRO_ID, true); } else { lblMessage.Text = "No se guardado"; } } } catch (Exception ex) { lblMessage.Text = ex.Message + "linea: " + ex.Source; } }
private void loadProducto(int idProducto) { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getProductXId(idProducto)); task.Wait(); _infoProducto = task.Result; if (_infoProducto != null) { imgProducto.ImageUrl = _infoProducto.PRO_IMAGEN; lblIdProducto.Text = _infoProducto.PRO_ID.ToString(); lblCodigoProducto.Text = _infoProducto.PRO_CODIGO.ToString(); lblNombre.Text = _infoProducto.PRO_NOMBRE; lblDescripcion.Text = _infoProducto.PRO_DESCRIPCION; lblPrecio.Text = _infoProducto.PRO_PRECIOVENTA.ToString("0.00"); } }
public void PruebaAgregarProducto() { Producto producto = new Producto(); producto.Codigo = "11"; producto.Nombre = "Producto prueba"; producto.Tipo = "Producto medico"; producto.Categoria = "Guantes"; producto.Calidad = "Media"; producto.Precio = Convert.ToDecimal(12); producto.Marca = "GUM"; LogicaProducto logicaProducto = new LogicaProducto(); Assert.IsNotNull(producto); Assert.IsTrue(logicaProducto.AgregarProducto(producto)); }
public void PruebaEditarProducto() { //Creo un producto con un codigo existente en la BD Producto producto = new Producto(); producto.Codigo = "123221"; producto.Nombre = "Guantes latex"; producto.Tipo = "Producto medico"; producto.Categoria = "Guantes"; producto.Calidad = "Baja"; producto.Precio = Convert.ToDecimal(12000); producto.Marca = "GUM"; LogicaProducto logicaProducto = new LogicaProducto(); Assert.IsNotNull(producto); Assert.IsTrue(logicaProducto.EditarProducto(producto)); }
private void loadProducto(int idProducto) { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getProductXId(idProducto)); task.Wait(); _infoProducto = task.Result; if (_infoProducto != null) { LblId.Text = _infoProducto.PRO_ID.ToString(); txtCodigo.Text = _infoProducto.PRO_CODIGO; UC_Categoria1.DropDownList.SelectedValue = _infoProducto.CAT_ID.ToString(); txtNombre.Text = _infoProducto.PRO_NOMBRE; txtDescripcion.Text = _infoProducto.PRO_DESCRIPCION; txtPrecioCompra.Text = _infoProducto.PRO_PRECIOCOMPRA.ToString(); txtPrecioVenta.Text = _infoProducto.PRO_PRECIOVENTA.ToString(); txtStockMinimo.Text = _infoProducto.PRO_STOCKMINIMO.ToString(); txtStockMaximo.Text = _infoProducto.PRO_STOCKMAXIMO.ToString(); } }
private void loadProducto(int idProducto) { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getProductxId(idProducto)); task.Wait(); _infoProducto = task.Result; if (_infoProducto != null) { lblId.Text = _infoProducto.pro_id.ToString(); txtCodigo.Text = _infoProducto.pro_codigo; UC_Categoria1.DropDownList.SelectedValue = _infoProducto.cat_id.ToString(); txtNombre.Text = _infoProducto.pro_nombre; txtDescripcion.Text = _infoProducto.pro_descripcion; txtPrc.Text = _infoProducto.pro_preciocompra.ToString(); txtPrv.Text = _infoProducto.pro_precioventa.ToString(); txtStockMin.Text = _infoProducto.pro_stockminimo.ToString(); txtStockMax.Text = _infoProducto.pro_stockmaximo.ToString(); } }
private void loadProducto(int idProducto) { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getAllProductxId(idProducto)); task.Wait(); _infoProducto = task.Result; if (_infoProducto != null) { lblId.Text = _infoProducto.PRO_ID.ToString(); lblImg.Text = _infoProducto.PRO_IMAGEN.ToString(); UC_CAT1.DropDownList.SelectedValue = _infoProducto.CAT_ID.ToString(); txtNom.Text = _infoProducto.PRO_NOMBRE; txtDes.Text = _infoProducto.PRO_DESCRIPCION; txtPC.Text = _infoProducto.PRO_PRECIO_COMPRA.ToString(); txtPV.Text = _infoProducto.PRO_PRECIO_VENTA.ToString(); txtCod.Text = _infoProducto.PRO_CODIGO.ToString(); txtSMin.Text = _infoProducto.PRO_STOCK_MINIMO.ToString(); txtSMax.Text = _infoProducto.PRO_STOCK_MAXIMO.ToString(); } }
private void Buscar(string op) { if (!string.IsNullOrEmpty(txtBuscar.Text)) { List <TBL_PRODUCTO> _listaProducto = new List <TBL_PRODUCTO>(); string datoaBuscar = txtBuscar.Text; switch (op) { case "T": Task <List <TBL_PRODUCTO> > _taskProductos = Task.Run(() => LogicaProducto.getAllProduct()); _taskProductos.Wait(); _listaProducto = _taskProductos.Result; loadProductos(_listaProducto); break; case "C": Task <List <TBL_PRODUCTO> > _taskProductos2 = Task.Run(() => LogicaProducto.searchProductXCode(datoaBuscar)); _taskProductos2.Wait(); _listaProducto = _taskProductos2.Result; loadProductos(_listaProducto); break; case "N": Task <List <TBL_PRODUCTO> > _taskProductos3 = Task.Run(() => LogicaProducto.searchProductXNombre(datoaBuscar)); _taskProductos3.Wait(); _listaProducto = _taskProductos3.Result; loadProductos(_listaProducto); break; case "Ca": Task <List <TBL_PRODUCTO> > _taskProductos4 = Task.Run(() => LogicaProducto.searchProductXCategoria(datoaBuscar)); _taskProductos4.Wait(); _listaProducto = _taskProductos4.Result; loadProductos(_listaProducto); break; } } }
//Creamos un constructor que cargara toda la informacion cuando instanciemos este modelo public DatosModel() { //Instanciamos las logicas que necesitaremos LogicaProducto logicaProducto = new LogicaProducto(); LogicaFactura logicaFactura = new LogicaFactura(); LogicaCliente logicaCliente = new LogicaCliente(); LogicaUsuario logicaUsuario = new LogicaUsuario(); //Vamos completando las distintas propiedades del modelo //FACTURA: TotalFacturado = logicaFactura.TotalFacturado(); FacturasRegistradas = logicaFactura.FacturasRegistradas(); //CLIENTE: TotalClientesRegistrados = logicaCliente.TotalClientesRegistrados(); //USUARIO UsuariosRegistrados = logicaUsuario.UsuariosRegistrados(); //PRODUCTO ProductosRegistrados = logicaProducto.ProductosRegistrados(); }
protected void ImageButton4_Click1(object sender, EventArgs e) { LinkButton objImage = (LinkButton)sender; string[] commandArgs = objImage.CommandArgument.ToString().Split(new char[] { ',' }); int idProducto = Convert.ToInt32(commandArgs[0]); TBL_PRODUCTO _infoPro = new TBL_PRODUCTO(); var task = Task.Run(() => LogicaProducto.getAllProductxId(idProducto)); task.Wait(); _infoPro = task.Result; List <Cart> _listCart = new List <Cart>(); _listCart = (List <Cart>)Session["Cart"]; Cart _addCart = Cart.intanciaCartXProducto(_infoPro, "1"); Session["Cart"] = Cart.addCart(_listCart, _addCart); Response.Redirect("Principal.aspx", true); }
/*Nos devuelve un string con Nombre - Marca de un producto correspondiente al id que nos llega como parametro*/ private string NombreMarcaProducto(int idProducto) { //Anticipamos un posible error en la base try { //Instanciamos la logica de productos LogicaProducto logicaProducto = new LogicaProducto(); //Buscamos el producto ProductoDTO unProducto = logicaProducto.BuscarProducto(idProducto); //Juntamos el nombre y la marca en un mismo string string resultado = unProducto.Nombre + " " + unProducto.Marca; //Retornamos nombre y marca return(resultado); } catch (Exception) { //Retornamos un error para saber que algo fallo return("Algo salio mal"); } }
private void saveProduct() { try { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); //_infoProducto.pro_id = 102; _infoProducto.cat_id = Convert.ToInt16(UC_Categoria1.DropDownList.SelectedValue); _infoProducto.pro_codigo = txtCodigo.Text; _infoProducto.pro_nombre = txtNombre.Text; _infoProducto.pro_descripcion = txtDescripcion.Text; //validacion de la imagen if (FileUpload1.HasFile) { if (!string.IsNullOrEmpty(txtCodigo.Text)) { try { if (FileUpload1.PostedFile.ContentType == "image/png" || FileUpload1.PostedFile.ContentType == "image/jpeg") { if (FileUpload1.PostedFile.ContentLength < 100000) { string nombreArchivo = txtCodigo.Text + ".jpg"; FileUpload1.SaveAs(Server.MapPath("~/Images/Products/") + nombreArchivo); } else { lblMensaje.Text = "El tamaño maximo de la imagen es de 100kb"; } } else { lblMensaje.Text = "Solo se aceptan imagenes de tipo png/jpeg"; } } catch (Exception) { lblMensaje.Text = "Error al cargar la imagen del producto"; } } else { lblMensaje.Text = "El campo codigo de producto es obligatorio para la carga de la iamgen"; } } _infoProducto.pro_imagen = "~/Images/Products/" + txtCodigo.Text + ".jpg"; _infoProducto.pro_preciocompra = Convert.ToDecimal(txtPrc.Text); _infoProducto.pro_precioventa = Convert.ToDecimal(txtPrv.Text); _infoProducto.pro_stockminimo = Convert.ToInt32(txtStockMin.Text); _infoProducto.pro_stockmaximo = Convert.ToInt32(txtStockMax.Text); Task <bool> _taskSaveProduct = Task.Run(() => LogicaProducto.saveProduct(_infoProducto)); _taskSaveProduct.Wait(); var resultado = _taskSaveProduct.Result; if (resultado) { lblMensaje.Text = "Registro Guardado Correctamente"; } } catch (Exception ex) { lblMensaje.Text = "" + ex.Message; } }
private void saveProduct() { try { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); //_infoProducto.PRO_ID = 100; _infoProducto.CAT_ID = Convert.ToInt16(UC_Categoria1.DropDownList.SelectedValue); _infoProducto.PRO_CODIGO = txtCodigo.Text; _infoProducto.PRO_NOMBRE = txtNombre.Text; _infoProducto.PRO_DESCRIPCION = txtDescripcion.Text; //imagen if (FileUploadProducto.HasFile) { if (!string.IsNullOrEmpty(txtCodigo.Text)) { try { if (FileUploadProducto.PostedFile.ContentType == "image/png" || FileUploadProducto.PostedFile.ContentType == "image/jpeg") { if (FileUploadProducto.PostedFile.ContentLength < 512000) { string nombreArchivo = txtCodigo.Text + ".jpg"; //guardar archivo //~ = raiz proyecto FileUploadProducto.SaveAs(Server.MapPath("~/images/products/") + nombreArchivo); } else { LblMensaje.Text = "El tamaño máximo de la imagen debe ser 512 KB"; } } else { LblMensaje.Text = "Admitido solo jpg o png"; } } catch (Exception) { LblMensaje.Text = "Error al cargar imagen de producto"; } } else { LblMensaje.Text = "El campo codigo de producto es oblgatorio para la carga de imagen"; } } _infoProducto.PRO_IMAGEN = "~/images/products/" + txtCodigo.Text + ".jpg"; _infoProducto.PRO_PRECIOCOMPRA = Convert.ToDecimal(txtPrecioCompra.Text); _infoProducto.PRO_PRECIOVENTA = Convert.ToDecimal(txtPrecioVenta.Text); _infoProducto.PRO_STOCKMINIMO = Convert.ToInt32(txtStockMinimo.Text); _infoProducto.PRO_STOCKMAXIMO = Convert.ToInt32(txtStockMaximo.Text); Task <bool> _taskSaveProduct = Task.Run(() => LogicaProducto.saveProduct(_infoProducto)); _taskSaveProduct.Wait(); var resultado = _taskSaveProduct.Result; if (resultado) { LblMensaje.Text = "Registro Guardado Correctamente"; newProduct(); } } catch (Exception ex) { LblMensaje.Text = ex.Message; } }
private void updateProduct() { try { TBL_PRODUCTO _infoProducto = new TBL_PRODUCTO(); var taskProducto = Task.Run(() => LogicaProducto.getProductXId(int.Parse(lblId.Text))); taskProducto.Wait(); _infoProducto = taskProducto.Result; if (_infoProducto != null) { _infoProducto.pro_id = int.Parse(lblId.Text); _infoProducto.cat_id = Convert.ToInt16(UC_Categoria1.DropDownList.SelectedValue); _infoProducto.pro_codigo = txtCodigo.Text; _infoProducto.pro_nombre = txtNombre.Text; _infoProducto.pro_descripcion = txtDescripcion.Text; //imagen if (FileUploadProducto.HasFile) { if (!string.IsNullOrEmpty(txtCodigo.Text)) { try { if (FileUploadProducto.PostedFile.ContentType == "image/png" || FileUploadProducto.PostedFile.ContentType == "image/jpeg") { if (FileUploadProducto.PostedFile.ContentLength < 100000) { string nombreArchivo = txtCodigo.Text + ".jpg"; FileUploadProducto.SaveAs(Server.MapPath("~/images/products/") + nombreArchivo); } else { lblMensaje.Text = "El tamaño máximo de la imagen es de 100 kb"; } } else { lblMensaje.Text = "Solo se aceptan imagen de tipo Png y Jpeg"; } } catch (Exception) { lblMensaje.Text = "Error al cargar la imagen de producto. "; } } else { lblMensaje.Text = "El campo codigo de producto es obligatorio para la carga de imagen"; } } _infoProducto.pro_imagen = "~/images/products/" + txtCodigo.Text + ".jpg"; _infoProducto.pro_preciocompra = Convert.ToDecimal(txtPrecioCompra.Text); _infoProducto.pro_precioventa = Convert.ToDecimal(txtPrecioVenta.Text); _infoProducto.pro_stockminimo = Convert.ToInt32(txtStockMinimo.Text); _infoProducto.pro_stockmaximo = Convert.ToInt32(txtStockMaximo.Text); Task <bool> _taskSaveProduct = Task.Run(() => LogicaProducto.updateProduct(_infoProducto)); _taskSaveProduct.Wait(); var resultado = _taskSaveProduct.Result; if (resultado) { lblMensaje.Text = "Registro Modificado Correctamente"; Response.Redirect("wfmProductoLista.aspx", true); } } } catch (Exception ex) { lblMensaje.Text = ex.Message; } }
void cargartabla() { LogicaProducto objeto = new LogicaProducto(); dgvProductos.DataSource = objeto.MostrarProducto(); }
public ActionResult CrearFactura(FacturaModel nuevaFactura) { //Controlamos que el usuario este logueado, en este caso no importa si es admin o no if (Session["Logueado"] != null) { if (ModelState.IsValid) { //Nos anticipamos a cualquier error inesperado que pueda ocurrir en base usando try try { //Creamos una instancia de la logica de productos LogicaProducto logProductos = new LogicaProducto(); //Busco el producto ingresado en mi base de datos ProductoDTO productoActual = logProductos.BuscarProducto(nuevaFactura.IdProducto); //Sabemos que el producto no viene null porque el id es seleccionado de una lista. NO es ingresado por el usuario //Creamos el detalle y le cargamos los datos DetalleFacturaModel nuevoDetalle = new DetalleFacturaModel() { IdProducto = productoActual.Id, Cantidad = nuevaFactura.Cantidad, SubTotal = productoActual.Precio * nuevaFactura.Cantidad }; //Creamos una factura para asignarle lo que esta en session FacturaModel unaFactura = new FacturaModel(); unaFactura = (FacturaModel)Session["nuevaFactura"]; //Vemos si la lista de productos de la factura esta creada, sino la creamos y agregamos nuestro detalle(Porque si es null y tratamos de agregarle algo va a explotar) if (unaFactura.ListaDetalle == null) { //creamos la lista unaFactura.ListaDetalle = new List <DetalleFacturaModel>(); //Se lo pasamos a nuestra factura unaFactura.ListaDetalle.Add(nuevoDetalle); } else { //Si ya tiene algun item agregamos normalmente unaFactura.ListaDetalle.Add(nuevoDetalle); } //Actualizamos el gastototal, La funcion calcularGasto no esta en la capa logica porque usaremos un DetalleFacturaModel y la logica no tiene acceso... unaFactura.Total = CalcularGasto(unaFactura.ListaDetalle); //Guardamos los datos en la session Session["nuevaFactura"] = unaFactura; //Retornamos la vista: return(View(unaFactura)); } catch { //Redirigimos a la vista de error... return(View("Error")); } } else //Si el modelo no es valido { //Devolvemos la vista con los errores correspondientes return(View(nuevaFactura)); } } else//Si no esta logueado { //Redirigimos a la vista de LOGIN para que ingrese return(RedirectToAction("Login", "Ingreso")); } }