Beispiel #1
0
        public ActionResult Create(string id, [Bind(Include = "VARClave,VAVClave,Descripcion,Estatus,MFechaHora,MUsuarioId")] VARValor valor)
        {
            ValorReferencia valorReferencia = db.ValorReferencia.Find(id);

            valor.MFechaHora = DateTime.Now;
            valor.MUsuarioId = System.Web.HttpContext.Current.User.Identity.Name;
            if (ModelState.IsValid)
            {
                db.VARValor.Add(valor);
                db.SaveChanges();
                Metodos.RegistrarLog(new Log
                {
                    Modulo  = "ValorReferencia",
                    Accion  = "Insertar",
                    Detalle = "ValorCreado: " + valor.VARClave + " " + valor.Descripcion
                });
                TempData["MensajeClase"] = "alert-success";
                TempData["Mensaje"]      = "Cambios guardados correctamente.";
            }
            else
            {
                TempData["MensajeClase"] = "alert-danger";
                TempData["Mensaje"]      = "Hubo un error al intentar guardar los cambios, porfavor intente nuevamente.";
            }

            return(PartialView("_Valores", valorReferencia));
        }
        public ActionResult ProgramarAuditor(DateTime fecha, int zona, string auditor, int PROId)
        {
            var evaluaciones = db.Evaluacion.Where(e => e.PROId == PROId && e.Zona == zona.ToString() && e.Estatus == "NA").ToList();

            if (evaluaciones.Count > 0)
            {
                ValorReferencia valorReferencia = db.ValorReferencia.Find("PARAMETROS");
                var             tiendasPorDia   = int.Parse(valorReferencia.VARValor.Where(v => v.VAVClave == "TIENDAXDIA").FirstOrDefault().Descripcion);

                for (int i = 0; i < tiendasPorDia; i++)
                {
                    if (evaluaciones.Count > 0)
                    {
                        var evaluacion = GetEvaluacionRandom(ref evaluaciones);
                        evaluacion.Auditor         = auditor;
                        evaluacion.Estatus         = "P";
                        evaluacion.FechaEvaluacion = fecha;
                        db.Entry(evaluacion).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                        Metodos.RegistrarLog(new Log
                        {
                            Modulo  = "Evaluación",
                            Accion  = "Actualizar",
                            Detalle = "Tienda: " + evaluacion.NombreTienda + " auditor:" + evaluacion.Auditor + " programación:" + evaluacion.PROId
                        });
                    }
                    else
                    {
                        return(Json(true));
                    }
                }
                return(Json(true));
            }
            return(Json(false));
        }
Beispiel #3
0
        public static List <VARValor> IndicadoresValores(string id)
        {
            ICAEntities     db = new ICAEntities();
            ValorReferencia valorReferencia = db.ValorReferencia.Find(id);

            return(valorReferencia.VARValor.Where(v => v.Estatus == "A").ToList());
        }
Beispiel #4
0
        public ActionResult Create(string id)
        {
            ViewBag.EstatusList = Helpers.ComboLista("ESTATUS");

            ValorReferencia valorReferencia = db.ValorReferencia.Find(id);

            return(PartialView("_CrearValor", valorReferencia));
        }
Beispiel #5
0
        public ActionResult Edit(Criterio criterio)
        {
            if (ModelState.IsValid)
            {
                if ((criterio.Condicionante == true && criterio.CRTId_Cond != null) || criterio.Condicionante == false)
                {
                    if (criterio.Condicionante == false)
                    {
                        criterio.CRTId_Cond = null;
                    }
                    criterio.MFechaHora      = DateTime.Now;
                    criterio.MUsuarioId      = System.Web.HttpContext.Current.User.Identity.Name;
                    db.Entry(criterio).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                    Metodos.RegistrarLog(new Log
                    {
                        Modulo  = "Criterios",
                        Accion  = "Actualizar",
                        Detalle = "Criterio modificado: " + criterio.Nombre + " " + criterio.Estatus
                    });
                    if (!string.IsNullOrEmpty(criterio.ValorReferencia))
                    {
                        var existe = db.ValorReferencia.Where(va => va.VARClave.Equals(criterio.ValorReferencia)).Count();
                        if (existe == 0)
                        {
                            ValorReferencia valor = new ValorReferencia
                            {
                                VARClave    = criterio.ValorReferencia,
                                Modificable = 1,
                                MFechaHora  = DateTime.Now,
                                MUsuarioId  = System.Web.HttpContext.Current.User.Identity.Name
                            };

                            db.ValorReferencia.Add(valor);
                            db.SaveChanges();
                            Metodos.RegistrarLog(new Log
                            {
                                Modulo  = "ValorReferencia",
                                Accion  = "Insertar",
                                Detalle = "ValorCreado: " + valor.VARClave + " " + valor.Descripcion
                            });
                        }
                    }
                    TempData["MensajeClase"] = "alert-success";
                    TempData["Mensaje"]      = "Cambios guardados correctamente.";
                    return(Json(true));
                }
                else
                {
                    TempData["MensajeClase"] = "alert-danger";
                    TempData["Mensaje"]      = "Seleccione el criterio condicionante";
                    return(Json(false));
                }
            }
            TempData["MensajeClase"] = "alert-danger";
            TempData["Mensaje"]      = "Hubo un error al intentar guardar los cambios, porfavor intente nuevamente.";
            return(Json(false));
        }
Beispiel #6
0
        public ActionResult Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ValorReferencia valorReferencia = db.ValorReferencia.Find(id);

            if (valorReferencia == null)
            {
                return(HttpNotFound());
            }
            return(PartialView("_Valores", valorReferencia));
        }
        public ActionResult Crear(int anio, int mes)
        {
            //Verificar que no exista esa programacion
            var existe = db.Programacion.Where(p => p.Mes == mes && p.Anio == anio).ToList();

            if (existe.Count == 0)
            {
                ValorReferencia valorReferencia = db.ValorReferencia.Find("PARAMETROS");
                var             dias            = int.Parse(valorReferencia.VARValor.Where(v => v.VAVClave == "DIASPROG").FirstOrDefault().Descripcion);

                //Crear programacion
                DateTime fechaMes            = new DateTime(anio, mes, 1);
                DateTime fechaRangoPermitido = fechaMes.AddDays(-dias);
                DateTime hoy = DateTime.Today;
                if (hoy > fechaRangoPermitido || hoy.Month == fechaMes.Month)
                {
                    string[] meses = new string[] { "ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC" };
                    var      prog  = guardarProgramacion(meses[mes - 1] + anio.ToString(), mes, anio);


                    var responseZonas = Metodos.PeticionICA("subzonas", null);
                    var subzonas      = Metodos.convertirStringASubzona(responseZonas);

                    var responseTienda = Metodos.PeticionICA("tienda", null);
                    var tiendas        = Metodos.convertirStringATiendaZona(responseTienda);

                    int[] tiendasEnZonas     = new int[subzonas.Count() + 1];
                    int[] m1                 = new int[subzonas.Count() + 1], m2 = new int[subzonas.Count() + 1], m3 = new int[subzonas.Count() + 1];
                    int   totalTiendasGlobal = tiendas.Count();
                    int   muestraGlobal      = obtenerCantidadMuestra(totalTiendasGlobal);
                    List <MuestraZona> muestrasZonasDecimales = new List <MuestraZona>();
                    int acumuladoMuestrasZonas = 0;

                    //Contabiliza las tiendas por zona
                    foreach (var tienda in tiendas)
                    {
                        tiendasEnZonas[tienda.ClaveSubzona]++;
                    }

                    //Calcula la cantidad de muestra por zona
                    for (int i = 1; i < tiendasEnZonas.Length; i++)
                    {
                        double muestra = obtenerCantidadMuestraPorZona(tiendasEnZonas[i], muestraGlobal, totalTiendasGlobal);
                        var    temp    = new MuestraZona
                        {
                            Zona = i,
                            muestraSinRedondear = muestra,
                            muestraRedondeada   = int.Parse(Math.Round(muestra).ToString()),
                            decimales           = muestra - Math.Truncate(muestra),
                            tiendas             = tiendasEnZonas[i]
                        };
                        muestrasZonasDecimales.Add(temp);
                        acumuladoMuestrasZonas += temp.muestraRedondeada;
                    }

                    //Obtiene la diferencia si es que hay que realizar ajuste
                    int  diferencia        = ajustarMuestras(muestraGlobal, acumuladoMuestrasZonas, ref muestrasZonasDecimales);
                    int  contador          = 0;
                    bool ajusteHaciaArriba = false;
                    if (muestraGlobal > acumuladoMuestrasZonas)
                    {
                        ajusteHaciaArriba = true;
                    }

                    foreach (var item in muestrasZonasDecimales)
                    {
                        //Si se debe realizar ajuste lo realiza
                        if (contador < diferencia)
                        {
                            if (ajusteHaciaArriba == true && item.decimales < 0.5)
                            {
                                item.muestraRedondeada = item.muestraRedondeada + 1;
                                contador++;
                            }
                            else if (ajusteHaciaArriba == false && item.decimales > 0.5)
                            {
                                item.muestraRedondeada = item.muestraRedondeada - 1;
                                contador++;
                            }
                        }

                        var pz = guardarProgramacionZona(prog, item.Zona.ToString(), item.tiendas, item.muestraRedondeada);
                    }

                    //Calcula las tiendas por mes segun la muestra de la zona
                    for (int i = 1; i < subzonas.Count() + 1; i++)
                    {
                        var zona = muestrasZonasDecimales.Where(z => z.Zona == i).FirstOrDefault();
                        m1[i] = int.Parse(Math.Round(Double.Parse(zona.muestraRedondeada.ToString()) / 3).ToString());
                        if (zona.muestraRedondeada - m1[i] > m1[i])
                        {
                            m2[i] = m1[i];
                            m3[i] = zona.muestraRedondeada - (m1[i] + m2[i]);
                        }
                        else
                        {
                            m2[i] = zona.muestraRedondeada - m1[i];
                            m3[i] = 0;
                        }
                        if (zona.muestraRedondeada - m1[i] == 0)
                        {
                            m2[i] = 0;
                            m3[i] = 0;
                        }
                    }

                    var mes1     = fechaMes.AddMonths(-1);
                    var mes2     = fechaMes.AddMonths(-2);
                    var mes3     = fechaMes.AddMonths(-3);
                    var faltante = 0;

                    //Genera las evaluaciones por mes de cada zona
                    for (int i = 1; i < subzonas.Count() + 1; i++)
                    {
                        faltante = generarMuestrasPorMes(mes1, m1, anio, i, prog, 0);
                        faltante = generarMuestrasPorMes(mes2, m2, anio, i, prog, faltante);
                        faltante = generarMuestrasPorMes(mes3, m3, anio, i, prog, faltante);
                        var pz = db.ProgramacionZona.Find(prog.PROId, i.ToString());
                        pz.Real            = pz.Requerido - faltante;
                        db.Entry(pz).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                    }

                    return(Json(new { estatus = true }));
                }
                return(Json(new { estatus = false, dias = dias }));
            }
            return(Json(new { estatus = false }));
        }