예제 #1
0
 //
 // GET: /INVEN/ItemInventario/Create
 public ActionResult Create()
 {
     ViewBag.idcategoriainventario = new SelectList(db.CategoriaInventario.Where(c => !c.desactivado && c.lcategoriadetalle.Count() > 0), "idcategoriainventario", "nombre");
     ItemInventario iteminventario = new ItemInventario();
     iteminventario.tipooperacion = "D";
     return View(iteminventario);
 }
예제 #2
0
 public ActionResult Create(int id = 0)
 {
     ViewBag.idcategoriainventario = new SelectList(db.CategoriaInventario.Where(c => !c.desactivado && c.lcategoriadetalle.Count() > 0), "idcategoriainventario", "nombre", id);
     ItemInventario iteminventario = new ItemInventario();
     iteminventario.tipooperacion = ItemInventario.DISPONIBLE;
     iteminventario.idcategoriainventario = id;
     iteminventario.liteminventariodetalle = new List<ItemInventarioDetalle>();
     List<CategoriaDetalle> l = db.CategoriaDetalle.Where(c => c.idcategoriainventario.Equals(iteminventario.idcategoriainventario)).ToList();
     foreach (CategoriaDetalle o in l)
         iteminventario.liteminventariodetalle.Add(new ItemInventarioDetalle() { idcategoriadetalle = o.idcategoriadetalle, categoriadetalle = o });
     return View(iteminventario);
 }
예제 #3
0
        public ActionResult Create(ItemInventario iteminventario)
        {
            iteminventario.descripcion = iteminventario.descripcion.Replace("  ", " ").Trim();
            int i = db.ItemInventario.Where(c => c.descripcion.Equals(iteminventario.descripcion)).Count();
            if (i > 0)
            {
                ModelState.AddModelError("descripcion", "La descripción del ítem debe ser única");
            }
            if (ModelState.IsValid)
            {
                if (iteminventario.idcolaborador == null)
                    iteminventario.tipooperacion = "D";
                else
                    if (iteminventario.prestamo)
                        iteminventario.tipooperacion = "P";
                    else
                        iteminventario.tipooperacion = "A";
                db.ItemInventario.Add(iteminventario);
                db.SaveChanges();

                CategoriaInventario categoriainventario = db.CategoriaInventario.Find(iteminventario.idcategoriainventario);
                categoriainventario.utilizada = true;
                db.Entry(categoriainventario).State = EntityState.Modified;
                db.SaveChanges();

                List<CategoriaDetalle> lcategoriadetalle = db.CategoriaDetalle.Where(c => c.idcategoriainventario.Equals(iteminventario.idcategoriainventario)).ToList();
                ItemInventarioDetalle iteminventariodetalle = new ItemInventarioDetalle();
                iteminventariodetalle.iditeminventario = iteminventario.iditeminventario;

                foreach (CategoriaDetalle categoriadetalle in lcategoriadetalle)
                {
                    iteminventariodetalle.idcategoriadetalle = categoriadetalle.idcategoriadetalle;
                    db.ItemInventarioDetalle.Add(iteminventariodetalle);
                    db.SaveChanges();
                }
                TempData["alerta"] = "Ítem de inventario registrado con éxito";
                return RedirectToAction("Index");
            }
            ViewBag.idcategoriainventario = new SelectList(db.CategoriaInventario.Where(c => !c.desactivado && c.lcategoriadetalle.Count() > 0), "idcategoriainventario", "nombre", iteminventario.idcategoriainventario);
            return View(iteminventario);
        }
예제 #4
0
        public ActionResult Edit(ItemInventario iteminventario)
        {
            iteminventario.descripcion = iteminventario.descripcion.Replace("  ", " ").Trim();
            int i = db.ItemInventario.Where(c => c.descripcion.Equals(iteminventario.descripcion) && c.iditeminventario != iteminventario.iditeminventario).Count();
            if (i > 0)
            {
                ModelState.AddModelError("descripcion", "La descripción del ítem debe ser única");
            }
            if (ModelState.IsValid)
            {
                if (iteminventario.idcolaborador == null)
                    iteminventario.tipooperacion = "D";
                else
                    if (iteminventario.prestamo)
                        iteminventario.tipooperacion = "P";
                    else
                        iteminventario.tipooperacion = "A";
                db.Entry(iteminventario).State = EntityState.Modified;
                db.SaveChanges();

                TempData["alerta"] = "Ítem de inventario actualizado con éxito";
                return RedirectToAction("Index");
            }
            ViewBag.idcategoriainventario = new SelectList(db.CategoriaInventario, "idcategoriainventario", "nombre", iteminventario.idcategoriainventario);
            return View(iteminventario);
        }
