コード例 #1
0
        /// <summary>
        /// Obtiene la existencia de productos.
        /// </summary>
        /// <returns></returns>
        private decimal ObtenerDisponibilidad(int productoId)
        {
            decimal disponibilidad = decimal.Zero;

            if (productoId > 0)
            {
                var filtro = new FolioSolicitudInfo
                {
                    OrganizacionID = Contexto.OrganizacionID,
                    Producto       = Contexto.Solicitud.Producto,
                    EstatusID      = (int)Estatus.SolicitudProductoAutorizado,
                    Activo         = EstatusEnum.Activo
                };

                IList <SolicitudProductoInfo> solicitudes = solicitudProductoBL.ObtenerSolicitudesAutorizadas(filtro);

                if (solicitudes != null)
                {
                    disponibilidad =
                        solicitudes.SelectMany(sd => sd.Detalle)
                        .Where(sd => sd.ProductoID == productoId &&
                               sd.EstatusID == (int)Estatus.SolicitudProductoAutorizado &&
                               sd.Activo == EstatusEnum.Activo)
                        .Sum(c => c.Cantidad);
                }
            }
            return(disponibilidad);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="solicitud"></param>
        /// <returns></returns>
        private IEnumerable <SolicitudProductoDetalleModel> ValidaDisponibilidad(SolicitudProductoInfo solicitud)
        {
            IEnumerable <int> idsProductos = solicitud.Detalle.Select(d => d.ProductoID).Distinct().ToList();
            var filtro = new FolioSolicitudInfo
            {
                OrganizacionID = solicitud.OrganizacionID,
                IdsProductos   = idsProductos.ToList(),
                EstatusID      = Estatus.SolicitudProductoAutorizado.GetHashCode(),
                Activo         = EstatusEnum.Activo
            };

            IEnumerable <AlmacenInventarioInfo> existencia             = ObtenerExistencia(idsProductos);
            IList <SolicitudProductoInfo>       solicitudesAutorizadas =
                solicitudProductoBL.ObtenerSolicitudesAutorizadas(filtro);

            var productosValidar = solicitud.Detalle.Select(d => new
            {
                d.ProductoID,
                d.Cantidad
            }).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();

            var query = (from p in productosValidar
                         join e in existencia on p.ProductoID equals e.ProductoID
                         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 = e.Cantidad,
                Autorizada = (pa == null ? 0 : pa.Autorizada),
                IsDisponible =
                    (e.Cantidad - (pa == null ? 0 : pa.Autorizada - p.Cantidad)) >= p.Cantidad
            }).ToList();

            return(query);
        }