コード例 #1
0
        public ActionResult Create([Bind(Include = "Id,ProdId,UserId,Quantity,Date,Reason")] ProductOut productOut)
        {
            if (ModelState.IsValid)
            {
                int totalProducts = db.Products.
                                    Where(p => p.Id == productOut.ProdId).
                                    Select(p => p.Quantity).
                                    FirstOrDefault();

                int netQuantity = totalProducts - productOut.Quantity;

                if (productOut.Quantity > 0)
                {
                    if (productOut.Quantity <= totalProducts)
                    {
                        db.ProductOuts.Add(productOut);
                        db.SaveChanges();
                        UpdateProductQuantity(productOut.ProdId, netQuantity);
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Error: 'Quantity' cannot exceed available items!");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Error: 'Quantity' cannot be 0 or less!");
                }
            }

            ViewBag.ProdId = new SelectList(db.Products, "Id", "Name", productOut.ProdId);
            ViewBag.UserId = new SelectList(db.Users, "Id", "Name", productOut.UserId);
            return(View(productOut));
        }
コード例 #2
0
        internal void Delete(ProductOut productOut)
        {
            command = database.GetStoredProcCommand("spProductOutDelete");
            database.AddInParameter(command, "@ProductOutID", SqlDbType.Int, productOut.ProductOutID.Value);

            database.ExecuteNonQuery(command);
        }
コード例 #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            ProductOut productOut = db.ProductOuts.Find(id);

            db.ProductOuts.Remove(productOut);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #4
0
        public ActionResult Edit([Bind(Include = "ProductOutID,ProductCode,Qty,Notes")] ProductOut productOut)
        {
            if (ModelState.IsValid)
            {
                ProductOut obj = db.ProductsOut.Find(productOut.ProductOutID);

                int qtyBefore = obj.Qty;

                obj.Qty         = productOut.Qty;
                obj.ProductCode = productOut.ProductCode;
                obj.Notes       = productOut.Notes;

                DateTime date     = Date.getDate();
                DateTime fromDate = new DateTime(2014, 01, 01);

                string query = string.Format("EXEC [dbo].[sp_GetReportStock] @dateFrom = '{0}', @dateTo = '{1}'", fromDate.ToString("yyyy-MM-dd"), date.ToString("yyyy-MM-dd"));
                IEnumerable <ReportStock> list = db.Database.SqlQuery <ReportStock>(query);

                int stock = list.Where(o => o.ProductCode == productOut.ProductCode).FirstOrDefault().Stock + qtyBefore;

                var oldobj      = db.ProductsOut.Find(productOut.ProductOutID);
                var productName = db.Products.Where(o => o.ProductCode == productOut.ProductCode).FirstOrDefault().ProductName;

                if (productOut.Qty <= stock)
                {
                    db.Entry(obj).State = EntityState.Modified;
                    db.SaveChanges();

                    Logger.AddLog(
                        User.Identity.Name,
                        productOut.ProductOutID,
                        Logger.ProductOut,
                        Logger.Edit,
                        Logger.DescriptionQty(productOut.ProductCode, productName, productOut.Qty, qtyBefore)
                        );

                    return(RedirectToAction("Index"));
                }
                else
                {
                    ViewBag.msg = "Quantity can't be greater than stock (" + stock.ToString() + ")";
                }
            }

            IEnumerable <Product> listProduct = db.Products;

            foreach (var item in listProduct)
            {
                item.ProductName = item.ProductCode + " - " + item.ProductName;
            }

            ViewBag.ProductCode = new SelectList(listProduct, "ProductCode", "ProductName", productOut.ProductCode);
            return(View(productOut));
        }
