/// <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 AnimalMovimientoInfo ObtenerUltimoMovimientoAnimal(AnimalInfo animalInfo) { AnimalMovimientoInfo result; try { Logger.Info(); var animalBL = new AnimalBL(); result = animalBL.ObtenerUltimoMovimientoAnimal(animalInfo); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <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); } }
/// <summary> /// Metodo para guardar la salida a sacrificio a un animal /// </summary> /// <param name="animal"></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> private int GuardarSalidaIndividialSacrificio(AnimalInfo animal, int organizacion, string codigoCorral, int corraletaID, int usuarioCreacion, int tipoMovimiento, int operador) { int retorno = 0; var animalBl = new AnimalBL(); var corralBl = new CorralBL(); var animalMovimientoBl = new AnimalMovimientoBL(); var loteBl = new LoteBL(); var corralOrigen = corralBl.ObtenerCorralPorCodigo(organizacion, codigoCorral); if (corralOrigen != null) { var loteOrigen = loteBl.DeteccionObtenerPorCorral(organizacion, corralOrigen.CorralID); if (loteOrigen != null) { var corralDestino = corralBl.ObtenerPorId(corraletaID); if (corralDestino != null) { var loteDestino = loteBl.DeteccionObtenerPorCorral(organizacion, corralDestino.CorralID); if (loteDestino == null) { // Si el corral destino no tiene lo te se crea uno var loteBL = new LoteBL(); int loteIDGuardar = 0; var loteNuevo = new LoteInfo { Activo = EstatusEnum.Activo, Cabezas = 0, CabezasInicio = 0, CorralID = corralDestino.CorralID, DisponibilidadManual = false, OrganizacionID = organizacion, TipoCorralID = corralDestino.TipoCorral.TipoCorralID, TipoProcesoID = TipoProceso.EngordaPropio.GetHashCode(), UsuarioCreacionID = usuarioCreacion }; loteIDGuardar = loteBL.GuardaLote(loteNuevo); loteDestino = new LoteInfo { LoteID = loteIDGuardar }; } // Se obtiene la info del ultimo movimiento del animal 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); //loteBl.ActualizaNoCabezasEnLote(loteDestino, loteOrigen); } else { retorno = -1; } } else { retorno = -1; } } else { retorno = -1; } } else { retorno = -1; } return(retorno); }
/// <summary> /// Metodo para Guardar la Salida Ganado /// </summary> /// <param name="animalInactivo"></param> internal bool GuardarSalidaGanado(AnimalInfo animalInactivo) { var envioAnimal = false; try { Logger.Info(); var animalBL = new AnimalBL(); //Se obtiene el ultimo movimiento var ultimoMovimiento = animalBL.ObtenerUltimoMovimientoAnimal(animalInactivo); var salidaGanadoInfo = new SalidaGanadoInfo { Organizacion = new OrganizacionInfo { OrganizacionID = animalInactivo.OrganizacionIDEntrada }, TipoMovimiento = (TipoMovimiento)ultimoMovimiento.TipoMovimientoID, Activo = EstatusEnum.Activo, //VentaGanado = new VentaGanadoInfo(){VentaGanadoID = null}, UsuarioCreacionID = animalInactivo.UsuarioCreacionID }; if (ultimoMovimiento.TipoMovimientoID == (int)TipoMovimiento.SalidaPorVenta) { //Si el ultimo movimiento es venta obtener el ID de la VentaGanado var ventaDetalleBL = new VentaGanadoDetalleBL(); VentaGanadoDetalleInfo ventaDetalleInfo = ventaDetalleBL.ExisteAnimal(animalInactivo); if (ventaDetalleInfo != null) { salidaGanadoInfo.VentaGanado = new VentaGanadoInfo { VentaGanadoID = ventaDetalleInfo.VentaGanadoID }; } } var salidaGanadoDAL = new SalidaGanadoDAL(); SalidaGanadoInfo salidaGanado = null; //Se valida si la venta es if (salidaGanadoInfo.VentaGanado != null) { //Se busca la venta en la salida Ganado salidaGanado = salidaGanadoDAL.ExisteVentaEnSalidaGanado(salidaGanadoInfo); } if (salidaGanado == null) { //Se guarda en SalidaGanado salidaGanado = salidaGanadoDAL.GuardarSalidaGanado(salidaGanadoInfo, (int)TipoFolio.SalidaGanado); } //Se almacena SalidaAnimal var salidaAnimalBL = new SalidaAnimalBL(); var salidaAnimalInfo = new SalidaAnimalInfo() { SalidaGanado = salidaGanado, Animal = animalInactivo, Lote = new LoteInfo { LoteID = ultimoMovimiento.LoteID }, Activo = EstatusEnum.Activo, UsuarioCreacionID = animalInactivo.UsuarioCreacionID }; envioAnimal = salidaAnimalBL.Guardar(salidaAnimalInfo); envioAnimal = true; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(envioAnimal); }