Esempio n. 1
0
        }//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