Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            Costos costos = db.Costos.Find(id);

            db.Costos.Remove(costos);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Example #4
0
        // PUT: api/Costos
        public void Put([FromBody] Costos Datos)
        {
            if (Datos == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            ClassBD.ActualizarCosto(Datos);
        }
Example #5
0
        // POST: api/Costos
        public ID Post([FromBody] Costos Datos)
        {
            if (Datos == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            return(new ID(ClassBD.AgregarCosto(Datos)));
        }
Example #6
0
 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));
 }
Example #7
0
        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));
        }
Example #8
0
        // 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));
        }
Example #9
0
        // 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);
                }
            }
        }
Example #12
0
        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);
        }
Example #13
0
        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());
        }
Example #14
0
        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);
        }
Example #15
0
        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());
        }
Example #16
0
        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;
                }
            }
        }
Example #17
0
        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));
        }
Example #18
0
        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);
        }
Example #19
0
        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" }));
                }
        }
Example #20
0
        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" }));
                }
        }