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);
     }
 }
예제 #2
0
        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();
            }
        }