예제 #5
0
        public ActionResult Create(ItemInventario iteminventario, FormCollection collection)
        {
            if (iteminventario.descripcion != null)
            {
                iteminventario.descripcion = iteminventario.descripcion.Replace("  ", " ").Trim();
                if (db.ItemInventario.Where(c => c.descripcion.Equals(iteminventario.descripcion)).Count() > 0)
                    ModelState.AddModelError("descripcion", "La descripción del ítem debe ser única");
                else if (!Halp.tieneLetra(iteminventario.descripcion))
                    ModelState.AddModelError("descripcion", "La descripción debería tener al menos una letra");
            }
            if (iteminventario.idcolaborador == null && iteminventario.colaborador_nombre != null)
                ModelState.AddModelError("colaborador_nombre", "El colaborador no existe, elija uno de la lista");

            string key = null;
            int idcd = 0;
            string vc = "";
            DateTime? vf = null;
            int? ve = 0;
            decimal? vd = 0;
            for (int i = 0; i < iteminventario.liteminventariodetalle.Count(); i++)
            {
                idcd = iteminventario.liteminventariodetalle[i].idcategoriadetalle;
                if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.tipo == TipoDatoFormato.CADENA)
                {
                    vc = iteminventario.liteminventariodetalle[i].valorcadena;
                    iteminventario.liteminventariodetalle[i].valorbusqueda = vc;
                    Expression<Func<ItemInventario, string>> expression = x => x.liteminventariodetalle[i].valorcadena;
                    key = ExpressionHelper.GetExpressionText(expression);
                    if (iteminventario.liteminventariodetalle[i].categoriadetalle.obligatorio && (vc == null || vc == ""))
                        ModelState.AddModelError(key, "Ingrese " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre);
                    else if (vc != null && vc.Length > iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.longitud)
                        ModelState.AddModelError(key, "Longitud de " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " no válida");
                    else if (vc != null && vc != "" && iteminventario.liteminventariodetalle[i].categoriadetalle.idtipodato == TipoDato.TEXTO && !Halp.esTexto(vc))
                        ModelState.AddModelError(key, "El campo no respeta el formato para textos");
                    else if (vc != null && vc != "" && iteminventario.liteminventariodetalle[i].categoriadetalle.idtipodato == TipoDato.ALFANUMERICO && !Halp.esAlfanumerico(vc))
                        ModelState.AddModelError(key, "El campo no respeta el formato para alfanuméricos");
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.identificador && 0 < db.ItemInventarioDetalle.Where(c => c.idcategoriadetalle == idcd && c.categoriadetalle.identificador && c.valorcadena == vc).Count())
                        ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser único");
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo != null && iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador != null && vc != null)
                        switch (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador)
                        {
                            case TipoDatoOperador.DIFERENTE:
                                if (vc.ToUpper() == iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorcadena.ToUpper())
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.IGUAL:
                                if (vc.ToUpper() != iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorcadena.ToUpper())
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.LIKE:
                                if (!((vc.ToUpper()).Contains(iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorcadena.ToUpper())))
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                        }
                }
                else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.tipo == TipoDatoFormato.FECHA)
                {
                    vf = iteminventario.liteminventariodetalle[i].valorfecha;
                    if (vf != null)
                        iteminventario.liteminventariodetalle[i].valorbusqueda = vf.ToString().Substring(0, 10);
                    Expression<Func<ItemInventario, DateTime?>> expression = x => x.liteminventariodetalle[i].valorfecha;
                    key = ExpressionHelper.GetExpressionText(expression);
                    if (iteminventario.liteminventariodetalle[i].categoriadetalle.obligatorio && vf == null)
                        ModelState.AddModelError(key, "Ingrese " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre);
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.identificador && 0 < db.ItemInventarioDetalle.Where(c => c.idcategoriadetalle == idcd && c.categoriadetalle.identificador && c.valorfecha == vf).Count())
                        ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser único");
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo != null && iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador != null && vf != null)
                        switch (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador)
                        {
                            case TipoDatoOperador.DIFERENTE:
                                if (vf == DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.IGUAL:
                                if (vf != DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR:
                                if (vf <= DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR:
                                if (vf >= DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR_IGUAL:
                                if (vf < DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR_IGUAL:
                                if (vf > DateTime.Today)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                        }
                }
                else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.tipo == TipoDatoFormato.ENTERO)
                {
                    ve = iteminventario.liteminventariodetalle[i].valorentero;
                    iteminventario.liteminventariodetalle[i].valorbusqueda = ve.ToString();
                    Expression<Func<ItemInventario, int?>> expression = x => x.liteminventariodetalle[i].valorentero;
                    key = ExpressionHelper.GetExpressionText(expression);
                    if (iteminventario.liteminventariodetalle[i].categoriadetalle.obligatorio && ve == null)
                        ModelState.AddModelError(key, "Ingrese " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre);
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.identificador && 0 < db.ItemInventarioDetalle.Where(c => c.idcategoriadetalle == idcd && c.categoriadetalle.identificador && c.valorentero == ve).Count())
                        ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser único");
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo != null && iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador != null && ve != null)
                        switch (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador)
                        {
                            case TipoDatoOperador.DIFERENTE:
                                if (ve == iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.IGUAL:
                                if (ve != iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR:
                                if (ve <= iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR:
                                if (ve >= iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR_IGUAL:
                                if (ve < iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR_IGUAL:
                                if (ve > iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                        }
                }
                else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.tipo == TipoDatoFormato.DECIMAL)
                {
                    vd = iteminventario.liteminventariodetalle[i].valordecimal;
                    iteminventario.liteminventariodetalle[i].valorbusqueda = vd.ToString();
                    Expression<Func<ItemInventario, decimal?>> expression = x => x.liteminventariodetalle[i].valordecimal;
                    key = ExpressionHelper.GetExpressionText(expression);
                    if (iteminventario.liteminventariodetalle[i].categoriadetalle.obligatorio && vd == null)
                        ModelState.AddModelError(key, "Ingrese " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre);
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.identificador && 0 < db.ItemInventarioDetalle.Where(c => c.idcategoriadetalle == idcd && c.categoriadetalle.identificador && c.valordecimal == vd).Count())
                        ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser único");
                    else if (vd != null && BitConverter.GetBytes(decimal.GetBits((decimal)vd)[3])[2] > iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.escala)
                        ModelState.AddModelError(key, "El campo no debe tener más de " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoformato.escala + " decimal(es)");
                    else if (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo != null && iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador != null && vd != null)
                        switch (iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.idoperador)
                        {
                            case TipoDatoOperador.DIFERENTE:
                                if (vd == iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.IGUAL:
                                if (vd != iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR:
                                if (vd <= iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR:
                                if (vd >= iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MAYOR_IGUAL:
                                if (vd < iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                            case TipoDatoOperador.MENOR_IGUAL:
                                if (vd > iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.valorentero)
                                    ModelState.AddModelError(key, "El campo " + iteminventario.liteminventariodetalle[i].categoriadetalle.nombre + " debe ser " + iteminventario.liteminventariodetalle[i].categoriadetalle.tipodatoatributo.etiqueta);
                                break;
                        }
                }
            }

            if (ModelState.IsValid)
            {
                bool ok = true;
                if (iteminventario.tipooperacion == "D" && iteminventario.idcolaborador != null && iteminventario.idcolaborador != 0)
                {
                    string mensaje = mensajea2(iteminventario.iditeminventario, iteminventario.idcategoriainventario, iteminventario.idcolaborador, iteminventario.prestamo);
                    if (mensaje.Split('|')[0] == "0")
                    {
                        TempData["alerta"] = mensaje.Split('|')[1];
                        ok = false;
                    }
                    else if (mensaje.Split('|')[0] == "2" && collection["forzar"] == "0")
                    {
                        TempData["confirma"] = mensaje.Split('|')[1] + "|$('#forzar').val('1'); $('#form1').submit();";
                        ok = false;
                    }
                }
                if (ok)
                {
                    if (iteminventario.idcolaborador == null)
                        iteminventario.tipooperacion = "D";
                    else
                        if (iteminventario.prestamo)
                            iteminventario.tipooperacion = "P";
                        else
                            iteminventario.tipooperacion = "A";
                    ItemInventario o = new ItemInventario() { idcategoriainventario = iteminventario.idcategoriainventario, idcolaborador = iteminventario.idcolaborador, descripcion = iteminventario.descripcion, tipooperacion = iteminventario.tipooperacion };
                    db.ItemInventario.Add(o);
                    db.SaveChanges();
                    foreach (ItemInventarioDetalle p in iteminventario.liteminventariodetalle)
                    {
                        db.ItemInventarioDetalle.Add(new ItemInventarioDetalle() { iditeminventario = o.iditeminventario, idcategoriadetalle = p.idcategoriadetalle, valorcadena = p.valorcadena, valorentero = p.valorentero, valordecimal = p.valordecimal, valorfecha = p.valorfecha, valorbusqueda = p.valorbusqueda });
                        db.SaveChanges();
                    }
                    CategoriaInventario categoriainventario = db.CategoriaInventario.Find(iteminventario.idcategoriainventario);
                    categoriainventario.utilizada = true;
                    db.Entry(categoriainventario).State = EntityState.Modified;
                    db.SaveChanges();
                    TempData["alerta"] = "Ítem de inventario registrado con éxito";
                    return RedirectToAction("Index");
                }
            }
            ViewBag.idcategoriainventario = new SelectList(db.CategoriaInventario.Where(c => !c.desactivado && c.lcategoriadetalle.Count() > 0), "idcategoriainventario", "nombre", iteminventario.idcategoriainventario);
            return View(iteminventario);
        }