コード例 #5
0
 public ActionResult Edit([Bind(Include = "ProductOutID,ProductCode,Qty,Notes")] ProductOut productOut)
 {
     if (ModelState.IsValid)
     {
         db.Entry(productOut).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ProductID = new SelectList(db.Products, "ProductCode", "ProductCode", productOut.ProductCode);
     return(View(productOut));
 }
コード例 #6
0
 public ActionResult Edit([Bind(Include = "Id,ProdId,UserId,Quantity,Date,Reason")] ProductOut productOut)
 {
     if (ModelState.IsValid)
     {
         db.Entry(productOut).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ProdId = new SelectList(db.Products, "Id", "Name", productOut.ProdId);
     ViewBag.UserId = new SelectList(db.Users, "Id", "Name", productOut.UserId);
     return(View(productOut));
 }
コード例 #7
0
        public ActionResult Create([Bind(Include = "ProductOutID,Date,ProductCode,Qty,Notes")] ProductOut productOut)
        {
            productOut.Date = System.DateTime.Today;
            if (ModelState.IsValid)
            {
                db.ProductsOut.Add(productOut);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ProductCode = new SelectList(db.Products, "ProductCode", "ProductCode", productOut.ProductCode);
            return(View(productOut));
        }
コード例 #8
0
        public IActionResult GetProducts()
        {
            //return Ok(this.productRepository.GetAllWithInventory());

            var simpleProductList = new List <ProductOut>();


            var completeProductList = this.productRepository.GetAll()
                                      .Include(p => p.Category)
                                      .Include(p => p.Inventory)
                                      .Include(p => p.Location)
                                      .Include(p => p.ProductModel)
                                      .Include(p => p.Status)
                                      .Include(p => p.Category)
                                      .Include(p => p.Supplier)
                                      .Include(p => p.Color)
                                      .Include(p => p.Size);

            foreach (var product in completeProductList)
            {
                var newProd = new ProductOut()
                {
                    ReferenceCode        = product.ReferenceCode,
                    Value                = product.Value,
                    ImageFullPath        = product.ImageFullPath,
                    InventoryName        = product.Inventory.Name,
                    InventoryManagerName = product.Inventory.UserName,
                    Location             = product.Location.Name,
                    Status               = product.Status.Name,
                    Category             = product.Category.Name,
                    ProductModel         = product.ProductModel.Name,
                    Supplier             = product.Supplier.Name,
                    EntryDate            = product.EntryDate,
                    LastChangeDate       = product.LastChangeDate
                };

                //TO DELETE
                if (product.Color != null)
                {
                    newProd.Color = product.Color.Name;
                }
                if (product.Size != null)
                {
                    newProd.Size = product.Size.Name;
                }

                simpleProductList.Add(newProd);
            }

            return(Ok(simpleProductList));
        }
コード例 #9
0
        internal int Save(ProductOut productOut)
        {
            command = database.GetStoredProcCommand("spProductOutSave");
            if (productOut.ProductOutID.HasValue)
            {
                database.AddInParameter(command, "@ProductOutID", SqlDbType.Int, productOut.ProductOutID.Value);
            }
            database.AddInParameter(command, "@ProductInID", SqlDbType.Int, productOut.ProductInID);
            database.AddInParameter(command, "@Amount", SqlDbType.Float, productOut.Amount);
            database.AddInParameter(command, "@Count", SqlDbType.Int, productOut.Count);
            database.AddInParameter(command, "@UserID", SqlDbType.Int, productOut.UserID);

            return((int)database.ExecuteScalar(command));
        }
コード例 #10
0
        // GET: ProductOuts/Details/5
        //[Authorize(Roles = "admin")]
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductOut productOut = db.ProductsOut.Find(id);

            if (productOut == null)
            {
                return(HttpNotFound());
            }
            return(View(productOut));
        }
コード例 #11
0
        public async Task <ProductOut> GetProducts()
        {
            return(await AsyncHelper.AsyncFunction <ProductOut>(() =>
            {
                ProductOut productOut = new ProductOut();

                productOut.Products = _context.Products.Select(x => new ProductModel
                {
                    ProductId = x.ProductId,
                    Name = x.Name,
                }).ToList();

                return productOut;
            }));
        }
コード例 #12
0
        // GET: ProductOuts/Edit/5
        //[Authorize(Roles = "admin")]
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductOut productOut = db.ProductsOut.Find(id);

            if (productOut == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ProductCode = new SelectList(db.Products, "ProductCode", "ProductCode", productOut.ProductCode);
            return(View(productOut));
        }
コード例 #13
0
        public ActionResult Create([Bind(Include = "ProductOutID,Date,ProductCode,Qty,Notes")] ProductOut productOut)
        {
            DateTime date = Date.getDate();

            productOut.Date = date;
            if (ModelState.IsValid)
            {
                DateTime fromDate = new DateTime(2014, 01, 01);

                string query = string.Format("EXEC [dbo].[sp_GetReportStock] @dateFrom = '{0}', @dateTo = '{1}'", fromDate.ToString("yyyy-MM-dd"), date.ToString("yyyy-MM-dd"));
                IEnumerable <ReportStock> list = db.Database.SqlQuery <ReportStock>(query);

                int stock = list.Where(o => o.ProductCode == productOut.ProductCode).FirstOrDefault().Stock;

                //var obj = db.Products.Where(o => o.ProductCode == sale.ProductCode).FirstOrDefault();
                //sale. = obj.ProductID;

                //var oldobj = db.ProductsOut.Find(productOut.ProductOutID);
                var productName = db.Products.Where(o => o.ProductCode == productOut.ProductCode).FirstOrDefault().ProductName;


                if (productOut.Qty <= stock)
                {
                    db.ProductsOut.Add(productOut);
                    db.SaveChanges();

                    Logger.AddLog(
                        User.Identity.Name,
                        productOut.ProductOutID,
                        Logger.ProductOut,
                        Logger.Add,
                        Logger.DescriptionQty(productOut.ProductCode, productName, productOut.Qty, productOut.Qty)
                        );

                    return(RedirectToAction("Index"));
                }
                else
                {
                    ViewBag.msg = "Quantity can't be greater than stock (" + stock.ToString() + ")";
                }
            }

            ViewBag.ProductCode = new SelectList(db.Products, "ProductCode", "ProductCode", productOut.ProductCode);
            return(View(productOut));
        }
コード例 #14
0
        public ActionResult DeleteConfirmed(int id)
        {
            ProductOut productOut  = db.ProductsOut.Find(id);
            var        productName = db.Products.Where(o => o.ProductCode == productOut.ProductCode).FirstOrDefault().ProductName;

            db.ProductsOut.Remove(productOut);
            db.SaveChanges();

            Logger.AddLog(
                User.Identity.Name,
                productOut.ProductOutID,
                Logger.ProductOut,
                Logger.Delete,
                Logger.DescriptionQty(productOut.ProductCode, productName, productOut.Qty, productOut.Qty)
                );

            return(RedirectToAction("Index"));
        }
コード例 #15
0
        public PurchaseOut(InventoryDBContext context, PurchaseDTO dto)
            : base(dto)
        {
            this.ProductDetails = new List <ProductPurchaseDetails>();

            // products
            string[] productIDs          = dto.ProductIDs.Split(',');
            string[] productQuantities   = dto.ProductQuantities.Split(',');
            string[] productBuyingPrices = dto.ProductBuyingPrices.Split(',');
            int      numProducts         = productIDs.Length;

            for (int i = 0; i < numProducts; ++i)
            {
                int        id          = int.Parse(productIDs[i]);
                ProductOut productOut  = new ProductOut(context, context.GetProduct(id));
                int        Quantity    = int.Parse(productQuantities[i]);
                double     BuyingPrice = double.Parse(productBuyingPrices[i]);

                this.ProductDetails.Add(new ProductPurchaseDetails(productOut, Quantity, BuyingPrice));
            }
        }
コード例 #16
0
        // GET: ProductOuts/Edit/5
        //[Authorize(Roles = "admin")]
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductOut productOut = db.ProductsOut.Find(id);

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

            IEnumerable <Product> listProduct = db.Products;

            foreach (var item in listProduct)
            {
                item.ProductName = item.ProductCode + " - " + item.ProductName;
            }

            ViewBag.ProductCode = new SelectList(listProduct, "ProductCode", "ProductName", productOut.ProductCode);
            return(View(productOut));
        }
コード例 #17
0
        public async Task <ProductOutVM> GetProducts()
        {
            ProductOut products = await _iProductRepository.GetProducts();

            return(Mapper.Map <ProductOutVM>(products));
        }
コード例 #18
0
 public ProductPurchaseDetails(ProductOut productOut, int quantity, double buyingPrice)
 {
     Product     = productOut;
     Quantity    = quantity;
     BuyingPrice = buyingPrice;
 }
コード例 #19
0
        public async Task <IActionResult> PostProduct([FromBody] Common.Models.Product productOut)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(ModelState));
            }

            var user = await this.userManager.FindByEmailAsync(productOut.InventoryManagerName);

            if (user == null)
            {
                return(this.BadRequest("Invalid user"));
            }

            var imageUrl = string.Empty;

            if (productOut.ImageArray != null && productOut.ImageArray.Length > 0)
            {
                var stream   = new MemoryStream(productOut.ImageArray);
                var guid     = Guid.NewGuid().ToString();
                var file     = $"{guid}.jpg";
                var folder   = "wwwroot\\images\\Products";
                var fullPath = $"~/images/Products/{file}";
                var response = FilesHelper.UploadPhoto(stream, folder, file);

                if (response)
                {
                    imageUrl = fullPath;
                }
            }


            //Get the new index

            var newIndex = 1;

            var allProducts = await this.productRepository.GetAll().ToListAsync();

            var contains = allProducts.Exists(p => p.ReferenceCode.Substring(0, 16) == productOut.ReferenceCode);

            if (contains)
            {
                var lastProd = (await this.productRepository.GetAll().ToListAsync()).FindLast(p => p.ReferenceCode.Substring(0, 16) == productOut.ReferenceCode);

                var lastIndex = Int32.Parse(lastProd.ReferenceCode.Substring(16));

                newIndex = lastIndex + 1;
            }


            var entityProduct = new Product
            {
                ReferenceCode  = productOut.ReferenceCode + newIndex,
                Value          = productOut.Value,
                ImageUrl       = imageUrl,
                EntryDate      = DateTime.Now,
                InventoryId    = (await this.context.Inventory.FirstOrDefaultAsync(i => i.Name == productOut.InventoryName)).Id,
                LocationId     = (await this.context.Locations.FirstOrDefaultAsync(l => l.Name == productOut.Location)).Id,
                StatusId       = (await this.context.Status.FirstOrDefaultAsync(st => st.Name == productOut.Status)).Id,
                CategoryId     = (await this.context.Categories.FirstOrDefaultAsync(ct => ct.Name == productOut.Category)).Id,
                ProductModelId = (await this.context.ProductModel.FirstOrDefaultAsync(m => m.Name == productOut.ProductModel)).Id,
                SupplierId     = (await this.context.Suppliers.FirstOrDefaultAsync(sp => sp.Name == productOut.Supplier)).Id,
                ColorId        = (await this.context.Colors.FirstOrDefaultAsync(cl => cl.Name == productOut.Color)).Id,
                SizeId         = (await this.context.Sizes.FirstOrDefaultAsync(sz => sz.Name == productOut.Size)).Id,
                LastChangeDate = DateTime.Now
            };

            await this.productRepository.CreateAsync(entityProduct);

            var newProduct = await this.context.Products.FirstOrDefaultAsync(p => p.ReferenceCode == entityProduct.ReferenceCode);

            var newProdOut = new ProductOut()
            {
                ReferenceCode        = newProduct.ReferenceCode,
                Value                = newProduct.Value,
                ImageFullPath        = newProduct.ImageFullPath,
                InventoryName        = newProduct.Inventory.Name,
                InventoryManagerName = newProduct.Inventory.UserName,
                Location             = newProduct.Location.Name,
                Status               = newProduct.Status.Name,
                Category             = newProduct.Category.Name,
                ProductModel         = newProduct.ProductModel.Name,
                Supplier             = newProduct.Supplier.Name,
                Color                = newProduct.Color.Name,
                Size           = newProduct.Size.Name,
                EntryDate      = newProduct.EntryDate,
                LastChangeDate = newProduct.LastChangeDate
            };

            return(Ok(newProdOut));
        }
