コード例 #1
0
        public ActionResult VendorAccountability(int AllocatedId, int VendorId, string QuantityReturned = "0", string TotalPaid = "0")
        {
            Users LoggedUser = Login.GetLoggedUser();
            if (LoggedUser == null)
            {
                return View("NoPermission");
            }
            if (LoggedUser.Role == Roles.Vendedor)
            {
                return View("NoPermission");
            }

            Users vendor = Users.ListVendors(LoggedUser).Find(i => i.Id == VendorId);
            ProductsAllocated product = ProductsAllocated.AlocatedProductsOnVendor(vendor).Find(i => i.Id == AllocatedId);
            #region Validation
            bool error = false;
            Validation vld = new Validation();
            vld.Amount(QuantityReturned, product.Amount);
            try
            {
                vld.Amount(QuantityReturned);

            }
            catch (Exception ex)
            {

                ViewBag.QuantityError = ex.Message;
                error = true;
            }
            try
            {
                vld.Amount(TotalPaid);

            }
            catch (Exception ex)
            {

                ViewBag.TotalPaidError = ex.Message;
                error = true;
            }
            try
            {
                vld.Amount(TotalPaid, product.Amount);
            }
            catch (Exception ex)
            {

                ViewBag.TotalPaidError = ex.Message;
                error = true;
            }
            #endregion Validation

            ViewBag.Vendors = Users.ListVendors(LoggedUser);
            ViewBag.SelectedVendor = vendor;
            if (product.Amount - (Convert.ToInt32(QuantityReturned) + Convert.ToInt32(TotalPaid)) >= 0 && !error)
            {
                product.Amount -= (Convert.ToInt32(TotalPaid) + (Convert.ToInt32(QuantityReturned)));
                product.Product.Amount += Convert.ToInt32(QuantityReturned);
                product.Update();
                Charges charge = new Charges()
                {
                    Amount = Convert.ToInt32(TotalPaid),
                    Client = LoggedUser,
                    Data = DateTime.Now,
                    Products = product.Product,
                    Type = Models.ChargesExtensions.ChargesTypes.Venda,
                    Value = MoneyConversor.RoundUp((MoneyConversor.RemoveComission(product.Price * Convert.ToInt32(TotalPaid), product.Commision))),
                    Vendor = vendor
                };
                charge.Save();
                ViewBag.Save = "Salvo com sucesso";
                return View("AccountabilityPerVendor");
            }
            ViewBag.vendorId = VendorId;
            ViewBag.Product = product;
            ViewBag.error = error;
            return View("AccountabilityPerVendor");

        }
