public static List <SolicitudAutorizacionPendientesInfo> ObtenerSolicitudesPendientesAjusteInventario(int organizacionID, int tipoAutorizacionID)
        {
            List <SolicitudAutorizacionPendientesInfo> listaSolicitudesPendientes = null;

            try
            {
                var solicitudesPl = new SolicitudAutorizacionPL();
                var seguridad     = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                if (seguridad != null)
                {
                    listaSolicitudesPendientes = solicitudesPl.ObtenerSolicitudesPendientesAjusteInventario(organizacionID, tipoAutorizacionID);
                }
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(listaSolicitudesPendientes);
        }
        public static ResultadoValidacion GuardarRespuestasSolicitudes(List <AutorizacionMovimientosInfo> respuestaSolicitudes, int organizacionID, int tipoAutorizacionID)
        {
            var result = new ResultadoValidacion();

            try
            {
                var respuestaPl = new SolicitudAutorizacionPL();
                var seguridad   = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                if (seguridad != null)
                {
                    int usuarioID = seguridad.Usuario.UsuarioID;
                    result = respuestaPl.GuardarRespuestasSolicitudes(respuestaSolicitudes, organizacionID, tipoAutorizacionID, usuarioID);
                }
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(result);
        }
        //Se activa cuando dan click sobre el boton Enviar
        private void BtnEnviar_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(txtJustificacion.Text))
                {
                    string mensaje     = string.Empty;
                    var    solicitudPL = new SolicitudAutorizacionPL();
                    solicitudInfo.Justificacion = txtJustificacion.Text;
                    int folioGenerado = solicitudPL.GenerarSolicitudAutorizacion(solicitudInfo);

                    mensaje = string.Format(Properties.Resources.SolicitarAutorizacionSalidaVenta_MsgEnviado, folioGenerado);
                    SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Correct);

                    solicitudGenerada = true;
                    Close();
                }
                else
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.SolicitarAutorizacionSalidaVenta_MsgDatosIncompletos,
                                      MessageBoxButton.OK, MessageImage.Stop);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  ex.Message, MessageBoxButton.OK,
                                  MessageImage.Error);
            }
        }
        /// <summary>
        /// Existe autorizacion para lote y folio seleccionado
        /// </summary>
        /// <returns></returns>
        private bool ExisteAutorizacion()
        {
            bool regreso = false;

            try
            {
                var solicitudAutorizacionPl = new SolicitudAutorizacionPL();
                var autorizacionInfo        = new AutorizacionMateriaPrimaInfo
                {
                    OrganizacionID     = organizacionID,
                    Lote               = Convert.ToInt32(skAyudaLote.Clave),
                    TipoAutorizacionID = TipoAutorizacionEnum.UsoLote.GetHashCode(),
                    Folio              = pedido.FolioPedido
                };
                AutorizacionMateriaPrimaInfo resultado = solicitudAutorizacionPl.ObtenerDatosSolicitudAutorizacionProgramacionMP(autorizacionInfo);
                if (resultado != null)
                {
                    if (resultado.EstatusID == Estatus.AMPAutoriz.GetHashCode())
                    {
                        regreso    = true;
                        Autorizado = true;
                    }
                    else if (resultado.EstatusID == Estatus.AMPPendien.GetHashCode())
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          string.Format(Properties.Resources.SolicitudProgramacionMateriaPrima_MsjSolicitudPendiente,
                                                        pedido.FolioPedido), MessageBoxButton.OK,
                                          MessageImage.Warning);
                        skAyudaLote.Focus();
                    }
                    else if (resultado.EstatusID == Estatus.AMPRechaza.GetHashCode())
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          string.Format(Properties.Resources.SolicitudProgramacionMateriaPrima_MsjSolicitudRechazado,
                                                        skAyudaLote.Clave, pedido.FolioPedido), MessageBoxButton.OK,
                                          MessageImage.Warning);
                        skAyudaLote.Focus();
                    }
                }
                else
                {
                    regreso = true;
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.SolicitudProgramacionMateriaPrima_errorEnviarSolicitud,
                                  MessageBoxButton.OK, MessageImage.Error);
            }
            return(regreso);
        }
        /// <summary>
        /// Existe solicitud autorizada para folio seleccionado
        /// </summary>
        private void ExisteSolicitudAutorizada()
        {
            bool loteProgramacion        = false;
            var  solicitudAutorizacionPl = new SolicitudAutorizacionPL();
            var  autorizacionInfo        = new AutorizacionMateriaPrimaInfo
            {
                OrganizacionID     = organizacionID,
                TipoAutorizacionID = TipoAutorizacionEnum.UsoLote.GetHashCode(),
                Folio     = pedido.FolioPedido,
                EstatusID = Estatus.AMPAutoriz.GetHashCode()
            };
            AutorizacionMateriaPrimaInfo resultado =
                solicitudAutorizacionPl.ObtenerDatosSolicitudAutorizada(autorizacionInfo);

            if (resultado != null)
            {
                if (detallePedido.ProgramacionMateriaPrima != null && detallePedido.ProgramacionMateriaPrima.Count > 0)
                {
                    loteProgramacion =
                        detallePedido.ProgramacionMateriaPrima.Any(
                            programacionMateriaPrimaInfo =>
                            programacionMateriaPrimaInfo.InventarioLoteOrigen.Lote == resultado.Lote);
                }
                if (!loteProgramacion)
                {
                    skAyudaLote.Clave          = resultado.Lote.ToString(CultureInfo.InvariantCulture);
                    skAyudaLote.Descripcion    = resultado.Lote.ToString(CultureInfo.InvariantCulture);
                    txtCantidadProgramada.Text = Convert.ToString(resultado.CantidadProgramada);
                    var almacenInventarioLoteInfo = new AlmacenInventarioLoteInfo
                    {
                        ProductoId     = producto.ProductoId,
                        OrganizacionId = pedido.Organizacion.OrganizacionID,
                        TipoAlmacenId  = (int)TipoAlmacenEnum.MateriasPrimas,
                        Activo         = EstatusEnum.Activo,
                        Lote           = resultado.Lote
                    };
                    var almacenInventarioLotePL             = new AlmacenInventarioLotePL();
                    AlmacenInventarioLoteInfo resultadoInfo =
                        almacenInventarioLotePL.ObtenerAlmacenInventarioLotePorFolio(almacenInventarioLoteInfo);
                    almacenInventarioLote                = resultadoInfo;
                    almacenInventarioLote.ProductoId     = almacenInventarioLoteInfo.ProductoId;
                    almacenInventarioLote.OrganizacionId = almacenInventarioLoteInfo.OrganizacionId;
                    almacenInventarioLote.TipoAlmacenId  = almacenInventarioLoteInfo.TipoAlmacenId;
                    almacenInventarioLote.Activo         = almacenInventarioLoteInfo.Activo;
                    almacenInventarioLote.Lote           = almacenInventarioLoteInfo.Lote;
                    skAyudaLote.Info = resultadoInfo;
                }
            }
        }