private bool ValidarInicioProceso()
        {
            bool                resultado = false;
            ClientePL           clientepl = new ClientePL();
            MuertesEnTransitoPL muertesPl = new MuertesEnTransitoPL();
            string              mensaje   = string.Empty;
            int organizacionId            = AuxConfiguracion.ObtenerOrganizacionUsuario();

            if (clientepl.ObtenerTotalClientesActivos() > 0)
            {
                if (muertesPl.ObtenerTotalFoliosValidos(organizacionId) > 0)
                {
                    resultado = true;
                }
                else
                {
                    mensaje = Properties.Resources.MuertesEnTransito_NoExistenFoliosMuerteGanadoRegistrados;
                }
            }
            else
            {
                mensaje = Properties.Resources.MuertesEnTransito_NoExistenClientesActivos;
            }

            if (!resultado)
            {
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], mensaje, MessageBoxButton.OK, MessageImage.Error);
                deshabilitaControles();
            }
            return(resultado);
        }
        public MuertesEnTransitoVenta()
        {
            InitializeComponent();
            ClientePL           clientepl = new ClientePL();
            MuertesEnTransitoPL muertesPl = new MuertesEnTransitoPL();

            if (ValidarInicioProceso())
            {
                organizacionID = Convert.ToInt32(Application.Current.Properties["OrganizacionID"]);
                usuarioID      = Convert.ToInt32(Application.Current.Properties["UsuarioID"]);
                AgregarAyudaFolioEntrada();
                dgAretes.ItemsSource = Animales;
                InicializaContexto();
                skAyudaCliente.ObjetoNegocio = new ClientePL();
                InicializarFormulario();
                skAyudaCliente.EsBindeable    = false;
                skAyudaCliente.AyudaConDatos += (sender, args) =>
                {
                    if (muertesEnTransitoInfoSeleccionado != null)
                    {
                        Contexto.Proveedor.EmbarqueID = muertesEnTransitoInfoSeleccionado.EmbarqueID;

                        ClienteInfo cliente = clientepl.ObtenerClientePorCliente(Contexto.Cliente);

                        if (cliente != null)
                        {
                            if (cliente.Activo == EstatusEnum.Activo)
                            {
                                Contexto.Cliente = cliente;
                                muertesEnTransitoInfoSeleccionado.Cliente = Contexto.Cliente;
                                skAyudaCliente.Contexto            = cliente;
                                skAyudaCliente.txtClave.Text       = cliente.CodigoSAP;
                                skAyudaCliente.txtDescripcion.Text = cliente.Descripcion;
                            }
                            else
                            {
                                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Cliente_ClienteNoActivo, MessageBoxButton.OK, MessageImage.Error);
                                skAyudaCliente.Contexto            = new ClienteInfo();
                                skAyudaCliente.txtClave.Text       = string.Empty;
                                skAyudaCliente.txtDescripcion.Text = string.Empty;
                            }
                        }
                    }
                };
                skAyudaFolioEntrada.AsignarFoco();
            }
        }
        private void BtnGuardar_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                MuertesEnTransitoPL          muertePl     = new MuertesEnTransitoPL();
                ValidacionesFolioVentaMuerte validaciones = new ValidacionesFolioVentaMuerte();
                List <string> aretes = new List <string>();
                if (muertesEnTransitoInfoSeleccionado == null)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgFolioEntrada,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    txtArete.Clear();
                    skAyudaFolioEntrada.AsignarFoco();
                    return;
                }
                if (Animales.Count < muertesEnTransitoInfoSeleccionado.MuertesTransito)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgNroAretesEsMenor,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    txtArete.Focus();
                    return;
                }
                if (muertesEnTransitoInfoSeleccionado.MuertesTransito > muertesEnTransitoInfoSeleccionado.CabezasLote)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgNoTieneExistencia,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    return;
                }
                if (Contexto.Cliente == null || Contexto.Cliente.CodigoSAP.Length == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgSeleccionarProveedor,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    return;
                }
                foreach (AnimalInfo arete in dgAretes.ItemsSource)
                {
                    aretes.Add(arete.Arete);
                }
                validaciones = muertePl.ValidarFolio(muertesEnTransitoInfoSeleccionado.FolioEntrada, organizacionID, aretes);

                if (!validaciones.RegistroCondicionMuerte)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_FolioSinCondicionMuerte,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                    return;
                }

                if (validaciones.FolioConMuertesRegistradas)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_FolioConRegistroMuertes,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                    return;
                }

                if (!validaciones.EstatusLote)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_LoteInactivo,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                    return;
                }

                if (validaciones.Cabezas == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_LoteSinCabezas,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                    return;
                }
                if (validaciones.AretesInvalidos.Length > 0)
                {
                    var mensajeError = string.Empty;
                    mensajeError = string.Format(Properties.Resources.MuertesEnTransito_AreteConRegistroVentaMuerteTransito, validaciones.AretesInvalidos);
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      mensajeError,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    return;
                }
                if (validaciones.AretesActivos.Length > 0)
                {
                    var mensajeError = string.Empty;
                    mensajeError = string.Format(Properties.Resources.MuertesEnTransito_AreteActivoEnInventario, validaciones.AretesActivos);
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      mensajeError,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    return;
                }

                muertesEnTransitoInfoSeleccionado.Proveedor       = muertesEnTransitoInfoSeleccionado.Cliente.Descripcion;
                muertesEnTransitoInfoSeleccionado.CodigoProveedor = muertesEnTransitoInfoSeleccionado.Cliente.CodigoSAP;

                var    muertesEnTrasnsitoPl = new MuertesEnTransitoPL();
                var    folio   = skAyudaFolioEntrada.Clave;
                string mensaje = string.Empty;
                muertesEnTransitoInfoSeleccionado.UsuarioCreacionID = usuarioID;
                muertesEnTransitoInfoSeleccionado.OrganizacionID    = AuxConfiguracion.ObtenerOrganizacionUsuario();
                MemoryStream stream = muertesEnTrasnsitoPl.Guardar(muertesEnTransitoInfoSeleccionado, Animales);
                mensaje = string.Format(Properties.Resources.MuertesEnTransito_msgGuardar, folio.ToString());

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

                try
                {
                    if (stream != null)
                    {
                        var exportarPoliza = new ExportarPoliza();
                        exportarPoliza.ImprimirPoliza(stream,
                                                      string.Format("{0} {1}", "Poliza Salida Folio No.",
                                                                    folio));
                    }
                }
                catch
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.SalidaIndividualGanado_MensajeErrorAlImprimirPoliza,
                                      MessageBoxButton.OK, MessageImage.Warning);
                }

                InicializarFormulario();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  String.Format("{0}: {1}", Properties.Resources.MuertesEnTransito_msgErrorGuardar, ex.Message),
                                  MessageBoxButton.OK, MessageImage.Error);
            }
        }
        /// <summary>
        /// Obtiene los datos del elemento seleccionado en la ayuda Folio de Entrada.
        /// </summary>
        /// <param name="filtro"></param>
        private void ObtenerDatosAyudaFolioEntrada(string filtro)
        {
            List <string> aretes = new List <string>();

            muertesEnTransitoInfoSeleccionado = skAyudaFolioEntrada.Info;
            InicializarAyudaFolioEntrada();
            skAyudaCliente.LimpiarCampos();
            MuertesEnTransitoPL          muertePl     = new MuertesEnTransitoPL();
            ValidacionesFolioVentaMuerte validaciones = new ValidacionesFolioVentaMuerte();

            if (muertesEnTransitoInfoSeleccionado != null && muertesEnTransitoInfoSeleccionado.EntradaGanadoID != 0)
            {
                foreach (AnimalInfo arete in dgAretes.Items)
                {
                    aretes.Add(arete.Arete);
                }
                validaciones = muertePl.ValidarFolio(muertesEnTransitoInfoSeleccionado.FolioEntrada, organizacionID, aretes);
                if (!validaciones.RegistroCondicionMuerte)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_FolioSinCondicionMuerte,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else if (validaciones.FolioConMuertesRegistradas)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_FolioConRegistroMuertes,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else if (muertesEnTransitoInfoSeleccionado.MuertesTransito == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgNoTieneMuertes,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else if (muertesEnTransitoInfoSeleccionado.MuertesRegistradas != 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_msgMuertesRegistradas,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else if (!validaciones.EstatusLote)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_LoteInactivo,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else if (validaciones.Cabezas == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MuertesEnTransito_LoteSinCabezas,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                    InicializarFormulario();
                    skAyudaFolioEntrada.AsignarFoco();
                }
                else
                {
                    muertesEnTransitoInfoSeleccionado.OrganizacionID = organizacionID;
                    txtArete.IsEnabled    = true;
                    chkSinArete.IsChecked = false;
                    if (muertesEnTransitoInfoSeleccionado.TipoOrigenID == (int)TipoOrganizacion.CompraDirecta)
                    {
                        txtArete.IsEnabled    = false;
                        chkSinArete.IsChecked = true;
                    }
                    else
                    {
                        AnimalesDelCorral = new List <AnimalInfo>();
                        var muertesEnTransitoPl = new MuertesEnTransitoPL();
                        AnimalesDelCorral = muertesEnTransitoPl.ObtenerAretesPorFolioEntrada(muertesEnTransitoInfoSeleccionado);
                    }

                    if (ProveedoresAsignadosAlEmbarque(muertesEnTransitoInfoSeleccionado.EmbarqueID) <= 1)
                    {
                        var pl          = new ProveedorPL();
                        var cl          = new ClientePL();
                        var clienteInfo = new ClienteInfo();
                        var info        = new ProveedorInfo()
                        {
                            CodigoSAP = muertesEnTransitoInfoSeleccionado.CodigoProveedor
                        };

                        clienteInfo        = cl.ObtenerPorDescripcion(muertesEnTransitoInfoSeleccionado.Proveedor);
                        Contexto.Proveedor = pl.ObtenerPorCodigoSAP(info);
                        if (clienteInfo != null)
                        {
                            skAyudaCliente.IsEnabled = false;
                            muertesEnTransitoInfoSeleccionado.Cliente = clienteInfo;
                            skAyudaCliente.Clave       = muertesEnTransitoInfoSeleccionado.Cliente.CodigoSAP;
                            skAyudaCliente.Descripcion = muertesEnTransitoInfoSeleccionado.Cliente.Descripcion;
                            Contexto.Cliente           = clienteInfo;
                        }
                        else
                        {
                            skAyudaCliente.IsEnabled   = true;
                            skAyudaCliente.Clave       = string.Empty;
                            skAyudaCliente.Descripcion = string.Empty;
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                              Properties.Resources.MuertesEnTransito_ProveedorNoEsCliente,
                                              MessageBoxButton.OK, MessageImage.Warning);
                            skAyudaCliente.Focus();
                        }
                    }
                    else
                    {
                        skAyudaCliente.IsEnabled = true;
                    }

                    Contexto.Proveedor.EmbarqueID = muertesEnTransitoInfoSeleccionado.EmbarqueID;
                    countAreteGenerico            = muertesEnTransitoInfoSeleccionado.MuertesRegistradas + 1;
                    txtOrigen.Text            = muertesEnTransitoInfoSeleccionado.Origen;
                    txtTipoOrigen.Text        = muertesEnTransitoInfoSeleccionado.TipoOrigen;
                    txtCorral.Text            = muertesEnTransitoInfoSeleccionado.Corral;
                    txtLote.Text              = muertesEnTransitoInfoSeleccionado.Lote;
                    txtCabezas.Text           = muertesEnTransitoInfoSeleccionado.Cabezas.ToString();
                    txtMuertesEnTransito.Text = muertesEnTransitoInfoSeleccionado.MuertesTransito.ToString();
                    Animales.Clear();
                    dgAretes.Items.Refresh();
                    txtArete.Clear();
                    txtArete.Focus();
                }
            }
        }