public ProductosCostoRosedal GetObtenerProductoRosedalById(string idProducto) { ProductosCostoRosedal ret = new ProductosCostoRosedal(); ProductosCosto Productos = ClassBD.ObtenerProductoById(Convert.ToInt32(idProducto)); ProductosCosto ProductoCaja = ClassBD.ObtenerProductoCajaInterna(Productos); /* * CostosHistoricos CostoProducto = new CostosHistoricos(); * CostoProducto = ClassBD.ObtenerCostosHbyProduct(Productos.idProducto);*/ Costos CostoProducto = ClassBD.ObtenerCostoByIdProducto(Productos.idProducto); ret.Producto = Productos.Producto; ret.CajasInternas = Productos.Piezas; ret.idProducto = Productos.idProducto; ret.Codigo = Productos.Codigo; ret.CodigoBarras = Productos.CodigoBarras; ret.Color = Productos.Color; ret.Descripcion = Productos.Descripcion; ret.SKU = Productos.SKU; ret.idPresentacion = 3; ret.ImagenP = Productos.ImagenP; ret.idProductoCaja = ProductoCaja.idProducto; ret.Piezas = ProductoCaja.Piezas; ret.idProveedor = CostoProducto.idProveedor; ret.Proveedor = CostoProducto.Proveedor; ret.Costo = CostoProducto.Costo; return(ret); }
public ID Post(ProductosCostoRosedal Producto) { if (Producto == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } int ret = -1; Producto.CodigoBarras = Producto.CodigoBarras.Replace("'", "-"); if (ClassBD.ExisteProducto(Producto.Producto, Producto.Color, Producto.SKU, Producto.CodigoBarras, 3) == 0) { Producto.PiezasTotales = Producto.Piezas; ProductosCosto prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 2, "", Producto.ImagenP, Producto.Piezas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); CostosHistoricos costo = new CostosHistoricos(); costo.idProducto = ret; costo.idProveedor = Producto.idProveedor; costo.Fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); costo.Costo = Producto.Costo; ClassBD.AgregarCostosH(costo); Costos ct = new Costos(0, ret, "", costo.idProveedor, "", costo.Costo); ClassBD.ActualizarCosto(ct); Producto.PiezasTotales = Producto.Piezas * Producto.CajasInternas; prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 3, "", Producto.ImagenP, Producto.CajasInternas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); costo.idProducto = ret; ClassBD.AgregarCostosH(costo); ct.idProducto = ret; ClassBD.ActualizarCosto(ct); } return(new ID(ret)); }
public ActionResult DeleteConfirmed(int id) { Costos costos = db.Costos.Find(id); db.Costos.Remove(costos); db.SaveChanges(); return(RedirectToAction("Index")); }
// PUT: api/Costos public void Put([FromBody] Costos Datos) { if (Datos == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } ClassBD.ActualizarCosto(Datos); }
// POST: api/Costos public ID Post([FromBody] Costos Datos) { if (Datos == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } return(new ID(ClassBD.AgregarCosto(Datos))); }
public ActionResult Edit([Bind(Include = "IDCosto,TipoCosto,IDProducto,IDComponente,Costo,InicioVigencia,FinVigencia,Activo")] Costos costos) { if (ModelState.IsValid) { db.Entry(costos).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.IDComponente = new SelectList(db.Componentes, "IDComponente", "Codigo", costos.IDComponente); ViewBag.IDProducto = new SelectList(db.Productos, "IDProducto", "Codigo", costos.IDProducto); return(View(costos)); }
public JsonResult Muchos(HttpPostedFileBase archivo) { TanoNEEntities ctx = new TanoNEEntities(); string[] result = new StreamReader(archivo.InputStream).ReadToEnd().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (string linea in result) { string[] usar = linea.Replace("\r", "").Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); string nombre = usar[0]; string marca = usar[1]; string presentacion = usar[2]; int cate = int.Parse(usar[3]); decimal precio = decimal.Parse(usar[4], new NumberFormatInfo() { NumberDecimalSeparator = "," }); decimal costo = decimal.Parse(usar[5], new NumberFormatInfo() { NumberDecimalSeparator = "," }); Productos item = ctx.Productos.FirstOrDefault(a => a.producto == nombre && a.marca == marca && a.presentacion == presentacion); if (item == null) { Categorias categoria = ctx.Categorias.FirstOrDefault(a => a.idCategoria == cate); item = new Productos(); item.producto = nombre; item.marca = marca; item.presentacion = presentacion; item.Categorias = categoria; item.activo = true; Precios pre = new Precios(); pre.precio = precio; pre.fecha = DateTime.Now; item.Precios.Add(pre); Costos cos = new Costos(); cos.costo = costo; cos.fecha = DateTime.Now; item.Costos.Add(cos); ctx.Productos.Add(item); } } ctx.SaveChanges(); return(Json(new { error = false, mensaje = "Producto grabado satisfactoriamente" }, JsonRequestBehavior.DenyGet)); }
// GET: Costos/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Costos costos = db.Costos.Find(id); if (costos == null) { return(HttpNotFound()); } return(View(costos)); }
// GET: Costos/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Costos costos = db.Costos.Find(id); if (costos == null) { return(HttpNotFound()); } ViewBag.IDComponente = new SelectList(db.Componentes, "IDComponente", "Codigo", costos.IDComponente); ViewBag.IDProducto = new SelectList(db.Productos, "IDProducto", "Codigo", costos.IDProducto); return(View(costos)); }
public void InsertCostos(Costos Obj) { using (DB_AUTOMATIZACIONEntities db = new DB_AUTOMATIZACIONEntities()) { try { if (db.Database.Connection.State == ConnectionState.Closed) { db.Database.Connection.Open(); } db.Costos.Add(Obj); db.SaveChanges(); } catch (DbEntityValidationException ex) { EntityExceptionError.CatchError(ex); } } }
public void UpdateCostos(Costos Obj) { using (DB_AUTOMATIZACIONEntities db = new DB_AUTOMATIZACIONEntities()) { try { if (db.Database.Connection.State == ConnectionState.Closed) { db.Database.Connection.Open(); } Costos Entidad = (from n in db.Costos where n.Id == Obj.Id select n).FirstOrDefault(); db.Entry(Entidad).CurrentValues.SetValues(Obj); db.SaveChanges(); } catch (DbEntityValidationException ex) { EntityExceptionError.CatchError(ex); } } }
public void Put(ProductosCostoRosedal Producto) { if (Producto == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } int id = Producto.idProducto; Producto.CodigoBarras = Producto.CodigoBarras.Replace("'", "-"); Producto.idProducto = Producto.idProductoCaja; Producto.idPresentacion = 2; Producto.PiezasTotales = Producto.Piezas; ClassBD.ActualizarProducto(Producto); CostosHistoricos costo = new CostosHistoricos(); costo.idProducto = Producto.idProducto; costo.idProveedor = Producto.idProveedor; costo.Fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); costo.Costo = Producto.Costo; ClassBD.AgregarCostosH(costo); Costos ct = new Costos(0, Producto.idProducto, "", costo.idProveedor, "", costo.Costo); ClassBD.ActualizarCosto(ct); Producto.idPresentacion = 3; Producto.idProducto = id; Producto.PiezasTotales = Producto.Piezas * Producto.CajasInternas; Producto.Piezas = Producto.CajasInternas; ClassBD.ActualizarProducto(Producto); costo.idProducto = Producto.idProducto; ClassBD.AgregarCostosH(costo); ct.idProducto = Producto.idProducto; ClassBD.ActualizarCosto(ct); }
private List <CostoGridStruct> Paginar(out int totalRecords) { var estado = ddlEstados.Valor; var cajaActual = chxCajaActual.Checked; var palabras = txtBuscar.Text.ToLower(); var costos = Costos.Where(c => (string.IsNullOrEmpty(palabras) || palabras == "(nro comprobante)" || c.NroComprobante.ToLower().StartsWith(palabras)) && (estado == 0 || (estado == 1 && c.Aprobado) || (estado == -1 && !c.Aprobado)) && (!cajaActual || (cajaActual && c.CierreCajaId == UsuarioActual.CierreCajaIdActual))); totalRecords = costos.Count(); return(costos.Skip(ucPaginador.PageSize * (ucPaginador.CurrentPage - 1)).Take(ucPaginador.PageSize) .Select(c => new CostoGridStruct { Estado = c.Aprobado ? "Aprobado" : "No Aprobado", CajaCerrada = c.CierreCaja.FechaFin != null, CategoriaCosto = c.CategoriaCosto.Descripcion, CostoId = c.CostoId, Fecha = c.Fecha, Importe = c.Monto, NroComprobante = c.NroComprobante }).ToList()); }
public List <ID> PostAgregarProductoCostoRosedalProovedor(List <InventarioIngesta> Productos) { if (Productos == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } int ret = -1; List <ID> listaID = new List <ID>(); foreach (InventarioIngesta Producto in Productos) { ret = -1; if (Producto != null) { if (Producto.Descripcion == null) { Producto.Descripcion = ""; } Producto.CodigoBarras = Producto.CodigoBarras.Replace("'", "-"); if ((Producto.idProducto = ClassBD.ExisteProducto(Producto.Producto, Producto.Color, Producto.SKU, Producto.CodigoBarras, 3)) == 0) { if (Producto.Proveedor != null && Producto.Proveedor != "") { Proveedor prov = ClassBD.ObtenerProveedorByNombre(Producto.Proveedor); if (prov.idProveedor == 0) { ret = ClassBD.AgregarEmpresa(new Empresa(0, Producto.Proveedor, "", "", "", "", "", "", "", 1, "", "", "", "", "")); if (ret != -1) { Producto.idProveedor = ClassBD.AgregarProveedor(new Proveedor(0, ret, "", 0, 0, "", 1, "", 1, "", "", "", "")); ret = -1; } } else { Producto.idProveedor = prov.idProveedor; } if (Producto.idProveedor > 0) { Producto.PiezasTotales = Producto.Piezas; ProductosCosto prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 2, "", Producto.ImagenP, Producto.Piezas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); CostosHistoricos costo = new CostosHistoricos(); costo.idProducto = ret; costo.idProveedor = Producto.idProveedor; costo.Fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); costo.Costo = Producto.Costo; ClassBD.AgregarCostosH(costo); Costos ct = new Costos(0, ret, "", costo.idProveedor, "", costo.Costo); ClassBD.ActualizarCosto(ct); Producto.PiezasTotales = Producto.Piezas * Producto.CajasInternas; prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 3, "", Producto.ImagenP, Producto.CajasInternas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); costo.idProducto = ret; ClassBD.AgregarCostosH(costo); ct.idProducto = ret; ClassBD.ActualizarCosto(ct); if (ret != -1) { ret = 0; } //listaID.Add(new ID(Producto.idProveedor <= 0 ? -1 : ret)); } } } if (Producto.Almacen != null && Producto.Almacen != "") { Producto.Almacen = Producto.Almacen.Trim(); Sucursal almacen = ClassBD.ObtenerSucursalByName(Producto.Almacen); if (almacen.idSucursal == 0) { Producto.idAlmacen = ClassBD.AgregarSucursal(new Sucursal(0, Producto.Almacen, "", "", "", "", "", "", 1, "", false, "")); } else { Producto.idAlmacen = almacen.idSucursal; } ClassBD.IngestarInventario(Producto.idProducto, Producto.idAlmacen, Producto.ExistenciaMinima, Producto.Existencia, Producto.Nuevo == "Sí"); ret = 1; } listaID.Add(new ID(ret)); } } return(listaID); }
public ActionResult Costeo(CostosViewModel model) { int registrosAfectados = 0; string mensaje = ""; try { using (LithioBD) { Costos oCostos = new Costos(); //Se asigna a cada campo de la tabla los datos recolecados desde la vista oCostos.Numero_Costos = model.Numero_Costos; oCostos.DUA = model.DUA; oCostos.Tipo_De_Cambio = model.Tipo_De_Cambio; oCostos.Fecha_Creacion = DateTime.Now; //Agrega los datos en la base de datos LithioBD.Costos.Add(oCostos); //guarda el registro del maestro en la base de datos LithioBD.SaveChanges(); //Recorrer cada linea del maestro detalle para guardar los datos foreach (var OC in model.Conceptos) { registrosAfectados = this.LithioBD.pa_Costo_ConceptoAux(oCostos.Id_Costo, OC.Id_Articulo, OC.Codigo_Articulo, OC.Nombre_Articulo, OC.IdPresentacion, OC.NombrePresentacion, OC.Id_Proveedor, OC.NombreProveedor, OC.CantidadArticulos, OC.Costo_Por_Unidad_Dolares, OC.CantidadArticulos * OC.Costo_Por_Unidad_Dolares); } //guarda los registros en la base de datos LithioBD.SaveChanges(); //aca se va a realizar el orden de los articulos por proveedor List <pa_CostoAUX_OrdenarProveedor_Result> ordenarProveedor = this.LithioBD.pa_CostoAUX_OrdenarProveedor(oCostos.Id_Costo).ToList(); //contamos cuantos proveedores hay en ese costeo List <pa_CostoContarProveedor_Result> pa_CostoContarProveedor = new List <pa_CostoContarProveedor_Result>(); pa_CostoContarProveedor = this.LithioBD.pa_CostoContarProveedor(oCostos.Id_Costo).ToList(); ///se recorre todas las lineas del costeo dependioendo de la cantidad de proveedores ///para indicar el precio total de las lineas de cada proveedor foreach (var opa_CostoContarProveedor in pa_CostoContarProveedor) { foreach (var OordenarProveedor in ordenarProveedor) { if (opa_CostoContarProveedor.Nombre_Proveedor == OordenarProveedor.Nombre_Proveedor) { //actualiza el precio de cada articulo dependiendo de cada proveedor this.LithioBD.pa_updatePrecioFinalLineasCosteo(oCostos.Id_Costo, OordenarProveedor.Nombre_Proveedor, opa_CostoContarProveedor.CostoTotalporProveedor); //+Actualiza el "procentaje de cada articulo en el costeo" this.LithioBD.pa_CostoProbUpdate(oCostos.Id_Costo, OordenarProveedor.Id_Costo_Concepto_AUX, OordenarProveedor.Nombre_Proveedor, OordenarProveedor.Costo_Total_Dolares / opa_CostoContarProveedor.CostoTotalporProveedor); //obtener los impuestos de los proveedores List <pa_CostoObtenerImpuestos_Result> obtenerImpuestos = new List <pa_CostoObtenerImpuestos_Result>(); obtenerImpuestos = this.LithioBD.pa_CostoObtenerImpuestos().ToList(); //HACER UN RETURN DEL ARTICULO pa_CosteoRetornaID_Result pa_CosteoRetornaID = new pa_CosteoRetornaID_Result(); pa_CosteoRetornaID = this.LithioBD.pa_CosteoRetornaID(OordenarProveedor.Id_Costo_Concepto_AUX).FirstOrDefault(); //utilizar el registro encontrado para double ProbCostoTotalCompra = Convert.ToDouble(pa_CosteoRetornaID.ProbCostoTotalCompra); double Costo_Maritimo = Convert.ToDouble(pa_CosteoRetornaID.Costo_Maritimo); //GUARDAR EL FLETE MARITIMO this.LithioBD.pa_CostoDistCostoMaritimoUpdate(ProbCostoTotalCompra * Costo_Maritimo, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); double Costo_Terrestre = Convert.ToDouble(pa_CosteoRetornaID.Costo_Terrestre); //Guardar EL FLETE TERRESTRE this.LithioBD.pa_CostoDistCostoTerrestreUpdate(ProbCostoTotalCompra * Costo_Terrestre, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); ///se utiliza nuevamente la variable para obtener los nuevos datos de la distribucion ///del costeo maritimo y terrestre pa_CosteoRetornaID = this.LithioBD.pa_CosteoRetornaID(OordenarProveedor.Id_Costo_Concepto_AUX).FirstOrDefault(); //guardar el costeo real a sumar a cada articulo MARITIMO this.LithioBD.pa_CosteoMontoMaritimo(pa_CosteoRetornaID.DistCostoMaritimo / pa_CosteoRetornaID.Unidades_Articulos, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); //guardar el costeo real a sumar a cada articulo TERRESTRE this.LithioBD.pa_CosteoMontoTerrestre(pa_CosteoRetornaID.DistCostoTerrestre / pa_CosteoRetornaID.Unidades_Articulos, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); ///se utiliza nuevamente la variable para obtener los nuevos datos de la distribucion ///del costeo maritimo y terrestre pa_CosteoRetornaID = this.LithioBD.pa_CosteoRetornaID(OordenarProveedor.Id_Costo_Concepto_AUX).FirstOrDefault(); double MontoCostoPorArticuloMar = Convert.ToDouble(pa_CosteoRetornaID.MontoCostoPorArticuloMar); double MontoCostoPorArticuloTer = Convert.ToDouble(pa_CosteoRetornaID.MontoCostoPorArticuloTer); double resultadoMontoTotalCosteoMar = MontoCostoPorArticuloMar + pa_CosteoRetornaID.Costo_Total_Dolares; double resultadoMontoTotalCosteoTer = MontoCostoPorArticuloTer + pa_CosteoRetornaID.Costo_Total_Dolares; //se guarda el costeo total del articulo MARITIMO this.LithioBD.pa_CosteoMontoTotal_CosteoPorArticuloMar(resultadoMontoTotalCosteoMar, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); //se guarda el costeo total del articulo MARITIMO this.LithioBD.pa_CosteoMontoTotal_CosteoPorArticuloTer(resultadoMontoTotalCosteoTer, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); //Se agrega el costo total del costeo a cada articulo con los 2 fletes this.LithioBD.pa_CosteoMontoTotal((MontoCostoPorArticuloTer + MontoCostoPorArticuloMar) + pa_CosteoRetornaID.Costo_Total_Dolares, pa_CosteoRetornaID.Id_Costo_Concepto_AUX); } } } } Response.Write("<script src='https://cdn.jsdelivr.net/npm/sweetalert2@10'></script> <br>"); } catch (Exception ex) { mensaje = "Hubo un error " + ex.Message; mensaje += "No se pudo ingresar"; Response.Write("<script language = javascript > Swal.fire({title: 'Falló!',text:'" + mensaje + "',icon: 'error',showConfirmButton: true})</script>"); } mensaje = "Costeo Exitoso"; Response.Write("<script language = javascript > Swal.fire({title: 'Éxito!',text:'" + mensaje + "',icon: 'success',showConfirmButton: true})</script>"); return(View()); }
private void btnAgregar_Click(object sender, EventArgs e) { if (ValidarCampos()) { List <Costos> lcosto = new List <Costos>(); Costos Cost = new Costos(); string Categ = ""; switch (cmbTipo.Text.Trim()) { case "RR.HH.": Categ = "HH"; break; case "Procesos": Categ = "PR"; break; case "Aceros": Categ = "AC"; break; case "Tasa": Categ = "TM"; break; case "Factor Industrial Interno": Categ = "FII"; break; case "Factor Industrial Externo": Categ = "FIE"; break; case "Factor Comercial": Categ = "FRC"; break; } Cost.Categoria = Categ; Cost.Tipo = txtDescripcion.Text.Trim(); Cost.Unidad = cmbUnidad.Text.Trim(); Cost.Estado = materialCheckBox1.Checked ? 1 : 0; Cost.Valor = Convert.ToDecimal(txtValor.Text); Cost.Valor2 = Convert.ToDecimal(txtValor2.Text); switch (labelNoMouse1.Text.Trim()) { case "Agregar": lcosto.Add(Cost); CostosBL.InserCostos(lcosto); CargarGridCostos(); // LimpiarCampos(); dataGridView1.Rows[(dataGridView1.RowCount - 1)].Selected = true; dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1; dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.SelectedRows[0].Index].Cells[3]; CargarCampos(dataGridView1.RowCount - 1); FormatearCategoria(); break; case "Actualizar": Cost.Id = Convert.ToInt32(dataGridView1[1, dataGridView1.CurrentRow.Index].Value); lcosto.Add(Cost); CostosBL.UpdateCostos(lcosto); ItemCostoBL.UpdateItemCostosID(Cost.Id); int nRow = dataGridView1.CurrentRow.Index; CargarGridCostos(); FormatearCategoria(); dataGridView1.Rows[nRow].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.SelectedRows[0].Index].Cells[3]; break; } } }
public ID PostAgregarProductoCostoRosedalProovedor(ProductosCostoRosedal Producto) { if (Producto == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } int ret = -1; if (Producto.Descripcion == null) { Producto.Descripcion = ""; } Producto.CodigoBarras = Producto.CodigoBarras.Replace("'", "-"); if (ClassBD.ExisteProducto(Producto.Producto, Producto.Color, Producto.SKU, Producto.CodigoBarras, 3) == 0) { if (Producto.Proveedor != null && Producto.Proveedor != "") { Proveedor prov = ClassBD.ObtenerProveedorByNombre(Producto.Proveedor); if (prov.idProveedor == 0) { ret = ClassBD.AgregarEmpresa(new Empresa(0, Producto.Proveedor, "", "", "", "", "", "", "", 1, "", "", "", "", "")); if (ret != -1) { Producto.idProveedor = ClassBD.AgregarProveedor(new Proveedor(0, ret, "", 0, 0, "", 1, "", 1, "", "", "", "")); ret = -1; } } else { Producto.idProveedor = prov.idProveedor; } if (Producto.idProveedor > 0) { Producto.PiezasTotales = Producto.Piezas; ProductosCosto prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 2, "", Producto.ImagenP, Producto.Piezas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); CostosHistoricos costo = new CostosHistoricos(); costo.idProducto = ret; costo.idProveedor = Producto.idProveedor; costo.Fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); costo.Costo = Producto.Costo; ClassBD.AgregarCostosH(costo); Costos ct = new Costos(0, ret, "", costo.idProveedor, "", costo.Costo); ClassBD.ActualizarCosto(ct); Producto.PiezasTotales = Producto.Piezas * Producto.CajasInternas; prod = new ProductosCosto(0, Producto.Producto, Producto.Descripcion, Producto.Codigo, Producto.CodigoBarras, Producto.SKU, 3, "", Producto.ImagenP, Producto.CajasInternas, Producto.PiezasTotales, Producto.Color); ret = ClassBD.AgregarProducto(prod); costo.idProducto = ret; ClassBD.AgregarCostosH(costo); ct.idProducto = ret; ClassBD.ActualizarCosto(ct); } } } return(new ID(ret)); }
public JsonResult Editar(int idProducto, string nombre, string marca, string descripcion, string proveedor, string variedad, HttpPostedFileBase imagen, string cantidad, int idCategoria, decimal precio, decimal costo, int stock) { TanoNEEntities ctx = new TanoNEEntities(); Productos item = ctx.Productos.FirstOrDefault(a => a.idProducto == idProducto); if (item != null) { if (ctx.Productos.FirstOrDefault(a => a.producto == nombre && a.marca == marca && a.presentacion == cantidad && a.idProducto != idProducto) != null) { return(Json(new { error = true, mensaje = "Ya existe otro producto de esas caracteristicas" }, JsonRequestBehavior.DenyGet)); } Categorias categoria = ctx.Categorias.FirstOrDefault(a => a.idCategoria == idCategoria); item.marca = marca; item.descripcion = descripcion; item.presentacion = cantidad; item.stock = stock; item.proveedor = proveedor; item.variedad = variedad; item.Categorias = categoria; Precios pre = new Precios(); pre.precio = precio; pre.fecha = DateTime.Now; item.Precios.Add(pre); Costos cos = new Costos(); cos.costo = costo; cos.fecha = DateTime.Now; item.Costos.Add(cos); ctx.SaveChanges(); if (imagen != null) { string savedFileName = rutaImagen + "Producto-" + item.idProducto + imagen.FileName.Substring(imagen.FileName.LastIndexOf(".")); imagen.SaveAs(savedFileName); } } else { return(Json(new { error = true, mensaje = "No existe el producto" }, JsonRequestBehavior.DenyGet)); } var devuelta = new { idProducto = item.idProducto, nombre = item.producto, stock = item.stock, marca = item.marca, descripcion = item.descripcion != null?item.descripcion.Replace("\n", "<br/>") : "", cantidad = item.presentacion, imagen = System.IO.File.Exists(HttpContext.Server.MapPath("/Imagenes/Producto-" + item.idProducto + ".jpg")) ? "/Imagenes/Producto-" + item.idProducto + ".jpg" : "/Imagenes/Fijas/pp.jpeg", idCategoria = item.categoriaId, categoria = item.Categorias.nombre, precio = item.Precios.LastOrDefault().precio, costo = item.Costos.LastOrDefault().costo, borrar = item.activo }; return(Json(new { Result = "OK", Record = devuelta }, JsonRequestBehavior.DenyGet)); //return Json(new { error = false, mensaje = "Producto editado satisfactoriamente" }, JsonRequestBehavior.DenyGet); }
public ActionResult CrearExcelFinanzas(int idTanda) { /*string handle = Guid.NewGuid().ToString(); * * StringBuilder csv = new StringBuilder(); * string Columnas = string.Format(";{0};{1};{2};{3};{4}", "Cantidad", "Producto", "Costo", "Precio", "Diferencia"); * csv.AppendLine(Columnas); * * * TanoNEEntities ctx = new TanoNEEntities(); * Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda); * * * var locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().ToList(); * foreach (var local in locales) * { * csv.AppendLine(local.direccion); * decimal costoLocal = 0; * decimal precioLocal = 0; * var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray(); * for (int x = 0; x < listado.Count(); x++) * { * var compra = listado[x]; * Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto); * * Costos ultimoc = prod.Costos.Count > 1 ? prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Costos.FirstOrDefault(); * decimal costo = ultimoc.costo * compra.Cantidad; * //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad; * * Precios ultimop = prod.Precios.Count > 1 ? prod.Precios.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Precios.FirstOrDefault(); * decimal precio = ultimop.precio * compra.Cantidad; * //decimal precio = prod.Precios.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).precio * compra.Cantidad; * costoLocal += costo; * precioLocal += precio; * string filas = string.Format(";{0};{1};${2};${3};${4}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precio.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precio - costo).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * csv.AppendLine(filas); * } * csv.AppendLine(string.Format(";;;${0};${1};${2}", costoLocal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precioLocal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precioLocal - costoLocal).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture))); * } * //string cierre = string.Format("Total;;;${0}", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * //csv.AppendLine(cierre); * * using (MemoryStream memoryStream = new MemoryStream(Encoding.Default.GetBytes(csv.ToString()))) * { * memoryStream.Position = 0; * TempData[handle] = memoryStream.ToArray(); * } * * return Json(new { FileGuid = handle, FileName = "Reporte.csv" });*/ string handle = Guid.NewGuid().ToString(); TanoNEEntities ctx = new TanoNEEntities(); Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda); EstadosCompra entre = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 3); using (MemoryStream mem = new MemoryStream()) using (SLDocument sl = new SLDocument()) { sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, "Finanzas"); SLStyle bordeNegrita = sl.CreateStyle(); bordeNegrita.Border.LeftBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.TopBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.RightBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.BottomBorder.Color = System.Drawing.Color.Black; bordeNegrita.Font.Bold = true; bordeNegrita.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.TopBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.RightBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeIz = sl.CreateStyle(); bordeIz.Border.LeftBorder.Color = System.Drawing.Color.Black; bordeIz.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeDe = sl.CreateStyle(); bordeDe.Border.RightBorder.Color = System.Drawing.Color.Black; bordeDe.Border.RightBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeAr = sl.CreateStyle(); bordeAr.Border.TopBorder.Color = System.Drawing.Color.Black; bordeAr.Border.TopBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeAb = sl.CreateStyle(); bordeAb.Border.BottomBorder.Color = System.Drawing.Color.Black; bordeAb.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin; SLStyle saltoLinea = sl.CreateStyle(); saltoLinea.SetVerticalAlignment(VerticalAlignmentValues.Center); saltoLinea.SetWrapText(true); SLStyle rojo = sl.CreateStyle(); rojo.Fill.SetPatternType(PatternValues.Solid);//.BottomBorder.Color = System.Drawing.Color.Red; rojo.Font.FontColor = System.Drawing.Color.White; rojo.Fill.SetPatternForegroundColor(System.Drawing.Color.Red); SLStyle centrado = sl.CreateStyle(); centrado.FormatCode = "$ * #,##0.00"; centrado.Font.FontSize = 10; centrado.SetHorizontalAlignment(HorizontalAlignmentValues.Right); SLStyle negrita = sl.CreateStyle(); negrita.Font.Bold = true; int row = 3; sl.SetColumnWidth(1, 16); sl.SetColumnWidth(2, 10); sl.SetColumnWidth(3, 65); sl.SetColumnWidth(4, 15); sl.SetColumnWidth(5, 15); sl.SetColumnWidth(6, 15); sl.SetCellValue(1, 1, "Local"); sl.SetCellValue(1, 2, "Cantidad"); sl.SetCellValue(1, 3, "Producto"); sl.SetCellValue(1, 4, "Costo"); sl.SetCellValue(1, 5, "Precio"); sl.SetCellValue(1, 6, "Diferencia"); sl.SetCellStyle(1, 1, 1, 5, bordeNegrita); var locales = ctx.Compras.Where(a => a.tandaId == idTanda && a.estadoId != entre.idEstadoCompra).Select(a => a.Locales).Distinct().OrderBy(a => new { a.comuna, a.nombre }).ToList(); foreach (var local in locales) { var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad), CompraProducto = a.FirstOrDefault() }).ToArray(); int totalVecinx = (row + listado.Count() - 1); sl.SetCellStyle(row, 1, totalVecinx, 1, bordeIz); sl.SetCellStyle(row, 1, row, 6, bordeAr); sl.SetCellStyle(totalVecinx, 1, totalVecinx, 6, bordeAb); for (int x = 1; x < 7; x++) { sl.SetCellStyle(row, x, totalVecinx, x, bordeDe); } sl.SetCellValue(row, 1, local.direccion + (local.nombre != null ? "\n" + local.nombre : "")); sl.SetCellStyle(row, 1, saltoLinea); sl.MergeWorksheetCells(row, 1, totalVecinx, 1); decimal costoLocal = 0; decimal precioLocal = 0; for (int x = 0; x < listado.Count(); x++) { var compra = listado[x]; Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto); Costos ultimoc = compra.CompraProducto.Costos; decimal costo = ultimoc.costo * compra.Cantidad; //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad; //Precios ultimop = prod.Precios.Count > 1 ? prod.Precios.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Precios.FirstOrDefault(); decimal precio = compra.CompraProducto.Precios.precio * compra.Cantidad; //decimal precio = prod.Precios.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).precio * compra.Cantidad; costoLocal += costo; precioLocal += precio; //string filas = string.Format(";{0};{1};${2};${3};${4}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), precio.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture), (precio - costo).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); sl.SetCellValue(row, 2, compra.Cantidad); sl.SetCellValue(row, 3, prod.producto + " - " + prod.marca + " - " + prod.presentacion); sl.SetCellValue(row, 4, costo); sl.SetCellValue(row, 5, precio); sl.SetCellValue(row, 6, precio - costo); sl.SetCellStyle(row, 4, centrado); sl.SetCellStyle(row, 5, centrado); sl.SetCellStyle(row, 6, centrado); row++; } sl.SetCellValue(row, 3, "Totales por local: "); sl.SetCellValue(row, 4, costoLocal); sl.SetCellValue(row, 5, precioLocal); sl.SetCellValue(row, 6, precioLocal - costoLocal); sl.SetCellStyle(row, 3, negrita); sl.SetCellStyle(row, 4, negrita); sl.SetCellStyle(row, 5, negrita); sl.SetCellStyle(row, 6, negrita); sl.SetCellStyle(row, 4, centrado); sl.SetCellStyle(row, 5, centrado); sl.SetCellStyle(row, 6, centrado); row++; row++; } sl.SaveAs(mem); mem.Position = 0; TempData[handle] = mem.ToArray(); return(Json(new { FileGuid = handle, FileName = "Finanzas.xlsx" })); } }
public ActionResult CrearExcel(int idTanda, bool porLocal = false) { /*string handle = Guid.NewGuid().ToString(); * * StringBuilder csv = new StringBuilder(); * string Columnas = null; * if (porLocal) * Columnas = ""; // string.Format("{0};{1};{2};{3}", "N", "Local", "Productos"); * else * Columnas = string.Format("{0};{1};{2};{3}", "N", "Producto", "Presentacion", "Cantidad", "Costo(Aprox)"); * csv.AppendLine(Columnas); * * * TanoNEEntities ctx = new TanoNEEntities(); * Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda); * * if (porLocal) * { * decimal costoTotal = 0; * var locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().ToList(); * foreach (var local in locales) * { * csv.AppendLine(local.direccion); * var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray(); * for (int x = 0; x < listado.Count(); x++) * { * var compra = listado[x]; * Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto); * Costos ultimo = prod.Costos.Count > 1 ? prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) : prod.Costos.FirstOrDefault(); * decimal costo = ultimo.costo * compra.Cantidad; * costoTotal += costo; * string filas = string.Format(";{0};{1};${2}", compra.Cantidad, string.Format("{0} - {1} - {2}", prod.producto, prod.marca, prod.presentacion), costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * csv.AppendLine(filas); * } * } * string cierre = string.Format("Total;;;${0}", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * csv.AppendLine(cierre); * } * else * { * var listado = ctx.CompraProducto.Where(a => a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad) }).ToArray(); * decimal costoTotal = 0; * for (int x = 0; x < listado.Count(); x++) * { * var compra = listado[x]; * Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == compra.idProducto); * Costos ultimo = prod.Costos.Count > 1 ? (prod.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) == null ? prod.Costos.LastOrDefault() : prod.Costos.FirstOrDefault()) : prod.Costos.FirstOrDefault(); * decimal costo = ultimo.costo * compra.Cantidad; * //decimal costo = prod.Costos.FirstOrDefault(a => a.fecha <= actual.fechaAbierto).costo * compra.Cantidad; * costoTotal += costo; * string filas = string.Format("{0};{1};{2};{3};${4}", x + 1, prod.producto, prod.presentacion, compra.Cantidad, costo.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * csv.AppendLine(filas); * } * * string cierre = string.Format("{0};{1};{2};{3};${4}", "", "", "", "", costoTotal.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)); * csv.AppendLine(cierre); * } * * * * using (MemoryStream memoryStream = new MemoryStream(Encoding.Default.GetBytes(csv.ToString()))) * { * memoryStream.Position = 0; * TempData[handle] = memoryStream.ToArray(); * } * * return Json(new { FileGuid = handle, FileName = "Reporte.csv" });*/ string handle = Guid.NewGuid().ToString(); TanoNEEntities ctx = new TanoNEEntities(); Tandas actual = ctx.Tandas.FirstOrDefault(a => a.idTanda == idTanda); using (MemoryStream mem = new MemoryStream()) using (SLDocument sl = new SLDocument()) { sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, porLocal ? "Local" : "Total"); SLStyle bordeNegrita = sl.CreateStyle(); bordeNegrita.Border.LeftBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.TopBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.RightBorder.Color = System.Drawing.Color.Black; bordeNegrita.Border.BottomBorder.Color = System.Drawing.Color.Black; bordeNegrita.Font.Bold = true; bordeNegrita.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.TopBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.RightBorder.BorderStyle = BorderStyleValues.Thin; bordeNegrita.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeIz = sl.CreateStyle(); bordeIz.Border.LeftBorder.Color = System.Drawing.Color.Black; bordeIz.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeDe = sl.CreateStyle(); bordeDe.Border.RightBorder.Color = System.Drawing.Color.Black; bordeDe.Border.RightBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeAr = sl.CreateStyle(); bordeAr.Border.TopBorder.Color = System.Drawing.Color.Black; bordeAr.Border.TopBorder.BorderStyle = BorderStyleValues.Thin; SLStyle bordeAb = sl.CreateStyle(); bordeAb.Border.BottomBorder.Color = System.Drawing.Color.Black; bordeAb.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin; SLStyle saltoLinea = sl.CreateStyle(); saltoLinea.SetVerticalAlignment(VerticalAlignmentValues.Center); saltoLinea.SetWrapText(true); SLStyle rojo = sl.CreateStyle(); rojo.Fill.SetPatternType(PatternValues.Solid);//.BottomBorder.Color = System.Drawing.Color.Red; rojo.Font.FontColor = System.Drawing.Color.White; rojo.Fill.SetPatternForegroundColor(System.Drawing.Color.Red); SLStyle centrado = sl.CreateStyle(); centrado.FormatCode = "$ * #,##0.00"; centrado.Font.FontSize = 10; centrado.SetHorizontalAlignment(HorizontalAlignmentValues.Right); SLStyle negrita = sl.CreateStyle(); negrita.Font.Bold = true; int row = 3; if (porLocal) { sl.SetColumnWidth(1, 16); sl.SetColumnWidth(2, 10); sl.SetColumnWidth(3, 65); sl.SetColumnWidth(4, 15); sl.SetColumnWidth(5, 15); sl.SetCellValue(1, 1, "Local"); sl.SetCellValue(1, 2, "Cantidad"); sl.SetCellValue(1, 3, "Producto"); sl.SetCellValue(1, 4, "Costo"); sl.SetCellValue(1, 5, "Costo Total"); sl.SetCellStyle(1, 1, 1, 5, bordeNegrita); decimal total = 0; var locales = ctx.Compras.Where(a => a.tandaId == idTanda).Select(a => a.Locales).Distinct().OrderBy(a => new { a.comuna, a.nombre }).ToList(); foreach (var local in locales) { var listado = ctx.CompraProducto.Where(a => a.Compras.localId == local.idLocal && a.Compras.tandaId == idTanda).OrderBy(a => a.Productos.producto).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, cp = a.FirstOrDefault(), Cantidad = a.Sum(b => b.cantidad) }); int totalVecinx = (row + listado.Count() - 1); sl.SetCellStyle(row, 1, totalVecinx, 1, bordeIz); sl.SetCellStyle(row, 1, row, 5, bordeAr); sl.SetCellStyle(totalVecinx, 1, totalVecinx, 5, bordeAb); for (int x = 1; x < 6; x++) { sl.SetCellStyle(row, x, totalVecinx, x, bordeDe); } sl.SetCellValue(row, 1, local.direccion + (local.nombre != null ? "\n" + local.nombre : "")); sl.SetCellStyle(row, 1, saltoLinea); sl.MergeWorksheetCells(row, 1, totalVecinx, 1); decimal subTotalLocal = 0; foreach (var productos in listado) { Productos prod = ctx.Productos.FirstOrDefault(a => a.idProducto == productos.idProducto); Costos ultimo = productos.cp.Costos; decimal costoTotal = ultimo.costo * productos.Cantidad; subTotalLocal += costoTotal; sl.SetCellValue(row, 2, productos.Cantidad); sl.SetCellValue(row, 3, prod.producto + " - " + prod.marca + " - " + prod.presentacion); sl.SetCellValue(row, 4, ultimo.costo); sl.SetCellValue(row, 5, costoTotal); sl.SetCellStyle(row, 4, centrado); sl.SetCellStyle(row, 5, centrado); row++; } total += subTotalLocal; sl.SetCellValue(row, 4, "Subtotal local: "); sl.SetCellStyle(row, 4, negrita); sl.SetCellValue(row, 5, subTotalLocal); sl.SetCellStyle(row, 5, centrado); sl.SetCellStyle(row, 5, negrita); row++; row++; } row++; sl.SetCellValue(row, 4, "Total: "); sl.SetCellStyle(row, 4, negrita); sl.SetCellValue(row, 5, total); sl.SetCellStyle(row, 5, centrado); sl.SetCellStyle(row, 5, negrita); } else { sl.SetColumnWidth(1, 5); sl.SetColumnWidth(2, 10); sl.SetColumnWidth(3, 65); sl.SetColumnWidth(4, 20); sl.SetColumnWidth(5, 20); sl.SetColumnWidth(6, 15); sl.SetColumnWidth(7, 15); sl.SetCellValue(1, 1, "N°"); sl.SetCellValue(1, 2, "Cantidad"); sl.SetCellValue(1, 3, "Producto"); sl.SetCellValue(1, 4, "Marca"); sl.SetCellValue(1, 5, "Presentacion"); sl.SetCellValue(1, 6, "Costo"); sl.SetCellValue(1, 7, "Costo Total"); sl.SetCellStyle(1, 1, 1, 7, bordeNegrita); var listado = ctx.CompraProducto.Where(a => a.Compras.tandaId == idTanda).GroupBy(a => a.productoId).Select(a => new { idProducto = a.Key, Cantidad = a.Sum(b => b.cantidad), Compra = a.FirstOrDefault() }).OrderBy(a => new { a.Compra.Productos.Categorias.nombre, a.Compra.Productos.producto }).ToList(); decimal subTotal = 0; for (int x = 0; x < listado.Count(); x++) { var compra = listado.ElementAt(x); Costos ultimo = compra.Compra.Costos; //.Costos.Count > 1 ? (compra.Compra.Productos.Costos.LastOrDefault(a => a.fecha.Date <= actual.fechaAbierto.Date) == null ? compra.Compra.Productos.Costos.LastOrDefault() : compra.Compra.Productos.Costos.FirstOrDefault()) : compra.Compra.Productos.Costos.FirstOrDefault(); decimal costoTotal = ultimo.costo * compra.Cantidad; subTotal += costoTotal; sl.SetCellValue(row, 1, x + 1); sl.SetCellValue(row, 2, compra.Cantidad); sl.SetCellValue(row, 3, compra.Compra.Productos.producto + " - " + compra.Compra.Productos.marca + " - " + compra.Compra.Productos.presentacion); sl.SetCellValue(row, 4, compra.Compra.Productos.marca); sl.SetCellValue(row, 5, compra.Compra.Productos.presentacion); sl.SetCellValue(row, 6, ultimo.costo); sl.SetCellValue(row, 7, costoTotal); sl.SetCellStyle(row, 6, centrado); sl.SetCellStyle(row, 7, centrado); row++; } centrado.Font.Bold = true; sl.SetCellValue(row, 5, "Total: "); sl.SetCellValue(row, 7, subTotal); sl.SetCellStyle(row, 7, centrado); } sl.SaveAs(mem); mem.Position = 0; TempData[handle] = mem.ToArray(); return(Json(new { FileGuid = handle, FileName = porLocal ? "Local.xlsx" : "Total.xlsx" })); } }