private void BtnGuardar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                organizacionId = Extensor.ValorEntero(Application.Current.Properties["OrganizacionID"].ToString());
                usuarioId      = Convert.ToInt32(Application.Current.Properties["UsuarioID"]);

                if (ValidarDatos())
                {
                    var cancelado        = rdCancelarFactura.IsChecked.HasValue && rdCancelarFactura.IsChecked.Value;
                    var loteSacrificioPl = new LoteSacrificioPL();
                    TipoSacrificioEnum tipoSacrificio = (TipoSacrificioEnum)cboTipoSacrificio.SelectedItem;
                    bool ganadoPropio = tipoSacrificio == TipoSacrificioEnum.Propio;
                    loteSacrificioPl.ActualizarLoteSacrificio(new LoteSacrificioInfo
                    {
                        OrdenSacrificioId     = ordenSacrificioId,
                        Cliente               = skAyudaCliente.Info,
                        OrganizacionId        = organizacionId,
                        Observaciones         = txtObservaciones.Text.Trim(),
                        UsuarioModificacionId = usuarioId,
                        Cancelacion           = cancelado,
                        Fecha =
                            cancelado
                                                                              ? Convert.ToDateTime(txtFechaFactura.Text)
                                                                              : dtpFechaSacrificio.SelectedDate.Value
                    }, ganadoPropio);

                    if (rdGenerarFactura.IsChecked != null && (bool)rdGenerarFactura.IsChecked)
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.FacturacionSacrificio_MensajeGuardadoCorrectamente,
                                          MessageBoxButton.OK, MessageImage.Correct);
                    }
                    else
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.FacturacionSacrificio_MensajeCancelacionExitosa,
                                          MessageBoxButton.OK, MessageImage.Correct);
                    }
                    Limpiar();
                    rdGenerarFactura.IsChecked = true;
                }
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  ex.Message, MessageBoxButton.OK, MessageImage.Stop);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.FacturacionSacrificio_MensajeErrorAlGuardar,
                                  MessageBoxButton.OK, MessageImage.Warning);
            }
        }
        private bool ValidarDatos()
        {
            if (rdGenerarFactura.IsChecked != null && (bool)rdGenerarFactura.IsChecked)
            {
                if (dtpFechaSacrificio.SelectedDate == null)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeSeleccionarFecha,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }

                if (dtpFechaSacrificio.SelectedDate != null)
                {
                    var fechaServidorPl = new FechaPL();
                    var fechaServidor   = fechaServidorPl.ObtenerFechaActual();

                    DateTime fechaSeleccionada = dtpFechaSacrificio.SelectedDate.Value;
                    if (fechaSeleccionada.Date == fechaServidor.FechaActual.Date)
                    {
                        var loteSacrificioPl = new LoteSacrificioPL();
                        var datos            = loteSacrificioPl.ObtenerLoteSacrificio(fechaSeleccionada.AddDays(-1),
                                                                                      AuxConfiguracion.ObtenerOrganizacionUsuario());
                        if (datos != null)
                        {
                            if (datos.OrdenSacrificioId != 0)
                            {
                                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                  Properties.Resources.FacturacionSacrificio_MensajeNoSePuedeGenerarLaFactura,
                                                  MessageBoxButton.OK, MessageImage.Warning);
                                return(false);
                            }
                        }
                    }
                }

                if (ordenSacrificioId == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeNoSeHaSeleccionadoOrdenSacrificio, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }

                if (skAyudaCliente.Clave.Trim() == "")
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeDebeCapturarCliente, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }
            }

            if (rdCancelarFactura.IsChecked != null && (bool)rdCancelarFactura.IsChecked)
            {
                if (ordenSacrificioId == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeNoSeHaSeleccionadoOrdenSacrificio, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }

                if (txtObservaciones.Text.Trim() == "")
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeDebeCapturarObservaciones, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }

                if (SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      String.Format(Properties.Resources.FacturacionSacrificio_MensajeEstaSeguroCancelarFactura, txtFechaFactura.Text),
                                      MessageBoxButton.YesNo, MessageImage.Warning) == MessageBoxResult.No)
                {
                    return(false);
                }
            }

            return(true);
        }
        private void BtnBuscar_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var loteSacrificioPl = new LoteSacrificioPL();

                txtFolioOrdenSacrificio.Text = string.Empty;
                txtCabezas.Text  = string.Empty;
                txtCorrales.Text = string.Empty;
                skAyudaCliente.LimpiarCampos();
                skAyudaCliente.Info = new ClienteInfo();
                ordenSacrificioId   = 0;

                if (dtpFechaSacrificio.SelectedDate != null)
                {
                    DateTime fechaSeleccionada = dtpFechaSacrificio.SelectedDate.Value;

                    int organizacionID = AuxConfiguracion.ObtenerOrganizacionUsuario();

                    TipoSacrificioEnum tipoSacrificio = (TipoSacrificioEnum)cboTipoSacrificio.SelectedItem;
                    bool traspasoGanado = tipoSacrificio == TipoSacrificioEnum.Traspaso;
                    LoteSacrificioInfo datos;
                    if (traspasoGanado)
                    {
                        datos = loteSacrificioPl.ObtenerLoteSacrificioLucero(fechaSeleccionada, organizacionID);
                    }
                    else
                    {
                        datos = loteSacrificioPl.ObtenerLoteSacrificio(fechaSeleccionada, organizacionID);
                    }
                    if (datos != null)
                    {
                        if (datos.OrdenSacrificioId > 0)
                        {
                            ordenSacrificioId            = datos.OrdenSacrificioId;
                            txtFolioOrdenSacrificio.Text = datos.FolioOrdenSacrificio.ToString("N0",
                                                                                               CultureInfo.InvariantCulture);
                            txtCabezas.Text  = datos.Cabezas.ToString("N0", CultureInfo.InvariantCulture);
                            txtCorrales.Text = datos.Corrales.ToString("N0", CultureInfo.InvariantCulture);
                        }
                        else
                        {
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                              Properties.Resources.FacturacionSacrificio_MensajeNoExistenOrdenes,
                                              MessageBoxButton.OK, MessageImage.Warning);
                        }
                    }
                    else
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.FacturacionSacrificio_MensajeNoExistenOrdenes,
                                          MessageBoxButton.OK, MessageImage.Warning);
                    }
                }
                else
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeSeleccionarFecha,
                                      MessageBoxButton.OK, MessageImage.Warning);
                }
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  ex.Message, MessageBoxButton.OK, MessageImage.Stop);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.FacturacionSacrificio_MensajeErrorAlBuscar,
                                  MessageBoxButton.OK, MessageImage.Warning);
            }
        }
        private void BuscarCancelacion()
        {
            try
            {
                var loteSacrificioPl = new LoteSacrificioPL();
                int organizacionID   = AuxConfiguracion.ObtenerOrganizacionUsuario();

                TipoSacrificioEnum tipoSacrificio = (TipoSacrificioEnum)cboTipoSacrificio.SelectedItem;
                bool traspasoGanado = tipoSacrificio == TipoSacrificioEnum.Traspaso;
                LoteSacrificioInfo loteCancelar;
                if (traspasoGanado)
                {
                    loteCancelar =
                        loteSacrificioPl.ObtenerLoteSacrificioACancelarLucero(organizacionID);
                }
                else
                {
                    loteCancelar =
                        loteSacrificioPl.ObtenerLoteSacrificioACancelar(organizacionID);
                }
                if (loteCancelar != null)
                {
                    ordenSacrificioId        = loteCancelar.OrdenSacrificioId;
                    txtFechaFactura.Text     = loteCancelar.Fecha.ToShortDateString().ToString(CultureInfo.InvariantCulture);
                    txtCodigoSapCliente.Text = loteCancelar.Cliente.CodigoSAP;
                    txtNombreCliente.Text    = loteCancelar.Cliente.Descripcion;
                    List <LoteSacrificioInfo> loteDetalleCancelar;
                    if (traspasoGanado)
                    {
                        ordenSacrificioId   = 1;
                        loteDetalleCancelar =
                            loteSacrificioPl.ObtenerFacturasPorOrdenSacrificioACancelarLucero(organizacionID);
                    }
                    else
                    {
                        loteDetalleCancelar =
                            loteSacrificioPl.ObtenerFacturasPorOrdenSacrificioACancelar(loteCancelar.OrdenSacrificioId);
                    }
                    if (loteDetalleCancelar != null)
                    {
                        listaFacturas.DisplayMemberPath = "FolioFactura";
                        listaFacturas.ItemsSource       = loteDetalleCancelar;
                    }
                }
                else
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.FacturacionSacrificio_MensajeNoExistenFacturasParaCancelar,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    Limpiar();
                    rdGenerarFactura.IsChecked = true;
                }
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  ex.Message, MessageBoxButton.OK, MessageImage.Stop);
                Limpiar();
                rdGenerarFactura.IsChecked = true;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.FacturacionSacrificio_MensajeErrorBuscarCanceladas,
                                  MessageBoxButton.OK, MessageImage.Warning);
                Limpiar();
                rdGenerarFactura.IsChecked = true;
            }
        }