コード例 #2
0
        public ActionResult AllocateProducts(string vendorid, List<AlocatteProductForm> alocateForm)
        {
            Users LoggedUser = Login.GetLoggedUser();
            if (LoggedUser == null)
            {
                return View("NoPermission");
            }
            if (LoggedUser.Role == Roles.Vendedor)
            {
                return View("NoPermission");
            }


            Validation validattion = new Validation();
            List<string> productError = new List<string>();
            string vendorError = null;
            List<string> AmountError = new List<string>();
            List<string> ComissionError = new List<string>();
            List<string> DataError = new List<string>();
            List<string> formError = new List<string>();
            List<int> boxErrorNumber = new List<int>();
            for (int i = 0; i < alocateForm.Count; i++)
            {
                productError.Add("");
                AmountError.Add("");
                ComissionError.Add("");
                DataError.Add("");
                formError.Add("");

            }


            alocateForm.RemoveAll(i => i.DateAccountability <= DateTime.MinValue || i.Amount == 0 || i.ProductId == 0 || i.Comission == "");

            foreach (var item in alocateForm)
            {
                if (Products.Queryable.Where(i => i.User == LoggedUser && i.Id == item.ProductId).FirstOrDefault() == null)
                {
                    productError[item.BoxNumber] = "Produto não encontrado";
                    boxErrorNumber.Add(item.BoxNumber);
                }

                try
                {
                    validattion.Commission(item.Comission.ToString(CultureInfo.InvariantCulture).Replace(',', '.'));
                }
                catch (Exception ex)
                {
                    ComissionError[item.BoxNumber] = ex.Message;
                }

                if (!string.IsNullOrEmpty(ComissionError[item.BoxNumber]))
                    boxErrorNumber.Add(item.BoxNumber);
                else
                {
                    item.Comission = item.Comission.ToString(CultureInfo.InvariantCulture).Replace(',', '.');
                }
                try
                {
                    validattion.DateNotToday(item.DateAccountability.ToString());
                }
                catch (Exception ex)
                {

                    DataError[item.BoxNumber] = ex.Message;
                }
                if (!string.IsNullOrEmpty(DataError[item.BoxNumber]))
                    boxErrorNumber.Add(item.BoxNumber);

                item.Product = Products.Queryable.Where(i => i.User == LoggedUser && i.Id == item.ProductId).FirstOrDefault();

            }

            Users vendor = new Users();
            if (string.IsNullOrEmpty(vendorid))
                vendorError = "Vendedor Invalido";



            else
            {
                vendor = Users.Queryable.Where(i => i.UserBoss == LoggedUser && i.Id == int.Parse(vendorid)).FirstOrDefault();
                if (vendor == null)
                {
                    vendorError = "Vendedor Invalido";
                }
            }

            foreach (var productItem in alocateForm)
            {

                if (productItem.Product.Amount < productItem.Amount || productItem.Amount <= 0)
                {
                    AmountError[productItem.BoxNumber] = "Quantidade indisponivel: " + productItem.Product.Name + " Estq: " + productItem.Product.Amount;
                    boxErrorNumber.Add(productItem.BoxNumber);
                }
                if (string.IsNullOrEmpty(productError[productItem.BoxNumber]) && string.IsNullOrEmpty(vendorError) && string.IsNullOrEmpty(AmountError[productItem.BoxNumber]) && string.IsNullOrEmpty(formError[productItem.BoxNumber]) && string.IsNullOrEmpty(DataError[productItem.BoxNumber]))
                {
                    ProductsAllocated existingAlocate = ProductsAllocated.Queryable.Where(i => i.Product == productItem.Product && i.Vendor == vendor &&
                        i.Price == productItem.Product.Price && i.Cost == productItem.Product.Cost && i.DateAccountability == productItem.DateAccountability && i.Commision == double.Parse(productItem.Comission, CultureInfo.InvariantCulture)).FirstOrDefault();
                    productItem.Product.Amount -= productItem.Amount;
                    if (existingAlocate == null)
                    {
                        ProductsAllocated productAlocate = new ProductsAllocated { Product = productItem.Product, Vendor = vendor, Amount = productItem.Amount, Cost = productItem.Product.Cost, Price = productItem.Product.Price, DateAccountability = productItem.DateAccountability, Commision = double.Parse(productItem.Comission, CultureInfo.InvariantCulture) };
                        productAlocate.Save();
                    }
                    else
                    {
                        existingAlocate.Amount += productItem.Amount;
                        existingAlocate.Update();

                    }
                    ViewBag.SaveSuccess = "Produto alocado com sucesso";
                    productItem.Product.Save();

                }
            }
            List<Products> listproducts = Products.Queryable.Where(i => i.User == LoggedUser).ToList();
            List<Users> vendors = Users.Queryable.Where(i => i.UserBoss == LoggedUser).ToList();
            ViewBag.Products = listproducts;
            ViewBag.Vendors = vendors;

            List<AlocatteProductForm> boxWithError = new List<AlocatteProductForm>();

            //errors
            foreach (var item in boxErrorNumber.Distinct())
            {
                boxWithError.Add(alocateForm.Where(i => i.BoxNumber == item).FirstOrDefault());
            }
            ViewBag.boxWithError = boxWithError;
            ViewBag.productError = productError;
            ViewBag.vendorError = vendorError;
            ViewBag.AmountError = AmountError;
            ViewBag.FormError = formError;
            ViewBag.DataError = DataError;
            ViewBag.ComissionError = ComissionError;
            if (boxWithError.Count() > 0)
            {
                ViewBag.Vendor = vendor;
            }
            return View("AllocateProduct");
        }