コード例 #1
0
        public async Task <ActionResult> UpdateOrder(PurchaseOrderViewModel order)
        {
            var updateOrder = await db.PurchaseOrders.FindAsync(order.ID);

            if (updateOrder == null)
            {
                return(HttpNotFound());
            }

            var Products = await db.PurchaseOrderProducts.Where(p => p.PurchaseOrderId == order.ID).ToListAsync();

            db.PurchaseOrderProducts.RemoveRange(Products);

            foreach (var p in order.Products)
            {
                PurchaseOrderProduct orderProduct = new PurchaseOrderProduct
                {
                    PurchaseOrderId = int.Parse(order.ID.ToString()),
                    ProductId       = p.ProductId,
                    Qty             = p.Qty
                };
                db.PurchaseOrderProducts.Add(orderProduct);
                await db.SaveChangesAsync();
            }
            return(Json(new { updateOrder.PurchaseOrderId, updateOrder.Date }));
        }
コード例 #2
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,ProductId,PurchaseOrderId,QuantityOrdered")] PurchaseOrderProduct purchaseOrderProduct)
        {
            if (id != purchaseOrderProduct.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(purchaseOrderProduct);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PurchaseOrderProductExists(purchaseOrderProduct.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ProductId"]       = new SelectList(_context.Products, "Id", "Id", purchaseOrderProduct.ProductId);
            ViewData["PurchaseOrderId"] = new SelectList(_context.PurchaseOrders, "Id", "Id", purchaseOrderProduct.PurchaseOrderId);
            return(View(purchaseOrderProduct));
        }
コード例 #3
0
        public async Task <ActionResult> SaveOrder(PurchaseOrderViewModel order)
        {
            var newOrder = new PurchaseOrder
            {
                VendorID = order.VendorId,
                Status   = "Pending",
                Date     = DateTime.Now
            };

            db.PurchaseOrders.Add(newOrder);
            await db.SaveChangesAsync();

            foreach (var p in order.Products)
            {
                PurchaseOrderProduct orderProduct = new PurchaseOrderProduct
                {
                    PurchaseOrderId = newOrder.PurchaseOrderId,
                    ProductId       = p.ProductId,
                    Qty             = p.Qty
                };
                db.PurchaseOrderProducts.Add(orderProduct);
                await db.SaveChangesAsync();
            }
            return(Json(new { Id = newOrder.PurchaseOrderId, Date = newOrder.Date }));
        }
コード例 #4
0
        public async Task <IActionResult> PutPurchaseOrderProduct(long id, PurchaseOrderProduct purchaseOrderProduct)
        {
            if (id != purchaseOrderProduct.Id)
            {
                return(BadRequest());
            }

            _context.Entry(purchaseOrderProduct).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PurchaseOrderProductExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #5
0
        // GET: PurchaseOrderProducts/Create
        public async Task <IActionResult> CreateAsync(int id)
        {
            PurchaseOrderProduct purchaseOrderProduct = await _context.PurchaseOrderProducts.Include(pop => pop.Product)
                                                        .FirstOrDefaultAsync(pop => pop.ProductId == id);

            ViewData["PurchaseOrderId"] = new SelectList(_context.PurchaseOrders.Where(pop => pop.Received == false), "Id", "Name");
            return(View(purchaseOrderProduct));
        }
コード例 #6
0
 private LightProduct GetLightProduct(PurchaseOrderProduct p)
 {
     return(new LightProduct
     {
         Id = p.ProductId,
         Name = $"{p.Name}{(p.UnitWeight.HasValue && p.UnitWeight > 0 ? " " + p.UnitWeight.Value : "")}",
         Reference = p.Reference,
         Quantity = p.Quantity
     });
 }
コード例 #7
0
 private static void WriteProductInfo(ExcelWorksheet purchaseOrdersWorksheet, PurchaseOrderProduct product, int i)
 {
     purchaseOrdersWorksheet.Cells[i, 10].Value = product.Reference;
     purchaseOrdersWorksheet.Cells[i, 11].Value = product.Name;
     purchaseOrdersWorksheet.Cells[i, 12].Value = product.Quantity;
     purchaseOrdersWorksheet.Cells[i, 13].Value = product.UnitWholeSalePrice;
     purchaseOrdersWorksheet.Cells[i, 14].Value = product.UnitWholeSalePrice * (1 + product.Vat / 100);
     purchaseOrdersWorksheet.Cells[i, 15].Value = product.Vat;
     purchaseOrdersWorksheet.Cells[i, 16].Value = product.TotalWholeSalePrice;
     purchaseOrdersWorksheet.Cells[i, 17].Value = product.TotalOnSalePrice;
 }
コード例 #8
0
        public async Task <IActionResult> Create([Bind("Id,ProductId,PurchaseOrderId,QuantityOrdered,ApplicationUserId")] PurchaseOrderProduct purchaseOrderProduct)
        {
            if (ModelState.IsValid)
            {
                var user = await GetCurrentUserAsync();

                purchaseOrderProduct.ApplicationUserId = user.Id;
                purchaseOrderProduct.ProductId         = purchaseOrderProduct.Id;
                purchaseOrderProduct.Id = 0;


                _context.Add(purchaseOrderProduct);
                await _context.SaveChangesAsync();

                return(Redirect("/PurchaseOrders"));
            }
            ViewData["ProductId"]       = new SelectList(_context.Products, "Id", "Id", purchaseOrderProduct.ProductId);
            ViewData["PurchaseOrderId"] = new SelectList(_context.PurchaseOrders, "Id", "Id", purchaseOrderProduct.PurchaseOrderId);
            return(View(purchaseOrderProduct));
        }
コード例 #9
0
        public async Task <PurchaseOrderModel> GetPurchaseOrderById(Guid purchaseOrderID)
        {
            // get PO Record
            var idParam = GetParameter(Resources.PurchaseOrderIdParamName, purchaseOrderID);
            var reader  = GetDataReader(Resources.GetPurchaseOrderProc, new List <DbParameter> {
                idParam
            });

            if (!reader.HasRows)
            {
                throw new Exception(Resources.ProductNotFound);
            }
            await reader.ReadAsync();


            var purchaseOrder = new PurchaseOrderModel
            {
                Id          = reader.GetGuid(0),
                Number      = reader.GetInt32(4),
                OrderDate   = reader.GetDateTime(5),
                IsFinalized = reader.GetBoolean(6),
                Supplier    = new Supplier
                {
                    Name         = reader.GetString(3),
                    SupplierCode = reader.GetString(2),
                    Id           = reader.GetGuid(1),
                    CreatedDate  = reader.GetDateTime(8)
                }
            };

            if (purchaseOrder.IsFinalized)
            {
                purchaseOrder.FinalizedDate = reader.GetDateTime(7);
            }

            await reader.CloseAsync();

            var poiParam  = GetParameter(Resources.POIdParameterName, purchaseOrderID);
            var poiReader = GetDataReader(Resources.GetPurchaseOrderItemsProc, new List <DbParameter> {
                poiParam
            });

            if (!poiReader.HasRows)
            {
                await poiReader.CloseAsync();

                return(purchaseOrder);
            }

            await poiReader.CloseAsync();

            while (await poiReader.ReadAsync())
            {
                var purchaseOrderItem = new PurchaseOrderProduct
                {
                    Id          = poiReader.GetGuid(0),
                    ProductCode = poiReader.GetString(1),
                    Price       = poiReader.GetDecimal(2),
                    Description = poiReader.GetString(3),
                    Quantity    = poiReader.GetInt32(4)
                };

                purchaseOrder.Products.Add(purchaseOrderItem);
            }

            await poiReader.CloseAsync();

            return(purchaseOrder);
        }
コード例 #10
0
        // Method for changing the Quantity of multiple Products
        public async Task <IActionResult> IncreaseProductQuantity(int id)
        {
            if (ModelState.IsValid)
            {
                //try
                // {
                PurchaseOrder purchaseOrder = new PurchaseOrder();
                purchaseOrder = await _context.PurchaseOrders
                                .Include(po => po.PurchaseOrderProducts)
                                .ThenInclude(pop => pop.Product)
                                .FirstOrDefaultAsync(m => m.Id == id);


                PurchaseOrderProduct purchaseOrderProduct = new PurchaseOrderProduct();
                //Conditional to select a product where purchaseOrderId == id
                List <Product> products = new List <Product>();
                // if (purchaseOrder.PurchaseOrderProduct.PurchaseOrderId == id)
                // {
                //Define the List of Products from the beginning

                products = purchaseOrder.PurchaseOrderProducts.Select(p => p.Product).ToList();
                if (purchaseOrder.Received == true)
                {
                    ApplicationUser user = await GetCurrentUserAsync();

                    //var countProductsGrouped = purchaseOrder.PurchaseOrderProducts.GroupBy(pop => pop.Product.Name).Count();
                    //Very Close. This is were I need to Update the products with the count of the certain POP
                    //var product = purchaseOrder.PurchaseOrderProducts.Select(pop => pop.Product);
                    //if (countProductsGrouped <= 1) { }
                    // Maybe try foreach groupedproduct in POPViewModel?
                    // This i wrong.. Maybe foreach product in groupedProducts
                    //var productsGrouped = purchaseOrder.PurchaseOrderProducts.GroupBy(pop => pop.Product.Name);
                    //purchaseOrder.PurchaseOrderProduct.QuantityOrdered = countProductsGrouped;
                    foreach (Product product in purchaseOrder.PurchaseOrderProducts.Select(pop => pop.Product))
                    {
                        if (purchaseOrder.PurchaseOrderProducts.GroupBy(pop => pop.Product.Name).Any(pop => pop.Count() < 2))
                        {
                            var numberOfProductsGrouped = purchaseOrder.PurchaseOrderProducts.Count();
                            //purchaseOrder.PurchaseOrderProduct.QuantityOrdered = numberOfProductsGrouped;
                            product.Quantity = product.Quantity + numberOfProductsGrouped;
                            ;
                            products.Select(p => p.ApplicationUserId = user.Id);
                            _context.Update(product);
                            await _context.SaveChangesAsync();
                        }
                        else if (purchaseOrder.PurchaseOrderProducts.GroupBy(pop => pop.Product.Name).Any(pop => pop.Count() > 1))
                        {
                            var numberOfProductsGrouped = purchaseOrder.PurchaseOrderProducts.GroupBy(pop => pop.Product.Id).Count();
                            //purchaseOrder.PurchaseOrderProduct.QuantityOrdered = numberOfProductsGrouped;
                            product.Quantity = product.Quantity + numberOfProductsGrouped;
                            ;
                            products.Select(p => p.ApplicationUserId = user.Id);
                            _context.Update(product);
                            await _context.SaveChangesAsync();
                        }
                    }
                    ;
                    //product = product.Quantity + purchaseOrder.PurchaseOrderProducts.Select(pop => pop.Product).Count();
                    //products.Select(p => p.Quantity = p.Quantity + purchaseOrder.PurchaseOrderProducts.Count());
                    //  ApplicationUser user = await GetCurrentUserAsync();
                    //  products.Select(p => p.ApplicationUserId = user.Id);
                    // _context.Update(product);
                    // await _context.SaveChangesAsync();
                }
                else
                {
                }
                //catch (DbUpdateConcurrencyException)
                //{
                //    if (!ProductExists(id))
                //    {
                //        return NotFound();
                //    }
                //    else
                //    {
                //        throw;
                //    }
                //}
                return(View(products));
            }
            return(View(id));
        }
コード例 #11
0
 public void EditPurchaseOrderProduct(PurchaseOrderProduct purchaseOrderProduct)
 {
 }
コード例 #12
0
        public async Task <ActionResult <PurchaseOrderProduct> > PostPurchaseOrderProduct(PurchaseOrderProduct purchaseOrderProduct)
        {
            _context.PurchaseOrderProducts.Add(purchaseOrderProduct);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetPurchaseOrderProduct), new { id = purchaseOrderProduct.Id }, purchaseOrderProduct));
        }