/// <summary> /// Metodo que le da salida por venta al ganado /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> public MemoryStream GuardarSalidaIndividualGanadoVenta(SalidaIndividualInfo salidaIndividual) { try { Logger.Info(); var salidaBl = new SalidaIndividualBL(); MemoryStream result = new MemoryStream(); if (salidaIndividual.TipoVenta == TipoVentaEnum.Propio) { result = salidaBl.GuardarSalidaIndividualGanadoVenta(salidaIndividual); } else { result = salidaBl.GuardarSalidaGanadoVentaIntensiva(salidaIndividual); } return(result); } catch (ExcepcionServicio) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo que le da salida por venta al ganado /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> internal int GuardarSalidaIndividualGanadoVenta(SalidaIndividualInfo salidaIndividual) { try { Logger.Info(); Dictionary <string, object> parameters = AuxSalidaIndividualDAL.ObtenerParametrosGuardarSalidaIndividualGanado(salidaIndividual); int result = Create("SalidaIndividualVenta_GuardarGanadoVendido", parameters); return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los historicos de los animales que salieron por venta /// </summary> internal void GuardarAnimalHistoricos(SalidaIndividualInfo salidaIndividual) { try { Logger.Info(); Dictionary <string, object> parameters = AuxSalidaIndividualDAL.ObtenerParametrosGuardarHistoricos(salidaIndividual); Create("SalidaIndividualVenta_GuardarAnimalHistoricos", parameters); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private void GenerarMovimientosAnimalesVendidosIntensivo(List <AnimalInfo> animalesMuertos, SalidaIndividualInfo salidaIndividualInfo) { var animalMovimientoBL = new AnimalMovimientoBL(); var operadorBL = new OperadorBL(); var animalBL = new AnimalBL(); var listaAnimalesMuertos = new List <AnimalInfo>(); int pesoPromedio = (int)(salidaIndividualInfo.PesoBruto - salidaIndividualInfo.Peso) / salidaIndividualInfo.NumeroDeCabezas; foreach (var animalMuerto in animalesMuertos) { var animalInfo = animalBL.ObtenerAnimalAnimalID(animalMuerto.AnimalID); AnimalMovimientoInfo ultimoMovimientoAnimal = null; List <AnimalMovimientoInfo> ultimosMovimiento = animalMovimientoBL.ObtenerUltimoMovimientoAnimal(new List <AnimalInfo> { animalInfo }); if (ultimosMovimiento != null && ultimosMovimiento.Any()) { ultimoMovimientoAnimal = ultimosMovimiento.OrderByDescending(ani => ani.AnimalMovimientoID).FirstOrDefault(); } /* Insertamos el movimiento de Muerte */ /* Se genera el animal Movimiento para almacenarlo*/ if (ultimoMovimientoAnimal != null) { OperadorInfo operador = operadorBL.ObtenerPorUsuarioId(salidaIndividualInfo.Usuario, salidaIndividualInfo.Organizacion); var animalMovimientoInfo = new AnimalMovimientoInfo { AnimalID = animalInfo.AnimalID, OrganizacionID = ultimoMovimientoAnimal.OrganizacionID, CorralID = ultimoMovimientoAnimal.CorralID, LoteID = ultimoMovimientoAnimal.LoteID, Peso = pesoPromedio, Temperatura = 0, TipoMovimientoID = (int)TipoMovimiento.SalidaPorVenta, TrampaID = ultimoMovimientoAnimal.TrampaID, OperadorID = operador != null ? operador.OperadorID : 0, Observaciones = string.Empty, Activo = EstatusEnum.Activo, UsuarioCreacionID = salidaIndividualInfo.Usuario }; /* Se almacena el animalMovimiento */ animalMovimientoBL.GuardarAnimalMovimiento(animalMovimientoInfo); animalInfo.UsuarioModificacionID = salidaIndividualInfo.Usuario; /* Se da de baja el animal */ animalBL.InactivarAnimal(animalInfo); /* Enviar al historico el animal inactivo */ listaAnimalesMuertos.Add(animalInfo); } } if (listaAnimalesMuertos.Any()) { animalBL.EnviarAHistorico(listaAnimalesMuertos); } }
/// <summary> /// Metodo que da salida por venta al ganado intensivo cuano se selcciona tipoventa Externo /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> internal MemoryStream GuardarSalidaGanadoVentaIntensiva(SalidaIndividualInfo salidaIndividual) { MemoryStream retorno = null; try { PolizaAbstract poliza; IList <PolizaInfo> polizaSalidaVenta; TicketInfo Ticket = new TicketInfo(); CorralInfo corralInfo = new CorralInfo(); CorralBL corralB = new CorralBL(); GanadoIntensivoBL salidaGanadoCosto = new GanadoIntensivoBL(); GanadoIntensivoInfo salidaGanadoInfo = new GanadoIntensivoInfo(); corralInfo = corralB.ObtenerCorralActivoPorCodigo(salidaIndividual.Organizacion, salidaIndividual.Corral); corralInfo.Organizacion = new OrganizacionInfo(); corralInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo = salidaGanadoCosto.ObtenerMuerteGanadoIntensivo(corralInfo); salidaGanadoInfo.Organizacion = new OrganizacionInfo(); salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo.Observaciones = ""; Ticket.FolioTicket = salidaIndividual.FolioTicket; Ticket.Organizacion = salidaIndividual.Organizacion; var ventaGanadoBL = new VentaGanadoBL(); VentaGanadoInfo salidaPorVentaGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicket(Ticket); var loteBL = new LoteBL(); CorralBL corralBl = new CorralBL(); LoteInfo lote = loteBL.ObtenerPorID(salidaPorVentaGanado.LoteID); int iCabezasTotalLote = lote.Cabezas; lote.Cabezas -= salidaIndividual.NumeroDeCabezas; //lote.Corral = corralBl.ObtenerCorralPorLoteID(lote.LoteID, salidaIndividual.Organizacion); //lote.Corral = corralBl.ObtenerCorralPorCodigo() using (var scope = new TransactionScope()) { Logger.Info(); var salidaIndividualDAL = new SalidaIndividualDAL(); var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = lote.LoteID, LoteIDDestino = 0, CabezasProcesadas = salidaIndividual.NumeroDeCabezas, UsuarioModificacionID = salidaIndividual.Usuario }; loteBL.ActualizarCabezasProcesadas(filtroActualizaCabezas); salidaGanadoInfo.ListaGanadoIntensivoCosto = new List <GanadoIntensivoCostoInfo>(); foreach ( var entradaCosteo in salidaGanadoInfo.EntradaGanadoCosteo.ListaCostoEntrada.OrderBy(id => id.Costo.CostoID)) { var costoInt = new GanadoIntensivoCostoInfo(); costoInt.Costos = new CostoInfo(); costoInt.Costos = entradaCosteo.Costo; costoInt.Costos.ImporteCosto = (entradaCosteo.Importe / salidaGanadoInfo.EntradaGanado.CabezasRecibidas) * salidaIndividual.NumeroDeCabezas; costoInt.Importe = costoInt.Costos.ImporteCosto; salidaGanadoInfo.ListaGanadoIntensivoCosto.Add(costoInt); } salidaGanadoInfo.TipoMovimientoID = TipoMovimiento.SalidaVentaIntensivo; //salidaIndividualDAL.GuardarSalidaIndividualGanadoVenta(salidaIndividual); salidaGanadoInfo.TotalCabezas = salidaIndividual.NumeroDeCabezas; salidaGanadoInfo.FolioTicket = salidaIndividual.FolioTicket; salidaGanadoInfo.TipoFolio = TipoFolio.VentaGanadoIntensivo; salidaGanadoInfo.PesoBruto = salidaIndividual.PesoBruto; salidaGanadoInfo.UsuarioCreacionID = salidaIndividual.Usuario; salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo.CabezasText = salidaIndividual.NumeroDeCabezas.ToString(); salidaGanadoCosto.Guardar(salidaGanadoInfo); #region Poliza List <ContenedorVentaGanado> ventasGanado = ventaGanadoBL.ObtenerVentaGanadoIntensivoPorTicketPoliza(Ticket); if (ventasGanado != null && ventasGanado.Any()) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVentaIntensiva); for (int i = 0; i < ventasGanado.Count; i++) { ventasGanado[i].EntradaGandoId = salidaGanadoInfo.EntradaGanado.EntradaGanadoID; ventasGanado[i].OrganizacionId = Ticket.Organizacion; ventasGanado[i].Lote = lote; } polizaSalidaVenta = poliza.GeneraPoliza(ventasGanado); if (polizaSalidaVenta != null && polizaSalidaVenta.Any()) { polizaSalidaVenta.ToList().ForEach( org => { org.OrganizacionID = Ticket.Organizacion; org.UsuarioCreacionID = salidaIndividual.Usuario; org.ArchivoEnviadoServidor = 1; }); retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaVenta); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaSalidaVenta, TipoPoliza.SalidaVentaIntensiva); } } // Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeGanadoIntensivo(Ticket.FolioTicket, Ticket.Organizacion); #endregion Poliza scope.Complete(); } return(retorno); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo que le da salida por venta al ganado /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> internal MemoryStream GuardarSalidaIndividualGanadoVenta(SalidaIndividualInfo salidaIndividual) { MemoryStream retorno = null; try { PolizaAbstract poliza; IList <PolizaInfo> polizaSalidaVenta; TicketInfo Ticket = new TicketInfo(); Ticket.FolioTicket = salidaIndividual.FolioTicket; Ticket.Organizacion = salidaIndividual.Organizacion; Ticket.TipoVenta = salidaIndividual.TipoVenta; var ventaGanadoBL = new VentaGanadoBL(); VentaGanadoInfo salidaPorVentaGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicket(Ticket); var loteBL = new LoteBL(); LoteInfo lote = loteBL.ObtenerPorID(salidaPorVentaGanado.LoteID); lote.Cabezas -= salidaIndividual.NumeroDeCabezas; AnimalBL animalBl = new AnimalBL(); using (var scope = new TransactionScope()) { Logger.Info(); var salidaIndividualDAL = new SalidaIndividualDAL(); VentaGanadoDetalleBL ventaGanadoDetalleBl = new VentaGanadoDetalleBL(); List <VentaGanadoDetalleInfo> listaVentaGanadoDetalle = ventaGanadoDetalleBl.ObtenerVentaGanadoPorTicket(salidaPorVentaGanado.VentaGanadoID); List <AnimalCostoInfo> animalCosto = new List <AnimalCostoInfo>(); AnimalCostoBL animalCostoBl = new AnimalCostoBL(); List <AnimalInfo> animalesConsulta = new List <AnimalInfo>(); List <AnimalInfo> animalesProcesar = new List <AnimalInfo>(); foreach (VentaGanadoDetalleInfo ventaGanado in listaVentaGanadoDetalle) { animalesConsulta = new List <AnimalInfo>(); ventaGanado.Animal = animalBl.ObtenerAnimalPorArete(ventaGanado.Arete, Ticket.Organizacion); if (ventaGanado.Animal == null) { ventaGanado.Animal = animalBl.ObtenerAnimalPorAreteTestigo(ventaGanado.AreteMetalico, Ticket.Organizacion); } animalesConsulta.Add(ventaGanado.Animal); animalCosto = animalCostoBl.ObtenerCostosAnimal(animalesConsulta); if (!animalCosto.Any(registro => registro.CostoID == Costo.CostoGanado.GetHashCode())) { animalesProcesar.Add(ventaGanado.Animal); } } if (animalesProcesar != null && animalesProcesar.Count > 0) { animalBl.ProcesoGenerarCostos(animalesProcesar); } salidaIndividualDAL.GuardarSalidaIndividualGanadoVenta(salidaIndividual); salidaIndividualDAL.GuardarCostosHistoricos(salidaIndividual); salidaIndividualDAL.GuardarConsumoHistoricos(salidaIndividual); salidaIndividualDAL.GuardarAnimalHistoricos(salidaIndividual); var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = lote.LoteID, LoteIDDestino = 0, CabezasProcesadas = salidaIndividual.NumeroDeCabezas, UsuarioModificacionID = salidaIndividual.Usuario }; loteBL.ActualizarCabezasProcesadas(filtroActualizaCabezas); //loteBL.ActualizaNoCabezasEnLote(lote, lote); #region Poliza List <ContenedorVentaGanado> ventasGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicketPoliza(Ticket.FolioTicket, Ticket.Organizacion); if (ventasGanado != null && ventasGanado.Any()) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVenta); polizaSalidaVenta = poliza.GeneraPoliza(ventasGanado); if (polizaSalidaVenta != null && polizaSalidaVenta.Any()) { polizaSalidaVenta.ToList().ForEach( org => { org.OrganizacionID = Ticket.Organizacion; org.UsuarioCreacionID = salidaIndividual.Usuario; org.ArchivoEnviadoServidor = 1; }); retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaVenta); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaSalidaVenta, TipoPoliza.SalidaVenta); } } // Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeGanado(Ticket.FolioTicket, Ticket.Organizacion); #endregion Poliza scope.Complete(); } return(retorno); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private void btnGuardar_Click(object sender, RoutedEventArgs e) { int folioTicket, numeroDeCabezas; decimal pesoNeto, peso, pesoBruto; string corral = string.Empty; TipoVentaEnum tipoVenta; if (txtFolioTicket.Text.Trim() != string.Empty) { var salida = new SalidaIndividualPL(); folioTicket = int.Parse(txtFolioTicket.Text.Trim()); pesoNeto = Convert.ToDecimal(txtPesoNeto.Value); pesoBruto = Convert.ToDecimal(txtPesoBruto.Value); numeroDeCabezas = int.Parse(lblNumeroTotalCabezas.Content.ToString().Trim()); peso = pesoNeto / numeroDeCabezas; corral = txtCorral.Text; if ((string)cmbTipo.SelectedItem == Properties.Resources.SalidaIndividualDeGanado_cmbTipoExterno) { tipoVenta = TipoVentaEnum.Externo; } else { tipoVenta = TipoVentaEnum.Propio; } try { var salidaIndividual = new SalidaIndividualInfo { FolioTicket = folioTicket, PesoBruto = pesoBruto, Peso = peso, NumeroDeCabezas = numeroDeCabezas, Organizacion = organizacionID, Usuario = usuario, TipoVenta = tipoVenta, Corral = corral }; MemoryStream stream = salida.GuardarSalidaIndividualGanadoVenta(salidaIndividual); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.SalidaIndividualGanado_MensajeGuardadoOK, MessageBoxButton.OK, MessageImage.Correct); try { if (stream != null) { var exportarPoliza = new ExportarPoliza(); exportarPoliza.ImprimirPoliza(stream, string.Format("{0} {1}", "Poliza Salida Folio No.", folioTicket)); } } catch { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.SalidaIndividualGanado_MensajeErrorAlImprimirPoliza, MessageBoxButton.OK, MessageImage.Warning); } _pesoTomado = false; Limpiar(); } 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.SalidaIndividualGanado_MensajeErrorAlGuardar, MessageBoxButton.OK, MessageImage.Warning); _pesoTomado = false; Limpiar(); } } }
internal static Dictionary <string, object> ObtenerParametrosGuardarSalidaIndividualGanado(SalidaIndividualInfo salidaIndividual) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@FolioTicket", salidaIndividual.FolioTicket }, { "@PesoBruto", salidaIndividual.PesoBruto }, { "@Peso", salidaIndividual.Peso }, { "@NumeroDeCabezas", salidaIndividual.NumeroDeCabezas }, { "@OrganizacionID", salidaIndividual.Organizacion }, { "@UsuarioCreacionID", salidaIndividual.Usuario }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }