/// <summary> /// Obtiene una solicitud de productos por su ID. /// </summary> /// <param name="solicitudProductoID"></param> /// <returns></returns> private static SolicitudProductoInfo ObtenerSolicitudPorId(int solicitudProductoID) { SolicitudProductoInfo solicitud; using (var solicitudProductoBL = new SolicitudProductoBL()) { solicitud = solicitudProductoBL.ObtenerPorID(new SolicitudProductoInfo { SolicitudProductoID = solicitudProductoID }); } return(solicitud); }
/// <summary> /// Obtiene una solicitud de productos por su folio de solicitud. /// </summary> /// <param name="solicitudId"></param> /// <returns></returns> private SolicitudProductoInfo ObtenerSolicitudPorId(int solicitudId) { SolicitudProductoInfo solicitud = solicitudProductoBL.ObtenerPorID(new SolicitudProductoInfo { SolicitudProductoID = solicitudId }); solicitud.Solicitud = InicializaContextoSolicitud(); solicitud.Solicitud.FolioID = solicitud.SolicitudProductoID; solicitud.Solicitud.FolioSolicitud = solicitud.FolioSolicitud; solicitud.Solicitud.Descripcion = string.Format("{0}", solicitud.FolioSolicitud); return(solicitud); }
/// <summary> /// /// </summary> /// <param name="solicitud"></param> /// <param name="solicitudProductoBL"></param> /// <returns></returns> private static List <SolicitudProductoDetalleModel> ValidaDisponibilidad(SolicitudProductoInfo solicitud, SolicitudProductoBL solicitudProductoBL) { dynamic result; IEnumerable <int> idsProductos = solicitud.Detalle .Where(d => d.Producto.FamiliaId != (int)FamiliasEnum.HerramientaYEquipo || d.Producto.FamiliaId != (int)FamiliasEnum.Combustibles) .Select(d => d.ProductoID).Distinct().ToList(); SolicitudProductoInfo solicitudGuardar = solicitudProductoBL.ObtenerPorID(solicitud); var filtro = new FolioSolicitudInfo { OrganizacionID = solicitudGuardar.OrganizacionID, IdsProductos = idsProductos.ToList(), EstatusID = Estatus.SolicitudProductoAutorizado.GetHashCode(), Activo = EstatusEnum.Activo }; IList <AlmacenInventarioInfo> existencia = ObtenerExistencia(idsProductos); IList <SolicitudProductoInfo> solicitudesAutorizadas = solicitudProductoBL.ObtenerSolicitudesAutorizadas(filtro); var productosValidar = solicitud.Detalle.Select(d => new { d.ProductoID, d.Cantidad, d.Producto.FamiliaId }).ToList(); var autorizadas = (from p in solicitudesAutorizadas.SelectMany(sd => sd.Detalle) where p.EstatusID == Estatus.SolicitudProductoAutorizado.GetHashCode() group p by p.ProductoID into pg select new { ProductoID = pg.Key, Autorizada = pg.Sum(c => c.Cantidad) }).ToList(); List <SolicitudProductoDetalleModel> query = (from p in productosValidar join a in autorizadas on p.ProductoID equals a.ProductoID into gj from pa in gj.DefaultIfEmpty() select new SolicitudProductoDetalleModel { ProductoID = p.ProductoID, Cantidad = p.Cantidad, Existencia = ObtenerCantidadExistencia(p.ProductoID, p.FamiliaId, p.Cantidad, existencia, (pa == null ? 0 : pa.Autorizada)), /* Para los */ Autorizada = (pa == null ? 0 : pa.Autorizada), IsDisponible = (ObtenerCantidadExistencia(p.ProductoID, p.FamiliaId, p.Cantidad, existencia, (pa == null ? 0 : pa.Autorizada)) - (pa == null ? 0 : pa.Autorizada)) >= 0 }).ToList(); return(query); }
public static bool Guardar(SolicitudProductoInfo solicitud) { using (var solicitudProductoBL = new SolicitudProductoBL()) { SolicitudProductoInfo solicitudGuardar = solicitudProductoBL.ObtenerPorID(solicitud); solicitudGuardar.EstatusID = Estatus.SolicitudProductoAutorizado.GetHashCode(); solicitudGuardar.UsuarioIDAutoriza = Usuario.UsuarioID; solicitudGuardar.FechaAutorizado = DateTime.Now; solicitudGuardar.UsuarioModificacionID = Usuario.UsuarioID; solicitudGuardar.ObservacionUsuarioAutoriza = solicitud.ObservacionUsuarioAutoriza; foreach (var det in solicitudGuardar.Detalle) { var renglon = solicitud.Detalle.FirstOrDefault(d => d.SolicitudProductoDetalleID == det.SolicitudProductoDetalleID); if (renglon != null) { if (renglon.Activo == EstatusEnum.Activo) { det.EstatusID = Estatus.SolicitudProductoAutorizado.GetHashCode(); } else { det.Activo = EstatusEnum.Inactivo; } } } bool inactivar = solicitudGuardar.Detalle.All(e => e.Activo != EstatusEnum.Activo); if (inactivar) { solicitudGuardar.Activo = EstatusEnum.Inactivo; } solicitudProductoBL.Guardar(solicitudGuardar); } return(true); }