예제 #1
0
        public ResultAndError <CabeceraRecuento> Add(CabeceraRecuento pr)
        {
            ResultAndError <CabeceraRecuento> result = new ResultAndError <CabeceraRecuento>();

            try
            {
                db.CabeceraRecuentos.Add(pr);
                db.SaveChanges();
                return(result.AddResult(pr));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
예제 #2
0
        public ResultAndError <CabeceraRecuento> Update(CabeceraRecuento pr, bool insertIfNoExists = false)
        {
            ResultAndError <CabeceraRecuento> result = new ResultAndError <CabeceraRecuento>();

            try
            {
                CabeceraRecuento old = Get(pr.IdRecuento);
                if (old == null && insertIfNoExists)
                {
                    return(Add(pr));
                }
                db.Entry(old).CurrentValues.SetValues(pr);
                db.SaveChanges();
                return(result.AddResult(pr));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
예제 #3
0
 public IActionResult UpdCabeceraRecuento([FromBody] CabeceraRecuento CabeceraRecuento, bool insertIfNoExists = false)
 {
     return(Ok(cBS.Update(CabeceraRecuento, insertIfNoExists)));
 }
 public CabeceraRecuento_View(CabeceraRecuento c)
 {
     IdRecuento = c.IdRecuento;
     Name       = "HR" + c.IdRecuento;
     Status     = Status = c.Status == 0 ? "Pendiente" : "Cerrado";
 }
예제 #5
0
        public ResultAndError <Recuento> IniciarRecuento(string center, string almacen, string product, string zona)
        {
            Center oCenter = cnBS.Get("088");//TODO modificar cuando este el login
            ResultAndError <Recuento> recount = new ResultAndError <Recuento>();
            var almacenes = db.AlmacenZPs
                            .Include(o => o.Location)
                            .Include(o => o.Zonas)
                            .Include(o => o.Product)
                            .Where(o => o.LocationCode == almacen)
                            .GroupBy(o => o.LocationCode)
                            .ToList();

            if (almacenes.Count() == 0)
            {
                return(recount.AddError("No hay datos"));
            }

            List <string> zonas = zona.Split(',').ToList();

            recount = CheckZonaRecuento(zonas, recount);

            if (recount.HasErrors)
            {
                return(recount);
            }

            CabeceraRecuento oCabecera = new CabeceraRecuento()
            {
                Status = 0
            };

            cBS.Update(oCabecera, true);

            Recuento oRecuento = new Recuento();

            //Recorremos el group by del almacen
            foreach (var group in almacenes)
            {
                //Aqui recorremos los items que esten agrupados en este almacen
                foreach (AlmacenZP alm in group.ToList())
                {
                    oRecuento.Almacen = alm.Location.Name;
                    List <Zonas> zonaAlmacen = new List <Zonas>();
                    //Recorremos las zonas seleccionadas
                    foreach (string z in zonas)
                    {
                        var tempAlmacenes = group.Where(o => o.Zona == z).ToList();
                        if (tempAlmacenes.Count() == 0)
                        {
                            continue;                             //Si no hay zona saltamos a la siguiente vuelta
                        }
                        Zonas oZona = new Zonas();
                        foreach (AlmacenZP zP in tempAlmacenes)//Recorremos los productos
                        {
                            oZona = new Zonas()
                            {
                                Zona      = zP.Zonas.Name,
                                Productos = tempAlmacenes.OrderBy(o => o.Product.Description).ToList()
                            };//Creamos el objeto Zonas
                            recount = CheckProductoRecuento(zP.ProductNo, recount);
                            if (recount.HasErrors)
                            {
                                return(recount);
                            }
                            //Creamos el objeto HojaRecuento
                            HojaRecuento oHoja = new HojaRecuento()
                            {
                                Codigo       = "HR" + oCabecera.IdRecuento,
                                Date         = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)),
                                CenterCode   = center,
                                LocationCode = zP.LocationCode,
                                Zone         = zP.Zona,
                                ProductNo    = zP.ProductNo,
                                Quantity     = zP.Product.StockActual
                            };
                            Update(oHoja, true);//Creamos la hoja del producto
                        }
                        zonaAlmacen.Add(oZona);
                    }
                    oRecuento.Zonas = zonaAlmacen.OrderBy(o => o.Zona).ToList();
                    break;
                }
            }

            recount.AddResult(oRecuento);
            return(recount);
        }