public static IList <FolioSolicitudInfo> ObtenerPorPagina(FolioSolicitudInfo folioSolicitudInfo)
        {
            var pagina = new PaginacionInfo {
                Inicio = 1, Limite = 15
            };

            folioSolicitudInfo.Usuario           = new UsuarioInfo();
            folioSolicitudInfo.OrganizacionID    = Usuario.OrganizacionID;
            folioSolicitudInfo.UsuarioIDAutoriza = Usuario.UsuarioID;
            folioSolicitudInfo.EstatusID         = Estatus.SolicitudProductoPendiente.GetHashCode();
            folioSolicitudInfo.Activo            = EstatusEnum.Activo;

            IList <FolioSolicitudInfo>         result = null;
            ResultadoInfo <FolioSolicitudInfo> solicitudes;

            using (var solicitudProductoBL = new SolicitudProductoBL())
            {
                solicitudes = solicitudProductoBL.ObtenerPorPagina(pagina, folioSolicitudInfo);
            }

            if (solicitudes != null && solicitudes.TotalRegistros > 0)
            {
                result = solicitudes.Lista;
            }
            return(result);
        }
        /// <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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Obtiene una folio de solicitud de productos
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public FolioSolicitudInfo ObtenerPorIDAyuda(FolioSolicitudInfo filtro)
        {
            FolioSolicitudInfo solicitudProducto = null;

            try
            {
                Dictionary <string, object> parameters = AuxSolicitudProductoReplicaDAL.ObtenerParametrosPorID(filtro);
                DataSet ds = Retrieve("SolicitudProductoReplica_ObtenerPorID", parameters);
                if (ValidateDataSet(ds))
                {
                    solicitudProducto = MapSolicitudProductoReplicaDAL.ObtenerPorIDAyuda(ds);
                }
            }
            catch (SqlException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (DataException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(solicitudProducto);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de Salida de Traspaso
        /// </summary>
        /// <param name="folioSolicitud"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaSalidaConsumo(FolioSolicitudInfo folioSolicitud, TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasSalidaConsumo = polizaBL.ObtenerPoliza(TipoPoliza.SalidaConsumo,
                                                                             folioSolicitud.OrganizacionID,
                                                                             folioSolicitud.FechaEntrega.HasValue ? folioSolicitud.FechaEntrega.Value : DateTime.MinValue,
                                                                             folioSolicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                                                                             polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasSalidaConsumo != null)
            {
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaConsumo);
                var solicitudProductoDAL = new SolicitudProductoDAL();
                using (var almacenDAL = new AlmacenDAL())
                {
                    var almacenMovimientoBL         = new AlmacenMovimientoBL();
                    SolicitudProductoInfo solicitud = solicitudProductoDAL.ObtenerPorID(folioSolicitud.FolioID);


                    if (solicitud != null)
                    {
                        AlmacenInfo almacenGeneral =
                            almacenDAL.ObtenerAlmacenGeneralOrganizacion(folioSolicitud.OrganizacionID);

                        AlmacenMovimientoInfo almacenMovimiento =
                            almacenMovimientoBL.ObtenerPorIDCompleto(solicitud.AlmacenMovimientoID.HasValue
                                                                 ? solicitud.AlmacenMovimientoID.Value
                                                                 : 0);

                        if (almacenMovimiento != null)
                        {
                            foreach (var detalle in solicitud.Detalle)
                            {
                                var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault(
                                    alm => alm.Producto.ProductoId == detalle.Producto.ProductoId);

                                if (movimiento == null)
                                {
                                    continue;
                                }
                                detalle.PrecioPromedio = movimiento.Precio;
                            }
                        }

                        if (almacenGeneral == null)
                        {
                            return(null);
                        }
                        solicitud.AlmacenGeneralID = almacenGeneral.AlmacenID;
                        polizasSalidaConsumo       = poliza.GeneraPoliza(solicitud);
                        stream = poliza.ImprimePoliza(solicitud, polizasSalidaConsumo);
                    }
                }
            }
            return(stream);
        }
        /// <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);
        }
        /// <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);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Obtiene una lista de solicitudes autorizada
 /// </summary>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public IList <SolicitudProductoInfo> ObtenerSolicitudesAutorizadas(FolioSolicitudInfo filtro)
 {
     try
     {
         Logger.Info();
         return(solicitudProductoDAL.ObtenerSolicitudesAutorizadas(filtro));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Obtiene una entidad de SolicitudProducto por su Id
 /// </summary>
 /// <param name="filtro">Obtiene una entidad SolicitudProducto por su Id</param>
 /// <returns></returns>
 public FolioSolicitudInfo ObtenerPorFolioSolicitud(FolioSolicitudInfo filtro)
 {
     try
     {
         Logger.Info();
         return(solicitudProductoDAL.ObtenerPorFolioSolicitud(filtro));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Obtiene el Contexto de la solicitud
        /// </summary>
        /// <returns></returns>
        private FolioSolicitudInfo InicializaContextoSolicitud()
        {
            var solicitud = new FolioSolicitudInfo
            {
                Descripcion        = string.Empty,
                Usuario            = usuario,
                UsuarioIDEntrega   = usuario.UsuarioID,
                OrganizacionID     = usuario.OrganizacionID,
                Producto           = new ProductoInfo(),
                Cantidad           = decimal.Zero,
                ClaseCostoProducto = new ClaseCostoProductoInfo(),
                AlmacenID          = 0,
                FolioSolicitud     = 0,
                EstatusID          = Estatus.SolicitudProductoEntregado.GetHashCode(),
            };

            return(solicitud);
        }
Ejemplo n.º 10
0
        public void ObtenerPorPagina()
        {
            var bl = new SIE.Services.Servicios.BL.SolicitudProductoBL();

            var filtro = new FolioSolicitudInfo
            {
                FolioSolicitud = 0,
                Descripcion    = string.Empty,
                Usuario        = new UsuarioInfo {
                    UsuarioID = 4, OrganizacionID = 1
                },
                Activo = EstatusEnum.Activo
            };

            var solicitudes = bl.ObtenerPorPagina(new PaginacionInfo {
                Inicio = 1, Limite = 15
            }, filtro);

            Assert.IsNotNull(solicitudes, null);
        }
 /// <summary>
 /// Obtiene parametros para obtener un folio de solicitud de productos
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosPorID(FolioSolicitudInfo filtro)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrganizacionID", filtro.OrganizacionID },
             { "@FolioSolicitud", filtro.FolioSolicitud },
             { "@Activo", filtro.Activo }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Obtiene el Contexto de la solicitud
        /// </summary>
        /// <returns></returns>
        private FolioSolicitudInfo InicializaContextoSolicitud()
        {
            var solicitud = new FolioSolicitudInfo
            {
                Descripcion    = string.Empty,
                Usuario        = solictante,
                OrganizacionID = solictante.OrganizacionID,
                Producto       = new ProductoInfo(),
                Cantidad       = decimal.Zero,
                CentroCosto    = new CentroCostoInfo {
                    AutorizadorID = autorizadorId
                },
                ClaseCostoProducto = new ClaseCostoProductoInfo(),
                AlmacenID          = almacen != null
                                                    ? almacen.AlmacenID
                                                    : 0
            };

            return(solicitud);
        }
Ejemplo n.º 13
0
        /// <summary>
        ///     Metodo que mapea un folio de solicitud de productos de almacen
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        internal static FolioSolicitudInfo ObtenerPorIDAyuda(DataSet ds)
        {
            FolioSolicitudInfo fol;

            try
            {
                Logger.Info();
                DataTable dt = ds.Tables[ConstantesDAL.DtDatos];
                fol = new FolioSolicitudInfo()
                {
                    FolioSolicitud = Convert.ToInt64(dt.Rows[0]["FolioSolicitud"]),
                    //AlmacenDestinoDescripcion = Convert.ToString(dt.Rows[0]["AlmacenDestinoDescripcion"])
                    AlmacenDestinoID = Convert.ToInt32(dt.Rows[0]["AlmacenDestinoID"])
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(fol);
        }
        /// <summary>
        /// Obtiene el Contexto de la solicitud
        /// </summary>
        /// <returns></returns>
        private FolioSolicitudInfo InicializaContextoSolicitud()
        {
            var solicitud = new FolioSolicitudInfo
            {
                Descripcion    = string.Empty,
                Usuario        = usuario,
                OrganizacionID = usuario.OrganizacionID,
                Producto       = new ProductoInfo(),
                Cantidad       = decimal.Zero,
                CentroCosto    = new CentroCostoInfo {
                    AutorizadorID = autorizadorId
                },
                ClaseCostoProducto = new ClaseCostoProductoInfo(),
                AlmacenID          = 0,
                //AlmacenID = almacen != null
                //                ? almacen.AlmacenID
                //                : 0,
                EstatusID = Estatus.SolicitudProductoAutorizado.GetHashCode(),
            };

            return(solicitud);
        }
        public static IList <SolicitudProductoDetalleModel> ObtenerPorFolioSolicitud(int folioSolicitud)
        {
            try
            {
                IList <SolicitudProductoDetalleModel> productos = null;
                var folio = new FolioSolicitudInfo
                {
                    OrganizacionID    = Usuario.OrganizacionID,
                    FolioSolicitud    = folioSolicitud,
                    UsuarioIDAutoriza = Usuario.UsuarioID,
                    EstatusID         = Estatus.SolicitudProductoPendiente.GetHashCode(),
                    Activo            = EstatusEnum.Activo
                };

                using (var solicitudProductoBL = new SolicitudProductoBL())
                {
                    FolioSolicitudInfo result = solicitudProductoBL.ObtenerPorFolioSolicitud(folio);
                    if (result != null)
                    {
                        var solicitud = ObtenerSolicitudPorId(result.FolioID);
                        if (solicitud != null)
                        {
                            if (solicitud.UsuarioIDSolicita != Usuario.UsuarioID)
                            {
                                var disponibilidad = ValidaDisponibilidad(solicitud, solicitudProductoBL);
                                productos = new List <SolicitudProductoDetalleModel>();

                                var estatusAutorizados = new[] { Estatus.SolicitudProductoAutorizado.GetHashCode(), Estatus.SolicitudProductoRecibido.GetHashCode(), Estatus.SolicitudProductoEntregado.GetHashCode() };
                                var estatusDisponibles = new[] { Estatus.SolicitudProductoPendiente.GetHashCode(), Estatus.SolicitudProductoAutorizado.GetHashCode() };

                                solicitud.Detalle.ForEach(d =>
                                {
                                    var registro = disponibilidad.FirstOrDefault(e => e.ProductoID == d.ProductoID);
                                    if (d.Activo == EstatusEnum.Activo)
                                    {
                                        productos.Add(new SolicitudProductoDetalleModel
                                        {
                                            OrganizacionID             = solicitud.OrganizacionID,
                                            SolicitudProductoDetalleId =
                                                d.SolicitudProductoDetalleID,
                                            SolicitudProductoId = d.SolicitudProductoID,
                                            FolioSolicitud      = solicitud.FolioSolicitud,
                                            FechaSolicitud      = solicitud.FechaSolicitud,
                                            ProductoID          = d.ProductoID,
                                            Producto            = d.Producto.Descripcion,
                                            Cantidad            = d.Cantidad,
                                            Existencia          = registro != null ? registro.Existencia : 0,
                                            Autorizada          = registro != null ? registro.Autorizada : 0,
                                            IsDisponible        = registro != null && registro.IsDisponible && estatusDisponibles.Contains(d.EstatusID),
                                            UnidadMedicion      = d.Producto.UnidadMedicion.Descripcion,
                                            Descripcion         = d.Concepto ?? string.Empty,
                                            ClaseCosto          = d.ClaseCostoProducto != null
                                                    ? d.ClaseCostoProducto.CuentaSAP.CuentaSAP
                                                    : string.Empty,
                                            EstatusID    = d.EstatusID,
                                            IsAutorizado = estatusAutorizados.Contains(d.EstatusID),
                                            ObservacionUsuarioAutoriza = solicitud.ObservacionUsuarioAutoriza,
                                            Activo = d.Activo == EstatusEnum.Activo
                                        });
                                    }
                                });
                            }
                        }
                    }
                }
                return(productos);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Obtiene una lista paginada de SolicitudProducto
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <FolioSolicitudInfo> ObtenerPorPagina(PaginacionInfo pagina, FolioSolicitudInfo filtro)
 {
     try
     {
         Logger.Info();
         return(solicitudProductoDAL.ObtenerPorPagina(pagina, filtro));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }