public List <CabeceraEvaluacionLomosMigasViewModel> ConsultarCabReportes(DateTime FechaDesde, DateTime FechaHasta) { using (var db = new ASIS_PRODEntities()) { clsDApiOrdenFabricacion = new clsDApiOrdenFabricacion(); var respuesta = (from x in db.CC_EVALUACION_LOMO_MIGA_BANDEJA_CABECERA join cl in db.CLASIFICADOR on new { Codigo = x.NivelLimpieza, Grupo = "008", EstadoRegistro = clsAtributos.EstadoRegistroActivo } equals new { cl.Codigo, cl.Grupo, cl.EstadoRegistro } join d in db.CC_EVALUACION_LOMO_MIGA_BANDEJA_DETALLE on new { IdCabeceraEvaluacionLomosYMigasEnBandeja = x.IdEvaluacionDeLomosYMigasEnBandejas, EstadoRegistro = clsAtributos.EstadoRegistroActivo } equals new { d.IdCabeceraEvaluacionLomosYMigasEnBandeja, d.EstadoRegistro } join clt in db.CLASIFICADOR on new { Codigo = x.Turno, EstadoRegistro = clsAtributos.EstadoRegistroActivo, Grupo = clsAtributos.GrupoCodTurno } equals new { clt.Codigo, clt.EstadoRegistro, clt.Grupo } where x.EstadoRegistro == clsAtributos.EstadoRegistroActivo && (x.FechaProduccion >= FechaDesde && x.FechaProduccion <= FechaHasta) && cl.Codigo != "0" select new CabeceraEvaluacionLomosMigasViewModel { Cliente = x.Cliente, Empaque = x.Empaque, Enlatado = x.Enlatado, EstadoControl = x.EstadoControl, EstadoRegistro = x.EstadoRegistro, FechaIngresoLog = x.FechaIngresoLog, FechaModificacionLog = x.FechaModificacionLog, FechaProduccion = x.FechaProduccion, IdEvaluacionDeLomosYMigasEnBandejas = x.IdEvaluacionDeLomosYMigasEnBandejas, Lomo = x.Lomo, Miga = x.Miga, NivelLimpieza = x.NivelLimpieza, Observacion = x.Observacion, OrdenFabricacion = x.OrdenFabricacion, Pouch = x.Pouch, TerminalIngresoLog = x.TerminalIngresoLog, TerminalModificacionLog = x.TerminalModificacionLog, UsuarioIngresoLog = x.UsuarioIngresoLog, UsuarioModificacionLog = x.UsuarioModificacionLog, NivelLimpiezaDescripcion = cl.Descripcion, AprobadoPor = x.AprobadoPor, FechaAprobacion = x.FechaAprobacion, Turno = clt.Descripcion }).Distinct().ToList(); if (respuesta.Count > 0) { List <OrdenFabricacionAvance> DatosOrdenes = clsDApiOrdenFabricacion.ConsultaDatosLotePorRangoFecha( respuesta.Select(f => f.FechaProduccion).Min().Value, respuesta.Select(f => f.FechaProduccion).Max().Value) .Select(x => new OrdenFabricacionAvance { Fecha = x.Fecha, OrdenFabricacion = x.OrdenFabricacion, Cliente = x.Cliente }).Distinct().ToList(); foreach (var item in respuesta) { var buscarOrden = DatosOrdenes.FirstOrDefault(x => x.OrdenFabricacion == item.OrdenFabricacion); if (buscarOrden != null) { item.Cliente = string.IsNullOrEmpty(buscarOrden.Cliente) ? item.Cliente : buscarOrden.Cliente; } else { string cliente = clsDApiOrdenFabricacion.ConsultaOrdenFabricacionPorFechaConsumoInsumo(item.OrdenFabricacion.Value.ToString()).FirstOrDefault().CLIENTE; item.Cliente = string.IsNullOrEmpty(cliente) ? item.Cliente : cliente; } } } return(respuesta); } }
public void GenerarAvanceOrdenesApi2(DateTime FechaDesde, DateTime?FechaHasta) { using (ASIS_PRODEntities entities = new ASIS_PRODEntities()) { if (FechaHasta == null) { FechaHasta = FechaDesde; } List <CONTROL_AVANCE_API> ListadoControlAvanceApi = new List <CONTROL_AVANCE_API>(); clsDApiOrdenFabricacion = new clsDApiOrdenFabricacion(); var ordendesFabricacion = entities.CONTROL_HUESO.Where(x => x.Fecha >= FechaDesde && x.Fecha <= FechaHasta && x.EstadoRegistro == clsAtributos.EstadoRegistroActivo).Select(x => x.OrdenFabricacion).Distinct(); //Consulta de servicio var detalleOrden = clsDApiOrdenFabricacion.ConsultaDatosLotePorRangoFecha(FechaDesde, FechaHasta ?? FechaDesde); //recorrer las ordenes de fabricacion para actualizar los datos o agregar. foreach (int x in ordendesFabricacion) { var ListaLotes = detalleOrden.Where(o => o.OrdenFabricacion == x).ToList(); if (ListaLotes == null || ListaLotes.Count == 0) { ListaLotes = clsDApiOrdenFabricacion.ConsultaLotesPorOFCompleto(x); } foreach (var detalle in ListaLotes) { var modelControlAvanceApi = entities.CONTROL_AVANCE_API.FirstOrDefault(y => y.OrdenFabricacion == x && y.Lote == detalle.Lote); if (modelControlAvanceApi == null) { if (!ListadoControlAvanceApi.Any(lista => lista.OrdenFabricacion == x && lista.Lote == detalle.Lote)) { ListadoControlAvanceApi.Add(new CONTROL_AVANCE_API { OrdenFabricacion = x, Limpieza = detalle.Limpieza, Lote = detalle.Lote, Peso = detalle.Peso != null ? int.Parse(double.Parse(detalle.Peso).ToString()) : 0, Piezas = detalle.Piezas != null ? int.Parse(double.Parse(detalle.Piezas).ToString()) : 0, Talla = detalle.Talla, Promedio = detalle.Promedio != null ? decimal.Parse(detalle.Promedio) : 0, Especie = detalle.Especie, Producto = detalle.Producto, LomoReal = detalle.Lomos, MigaReal = detalle.Migas }); } } else { modelControlAvanceApi.Promedio = detalle.Promedio != null?decimal.Parse(detalle.Promedio) : 0; modelControlAvanceApi.Talla = detalle.Talla; modelControlAvanceApi.LomoReal = detalle.Lomos; modelControlAvanceApi.MigaReal = detalle.Migas; modelControlAvanceApi.Especie = detalle.Especie; modelControlAvanceApi.Lote = detalle.Lote; modelControlAvanceApi.Limpieza = detalle.Limpieza; modelControlAvanceApi.Peso = detalle.Peso != null?int.Parse(double.Parse(detalle.Peso).ToString()) : 0; modelControlAvanceApi.Piezas = detalle.Piezas != null?int.Parse(double.Parse(detalle.Piezas).ToString()) : 0; } } } if (ListadoControlAvanceApi.Any()) { entities.CONTROL_AVANCE_API.AddRange(ListadoControlAvanceApi.Distinct()); } entities.SaveChanges(); } }