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); }
private IList <PolizaInfo> ObtenerPoliza(PolizaConsumoAlimentoModel contenedor) { var polizasConsumo = new List <PolizaInfo>(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.ConsumoAlimento.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.ConsumoAlimento)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); string numeroDocumento = ObtenerNumeroReferenciaFolio(contenedor.AlmacenMovimiento.FolioMovimiento); DateTime fecha = contenedor.Reparto.Fecha; string archivoFolio = ObtenerArchivoFolio(fecha); IList <CostoInfo> costos = ObtenerCostos(); IList <FormulaInfo> formulas = ObtenerFormulas(); OrganizacionInfo organizacion; List <RepartoDetalleInfo> repatoAgrupado = null; List <ProduccionFormulaDetalleInfo> produccionAgrupado; CostoInfo costo = costos.FirstOrDefault( tipo => "002".Equals(tipo.ClaveContable)); if (costo == null) { costo = new CostoInfo(); } PolizaInfo polizaConsumo; IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP(); if (cuentasSAP == null) { cuentasSAP = new List <CuentaSAPInfo>(); } CuentaSAPInfo cuentaSap; if (contenedor.Reparto != null && contenedor.Reparto.DetalleReparto != null && contenedor.Reparto.DetalleReparto.Any()) { repatoAgrupado = contenedor.Reparto.DetalleReparto .GroupBy(formu => formu.FormulaIDServida) .Select(agrupado => new RepartoDetalleInfo { OrganizacionID = agrupado.Select(org => org.OrganizacionID).FirstOrDefault(), Importe = agrupado.Sum(imp => imp.Importe), FormulaIDServida = agrupado.Select(form => form.FormulaIDServida).FirstOrDefault() }).Where(imp => imp.Importe > 0).ToList(); for (var indexReparto = 0; indexReparto < repatoAgrupado.Count; indexReparto++) { RepartoDetalleInfo detalle = repatoAgrupado[indexReparto]; organizacion = ObtenerOrganizacionIVA(detalle.OrganizacionID); cuentaSap = cuentasSAP.FirstOrDefault(clave => clave.CuentaSAP.Equals("1151401002")); if (cuentaSap == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "CUENTA NO CONFIGURADA PARA", costo.Descripcion)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fecha, Folio = numeroDocumento, Importe = string.Format("{0}", detalle.Importe.ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), ClaseDocumento = postFijoRef3, Cuenta = cuentaSap.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSap.Descripcion, PesoOrigen = 0, Division = organizacion.Division, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}", tipoMovimiento, numeroDocumento, cuentaSap.CuentaSAP), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; linea++; polizaConsumo = GeneraRegistroPoliza(datos); polizasConsumo.Add(polizaConsumo); } } int almacenID = 0; if (contenedor.ProduccionFormula != null && contenedor.ProduccionFormula.ProduccionFormulaDetalle != null && contenedor.ProduccionFormula.ProduccionFormulaDetalle.Any()) { produccionAgrupado = contenedor.ProduccionFormula.ProduccionFormulaDetalle .GroupBy(formu => formu.ProduccionFormulaId) .Select(agrupado => new ProduccionFormulaDetalleInfo { ProduccionFormulaId = agrupado.Key, OrganizacionID = agrupado.Select(org => org.OrganizacionID).FirstOrDefault(), AlmacenID = agrupado.Select(alm => alm.AlmacenID).FirstOrDefault() }).ToList(); ClaseCostoProductoInfo producto; IList <ClaseCostoProductoInfo> almacenesProductosCuentas; FormulaInfo formula; for (var indexFormula = 0; indexFormula < produccionAgrupado.Count; indexFormula++) { ProduccionFormulaDetalleInfo detalle = produccionAgrupado[indexFormula]; almacenID = detalle.AlmacenID; almacenesProductosCuentas = ObtenerCostosProducto(almacenID); organizacion = ObtenerOrganizacionIVA(detalle.OrganizacionID); formula = formulas.FirstOrDefault(clave => clave.FormulaId == detalle.ProduccionFormulaId); if (formula == null) { formula = formulas.FirstOrDefault(clave => clave.Producto.ProductoId == detalle.ProduccionFormulaId); if (formula == null) { formula = new FormulaInfo { Producto = new ProductoInfo() }; } } decimal importe = 0; if (repatoAgrupado != null) { importe = repatoAgrupado.Where(formu => formu.FormulaIDServida == formula.FormulaId).Sum( imp => imp.Importe); if (importe == 0) { importe = repatoAgrupado.Where(formu => formu.FormulaIDServida == formula.Producto.ProductoId).Sum (imp => imp.Importe); } } if (importe == 0) { continue; } producto = almacenesProductosCuentas.FirstOrDefault(p => p.ProductoID == formula.Producto.ProductoId); if (producto == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "CUENTA NO CONFIGURADA PARA EL PRODUCTO", formula.Producto.Descripcion)); } cuentaSap = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == producto.CuentaSAPID); if (cuentaSap == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "CUENTA NO CONFIGURADA PARA EL PRODUCTO", formula.Producto.Descripcion)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fecha, Importe = string.Format("{0}", (importe * -1).ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSap.CuentaSAP, ClaseDocumento = postFijoRef3, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSap.Descripcion, PesoOrigen = 0, Division = organizacion.Division, TipoDocumento = textoDocumento, Folio = numeroDocumento, Concepto = String.Format("{0}-{1} {2}", tipoMovimiento, numeroDocumento, cuentaSap.CuentaSAP), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; linea++; polizaConsumo = GeneraRegistroPoliza(datos); polizasConsumo.Add(polizaConsumo); } } return(polizasConsumo); }
/// <summary> /// Carga el archivo data link en la orden de reparto /// </summary> /// <param name="validacionDatalink"></param> /// <param name="usuario"></param> /// <returns></returns> internal ResultadoOperacion CargarArchivoDatalink(ValidacionDataLink validacionDatalink, UsuarioInfo usuario) { var validar = new DataLinkInfo(); var resultado = new ResultadoOperacion { Resultado = true }; try { Logger.Info(); var corralBl = new CorralBL(); var loteBl = new LoteBL(); var repartoBl = new RepartoBL(); using (var camionRepartoBl = new CamionRepartoBL()) { var servicioAlimentoBL = new ServicioAlimentoBL(); var datalinks = new List <DataLinkInfo>(); var repartosServicioAlimentacion = new List <RepartoInfo>(); var repartosDetalles = new List <RepartoDetalleInfo>(); var corralesEliminar = new List <CorralInfo>(); var formulaBL = new FormulaBL(); IList <FormulaInfo> formulasExistentes = formulaBL.ObtenerTodos(EstatusEnum.Activo); IList <CamionRepartoInfo> camionesRepartoOrganizacion = camionRepartoBl.ObtenerPorOrganizacionID(usuario.Organizacion.OrganizacionID); foreach (var dataLink in validacionDatalink.ListaDataLink) { validar = dataLink; //CamionRepartoInfo camionRepartoInfo = camionRepartoBl.ObtenerPorNumeroEconomico(dataLink.NumeroCamion.Trim(), usuario.Organizacion.OrganizacionID); CamionRepartoInfo camionRepartoInfo = camionesRepartoOrganizacion.FirstOrDefault( cam => cam.NumeroEconomico.Equals(dataLink.NumeroCamion.Trim(), StringComparison.CurrentCultureIgnoreCase)); dataLink.CamionReparto = camionRepartoInfo; CorralInfo corral = corralBl.ObtenerPorCodicoOrganizacionCorral(new CorralInfo { Codigo = dataLink.CodigoCorral, Organizacion = new OrganizacionInfo { OrganizacionID = usuario.Organizacion.OrganizacionID }, Activo = EstatusEnum.Activo, }); if (corral != null) { var lote = loteBl.ObtenerPorCorralCerrado(usuario.Organizacion.OrganizacionID, corral.CorralID); if (lote == null) { lote = new LoteInfo(); } //if (lote != null) //{ var fecha = ObtenerFecha(dataLink.CadenaFechaReparto); var reparto = repartoBl.ObtenerRepartoPorFechaCorralServicio(fecha, corral, dataLink.TipoServicio); if (reparto != null) { //var formulaBl = new FormulaBL(); //int formulaId; //int.TryParse(dataLink.ClaveFormula, out formulaId); var formula = formulasExistentes.FirstOrDefault(fo => fo.Descripcion.Equals(dataLink.ClaveFormula.Trim(), StringComparison.CurrentCultureIgnoreCase)); if (formula != null) { dataLink.FormulaServida = formula; dataLink.Reparto = reparto; dataLink.UsuarioID = usuario.UsuarioID; dataLink.OrganizacionID = usuario.Organizacion.OrganizacionID; datalinks.Add(dataLink); } } //Si el Lote no se encuentra en el Reparto, buscarlo en la tabla ServicioAlimento else { ServicioAlimentoInfo servicioAlimentoInfo = servicioAlimentoBL.ObtenerPorCorralID(usuario.Organizacion.OrganizacionID, corral.CorralID); if (servicioAlimentoInfo != null) { LoteDescargaDataLinkModel datosLote = loteBl.ObtenerLoteDataLink(usuario.Organizacion.OrganizacionID, lote.LoteID); if (datosLote == null) { datosLote = new LoteDescargaDataLinkModel { PesoInicio = 0, FechaInicio = fecha, Cabezas = 0, }; } //var formulaBl = new FormulaBL(); //int formulaId; //int.TryParse(dataLink.ClaveFormula, out formulaId); //var formula = formulaBl.ObtenerPorID(formulaId); var formula = formulasExistentes.FirstOrDefault(fo => fo.Descripcion.Equals(dataLink.ClaveFormula.Trim(), StringComparison.CurrentCultureIgnoreCase)); if (formula != null) { var repartoNuevo = new RepartoInfo { OrganizacionID = usuario.Organizacion.OrganizacionID, LoteID = lote.LoteID, Corral = corral, Fecha = fecha, PesoInicio = datosLote.PesoInicio, PesoProyectado = 0, DiasEngorda = Convert.ToInt32((fecha - datosLote.FechaInicio).TotalDays), PesoRepeso = 0, DetalleReparto = new List <RepartoDetalleInfo>(), UsuarioCreacionID = usuario.UsuarioID, Activo = EstatusEnum.Activo }; var detalleReparto = new RepartoDetalleInfo { TipoServicioID = dataLink.TipoServicio, FormulaIDProgramada = servicioAlimentoInfo.FormulaID, FormulaIDServida = formula.FormulaId, CantidadProgramada = servicioAlimentoInfo.KilosProgramados, CantidadServida = dataLink.KilosServidos, HoraReparto = dataLink.Hora, CostoPromedio = 0, Importe = 0, Servido = true, Cabezas = datosLote.Cabezas == 0 ? 1 : datosLote.Cabezas, EstadoComederoID = EstadoComederoEnum.Normal.GetHashCode(), CamionRepartoID = dataLink.CamionReparto.CamionRepartoID, UsuarioCreacionID = usuario.UsuarioID, Activo = EstatusEnum.Activo }; repartoNuevo.DetalleReparto.Add(detalleReparto); repartosServicioAlimentacion.Add(repartoNuevo); var corralEliminar = new CorralInfo { CorralID = corral.CorralID, UsuarioModificacionID = usuario.UsuarioID }; corralesEliminar.Add(corralEliminar); } } } //} //else //{ // var bitacoraBL = new BitacoraIncidenciasBL(); // var errorInfo = new BitacoraErroresInfo // { // AccionesSiapID = AccionesSIAPEnum.DeDataLink, // Mensaje = "No es posible aplicar el consumo para el corral: " + corral.Codigo, // UsuarioCreacionID = usuario.UsuarioID // }; // //DescargarArchivoDataLink // bitacoraBL.GuardarError(errorInfo); //} } } if (datalinks.Count > 0) { if (datalinks.Any(x => x.CamionReparto == null)) { resultado.Resultado = false; resultado.DescripcionMensaje = ResourceServices.DescargaDataLink_msgCamionNoAsignado; } else { using (var transaccion = new TransactionScope()) { if (repartosServicioAlimentacion.Any()) { foreach (var repartoInfo in repartosServicioAlimentacion) { int repartoID = repartoBl.Guardar(repartoInfo); repartoInfo.DetalleReparto.ToList().ForEach(rep => rep.RepartoID = repartoID); repartosDetalles.AddRange(repartoInfo.DetalleReparto); } repartoBl.GuardarRepartoDetalle(repartosDetalles); if (corralesEliminar.Any()) { servicioAlimentoBL.EliminarXML(corralesEliminar); } } var res = repartoBl.CargarArchivoDatalink(datalinks); resultado.RegistrosAfectados = res; resultado.DescripcionMensaje = ResourceServices.DescargarDataLink_GuradadoOk; transaccion.Complete(); } RenombrarArchivos(validacionDatalink); } } else { resultado.Resultado = false; resultado.DescripcionMensaje = ResourceServices.DescargarDataLink_NoSecargo; } } } catch (ExcepcionGenerica) { if (validar != null) { } resultado.Resultado = false; throw; } catch (Exception ex) { if (validar != null) { } resultado.Resultado = false; Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(resultado); }
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 RepartoInfo ObtenerOrdenReparto(int loteID, int corralID, string fechaReparto) { RepartoInfo reparto = null; LoteInfo lote = null; RepartoPL repartoPL = new RepartoPL(); LotePL lotePL = new LotePL(); var corralPL = new CorralPL(); var fecha = DateTime.Parse(fechaReparto); try { var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"]; if (seguridad != null) { lote = lotePL.ObtenerPorId(loteID); CorralInfo corral = corralPL.ObtenerPorId(corralID); //if (lote != null) //{ if (lote != null) { reparto = repartoPL.ObtnerPorLote(lote, fecha); } else { reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha); } if (lote != null && reparto == null) { reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha); if (reparto == null || reparto.LoteID == 0 || reparto.LoteID != lote.LoteID) { reparto = null; } } if (reparto != null && reparto.DetalleReparto != null /* && * reparto.DetalleReparto.Count == * reparto.DetalleReparto.Where(dato => dato.Servido == true).ToList().Count()*/) { var matutinosServidos = 0; var vespertinoServidos = 0; matutinosServidos = reparto.DetalleReparto.Count( tmpDetalleReparto => tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino && tmpDetalleReparto.Servido); if (matutinosServidos > 0) { reparto.TotalRepartos = 1; } vespertinoServidos = reparto.DetalleReparto.Count( tmpDetalleReparto => tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Vespertino && tmpDetalleReparto.Servido); reparto.CantidadPedido = reparto.DetalleReparto.Where( tmpDetalleReparto => tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Vespertino || tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino) .ToList().Sum(tmpDetalleReparto => tmpDetalleReparto.CantidadProgramada); if (vespertinoServidos > 0) { reparto.TotalRepartos = 2; } if (reparto.TotalRepartos == 0) { reparto.TotalRepartos = 3; } RepartoDetalleInfo repartoMatutino = reparto.DetalleReparto.FirstOrDefault( tmpDetalleReparto => tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino); if (repartoMatutino != null) { reparto.CantidadProgramadaManiana = repartoMatutino.CantidadProgramada; } } else { reparto = new RepartoInfo { Fecha = fecha, TotalRepartos = 0 }; } } } catch (Exception ex) { Logger.Error(ex); } return(reparto); }