コード例 #20
0
        public async Task <IActionResult> PutProduct([FromRoute] string referenceCode, [FromBody] ProductOut productOut)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(ModelState));
            }

            //var oldProduct = await this.productRepository.GetByIdAsync(id);
            var oldProduct = await this.productRepository.GetAll().FirstOrDefaultAsync(p => p.ReferenceCode == referenceCode);


            if (oldProduct == null)
            {
                return(this.BadRequest("Product ReferenceCode doesn't exists."));
            }

            //TODO: Upload images

            //oldProduct.ReferenceCode = productOut.ReferenceCode;
            oldProduct.Value = productOut.Value;
            //oldProduct.ImageUrl = productOut.ImageFullPath.Substring(30);
            oldProduct.LastChangeDate = DateTime.Now;
            //oldProduct.InventoryId = (await this.context.Inventory.FirstOrDefaultAsync(i => i.Name == productOut.InventoryName)).Id;

            var location = await this.context.Locations.FirstOrDefaultAsync(l => l.Name == productOut.Location);

            oldProduct.LocationId = location.Id;

            var status = await this.context.Status.FirstOrDefaultAsync(st => st.Name == productOut.Status);

            oldProduct.StatusId = status.Id;
            //oldProduct.CategoryId = (await this.context.Categories.FirstOrDefaultAsync(i => i.Name == productOut.Category)).Id;
            //oldProduct.ProductModelId = (await this.context.ProductModel.FirstOrDefaultAsync(i => i.Name == productOut.ProductModel)).Id;
            //oldProduct.SupplierId = (await this.context.Suppliers.FirstOrDefaultAsync(i => i.Name == productOut.Supplier)).Id;
            //oldProduct.ColorId = (await this.context.Colors.FirstOrDefaultAsync(i => i.Name == productOut.Color)).Id;
            //oldProduct.SizeId = (await this.context.Sizes.FirstOrDefaultAsync(i => i.Name == productOut.Size)).Id;
            oldProduct.LastChangeDate = DateTime.Now;

            await this.productRepository.UpdateAsync(oldProduct);

            var updatedProduct = await this.context.Products.FirstOrDefaultAsync(p => p.ReferenceCode == oldProduct.ReferenceCode);

            var updatedProdOut = new ProductOut()
            {
                ReferenceCode        = updatedProduct.ReferenceCode,
                Value                = updatedProduct.Value,
                ImageFullPath        = updatedProduct.ImageFullPath,
                InventoryName        = productOut.InventoryName,
                InventoryManagerName = productOut.InventoryManagerName,
                Location             = location.Name,
                Status               = status.Name,
                Category             = productOut.Category,
                ProductModel         = productOut.ProductModel,
                Supplier             = productOut.Supplier,
                Color                = productOut.Color,
                Size           = productOut.Size,
                LastChangeDate = updatedProduct.LastChangeDate
            };

            return(Ok(updatedProdOut));
        }
