Ejemplo n.º 1
0
        public void AddNewProduct(int contractorId,
           string article,
           decimal purchaseprice,
           decimal saleprice,
           decimal vat)
        {
            if (contractorId <= 0 || String.IsNullOrEmpty(article))
                return;

            Product item = new Product()
            {
                Article = article,
                PurchasePrice = purchaseprice,
                SalePrice = saleprice,
                VAT = vat,
                ContractorId = contractorId
            };

            var datacontextModel = new SkladDataContext();

            PrepareProductData(item);

            item.Supplier = (from x in datacontextModel.Contractors
                                  where x.ContractorId == item.ContractorId &&
                                  x.ContractorTypeId == (int)EntityEnum.ContractorTypeEnum.Factory
                                  select x).First<Contractor>();

            if (item.Supplier == null)
            {
                logger.ErrorFormat("для товара {0} не найден поставщик с id={1}", item.Article, item.ContractorId);
                return;
            }

            string validationMessage = ValidateProductData(datacontextModel.Products, item, true);
            if (!String.IsNullOrEmpty(validationMessage))
            {
                logger.Error(validationMessage);
                return;
            }

            datacontextModel.Products.Add(item);
            datacontextModel.SaveChanges();

            logger.InfoFormat("Создан товар {0} от поставщика {1}", item.Article, item.Supplier.Code);
        }
Ejemplo n.º 2
0
        private string ValidateProductData(DbSet<Product> dbSet, Product product, bool isNew)
        {
            if (String.IsNullOrEmpty(product.Article))
                return "Артикул товара обязателен";

            if(product.Supplier == null)
                return "Не указан поставщик товара";

            if (isNew)
            {
                Product item = dbSet.Where(x =>
                    String.Compare(x.Article, product.Article, StringComparison.OrdinalIgnoreCase) == 0
                    && x.ContractorId == product.Supplier.ContractorId).FirstOrDefault<Product>();

                if (item != null)
                    return "Товар с таким артикулом существует";

                product.CreatedAt = DateTime.Now;
            }
            else
            {
                Product item = (from x in dbSet
                                   where x.ProductId == product.ProductId
                                   select x).First<Product>();

                // if Article was changed
                if (item.Article.ToLower() != product.Article.ToLower())
                {
                    if ((from x in dbSet
                         where String.Compare(x.Article, product.Article, StringComparison.OrdinalIgnoreCase) == 0
                         select x).FirstOrDefault<Product>() != null)
                        return "Товар с таким артикулом существует";
                }

                product.ModifiedAt = DateTime.Now;
            }

            return String.Empty;
        }
Ejemplo n.º 3
0
 private void UpdateProduct(Product item, Product editedItem)
 {
     item.Article = (editedItem.Article ?? String.Empty).Trim();
     item.PurchasePrice = editedItem.PurchasePrice;
     item.SalePrice = editedItem.SalePrice;
     item.VAT = editedItem.VAT;
     item.ContractorId = editedItem.ContractorId;
     item.Description = (editedItem.Description ?? String.Empty).Trim();
 }
Ejemplo n.º 4
0
 private void PrepareProductData(Product product)
 {
     product.Article = (product.Article ?? String.Empty).Trim().Replace(" ","");
     product.Description = (product.Description ?? String.Empty).Trim();
 }
Ejemplo n.º 5
0
        public ActionResult ProductEditRows(Product editedItem)
        {
            // Get the grid and database models
            var gridModel = new SkladJqGridModel();
            var datacontextModel = new SkladDataContext();

            // If we are in "Edit" mode
            if (gridModel.WarehouseGrid.AjaxCallBackMode == AjaxCallBackMode.EditRow)
            {
                // Get the data from and find the item corresponding to the edited row
                Product item = (from x in datacontextModel.Products
                                where x.ProductId == editedItem.ProductId
                                  select x).First<Product>();

                // update the item information
                UpdateProduct(item, editedItem);

                datacontextModel.SaveChanges();
            }

            if (gridModel.WarehouseGrid.AjaxCallBackMode == AjaxCallBackMode.DeleteRow)
            {
                Product item = (from x in datacontextModel.Products
                                where x.ProductId == editedItem.ProductId
                                  select x)
                               .First<Product>();

                // delete the record
                datacontextModel.Products.Remove(item);
                datacontextModel.SaveChanges();
            }

            return RedirectToAction("Product", "Reference");
        }
Ejemplo n.º 6
0
        private Product GetOrCreateProduct(SkladDataContext datacontextModel, int supplierId, decimal purchaseprice, decimal marginabs, string article, string comment)
        {
            Product product = datacontextModel.Products.Where(x => x.Article.ToLower() == article &&
                x.ContractorId == supplierId).FirstOrDefault();

            if (product == null)
            {
                // Add new product
                Product item = new Product
                {
                    Article = article,
                    ContractorId = supplierId,
                    PurchasePrice = purchaseprice,
                    SalePrice = purchaseprice + marginabs,
                    CreatedAt = DateTime.Now,
                };

                datacontextModel.Products.Add(item);
                datacontextModel.SaveChanges();

                product = datacontextModel.Products.Where(x => x.Article.ToLower() == article &&
                x.ContractorId == supplierId).FirstOrDefault();
            }

            if (String.IsNullOrEmpty(product.Description))
                product.Description = comment;
            else if (product.Description.IndexOf(comment) == -1)
                product.Description += ". " + comment;
            else
                product.Description = comment;

            datacontextModel.SaveChanges();

            return product;
        }