/// <summary> /// Parametros para guardado de muerte /// </summary> /// <param name="muerte"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosGuardarMuerte(MuerteInfo muerte) { try { Logger.Info(); var xml = new XElement("ROOT", new XElement("MuerteGrabar", new XElement("Organizacion", muerte.OrganizacionId), new XElement("CorralID", muerte.CorralId), new XElement("Arete", muerte.Arete), new XElement("AreteMetalico", muerte.AreteMetalico), new XElement("Observaciones", muerte.Observaciones), new XElement("LoteID", muerte.LoteId), new XElement("OperadorDeteccion", muerte.OperadorDeteccionId), new XElement("FotoDeteccion", muerte.FotoDeteccion), new XElement("EstatusID", muerte.EstatusId), new XElement("Activo", muerte.Activo), new XElement("UsuarioID", muerte.UsuarioCreacionID) ) ); var parametros = new Dictionary <string, object> { { "@XmlMuerte", xml.ToString() } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene de la base de datos la informacion de una cabeza de ganado muerta /// </summary> /// <param name="organizacionId">Id Organizacion</param> /// <param name="numeroArete">Numero de arete</param> /// <returns></returns> internal MuerteInfo ObtenerGanadoMuertoPorArete(int organizacionId, string numeroArete) { MuerteInfo retValue = null; try { Logger.Info(); Dictionary <string, object> parameters = AuxMuerteDAL.ObtenerParametrosPorOrganizacionArete(organizacionId, numeroArete); DataSet ds = Retrieve("SalidaPorMuerte_ObtenerMuertePorArete", parameters); if (ValidateDataSet(ds)) { retValue = MapMuerteDAL.ObtenerGanadoMuertoPorArete(ds); } } 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); } return(retValue); }
private string GenerarAreteGenerico(MuerteInfo muerte) { IList <MuerteInfo> animalesMuertos = ObtenerGanadoMuertoPorLoteID(muerte.LoteId); string organzacion = muerte.OrganizacionId.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); string corral = Convert.ToString(new Random(1).Next(999)).PadLeft(3, '0'); string anio = DateTime.Now.Year.ToString(CultureInfo.InvariantCulture); string mes = DateTime.Now.Month.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); string dia = DateTime.Now.Day.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); string consecutivo = string.Empty; if (animalesMuertos == null || !animalesMuertos.Any()) { consecutivo = "01"; } else { IList <MuerteInfo> aretesLongitudGenerica = animalesMuertos.Where(muerto => muerto.Arete.Length == 15).OrderByDescending(muer => muer.MuerteId). ToList(); if (!aretesLongitudGenerica.Any()) { consecutivo = "01"; } foreach (var muerteInfo in aretesLongitudGenerica) { string organizacionMuerte = muerteInfo.Arete.Substring(0, 2); //Obtener la organizacion if (organzacion != organizacionMuerte) { continue; } string anioMuerte = muerteInfo.Arete.Substring(5, 4); //Obtener el Año if (anio != anioMuerte) { continue; } string mesMuerte = muerteInfo.Arete.Substring(9, 2); //Obtener el mes if (mes != mesMuerte) { continue; } string diaMuerte = muerteInfo.Arete.Substring(11, 2); //Obtener el dia if (dia != diaMuerte) { continue; } int consecutivoMuerte = Convert.ToInt32(muerteInfo.Arete.Substring(13, 2)) + 1; consecutivo = consecutivoMuerte.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); break; } } if (string.IsNullOrWhiteSpace(consecutivo)) { consecutivo = "01"; } string areteGenerico = string.Format("{0}{1}{2}{3}{4}{5}", organzacion, corral, anio, mes, dia, consecutivo); return(areteGenerico); }
/// <summary> /// Almacena una muerte en la tabla de muertes desde deteccion de ganado /// </summary> /// <param name="muerte"></param> /// <returns></returns> internal int GuardarMuerte(MuerteInfo muerte) { int retValue = -1; try { Logger.Info(); Dictionary <string, object> parameters = AuxMuerteDAL.ObtenerParametrosGuardarMuerte(muerte); retValue = Create("DeteccionGanado_GrabarMuerte", parameters); retValue = 1; } 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); } return(retValue); }
/// <summary> /// Obtiene las muertes por fecha Necropsia /// </summary> /// <param name="muerteInfo"></param> /// <returns></returns> public IList <SalidaGanadoMuertoInfo> ObtenerMuertesFechaNecropsia(MuerteInfo muerteInfo) { IList <SalidaGanadoMuertoInfo> listaMuertesInfo = null; try { Logger.Info(); Dictionary <string, object> parameters = AuxMuerteDAL.ObtenerParametrosMuertesFechaNecropsia(muerteInfo); DataSet ds = Retrieve("SalidaPorMuerte_ObtenerMuertosFechaNecropsia", parameters); if (ValidateDataSet(ds)) { listaMuertesInfo = MapMuerteDAL.ObtenerMuertesFechaNecropsia(ds); } } 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); } return(listaMuertesInfo); }
public static string CancelarMovimientoMuerte(MuerteInfo ganadoMuertoInfo) { try { ganadoMuertoInfo.Activo = EstatusEnum.Activo; ganadoMuertoInfo.UsuarioCreacionID = usuarioID; ganadoMuertoInfo.EstatusId = (int)EstatusMuertes.Cancelado; ganadoMuertoInfo.OperadorCancelacionInfo = new OperadorInfo { OperadorID = usuario.Usuario.Operador.OperadorID }; var muertePL = new MuertePL(); muertePL.CancelarMovimientoMuerte(ganadoMuertoInfo); return("OK"); } catch (Exception ex) { Logger.Error(ex); throw; } }
/// <summary> /// Actualiza la tabla de muertes con la informacion de la recoleccion /// </summary> /// <param name="muerte">Identificador de la muerte</param> /// <param name="operadorId">Identificador del Operador</param> /// <returns></returns> internal int GuardarRecoleccionGanadoMuerto(MuerteInfo muerte, int operadorId) { int retValue = -1; try { Logger.Info(); Dictionary <string, object> parameters = AuxMuerteDAL.ObtenerParametrosMuerteRecoleccion(muerte, operadorId); Update("CheckListGanadoMuerto_GuardarRecoleccion", parameters); retValue = 1; } 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); } return(retValue); }
public static AnimalInfo ObtenerExisteArete(string arete) { AnimalInfo animal = null; try { var animalPL = new AnimalPL(); var muertePL = new MuertePL(); var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID; animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId); if (animal != null) { MuerteInfo muerto = muertePL.ObtenerMuertoPorArete(organizacionId, arete); if (muerto != null) { animal.AnimalID = -1; } } //ObtenerCorralDestinoAnimal(arete); } catch (Exception ex) { Logger.Error(ex); } return(animal); }
public static Response <MuerteInfo> GuardarSalida(string value) { Response <MuerteInfo> retValue = null; try { var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; //informacion del la organzacion y usuario if (seguridad != null) { var values = Utilerias.Deserializar <MuerteInfo>(value); var guardarPl = new MuertePL(); var muerte = new MuerteInfo() { MuerteId = values.MuerteId, AnimalId = values.AnimalId, LoteId = values.LoteId, CorralId = values.CorralId, OrganizacionId = seguridad.Usuario.Organizacion.OrganizacionID, ProblemaId = values.ProblemaId, FotoNecropsia = values.FotoNecropsia, Observaciones = values.Observaciones, Arete = values.Arete, AreteMetalico = values.AreteMetalico, OperadorNecropsiaId = seguridad.Usuario.Operador.OperadorID, Peso = values.Peso, UsuarioCreacionID = seguridad.Usuario.UsuarioID, EstatusId = (int)EstatusMuertes.Necropsia, CorralCodigo = values.CorralCodigo }; if (muerte != null) { muerte.FotoNecropsia = TipoFoto.Necropsia.ToString() + '/' + muerte.FotoNecropsia; } var resultado = guardarPl.GuardarSalidaPorMuerteNecropsia(muerte); if (resultado == 1) { retValue = Response <MuerteInfo> .CrearResponseVacio <MuerteInfo>(true, "OK"); } } else { retValue = Response <MuerteInfo> .CrearResponseVacio <MuerteInfo>(false, "Fallo al guardar salida. Su sesión a expirado, por favor ingrese de nuevo"); } } catch (Exception ex) { retValue = Response <MuerteInfo> .CrearResponseVacio <MuerteInfo>(false, "Error inesperado: " + ex.InnerException.Message); } return(retValue); }
/// <summary> /// Guarda la informacion de un arete muerto /// </summary> /// <param name="muerte"></param> /// <param name="esCargaInicial"></param> /// <param name="animal"></param> /// <returns></returns> internal int GuardarMuerte(MuerteInfo muerte, FlagCargaInicial esCargaInicial, AnimalInfo animal) { try { Logger.Info(); int resultado; using (var transaccion = new TransactionScope()) { if (animal != null) { var animalBL = new AnimalBL(); // Se valida el flag de EsCargaInicial switch (esCargaInicial) { case FlagCargaInicial.EsCargaInicial: var deteccionGrabar = new DeteccionInfo { CorralID = muerte.CorralId, LoteID = muerte.LoteId, UsuarioCreacionID = muerte.UsuarioCreacionID }; // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial animalBL.ReemplazarAretes(animal, deteccionGrabar); break; case FlagCargaInicial.EsAreteNuevo: // Se Reemplaza arete nuevo sobre uno existente del lote animalBL.ReemplazarAreteMismoCorral(animal); break; } } if (muerte.Corral.GrupoCorral != GrupoCorralEnum.Recepcion.GetHashCode() && string.IsNullOrWhiteSpace(muerte.Arete)) { muerte.Arete = GenerarAreteGenerico(muerte); } var muerteDal = new MuerteDAL(); resultado = muerteDal.GuardarMuerte(muerte); // Se cierral la transaccion transaccion.Complete(); } return(resultado); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene los datos mapeados de ganado muerto /// </summary> /// <param name="ds"></param> /// <returns></returns> internal static MuerteInfo ObtenerGanadoMuertoPorArete(DataSet ds) { try { DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; MuerteInfo result = (from info in dt.AsEnumerable() select new MuerteInfo { /* MU.MuerteId, MU.Arete, MU.AreteMetalico, MU.Observaciones, MU.LoteId, MU.OperadorDeteccion, MU.FechaDeteccion, MU.FotoDeteccion, * MU.OperadorRecoleccion, MU.FechaRecoleccion, MU.OperadorNecropsia, MU.FechaNecropsia, MU.EstatusID, MU.ProblemaID, MU.FechaCreacion, * LT.Lote, LT.OrganizacionId, CR.Codigo,MU.Activo, AnimalId, peso */ OrganizacionId = info.Field <int>("OrganizacionId"), AnimalId = info.Field <long>("AnimalId"), MuerteId = info.Field <int>("MuerteId"), Arete = info.Field <string>("Arete").Trim(), AreteMetalico = info["AreteMetalico"] == DBNull.Value ? String.Empty : info.Field <string>("AreteMetalico"), Observaciones = info.Field <string>("Observaciones").Trim(), LoteId = info.Field <int>("LoteId"), OperadorDeteccionId = info["OperadorDeteccion"] == DBNull.Value ? 0 : info.Field <int>("OperadorDeteccion"), FechaDeteccion = info["FechaDeteccion"] == DBNull.Value ? new DateTime(1900, 1, 1) : info.Field <DateTime>("FechaDeteccion"), FotoDeteccion = info["FotoDeteccion"] == DBNull.Value ? String.Empty : info.Field <string>("FotoDeteccion").Trim(), OperadorRecoleccionId = info.Field <int>("OperadorRecoleccion"), FechaRecoleccion = info["FechaRecoleccion"] == DBNull.Value ? new DateTime(1900, 1, 1) : info.Field <DateTime>("FechaRecoleccion"), OperadorNecropsiaId = info["OperadorNecropsia"] == DBNull.Value ? 0 : info.Field <int>("OperadorNecropsia"), FechaNecropsia = info["FechaNecropsia"] == DBNull.Value ? new DateTime(1900, 1, 1) : info.Field <DateTime>("FechaNecropsia"), EstatusId = info.Field <int>("EstatusID"), ProblemaId = info["ProblemaID"] == DBNull.Value ? 0 : info.Field <int>("ProblemaID"), FechaCreacion = info["FechaNecropsia"] == DBNull.Value ? new DateTime(1900, 1, 1) : info.Field <DateTime>("FechaCreacion"), LoteCodigo = info.Field <string>("Lote").Trim(), CorralCodigo = info.Field <string>("Codigo").Trim(), CorralId = info.Field <int>("CorralId"), Activo = info.Field <bool>("Activo").BoolAEnum(), Peso = info["Peso"] == DBNull.Value ? 0 : info.Field <int>("Peso") //FechaRecoleccion = info["FechaRecoleccion"] == DBNull.Value ? new DateTime(1900, 1, 1) : info.Field<DateTime>("FechaRecoleccion"), }).First(); return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene las muertes por Fecha Necropsia /// </summary> /// <param name="muerteInfo"></param> /// <returns></returns> public List <SalidaGanadoMuertoInfo> ObtenerMuertesFechaNecropsia(MuerteInfo muerteInfo) { try { Logger.Info(); var muerteBl = new MuerteBL(); return(muerteBl.ObtenerMuertesFechaNecropsia(muerteInfo)); } catch (ExcepcionGenerica exg) { Logger.Error(exg); } catch (Exception ex) { Logger.Error(ex); } return(null); }
/// <summary> /// Metodo para Guardar el muerteInfo /// </summary> /// <param name="muerteInfo"></param> public void CancelarMovimientoMuerte(MuerteInfo muerteInfo) { try { Logger.Info(); var muerteBl = new MuerteBL(); muerteBl.CancelarMovimientoMuerte(muerteInfo); //return result; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda la informacion de una muerte /// </summary> /// <param name="muerte"></param> /// <param name="esCargaInicial"></param> /// <param name="animal"></param> /// <returns></returns> public int GuardarMuerte(MuerteInfo muerte, FlagCargaInicial esCargaInicial, AnimalInfo animal) { try { Logger.Info(); var muerteBl = new MuerteBL(); int resultado = muerteBl.GuardarMuerte(muerte, esCargaInicial, animal); return(resultado); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Parametros para muerteid y operadorid /// </summary> /// <param name="muerte"></param> /// <param name="operadorId"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosMuerteId(MuerteInfo muerte, int operadorId) { Dictionary <string, object> parametros; try { Logger.Info(); parametros = new Dictionary <string, object> { { "@MuerteId", muerte.MuerteId }, { "@OperadorId", operadorId } }; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(parametros); }
/// <summary> /// Obtiene las muertes por fecha necropsia /// </summary> /// <param name="muerteInfo"></param> /// <returns></returns> internal List <SalidaGanadoMuertoInfo> ObtenerMuertesFechaNecropsia(MuerteInfo muerteInfo) { var listaMuertes = new List <SalidaGanadoMuertoInfo>(); try { Logger.Info(); var muerteDal = new MuerteDAL(); listaMuertes = muerteDal.ObtenerMuertesFechaNecropsia(muerteInfo).ToList(); } catch (ExcepcionGenerica exg) { Logger.Error(exg); } catch (Exception ex) { Logger.Error(ex); } return(listaMuertes); }
/// <summary> /// Guarda la salida por muerte de necropsia /// </summary> /// <param name="muerte"></param> /// <returns></returns> public int GuardarSalidaPorMuerteNecropsia(MuerteInfo muerte) { int retValue = -1; try { Logger.Info(); var bl = new MuerteBL(); retValue = bl.GuardarSalidaPorMuerteNecropsia(muerte); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(retValue); }
/// <summary> /// Metodo para Guardar el muerteInfo /// </summary> /// <param name="muerteInfo">contenedor donde se encuentra la información de la muerte</param> /// <returns></returns> internal void CancelarMovimientoMuerte(MuerteInfo muerteInfo) { try { Logger.Info(); Dictionary <string, object> parameters = AuxMuerteDAL.ObtenerParametrosCancelarMovimientoMuerte(muerteInfo); Create("CancelarMovimiento_CancelarMuerte", 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); } }
/// <summary> /// Ocurre cuando se presiona click sobre el control /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnGenerar_OnClick(object sender, RoutedEventArgs e) { var muertesPl = new MuertePL(); var salidaGanadoMuertePl = new SalidaGanadoMuertoPL(); var muerteInfo = new MuerteInfo() { OrganizacionId = Convert.ToInt32(Application.Current.Properties["OrganizacionID"]), FechaNecropsia = dtFecha.SelectedDate.Value }; try { IList <SalidaGanadoMuertoInfo> listaMuertes = muertesPl.ObtenerMuertesFechaNecropsia(muerteInfo); if (listaMuertes != null && listaMuertes.Count > 0) { int folio = 0; IList <SalidaGanadoMuertoInfo> result = listaMuertes.Where(muerte => muerte.FolioSalida != 0).ToList(); if (result != null && result.Count > 0) { folio = result[0].FolioSalida; } else { var salidaGanadoMuerteInfo = new SalidaGanadoMuertoInfo() { OrganizacionID = Convert.ToInt32(Application.Current.Properties["OrganizacionID"]), TipoFolio = (int)TipoFolio.SalidaGanadoMuerte }; folio = salidaGanadoMuertePl.ObtenerFolio(salidaGanadoMuerteInfo); } var organizacionPl = new OrganizacionPL(); var organizacionInfo = new OrganizacionInfo(); organizacionInfo = organizacionPl.ObtenerPorID(muerteInfo.OrganizacionId); var etiquetas = ObtenerEtiquetas(); etiquetas.Titulo = organizacionInfo.Descripcion; etiquetas.Folio = folio.ToString().PadLeft(5, '0'); etiquetas.Fecha = dtFecha.Text; listaMuertes[0].FolioSalida = folio; listaMuertes[0].UsuarioModificacionID = Convert.ToInt32(Application.Current.Properties["UsuarioID"]); salidaGanadoMuertePl.AsignarFolioMuertes(listaMuertes); try { salidaGanadoMuertePl.CrearOrdenSalidaGandoMuerto(etiquetas, listaMuertes); salidaGanadoMuertePl.MostrarReportePantalla(); } catch { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.OrdenSalidaMuerteGanado_msgArchivoAbierto, MessageBoxButton.OK, MessageImage.Stop); } } else { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.OrdenSalidaMuerteGanado_msgNoExistenMuertes, MessageBoxButton.OK, MessageImage.Stop); dtFecha.SelectedDate = DateTime.Now; } } catch (System.Exception ex) { Logger.Error(ex); } }
/// <summary> /// Obtiene los los parametros para obtener las muertes por fecha necropsia /// </summary> /// <param name="muerteInfo"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosMuertesFechaNecropsia(MuerteInfo muerteInfo) { Dictionary <string, object> parametros; try { Logger.Info(); parametros = new Dictionary <string, object> { { "@OrganizacionID", muerteInfo.OrganizacionId }, { "@FechaNecropsia", muerteInfo.FechaNecropsia } }; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(parametros); }
/// <summary> /// Carga la informacion del arete en pantalla /// </summary> private void LlenarDatosArete() { MuerteInfo areteMuerto = null; var pl = new MuertePL(); var animalPL = new AnimalPL(); var corralPL = new CorralPL(); try { var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; var organizacionID = seguridad.Usuario.Organizacion.OrganizacionID; if (seguridad != null) { //Se obtiene el Corral para ver Si es de Recepcion corralInfo = corralPL.ObtenerCorralPorCodigo(organizacionID, corralInfo.Codigo); if (corralInfo.GrupoCorral == (int)GrupoCorralEnum.Recepcion) { /* Si el corral es de Recepcion */ areteMuerto = pl.ObtenerGanadoMuertoPorAreteRecepcion(organizacionID, numeroArete); } else { /* Si el corral es de Enfermeria o produccion */ areteMuerto = pl.ObtenerGanadoMuertoPorArete(organizacionID, numeroArete); if (areteMuerto != null && areteMuerto.AnimalId > 0) { areteMuerto.Peso = animalPL.ObtenerUltimoMovimientoAnimal(new AnimalInfo() { AnimalID = areteMuerto.AnimalId, OrganizacionIDEntrada = organizacionID }).Peso; } else { if (areteMuerto == null) { areteMuerto = new MuerteInfo { Arete = numeroArete, CorralCodigo = corralInfo.Codigo }; } var lote = new LoteInfo(); var lotePl = new LotePL(); lote = lotePl.ObtenerPorCorral(organizacionID, corralInfo.CorralID); if (lote != null) { var listaAnimales = animalPL.ObtenerAnimalesPorLoteID(lote); if (listaAnimales != null) { var listaMovimientosActivos = (from animal in listaAnimales let movimiento = new AnimalMovimientoInfo() select animalPL.ObtenerUltimoMovimientoAnimal(animal)).ToList(); if (listaMovimientosActivos.Count > 0) { areteMuerto.Peso = listaMovimientosActivos.Sum(registro => registro.Peso) / listaMovimientosActivos.Count; } } } } } if (areteMuerto != null) { hdMuerteId.Value = areteMuerto.MuerteId.ToString(); hdAnimalId.Value = areteMuerto.AnimalId.ToString(); hdCorralId.Value = areteMuerto.CorralId.ToString(); hdLoteId.Value = areteMuerto.LoteId.ToString(); if (areteMuerto.MuerteId == 0) { hdMuerteId.Value = muerteId.ToString(); } txtCorral.Text = areteMuerto.CorralCodigo; txtPeso.Text = areteMuerto.Peso.ToString(); txtAreteMetalico.Text = areteMuerto.AreteMetalico; txtNumeroArete.Text = areteMuerto.Arete; txtNombreResponsable.Text = seguridad.Usuario.Nombre; lblFechaSalida.Text += " " + DateTime.Now.ToShortDateString(); lblHoraSalida.Text += " " + DateTime.Now.ToShortTimeString(); var parametros = ObtenerParametrosRutaImagenes(seguridad.Usuario.Organizacion.OrganizacionID); imgFotoDeteccion.Visible = false; if (parametros != null && areteMuerto.FotoDeteccion != string.Empty) { imgFotoDeteccion.Visible = true; imgFotoDeteccion.ImageUrl = parametros.Valor + areteMuerto.FotoDeteccion; } } else { ClientScript.RegisterStartupScript(this.GetType(), "myScript", "MostrarFalloCargarDatos();", true); } } } catch (Exception ex) { Logger.Error(ex); throw; } }
/// <summary> /// Guarda la salida por muerte en necropsia /// </summary> /// <param name="muerte"></param> /// <returns></returns> internal int GuardarSalidaPorMuerteNecropsia(MuerteInfo muerte) { int retValue; try { Logger.Info(); var animalBL = new AnimalBL(); var animalMovimientoBL = new AnimalMovimientoBL(); var corralBL = new CorralBL(); var loteBL = new LoteBL(); var trampaBL = new TrampaBL(); var entradaGanadoBL = new EntradaGanadoBL(); var animalMovimientoInfo = new AnimalMovimientoInfo(); var corralInfo = new CorralInfo(); var muerteDAL = new MuerteDAL(); PolizaAbstract poliza; IList <PolizaInfo> polizaSalidaMuerte; AnimalInfo animalInfo = null; using (var transaccion = new TransactionScope()) { //Se obtiene la info del Corral if (muerte.CorralId > 0) { corralInfo = corralBL.ObtenerPorId(muerte.CorralId); } else if (muerte.CorralCodigo != "") { corralInfo = corralBL.ObtenerCorralPorCodigo(muerte.OrganizacionId, muerte.CorralCodigo); } //Se obtiene la info del Lote LoteInfo loteInfo; if (muerte.LoteId > 0) { loteInfo = loteBL.ObtenerPorID(muerte.LoteId); } else { loteInfo = loteBL.DeteccionObtenerPorCorral(muerte.OrganizacionId, corralInfo.CorralID); } /* Se valida el Grupo del corral */ switch (corralInfo.GrupoCorral) { case (int)GrupoCorralEnum.Recepcion: /* almacena el animal en el Inventario */ animalInfo = new AnimalInfo { Arete = muerte.Arete, AreteMetalico = muerte.AreteMetalico, FechaCompra = DateTime.Now, TipoGanadoID = 1, CalidadGanadoID = 1, //*** ClasificacionGanadoID = 1, //*** PesoCompra = 0, PesoLlegada = 0, //*** FolioEntrada = 1, OrganizacionIDEntrada = muerte.OrganizacionId, Paletas = 0, Venta = false, Cronico = false, Activo = true, UsuarioCreacionID = muerte.UsuarioCreacionID }; var interfazAnimalBl = new InterfaceSalidaAnimalBL(); var interfaceSalidoAnimalInfo = interfazAnimalBl.ObtenerNumeroAreteIndividual(muerte.Arete, muerte.OrganizacionId); int folioEntradaInterfaz = 0; if (interfaceSalidoAnimalInfo != null) { animalInfo.FechaCompra = interfaceSalidoAnimalInfo.FechaCompra; animalInfo.PesoCompra = (int)interfaceSalidoAnimalInfo.PesoCompra; animalInfo.TipoGanadoID = interfaceSalidoAnimalInfo.TipoGanado.TipoGanadoID; folioEntradaInterfaz = interfaceSalidoAnimalInfo.Partida; } EntradaGanadoInfo entradaGanadoInterfaz = entradaGanadoBL.ObtenerEntradasGanadoCosteado(folioEntradaInterfaz, muerte.OrganizacionId); /* Obtener la entrada de ganado del Corral-Lote para conocer el origen */ EntradaGanadoInfo entradaGanadoInfo = entradaGanadoBL.ObtenerEntradaPorLote(loteInfo); if (entradaGanadoInfo != null) { if (entradaGanadoInterfaz != null) { if (entradaGanadoInfo.EmbarqueID == entradaGanadoInterfaz.EmbarqueID) { animalInfo.FolioEntrada = entradaGanadoInterfaz.FolioEntrada; } } if (animalInfo.FolioEntrada == 1) { if (!entradaGanadoInfo.EsRuteo) { animalInfo.FolioEntrada = entradaGanadoInfo.FolioEntrada; } else { List <CabezasPartidasModel> partidasRuteo = entradaGanadoBL.ObtenerCabezasEntradasRuteo(entradaGanadoInfo.EmbarqueID); if (partidasRuteo != null && partidasRuteo.Any()) { CabezasPartidasModel partidaConPendientes = partidasRuteo.OrderByDescending(part => part.CabezasPendientes). FirstOrDefault(); if (partidaConPendientes != null) { animalInfo.FolioEntrada = partidaConPendientes.FolioEntrada; } } } } //if (entradaGanadoInfo.TipoOrganizacionOrigenId != (int)TipoOrganizacion.CompraDirecta) //{ //} //animalInfo.FolioEntrada = entradaGanadoInfo.FolioEntrada; } /* Se almacena el animalMovimiento */ animalInfo = animalBL.GuardarAnimal(animalInfo); break; default: if (muerte.AnimalId > 0) { animalInfo = animalBL.ObtenerAnimalAnimalID(muerte.AnimalId); /* Se busca el animal En Salida Animal */ AnimalSalidaInfo animalSalidaInfo = animalBL.ObtenerAnimalSalidaAnimalID(animalInfo.AnimalID); if (animalSalidaInfo != null) { /* Se valida si no esta en una corraleta de sacrificio */ CorralInfo corraleta = corralBL.ObtenerPorId(animalSalidaInfo.CorraletaId); if (corraleta != null && corraleta.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio) { /* Se disminuyen las cabezas del lote en todas las ordenes de sacrificio */ var ordenSacrificioBL = new OrdenSacrificioBL(); ordenSacrificioBL.DecrementarAnimalMuerto(muerte.AnimalId); /* Eliminar AnimalSalida */ animalBL.EliminarAnimalSalida(animalInfo.AnimalID, loteInfo.LoteID); } } } else { var listaAnimales = animalBL.ObtenerAnimalesPorCorral(corralInfo, muerte.OrganizacionId); if (listaAnimales != null) //&& listaAnimales.Any()) { //animalInfo = listaAnimales.FirstOrDefault(registro => registro.UsuarioCreacionID == 1); animalInfo = listaAnimales.FirstOrDefault(registro => registro.UsuarioCreacionID == 1); if (animalInfo == null) { animalInfo = listaAnimales.OrderBy(ani => ani.AnimalID).FirstOrDefault(); } } } break; } if (animalInfo != null) { animalInfo.UsuarioCreacionID = muerte.UsuarioCreacionID; animalInfo.UsuarioModificacionID = muerte.UsuarioCreacionID; if (muerte.AnimalId == 0) { muerte.AnimalId = animalInfo.AnimalID; } } /* Se actualiza la muerte con salida por necropsia */ muerteDAL.GuardarSalidaPorMuerteNecropsia(muerte); if (animalInfo != null) { if (muerte.Peso == 0) { List <AnimalMovimientoInfo> ultimosMovimiento = animalMovimientoBL.ObtenerUltimoMovimientoAnimal(new List <AnimalInfo> { animalInfo }); if (ultimosMovimiento != null && ultimosMovimiento.Any()) { AnimalMovimientoInfo ultimoMovimientoAnimal = ultimosMovimiento.OrderByDescending(ani => ani.AnimalMovimientoID).FirstOrDefault(); if (ultimoMovimientoAnimal != null) { muerte.Peso = ultimoMovimientoAnimal.Peso; } } } /* Insertamos el movimiento de Muerte */ var trampaInfo = trampaBL.ObtenerPorHostName(TrampaGlobal.TrampaNecropsia.ToString()); if (trampaInfo != null) { animalMovimientoInfo.TrampaID = trampaInfo.TrampaID; } /* Se genera el animal Movimiento para almacenarlo*/ animalMovimientoInfo = new AnimalMovimientoInfo { AnimalID = animalInfo.AnimalID, OrganizacionID = muerte.OrganizacionId, CorralID = loteInfo.CorralID, LoteID = loteInfo.LoteID, Peso = muerte.Peso, Temperatura = 0, TipoMovimientoID = (int)TipoMovimiento.Muerte, TrampaID = trampaInfo != null ? trampaInfo.TrampaID : 1, OperadorID = muerte.OperadorNecropsiaId, Observaciones = muerte.Observaciones, Activo = EstatusEnum.Activo, UsuarioCreacionID = muerte.UsuarioCreacionID }; //Proceso para Guardar Costos AnimalCostoBL animalCostoBl = new AnimalCostoBL(); List <AnimalInfo> animales = new List <AnimalInfo>(); animales.Add(animalInfo); List <AnimalCostoInfo> listaCostos = animalCostoBl.ObtenerCostosAnimal(animales); if (listaCostos == null || listaCostos.Count <= 0) { animales = animalBL.ProcesoGenerarCostos(animales); } else { if (!listaCostos.Any(registro => registro.CostoID == Costo.CostoGanado.GetHashCode())) { animales = animalBL.ProcesoGenerarCostos(animales); } } //Proceso Armar Poliza if (animales != null && animales.Count > 0) { if (animales.FirstOrDefault().ListaCostosAnimal != null && animales.FirstOrDefault().ListaCostosAnimal.Count > 0) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaMuerte); List <AnimalCostoInfo> listaCostosAnimal = animales.FirstOrDefault().ListaCostosAnimal; foreach (AnimalCostoInfo animalCosto in listaCostosAnimal) { animalCosto.OrganizacionID = muerte.OrganizacionId; } polizaSalidaMuerte = poliza.GeneraPoliza(listaCostosAnimal); if (polizaSalidaMuerte != null && polizaSalidaMuerte.Any()) { polizaSalidaMuerte.ToList().ForEach( org => { org.OrganizacionID = muerte.OrganizacionId; org.UsuarioCreacionID = muerte.UsuarioCreacionID; org.ArchivoEnviadoServidor = 1; }); //retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaMuerte); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaSalidaMuerte, TipoPoliza.SalidaMuerte); } } } /* Se almacena el animalMovimiento */ animalMovimientoBL.GuardarAnimalMovimiento(animalMovimientoInfo); /* Se da de baja el animal */ animalBL.InactivarAnimal(animalInfo); /* Enviar al historico el animal inactivo */ var animalMuerto = new List <AnimalInfo> { animalInfo }; animalBL.EnviarAHistorico(animalMuerto); } /* Decrementar la cabeza del lote */ loteInfo.Cabezas = loteInfo.Cabezas - 1; loteInfo.UsuarioModificacionID = muerte.UsuarioCreacionID; var filtro = new FiltroActualizarCabezasLote { CabezasProcesadas = 1, LoteIDDestino = 0, LoteIDOrigen = loteInfo.LoteID, UsuarioModificacionID = muerte.UsuarioCreacionID }; CabezasActualizadasInfo resultadoCabezas = loteBL.ActualizarCabezasProcesadas(filtro); //Si ya no tenemos cabezas en el lote se actualizanb los pesos llegada if (resultadoCabezas.CabezasOrigen <= 0) { if (corralInfo.GrupoCorral == (int)GrupoCorralEnum.Recepcion) { /* Si el corral es de Recepcion */ var corteGanadoPl = new CorteGanadoBL(); corteGanadoPl.ObtenerPesosOrigenLlegada(muerte.OrganizacionId, loteInfo.CorralID, loteInfo.LoteID); } } transaccion.Complete(); retValue = 1; } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(retValue); }
/// <summary> /// Parametros para guardar salida por necropsia /// </summary> /// <param name="muerte"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosGuardarSalidaPorMuerteNecropsia(MuerteInfo muerte) { Dictionary <string, object> parametros; try { Logger.Info(); parametros = new Dictionary <string, object> { { "@MuerteId", muerte.MuerteId }, { "@ProblemaId", muerte.ProblemaId }, { "@Observaciones", muerte.Observaciones }, { "@FotoNecropsia", muerte.FotoNecropsia }, { "@OperadorNecropsiaId", muerte.OperadorNecropsiaId }, { "@UsuarioModificacionId", muerte.UsuarioCreacionID }, { "@EstatusID", muerte.EstatusId }, { "@AnimalID", muerte.AnimalId } }; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(parametros); }
public static int GuardarMuerte(MuerteInfo muerte) { int retValue = 0; try { CorralInfo corral = new CorralInfo(); CorralPL corralPL = new CorralPL(); AnimalPL animalPL = new AnimalPL(); LotePL lotePL = new LotePL(); corral = ObtenerCorral(muerte.CorralCodigo); var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; LoteInfo lote = ObtenerLotesCorral(corral.CorralID); int organizacionID = 0; AnimalInfo animal = null; MuerteInfo muerteGrabar = null; // 1 se encuentra en corral 2 Carga Inicial var esCargaInicial = FlagCargaInicial.Default; //informacion del la organzacion y usuario if (seguridad != null) { organizacionID = seguridad.Usuario.Organizacion.OrganizacionID; var deteccionPl = new DeteccionPL(); if (corral.GrupoCorral != (int)GrupoCorralEnum.Recepcion) { if (muerte.Arete != string.Empty && muerte.AreteMetalico == string.Empty) { var animalPl = new AnimalPL(); var animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionID); if (animales != null) { for (int i = 0; i < animales.Count; i++) { if (muerte.Arete == animales[i].Arete) { esCargaInicial = FlagCargaInicial.SeEncuentraEnCorral; break; } } } /* Validar Si el arete existe en el inventario */ animal = animalPl.ObtenerAnimalPorArete(muerte.Arete, organizacionID); if (animal != null && animal.CargaInicial && esCargaInicial == FlagCargaInicial.Default) { esCargaInicial = FlagCargaInicial.EsCargaInicial; } else if (animal == null) { animal = new AnimalInfo() { Arete = muerte.Arete, AreteMetalico = muerte.AreteMetalico, LoteID = lote.LoteID, CorralID = corral.CorralID, UsuarioModificacionID = seguridad.Usuario.UsuarioID, }; // Este arete se dara de alta en el corral esCargaInicial = FlagCargaInicial.EsAreteNuevo; } } if (muerte.AreteMetalico != string.Empty && muerte.Arete == string.Empty) { animal = animalPL.ObtenerAnimalPorAreteTestigo(muerte.AreteMetalico, organizacionID); } } var guardarPl = new MuertePL(); string foto = string.Empty; if (muerte.FotoDeteccion != string.Empty) { foto = TipoFoto.Muerte.ToString() + '/' + muerte.FotoDeteccion; } if (animal != null) { muerteGrabar = new MuerteInfo { LoteId = lote.LoteID, CorralId = corral.CorralID, OrganizacionId = seguridad.Usuario.Organizacion.OrganizacionID, FotoDeteccion = foto, Observaciones = muerte.Observaciones, Arete = animal.Arete, AreteMetalico = animal.AreteMetalico, OperadorDeteccionId = seguridad.Usuario.Operador.OperadorID, UsuarioCreacionID = seguridad.Usuario.UsuarioID, EstatusId = (int)EstatusMuertes.Detectado }; } else { muerteGrabar = new MuerteInfo { LoteId = lote.LoteID, CorralId = corral.CorralID, OrganizacionId = seguridad.Usuario.Organizacion.OrganizacionID, FotoDeteccion = foto, Observaciones = muerte.Observaciones, Arete = muerte.Arete, AreteMetalico = muerte.AreteMetalico, OperadorDeteccionId = seguridad.Usuario.Operador.OperadorID, UsuarioCreacionID = seguridad.Usuario.UsuarioID, EstatusId = (int)EstatusMuertes.Detectado }; } if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio) { muerteGrabar.LoteId = animalPL.ObtenerLoteSalidaAnimal(muerteGrabar.Arete, muerteGrabar.AreteMetalico, organizacionID); } if (muerteGrabar != null) { muerteGrabar.Corral = corral; var resultado = guardarPl.GuardarMuerte(muerteGrabar, esCargaInicial, animal); retValue = resultado; } } else { retValue = 0; } } catch (Exception ex) { retValue = -1; } return(retValue); }
/// <summary> /// Parametros para cancelar movimiento de muerte /// </summary> /// <param name="muerteInfo"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosCancelarMovimientoMuerte(MuerteInfo muerteInfo) { Dictionary <string, object> parametros; try { Logger.Info(); parametros = new Dictionary <string, object> { { "@MuerteID", muerteInfo.MuerteId }, { "@MotivoCancelacion", muerteInfo.MotivoCancelacion }, { "@OperadorCancelacion", muerteInfo.OperadorCancelacionInfo.OperadorID }, { "@UsuarioModificacionID", muerteInfo.UsuarioCreacionID }, { "@EstatusID", muerteInfo.EstatusId } }; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(parametros); }