internal int GuardarDetalle(GrupoVentaGanadoInfo venta) { var animalBL = new AnimalBL(); var corralBl = new CorralBL(); var loteBl = new LoteBL(); try { Logger.Info(); int retorno; using (var transaccion = new TransactionScope()) { var ventaGanadoDetalleDAL = new VentaGanadoDetalleDAL(); //Obtener Corral y Lote var corral = corralBl.ObtenerCorralPorCodigo(venta.OrganizacionId, venta.CodigoCorral); var lote = loteBl.ObtenerPorCorralCerrado(venta.OrganizacionId, corral.CorralID); if (venta.TipoVenta == Info.Enums.TipoVentaEnum.Propio) { //Validar si tenemos animales que pertenezcan a la carga inicial var listaCargaInicial = venta.VentaGandadoDetalle.Where(animal => animal.Animal.CargaInicial).ToList(); if (listaCargaInicial != null && listaCargaInicial.Any()) { foreach (var animal in listaCargaInicial) { var animalInventario = animalBL.ObtenerAnimalPorArete(animal.Arete, venta.OrganizacionId); var deteccionGrabar = new DeteccionInfo { CorralID = corral.CorralID, LoteID = lote.LoteID, UsuarioCreacionID = venta.VentaGanado.UsuarioModificacionID }; // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial animalBL.ReemplazarAretes(animalInventario, deteccionGrabar); } } } retorno = ventaGanadoDetalleDAL.GuardarDetalle(venta); // Se cierral la transaccion transaccion.Complete(); } return(retorno); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// The validar agregar arete. /// </summary> /// <param name="animal"> /// The animal. /// </param> /// <param name="corral"> /// The corral. /// </param> /// <returns> /// The <see cref="ResultadoValidacion"/>. /// </returns> /// <exception cref="ExcepcionDesconocida"> /// </exception> internal ResultadoValidacion ValidarAgregarArete(AnimalInfo animal, CorralInfo corral) { try { var resultado = new ResultadoValidacion(); var animalBl = new AnimalBL(); if (corral == null) { resultado.Resultado = false; resultado.Mensaje = ResourceServices.RevisionImplante_msgFaltaCorral; return(resultado); } AnimalInfo animalResultado = animalBl.ObtenerAnimalPorArete(animal.Arete, animal.OrganizacionIDEntrada); if (animalResultado == null) { resultado.Resultado = false; resultado.Mensaje = ResourceServices.RevisionImplante_msgAreteInvalido; return(resultado); } AnimalMovimientoInfo movimientos = animalBl.ObtenerUltimoMovimientoAnimal(animalResultado); if (movimientos == null) { resultado.Resultado = false; resultado.Mensaje = ResourceServices.RevisionImplante_msgSinMovimientos; return(resultado); } if (movimientos.CorralID != corral.CorralID) { resultado.Resultado = false; resultado.Mensaje = ResourceServices.RevisionImplante_msgFaltaCorral; return(resultado); } resultado.Resultado = true; resultado.Control = animalResultado; return(resultado); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
public AnimalInfo ObtenerAnimalPorArete(string arete, int organizacionId) { AnimalInfo result; try { Logger.Info(); var animalBL = new AnimalBL(); result = animalBL.ObtenerAnimalPorArete(arete, organizacionId); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <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); } }
/// <summary> /// Metodo para Guardar/Modificar un Corral /// </summary> /// <param name="arete"></param> /// <param name="organizacion"></param> /// <param name="codigoCorral"></param> /// <param name="corraletaID"></param> /// <param name="usuarioCreacion"></param> /// <param name="tipoMovimiento"></param> /// <param name="operador"></param> internal int Guardar(string arete, int organizacion, string codigoCorral, int corraletaID, int usuarioCreacion, int tipoMovimiento, int operador) { int retorno = 0; try { Logger.Info(); var salidaIndividualDAL = new SalidaIndividualDAL(); var animalBl = new AnimalBL(); var corralBl = new CorralBL(); var loteBl = new LoteBL(); using (var transaccion = new TransactionScope()) { var animal = animalBl.ObtenerAnimalPorArete(arete, organizacion); if (animal != null) { if (tipoMovimiento == TipoMovimiento.SalidaPorRecuperacion.GetHashCode()) { var corralOrigen = corralBl.ObtenerCorralPorCodigo(organizacion, codigoCorral); var loteOrigen = new LoteInfo(); if (corralOrigen != null) { loteOrigen = loteBl.DeteccionObtenerPorCorral(organizacion, corralOrigen.CorralID); } var corralDestino = corralBl.ObtenerPorId(corraletaID); var loteDestino = new LoteInfo(); if (corralDestino != null) { loteDestino = loteBl.DeteccionObtenerPorCorral(organizacion, corralDestino.CorralID); } if (corralOrigen != null) { if (loteOrigen != null) { if (corralDestino != null) { if (corralDestino.TipoCorral.TipoCorralID != TipoCorral.CorraletaRecuperado.GetHashCode() && corralDestino.TipoCorral.TipoCorralID != TipoCorral.CorraletaRecuperadosPartida.GetHashCode()) { if (loteDestino != null) { var animalMovimientoBl = new AnimalMovimientoBL(); var ultimoMovimiento = animalBl.ObtenerUltimoMovimientoAnimal(animal); if (ultimoMovimiento != null) { var animalMovimientoOrigen = new AnimalMovimientoInfo { AnimalID = animal.AnimalID, CorralID = corralDestino.CorralID, LoteID = loteDestino.LoteID, TipoMovimientoID = tipoMovimiento, OperadorID = operador, OrganizacionID = organizacion, TrampaID = ultimoMovimiento.TrampaID, Peso = ultimoMovimiento.Peso, Temperatura = ultimoMovimiento.Temperatura, UsuarioCreacionID = usuarioCreacion }; animalMovimientoBl.GuardarAnimalMovimiento(animalMovimientoOrigen); loteOrigen.Cabezas = loteOrigen.Cabezas - 1; loteDestino.Cabezas = loteDestino.Cabezas + 1; loteDestino.CabezasInicio = loteDestino.CabezasInicio + 1; var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = loteOrigen.LoteID, LoteIDDestino = loteDestino.LoteID, CabezasProcesadas = 1, UsuarioModificacionID = usuarioCreacion }; loteBl.ActualizarCabezasProcesadas(filtroActualizaCabezas); } else { retorno = -1; } } else { retorno = -1; } } else { var loteBL = new LoteBL(); var animalMovimientoBl = new AnimalMovimientoBL(); var ultimoMovimiento = animalBl.ObtenerUltimoMovimientoAnimal(animal); LoteInfo loteDestinoCorraleta = loteBL.DeteccionObtenerPorCorral(organizacion, corralDestino.CorralID); int loteIDGuardar = 0; if (loteDestinoCorraleta == null || loteDestinoCorraleta.Activo == EstatusEnum.Inactivo) { var loteNuevo = new LoteInfo { Activo = EstatusEnum.Activo, Cabezas = 1, CabezasInicio = 1, CorralID = corralDestino.CorralID, DisponibilidadManual = false, OrganizacionID = organizacion, TipoCorralID = corralDestino.TipoCorral.TipoCorralID, TipoProcesoID = TipoProceso.EngordaPropio.GetHashCode(), UsuarioCreacionID = usuarioCreacion }; loteIDGuardar = loteBL.GuardaLote(loteNuevo); } else { loteIDGuardar = loteDestinoCorraleta.LoteID; loteDestinoCorraleta.Cabezas = loteDestinoCorraleta.Cabezas + 1; var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = 0, LoteIDDestino = loteDestinoCorraleta.LoteID, CabezasProcesadas = 1, UsuarioModificacionID = usuarioCreacion }; loteBl.ActualizarCabezasProcesadas(filtroActualizaCabezas); //loteBl.ActualizaNoCabezasEnLote(loteDestinoCorraleta, loteDestinoCorraleta); } if (ultimoMovimiento != null) { var animalMovimientoOrigen = new AnimalMovimientoInfo { AnimalID = animal.AnimalID, CorralID = corralDestino.CorralID, LoteID = loteIDGuardar, TipoMovimientoID = tipoMovimiento, OrganizacionID = organizacion, OperadorID = operador, TrampaID = ultimoMovimiento.TrampaID, Peso = ultimoMovimiento.Peso, Temperatura = ultimoMovimiento.Temperatura, UsuarioCreacionID = usuarioCreacion }; animalMovimientoBl.GuardarAnimalMovimiento(animalMovimientoOrigen); loteOrigen.Cabezas = loteOrigen.Cabezas - 1; var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = loteOrigen.LoteID, LoteIDDestino = 0, CabezasProcesadas = 1, UsuarioModificacionID = usuarioCreacion }; loteBl.ActualizarCabezasProcesadas(filtroActualizaCabezas); } else { retorno = -1; } } } else { retorno = -1; } } else { retorno = -1; } } else { retorno = -1; } } else//Salida por sacrificio { // Se crean los movimientos del animal retorno = GuardarSalidaIndividialSacrificio(animal, organizacion, codigoCorral, corraletaID, usuarioCreacion, tipoMovimiento, operador); // Se crea registro en animal Salida retorno = salidaIndividualDAL.Guardar(arete, organizacion, codigoCorral, corraletaID, usuarioCreacion, tipoMovimiento); } } else { retorno = -1; } transaccion.Complete(); } return(retorno); } catch (ExcepcionGenerica) { retorno = -1; throw; } catch (Exception ex) { retorno = -1; Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }