}//CONSTRUCTOR public async Task <List <zt_inventarios_acumulados> > FicMetGetAcumuladosList(int _idinventario) { /*TRAEGO TODOS LOS CONTEOS*/ var FicSourceConteos = await(from con in FicLoBDContext.zt_inventarios_conteos where con.IdInventario == _idinventario select con).AsNoTracking().ToListAsync(); /*TRAEGO CADA UNO DE LOS PRODUCTOS, PERO SIN REPETIRCE*/ var FicSourceProductos = await(from c in FicLoBDContext.zt_inventarios_conteos where c.IdInventario == _idinventario group c by c.IdSKU into c select c.Key).AsNoTracking().ToListAsync(); if (FicSourceConteos != null) { if (FicSourceProductos != null) { foreach (string c in FicSourceProductos) { var FicSourceSuma = (from t in FicSourceConteos where t.IdSKU == c select t).ToList(); if (FicSourceSuma != null) { var FicSuma = FicSourceSuma.GroupBy(x => x.IdSKU).Select(conteo => new { SumaPZA = conteo.Sum(l => l.CantidadPZA) }); var FicSourceAcumulados = await(from t in FicLoBDContext.zt_inventarios_acumulados where t.IdSKU == c && t.IdInventario == _idinventario select t).SingleOrDefaultAsync(); if (FicSourceAcumulados == null) { await FicLoBDContext.AddAsync(new zt_inventarios_acumulados() { IdInventario = _idinventario, IdSKU = c, CantidadTeorica = FicSuma.First().SumaPZA, CantidadFisica = FicSuma.First().SumaPZA, Diferencia = 0, IdUnidadMedida = "PZA", FechaReg = DateTime.Now.Date, UsuarioReg = "BUAP", Activo = "S", Borrado = "N" }); await FicLoBDContext.SaveChangesAsync(); } else { FicSourceAcumulados.CantidadFisica = FicSuma.First().SumaPZA; FicSourceAcumulados.Diferencia = FicSourceAcumulados.CantidadTeorica - FicSourceAcumulados.CantidadFisica; FicSourceAcumulados.FechaUltMod = DateTime.Now; FicSourceAcumulados.UsuarioMod = "BUAP"; // FicLoBDContext.Update(FicSourceAcumulados); await FicLoBDContext.SaveChangesAsync(); } //INSERT o UPDATE DEL ACUMULADO } //TRAER LA SUMA DE PIEZAS DEL CONTEO DE ESE PRODUCTO } //RECORRERER LA LISTA DE PRODUCTOS PARA OBTENER EL ENCABEZADO } //LISTA DE PRODUCTOS } //SI EXISTEN CONTEOS return(await(from acu in FicLoBDContext.zt_inventarios_acumulados where acu.IdInventario == _idinventario select acu).AsNoTracking().ToListAsync()); }
public async Task <string> Insert_zt_inventarios_conteos(zt_inventarios_conteos zt_inventarios_conteos, bool modo) { try { zt_inventarios_conteos.CantidadPZA = await FicMetCantPza(zt_inventarios_conteos.IdSKU, zt_inventarios_conteos.IdUnidadMedida, zt_inventarios_conteos.CantidadFisica); if (modo) { zt_inventarios_conteos.NumConteo = await FicExitConteo(zt_inventarios_conteos); await FicLoBDContext.AddAsync(zt_inventarios_conteos); return(await FicLoBDContext.SaveChangesAsync() > 0 ? "OK" : "ERROR AL REGISTRAR"); } else { var FicSourceInvExits = await( from con in FicLoBDContext.zt_inventarios_conteos join inv in FicLoBDContext.zt_inventarios on con.IdInventario equals inv.IdInventario where con.IdSKU == zt_inventarios_conteos.IdSKU && con.IdAlmacen == zt_inventarios_conteos.IdAlmacen && con.IdUnidadMedida == zt_inventarios_conteos.IdUnidadMedida && con.NumConteo == zt_inventarios_conteos.NumConteo && con.IdUbicacion == zt_inventarios_conteos.IdUbicacion select con ).SingleOrDefaultAsync(); FicSourceInvExits.Lote = zt_inventarios_conteos.Lote; FicSourceInvExits.CantidadFisica = zt_inventarios_conteos.CantidadFisica; FicSourceInvExits.CantidadPZA = zt_inventarios_conteos.CantidadPZA; FicLoBDContext.Update(FicSourceInvExits); return(await FicLoBDContext.SaveChangesAsync() > 0 ? "OK" : "ERROR AL ACTUALIZAR"); } } catch (Exception ex) { return(ex.Message.ToString()); } }//INSERTAR NUEVO CONTEO