public static RepartoDetalleInfo ObtenerOrdenRepartoDetalleTarde(int loteID, int repartoID, int corralID, string fechaReparto) { IList <RepartoDetalleInfo> repartoDetalleLista = null; RepartoDetalleInfo repartoDetalle = null; LoteInfo lote = null; RepartoInfo reparto = new RepartoInfo(); RepartoPL repartoPL = new RepartoPL(); LotePL lotePL = new LotePL(); var corralPL = new CorralPL(); try { var fecha = DateTime.Parse(fechaReparto.ToString(CultureInfo.InvariantCulture)); var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; if (seguridad != null) { lote = lotePL.ObtenerPorId(loteID); CorralInfo corral = corralPL.ObtenerPorId(corralID); /*DateTime fecha = new DateTime(); * fecha = DateTime.Now; * fecha = fecha.AddDays(-1);*/ if (lote != null) { reparto = repartoPL.ObtnerPorLote(lote, fecha); } else { reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha); } if (reparto != null) { repartoDetalleLista = repartoPL.ObtenerDetalle(reparto); if (repartoDetalleLista != null) { for (int i = 0; i < repartoDetalleLista.Count; i++) { if (repartoDetalleLista[i].TipoServicioID == (int)TipoServicioEnum.Vespertino) { repartoDetalle = repartoDetalleLista[i]; } } } } } } catch (Exception ex) { Logger.Error(ex); } return(repartoDetalle); }
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); }