public ActionResult ListaKpis()
        {
            var Draw          = Request.Form.GetValues("draw").FirstOrDefault();
            var Start         = Request.Form.GetValues("start").FirstOrDefault();
            var Length        = Request.Form.GetValues("length").FirstOrDefault();
            var SortColumn    = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][data]").FirstOrDefault();
            var SortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();

            var Mes = Request.Form.GetValues("columns[1][search][value]").FirstOrDefault();

            int PageSize = Length != null?Convert.ToInt32(Length) : 0;

            int Skip = Start != null?Convert.ToInt32(Start) : 0;

            int TotalRecords = 0;

            try
            {
                List <kpisdespacho> listaKPIS = new List <kpisdespacho>();

                using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
                {
                    con.Open();

                    string sql = "exec [dbo].[SP_KPISDESPACHO_PARAMETROSOPCIONALES] @mes";

                    var query = new SqlCommand(sql, con);

                    if (Mes != "")
                    {
                        query.Parameters.AddWithValue("@mes", Mes);
                    }
                    else
                    {
                        query.Parameters.AddWithValue("@mes", DBNull.Value);
                    }

                    using (var dr = query.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            // facturas
                            var kpis = new kpisdespacho();

                            kpis.id            = Convert.ToInt32(dr["id"]);
                            kpis.mes           = dr["mes"].ToString();
                            kpis.wk            = Convert.ToInt32(dr["wk"]);
                            kpis.diasemana     = Convert.ToInt32(dr["diasemana"]);
                            kpis.cv            = dr["cv"].ToString();
                            kpis.mo            = dr["mo"].ToString();
                            kpis.tipoembarque  = dr["tipoembarque"].ToString();
                            kpis.fechaembarque = Convert.ToDateTime(dr["fechaembarque"]);
                            kpis.qtypiezas     = Convert.ToInt32(dr["qtypiezas"]);
                            kpis.qtycajas      = Convert.ToInt32(dr["qtycajas"]);
                            kpis.qtypallets    = Convert.ToDecimal(dr["qtypallets"]);

                            listaKPIS.Add(kpis);
                        }
                    }
                }

                if (!(string.IsNullOrEmpty(SortColumn) && string.IsNullOrEmpty(SortColumnDir)))
                {
                    listaKPIS = listaKPIS.OrderBy(SortColumn + " " + SortColumnDir).ToList();
                }

                TotalRecords = listaKPIS.ToList().Count();
                var NewItems = listaKPIS.Skip(Skip).Take(PageSize == -1 ? TotalRecords : PageSize).ToList();

                return(Json(new { draw = Draw, recordsFiltered = TotalRecords, recordsTotal = TotalRecords, data = NewItems }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception _ex)
            {
                Console.WriteLine(_ex.Message.ToString());
                ViewBag.Error = "Ha ocurrido un error. Contacte al administrador del sistema";
                return(RedirectToAction("Error500", "Errores"));
            }
        }