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 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); }
private string ValidarAretesDuplicados() { var mensaje = string.Empty; try { SolicitudProductoReplicaInfo solicitudGuardar = Contexto; var misAretes = ObtenerTotalAretesGrid(); mensaje = new SolicitudProductoBL().ValidarAretesDuplicados(solicitudGuardar.AlmacenDestino.Organizacion.OrganizacionID, misAretes); } catch (Exception) { mensaje = Properties.Resources.RecibirProductoAlmacen_ErrorValidarAretesAsignado; } return(mensaje); }
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); }
/// <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 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; } }
public RecibirProductoAlmacenReplica() { solicitudProductoBL = new SolicitudProductoBL(); InitializeComponent(); }
/// <summary> /// Método para cancelar /// </summary> private void Guardar() { bool guardar = ValidaGuardar(); if (guardar) { try { SolicitudProductoReplicaInfo solicitudGuardar = Contexto; var organizacion = new OrganizacionPL().ObtenerPorID(solicitudGuardar.AlmacenDestino.Organizacion.OrganizacionID); var tipoOrg = organizacion.TipoOrganizacion.TipoOrganizacionID; solicitudGuardar.UsuarioModificacionID = usuario.UsuarioID; int activos = solicitudGuardar.Detalle.Count(e => e.Activo == true); int recibidos = solicitudGuardar.Detalle.Count( e => e.Activo == true); if (tipoOrg == TipoOrganizacion.Centro.GetHashCode() || tipoOrg == TipoOrganizacion.Cadis.GetHashCode() || tipoOrg == TipoOrganizacion.Descanso.GetHashCode()) { var misAretes = ObtenerTotalAretesGrid(); var result = new SolicitudProductoBL().GuardarInformacionCentros(Contexto.FolioSolicitud.ToString(), AuxConfiguracion.ObtenerUsuarioLogueado(), solicitudGuardar.AlmacenDestino.Organizacion.OrganizacionID, misAretes); if (result) { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.RecibirProductoAlmacen_GuardadoConExito, MessageBoxButton.OK, MessageImage.Correct); Limpiar(); } else { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.RecibirProductoAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error); } } else { MemoryStream pdf = solicitudProductoBL.GuardarMovimientoInventario(solicitudGuardar); if (pdf != null) { var exportarPoliza = new ExportarPoliza(); if (solicitudGuardar.AlmacenID.HasValue) { exportarPoliza.ImprimirPoliza(pdf, string.Format("{0} {1}", "Poliza", TipoPoliza.EntradaTraspasoSAP)); } else { exportarPoliza.ImprimirPoliza(pdf, string.Format("{0} {1}", "Poliza", TipoPoliza.SalidaConsumo)); } } string mensaje = Properties.Resources.RecibirProductoAlmacen_GuardadoConExito; SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], mensaje, MessageBoxButton.OK, MessageImage.Correct); Limpiar(); } } catch (ExcepcionServicio ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.RecibirProductoAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Stop); } catch (ExcepcionGenerica ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.RecibirProductoAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error); } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.RecibirProductoAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error); } } }
public SolicitudProductosAlmacen() { solicitudProductoBL = new SolicitudProductoBL(); InitializeComponent(); InicializaContexto(); }