public static int GuardarReparto(List <CambiosReporteInfo> cambiosDetalle, string fechaReparto) { int valorRetorno = 0; try { var repartoPl = new RepartoPL(); var corralPL = new CorralPL(); var lotePL = new LotePL(); var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; //informacion del la organzacion y usuario if (seguridad != null) { int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID; int usuario = seguridad.Usuario.UsuarioID; var fecha = DateTime.Parse(fechaReparto.ToString(CultureInfo.InvariantCulture)); List <string> codigosCorral = cambiosDetalle.Select(det => det.CorralInfo.Codigo).Distinct().ToList(); List <CorralInfo> corralesOrganizacion = corralPL.ObtenerCorralesPorCodigosCorral(codigosCorral, organizacionId); List <CambiosReporteInfo> repartosInactivar = new List <CambiosReporteInfo>(); int cantidadManiana = 0; bool bandera = false; foreach (CambiosReporteInfo t in cambiosDetalle) { t.OrganizacionID = organizacionId; t.UsuarioModificacionID = usuario; t.FechaReparto = fecha; #region Eliminar Duplicados if (t.RepartoID == 0) { CorralInfo corralCompleto = corralesOrganizacion.FirstOrDefault( cor => cor.Codigo.Trim().Equals(t.CorralInfo.Codigo.Trim(), StringComparison.InvariantCultureIgnoreCase)); if (corralCompleto == null) { continue; } var corral = new CorralInfo { Organizacion = new OrganizacionInfo { OrganizacionID = organizacionId }, CorralID = corralCompleto.CorralID }; RepartoInfo repartoCorral = repartoPl.ObtnerPorFechaCorral(corral, fecha); if (repartoCorral != null) { RepartoDetalleInfo repartoDetalleMatutino = repartoCorral.DetalleReparto.FirstOrDefault( rep => rep.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode()); RepartoDetalleInfo repartoDetalleVespertino = repartoCorral.DetalleReparto.FirstOrDefault( rep => rep.TipoServicioID == TipoServicioEnum.Vespertino.GetHashCode()); LoteInfo lote = lotePL.ObtenerLotesActivos(organizacionId, corralCompleto.CorralID); if (t.TipoServicioID == (int)TipoServicioEnum.Matutino) //&& t.Servido == 1) { if (repartoDetalleMatutino != null) { //cantidadManiana = t.CantidadServida; //if(repartoCorral.Fecha.Date == DateTime.Now.Date) //{ // t.NoModificar = true; //} cantidadManiana = repartoDetalleMatutino.CantidadProgramada; bandera = true; } } if (repartoDetalleMatutino != null) { if (repartoCorral.LoteID == 0 || !repartoDetalleMatutino.Servido) { t.Lote = lote.Lote; t.Cabezas = lote.Cabezas; t.CambiarLote = true; t.RepartoID = repartoCorral.RepartoID; //t.RepartoDetalleIdManiana = repartoDetalleMatutino.RepartoDetalleID; if (repartoDetalleVespertino != null) { t.RepartoDetalleIdTarde = repartoDetalleVespertino.RepartoDetalleID; } } else if (repartoCorral.LoteID != lote.LoteID) { if (t.TipoServicioID == (int)TipoServicioEnum.Vespertino) { if (repartoDetalleVespertino != null) { var repartoInactivar = new CambiosReporteInfo { RepartoDetalleIdTarde = repartoDetalleVespertino.RepartoDetalleID, InactivarDetalle = true, CorralInfo = new CorralInfo(), UsuarioModificacionID = usuario, FechaReparto = fecha }; repartosInactivar.Add(repartoInactivar); } t.Lote = lote.Lote; } else { t.RepartoDetalleIdManiana = repartoDetalleMatutino.RepartoDetalleID; } } } } } #endregion Eliminar Duplicados var repartoDetalleManiana = new RepartoDetalleInfo(); if (t.RepartoID > 0) { IList <RepartoDetalleInfo> detalleRepartos = repartoPl.ObtenerDetalle(new RepartoInfo { RepartoID = t.RepartoID }); if (detalleRepartos != null && detalleRepartos.Any()) { repartoDetalleManiana = detalleRepartos.FirstOrDefault( det => det.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode()); } } if (t.TipoServicioID == (int)TipoServicioEnum.Matutino) //&& t.Servido == 1) { if (repartoDetalleManiana != null) { //cantidadManiana = t.CantidadServida; if (t.FechaReparto.Date == DateTime.Now.Date && t.Servido == 1) { t.NoModificar = true; } if (t.Servido == 1) { cantidadManiana = repartoDetalleManiana.CantidadServida; } else { cantidadManiana = repartoDetalleManiana.CantidadProgramada; } bandera = true; } } if (bandera && t.TipoServicioID == (int)TipoServicioEnum.Vespertino) { if (t.CantidadProgramada == 0) { t.CantidadProgramada = 0; } else { t.CantidadProgramada = t.CantidadProgramada - cantidadManiana; } if (cantidadManiana == 0) { t.ValidaPorcentaje = 0; } else { t.ValidaPorcentaje = 1; } bandera = false; cantidadManiana = 0; } } cambiosDetalle.AddRange(repartosInactivar); valorRetorno = repartoPl.GenerarOrdenRepartoConfiguracionAjustes(cambiosDetalle.Where(cam => cam.NoModificar == false).ToList()); } } catch (Exception ex) { valorRetorno = -1; } return(valorRetorno); }
public static int ObtenerExisteArete(string corralCodigo, string arete, bool validarDeteccion) { int retorno = 0; string areteDeteccion = string.Empty, areteMuerte = string.Empty; try { SeguridadInfo seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo; IList <AnimalInfo> animales = null; int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID; var animalPl = new AnimalPL(); var corralPl = new CorralPL(); var lotePL = new LotePL(); AnimalInfo animal = null; CorralInfo corral = null; LoteInfo lote = null; corral = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo); corral.Organizacion = new OrganizacionInfo { OrganizacionID = organizacionId }; if (validarDeteccion) { areteDeteccion = animalPl.obtenerExisteDeteccion(arete); } if (areteDeteccion == string.Empty) { areteMuerte = animalPl.obtenerExisteMuerte(arete); if (areteMuerte == string.Empty) { if (corral.TipoCorral.TipoCorralID != (int)TipoCorral.Recepcion && corral.TipoCorral.TipoCorralID != (int)TipoCorral.CorraletaSacrificio) { animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionId); if (animales != null) { for (int i = 0; i < animales.Count; i++) { if (arete == animales[i].Arete) { return(1); } } } /* Validar Si el arete existe en el inventario y es carga inicial */ var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId); if (animalInventario == null) { retorno = 0; } } else if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio) { animal = animalPl.ObtenerAnimalPorArete(arete, organizacionId); if (animal != null) { if (animalPl.ObtenerExisteSalida(animal.AnimalID) > 0) { retorno = 1; } } } else { var entrada = new EntradaGanadoPL(); lote = lotePL.ObtenerLotesActivos(organizacionId, corral.CorralID); if (lote != null) { var datosEntrada = entrada.ObtenerEntradaPorLote(lote); if (datosEntrada != null) { if (datosEntrada.TipoOrganizacionOrigenId != (int)TipoOrganizacion.CompraDirecta) { int salida = corralPl.ObtenerExisteInterfaceSalida(organizacionId, corralCodigo, arete); if (salida > 0) { retorno = 1; // Existe arete en la interface } else { retorno = 0;//Valido, pero aqui va la validacion de interfaz salida } } else { /* Si es compra directa validar q el arete no exista en el inventario */ var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId); if (animalInventario != null) { retorno = 0;// el arete ya existe en el inventario } else { retorno = 1;//Valido, es compra directa y no existe en el inventario } } } } } } else { retorno = 3;//Muerto } } else { retorno = 2;//Detectado } } catch (Exception ex) { Logger.Error(ex); } return(retorno); }
public static List <AnimalInfo> ObtenerAnimalesPorCodigoCorral(CorralInfo corralInfo) { try { var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo; int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID; bool validarSalida = true; var animalPl = new AnimalPL(); var corralPl = new CorralPL(); var entrada = new EntradaGanadoPL(); List <AnimalInfo> listaanimales = null; var corralIn = corralPl.ObtenerCorralPorCodigo(organizacionId, corralInfo.Codigo); if (corralIn != null) { var lotePl = new LotePL(); var lote = lotePl.ObtenerLotesActivos(organizacionId, corralIn.CorralID); if (lote != null) { if (corralIn.GrupoCorral == (int)GrupoCorralEnum.Enfermeria || corralIn.GrupoCorral == (int)GrupoCorralEnum.Produccion) { listaanimales = animalPl.ObtenerAnimalesPorCorral(corralInfo, organizacionId); } else if (corralIn.GrupoCorral == (int)GrupoCorralEnum.Recepcion) { var datosEntrada = entrada.ObtenerEntradaPorLote(lote); if (datosEntrada != null) { if (datosEntrada.TipoOrganizacionOrigenId == (int)TipoOrganizacion.CompraDirecta) { validarSalida = false; } } AnimalInfo animal; if (validarSalida) { listaanimales = new List <AnimalInfo>(); var interfaz = new InterfaceSalidaAnimalPL(); var anim = interfaz.ObtenerAretesInterfazSalidaAnimal(corralInfo.Codigo, organizacionId); if (anim != null) { foreach (InterfaceSalidaAnimalInfo interfaceAnimal in anim) { animal = new AnimalInfo(); animal.Arete = interfaceAnimal.Arete; listaanimales.Add(animal); } } else { animal = new AnimalInfo { AnimalID = -1 }; listaanimales.Add(animal); } } } } } return(listaanimales); } catch (Exception ex) { Logger.Error(ex); throw; } }