public ActionResult Disapprove(OrdenCompra ordenCompra) { var errors = ModelState.Values.SelectMany(v => v.Errors); OrdenCompra OrdenCompra = db.Ordenes.Find(ordenCompra.ordenCompraId); DateTime timeUtc = DateTime.UtcNow; TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone); var estado = db.EstadoOrdenes.Where(p => p.nombre == "Rechazado Aprobación 1").SingleOrDefault();; var ordenCompraEstado = new OrdenCompraEstadoOrden(); ordenCompraEstado.ordenCompraId = ordenCompra.ordenCompraId; ordenCompraEstado.estadoOrdenId = estado.estadoOrdenId; ordenCompraEstado.usuarioCreacion = User.Identity.Name; ordenCompraEstado.fechaCreacion = cstTime; ordenCompraEstado.comentario = ordenCompra.comentario; //Actualiza datos en Orden de Compra ordenCompraEstado.OrdenCompra = OrdenCompra; ordenCompraEstado.OrdenCompra.estadoOrdenId = estado.estadoOrdenId; //OrdenCompra.estadoOrdenId = estado.estadoOrdenId; ordenCompraEstado.OrdenCompra.usuarioModificacion = User.Identity.Name; ordenCompraEstado.OrdenCompra.fechaModificacion = cstTime; db.OrdenCompraEstadoOrden.Add(ordenCompraEstado); try { db.SaveChanges(); } catch (DbEntityValidationException ex) { StringBuilder sb = new StringBuilder(); foreach (var failure in ex.EntityValidationErrors) { sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType()); foreach (var error in failure.ValidationErrors) { sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); sb.AppendLine(); } } throw new DbEntityValidationException( "Entity Validation Failed - errors follow:\n" + sb.ToString(), ex ); } return(RedirectToAction("IndexApprove")); }
public ActionResult EnterWarehouse(OrdenCompra ordenCompra) { var errors = ModelState.Values.SelectMany(v => v.Errors); OrdenCompra OrdenCompraOriginal = db.Ordenes.Find(ordenCompra.ordenCompraId); DateTime timeUtc = DateTime.UtcNow; TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone); var estadoIngresoTotal = db.EstadoOrdenes.Where(p => p.nombre == "Ingreso Total").SingleOrDefault(); var estadoIngresoParcial = db.EstadoOrdenes.Where(p => p.nombre == "Ingreso Parcial").SingleOrDefault(); var estadoDetalleIngresoTotal = db.EstadoOrdenDetalles.Where(p => p.nombre == "Atendido Total").SingleOrDefault(); var estadoDetalleIngresoParcial = db.EstadoOrdenDetalles.Where(p => p.nombre == "Atendido Parcial").SingleOrDefault(); //1. Registra Estado Orden Ingreso Total //2. Registra Estado Orden Detalles Ingreso Total //3. Registra Estado Orden Ingreso Parcial //4. Registra Estado Orden Detalles Ingreso Parcial //5. Registra Ingreso documento //6. Actualiza Inventario en Almacén //Revisa detalles // Tabla Ingreso var ingreso = new Ingreso(); var ingresosDetalle = new List <IngresoDetalle>(); var cantidadDetallesAtendidos = 0; //3 Atendido Total cantidadDetallesAtendidos = OrdenCompraOriginal.OrdenesCompraDetalles.Where(p => p.estadoOrdenDetalleId == 3).Count(); // Actualiza estado de Requerimientos OrdenCompraOriginal.estadoOrdenId = estadoIngresoTotal.estadoOrdenId; foreach (var item in ordenCompra.OrdenesCompraDetalles) { foreach (var item2 in OrdenCompraOriginal.OrdenesCompraDetalles) { if (item.ordenCompradetalleId == item2.ordenCompradetalleId) { var cantidadIngresados = 0; cantidadIngresados = item2.IngresoDetalles.Sum(survey => survey.cantidad); if ((item.cantidad + cantidadIngresados) == item2.cantidad) { item2.estadoOrdenDetalleId = estadoDetalleIngresoTotal.estadoOrdenDetalleId; } else { item2.estadoOrdenDetalleId = estadoDetalleIngresoParcial.estadoOrdenDetalleId; OrdenCompraOriginal.estadoOrdenId = estadoIngresoParcial.estadoOrdenId; } var ingresoDetalle = new IngresoDetalle(); ingresoDetalle.Ingreso = ingreso; ingresoDetalle.cantidad = int.Parse(item.cantidad.ToString()); ingresoDetalle.ordenCompradetalleId = item.ordenCompradetalleId; ingresoDetalle.avance = 0; ingresosDetalle.Add(ingresoDetalle); var materialNivelStock = new MaterialNivelStock(); materialNivelStock.almacenId = OrdenCompraOriginal.Obra.Almacenes[0].almacenId; materialNivelStock.cantidad = materialNivelStock.cantidad + int.Parse(item.cantidad.ToString()); materialNivelStock.materialId = item2.materialId; materialNivelStock.fechaStock = cstTime; db.MaterialNivelStock.Add(materialNivelStock); } } } ingreso.IngresoDetalles = ingresosDetalle; //var ordenes = db.Ordenes.Where(p => estadoList.Contains(p.EstadoOrden.nombre)) if (ordenCompra.OrdenesCompraDetalles.Count + cantidadDetallesAtendidos != OrdenCompraOriginal.OrdenesCompraDetalles.Count) { OrdenCompraOriginal.estadoOrdenId = estadoIngresoParcial.estadoOrdenId; } // Fin Actualiza estado Requerimientos //Actualiza datos en Orden de Compra OrdenCompraOriginal.usuarioModificacion = User.Identity.Name; OrdenCompraOriginal.fechaModificacion = cstTime; var ordenCompraEstado = new OrdenCompraEstadoOrden(); ordenCompraEstado.OrdenCompra = OrdenCompraOriginal; ordenCompraEstado.ordenCompraId = ordenCompra.ordenCompraId; ordenCompraEstado.estadoOrdenId = OrdenCompraOriginal.estadoOrdenId; ordenCompraEstado.usuarioCreacion = User.Identity.Name; ordenCompraEstado.fechaCreacion = cstTime; //ordenCompraEstado.comentario = ordenCompra.comentario; ingreso.numeroGuia = "guia"; ingreso.OrdenCompra = OrdenCompraOriginal; ingreso.ordenCompraId = OrdenCompraOriginal.ordenCompraId; ingreso.usuarioCreacion = User.Identity.Name; ingreso.fecha = cstTime; ingreso.fechaCreacion = cstTime; ingreso.fechaModificacion = cstTime; ingreso.usuarioModificacion = User.Identity.Name; db.OrdenCompraEstadoOrden.Add(ordenCompraEstado); db.Ingresos.Add(ingreso); try { db.SaveChanges(); } catch (DbEntityValidationException ex) { StringBuilder sb = new StringBuilder(); foreach (var failure in ex.EntityValidationErrors) { sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType()); foreach (var error in failure.ValidationErrors) { sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); sb.AppendLine(); } } throw new DbEntityValidationException( "Entity Validation Failed - errors follow:\n" + sb.ToString(), ex ); } return(RedirectToAction("IndexApprove3")); }