/// <summary>
        /// Método para cancelar
        /// </summary>
        private void Guardar()
        {
            bool guardar = ValidaGuardar();

            if (guardar)
            {
                try
                {
                    int folio = Contexto.FolioSolicitud;
                    solicitudProductoBL.Guardar(Contexto);
                    string mensaje = folio == 0
                                       ? string.Format(Properties.Resources.SolicitudProductosAlmacen_GuardadoConExito,
                                                       Contexto.FolioSolicitud)
                                       : Properties.Resources.SolicitudProductosAlmacen_ActualizadoConExito;


                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], mensaje, MessageBoxButton.OK,
                                      MessageImage.Correct);

                    Limpiar();
                }
                catch (ExcepcionGenerica)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.SolicitudProductosAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.SolicitudProductosAlmacen_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
            }
        }
        /// <summary>
        /// Método para cancelar
        /// </summary>
        private void Guardar()
        {
            bool guardar = ValidaGuardar();

            if (guardar)
            {
                try
                {
                    SolicitudProductoInfo solicitudGuardar = Contexto;
                    solicitudGuardar.UsuarioIDEntrega      = usuario.UsuarioID;
                    solicitudGuardar.FechaEntrega          = DateTime.Now;
                    solicitudGuardar.UsuarioModificacionID = usuario.UsuarioID;
                    //solicitudGuardar.AlmacenID = almacen.AlmacenID;
                    solicitudGuardar.TipoMovimientoInventario = TipoMovimiento.SalidaPorTraspaso;

                    int activos    = solicitudGuardar.DetalleGrid.Count(e => e.Activo == EstatusEnum.Activo);
                    int entregados = solicitudGuardar.DetalleGrid.Count(e => e.EstatusID == Estatus.SolicitudProductoEntregado.GetHashCode());

                    if (activos == entregados)
                    {
                        solicitudGuardar.EstatusID = Estatus.SolicitudProductoEntregado.GetHashCode();
                    }

                    solicitudGuardar.Detalle = solicitudGuardar.Detalle.Where(e => e.Entregado && e.Editar).ToList();

                    solicitudProductoBL.Guardar(solicitudGuardar);

                    string mensaje = Properties.Resources.EntregarProductoAlmacen_GuardadoConExito;

                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], mensaje,
                                      MessageBoxButton.OK,
                                      MessageImage.Correct);
                    Limpiar();
                }
                catch (ExcepcionGenerica)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.EntregarProductoAlmacen_ErrorGuardar, MessageBoxButton.OK,
                                      MessageImage.Error);
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.EntregarProductoAlmacen_ErrorGuardar, MessageBoxButton.OK,
                                      MessageImage.Error);
                }
            }
        }
        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);
        }