コード例 #21
0
ファイル: QueryProduct.cs プロジェクト: rgallini/WTQD
        protected override void Execute(CodeActivityContext executionContext)
        {
            #region "Load CRM Service from context"

            Common objCommon = new Common(executionContext);
            objCommon.tracingService.Trace("Load CRM Service from context --- OK");
            #endregion

            #region "Read Parameters"
            String _ProdEntityName   = "product";
            String _ProdLookupField1 = this.ProdLookupField1.Get(executionContext);
            String _ProdLookupField2 = this.ProdLookupField2.Get(executionContext);
            String _ProdFieldValue1  = this.ProdFieldValue1.Get(executionContext);
            String _ProdFieldValue2  = this.ProdFieldValue2.Get(executionContext);

            objCommon.tracingService.Trace(String.Format("ProdEntityName: {0} - ProdLookupField1:{1} - ProdLookupField2:{2} - ProdFieldValue1:{3} ProdFieldValue2:{4}",
                                                         _ProdEntityName, _ProdLookupField1, _ProdLookupField2, _ProdFieldValue1, _ProdFieldValue2));
            #endregion


            #region "QueryExpression Execution"
            QueryExpression qe = new QueryExpression();
            qe.EntityName = _ProdEntityName;
            qe.ColumnSet  = new ColumnSet("productid");
            //prevent query from running forever with duplicate records
            qe.PageInfo            = new PagingInfo();
            qe.PageInfo.Count      = 2;
            qe.PageInfo.PageNumber = 1;

            FilterExpression filter = new FilterExpression(LogicalOperator.And);
            if (_ProdLookupField1 != null && _ProdFieldValue1 != "")
            {
                ConditionExpression condition1 = new ConditionExpression();
                condition1.AttributeName = _ProdLookupField1;
                condition1.Values.Add(_ProdFieldValue1);
                condition1.Operator = ConditionOperator.Equal;
                filter.Conditions.Add(condition1);
            }
            if (_ProdLookupField2 != null && _ProdFieldValue2 != "")
            {
                ConditionExpression condition2 = new ConditionExpression();
                condition2.AttributeName = _ProdLookupField2;
                condition2.Values.Add(_ProdFieldValue2);
                condition2.Operator = ConditionOperator.Equal;
                filter.Conditions.Add(condition2);
            }
            ConditionExpression condition3 = new ConditionExpression();
            condition3.AttributeName = "statecode";
            condition3.Values.Add(0); //active records
            condition3.Operator = ConditionOperator.Equal;
            filter.Conditions.Add(condition3);

            qe.Criteria = filter;

            EntityCollection ProdResults = objCommon.service.RetrieveMultiple(qe);
            if (ProdResults.Entities.Count > 0)
            {
                ProdFoundOne.Set(executionContext, true);
                ProductOut.Set(executionContext, new EntityReference("product", ProdResults[0].Id));
            }
            if (ProdResults.Entities.Count > 1)
            {
                ProdFoundMultiple.Set(executionContext, true);
            }

            #endregion
        }