Exemplo n.º 1
0
        //進貨單
        public ActionResult 進貨單建立()
        {
            MotaiDataEntities dbContext = new MotaiDataEntities();

            if (Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] != null)
            {
                StockCreateViewModel model  = new StockCreateViewModel();
                StockDetailViewModel detail = new StockDetailViewModel();
                tEmployee            emp    = Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] as tEmployee;
                model.sEmployeeId = emp.EmployeeId;
                var productNames = productRespoitory.GetNameAll();
                List <SelectListItem> productlist = productRespoitory.GetPositionName(productNames);
                var warehouseNames = commodityRespoitory.GetWarehouseAll();
                List <SelectListItem> warehouselist = commodityRespoitory.GetSelectList(warehouseNames);
                detail.WareHouseNames = warehouselist;
                detail.ProductNames   = productlist;
                DateTime today = DateTime.Now.Date;
                var      count = dbContext.tStockLists.Where(s => s.sStockDate == today).ToList().Count;
                count++;
                model.sStockSerialValue = Convert.ToInt32(DateTime.Now.ToString("yyMMdd") + count.ToString("0000"));
                model.StockDetail       = detail;
                model.sStockDate        = DateTime.Now;
                return(View(model));
            }
            else
            {
                return(RedirectToAction("員工登入", "Employee"));
            }
        }
        public ActionResult _Create(StockCreateViewModel model)
        {
            StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"];
            double totalLiabilityValue = 0;

            if (liabilities != null)
            {
                totalLiabilityValue = liabilities.Liabilities.Sum(x => x.Value.HasValue ? x.Value.Value : 0);
            }

            if (model.StockValue < totalLiabilityValue && totalLiabilityValue > 0)
            {
                ModelState.AddModelError("CompareStockValueAndLiabilityValue", "Giá trị tổng số nợ không vượt quá giá trị cổ phiếu");
            }

            if (StockQueries.CheckExistStock(UserQueries.GetCurrentUsername(), model.Name))
            {
                ModelState.AddModelError("DuplicateName", "Cổ phiếu này đã tồn tại");
            }

            if (ModelState.IsValid)
            {
                HttpContext.Session["STOCK"] = model;
                return(Content("success"));
            }
            else
            {
                return(PartialView("_StockForm", model));
            }
        }
        public static int CreateStock(StockCreateViewModel model, string username)
        {
            int      result   = 0;
            DateTime current  = DateTime.Now;
            Entities entities = new Entities();

            //Create stock
            Assets stock = new Assets();

            stock.AssetName   = model.Name;
            stock.Note        = model.Note;
            stock.CreatedDate = current;
            stock.CreatedBy   = Constants.Constants.USER;
            stock.AssetType   = (int)Constants.Constants.ASSET_TYPE.STOCK;
            stock.ObtainedBy  = (int)Constants.Constants.OBTAIN_BY.CREATE;
            stock.Username    = username;

            StockTransactions transaction = new StockTransactions();

            transaction.Name             = "Tạo cổ phiếu " + stock.AssetName;
            transaction.NumberOfShares   = model.NumberOfStock.Value;
            transaction.SpotPrice        = model.SpotRice.Value;
            transaction.Value            = model.StockValue.Value;
            transaction.ExpectedDividend = model.ExpectedDividend.Value;
            transaction.Username         = username;
            transaction.TransactionDate  = current;
            transaction.TransactionType  = (int)Constants.Constants.TRANSACTION_TYPE.CREATE;
            transaction.CreatedDate      = current;
            transaction.CreatedBy        = Constants.Constants.USER;

            if (model.IsInDebt)
            {
                if (model.Liabilities != null && model.Liabilities.Liabilities.Count > 0)
                {
                    foreach (var liabilityViewModel in model.Liabilities.Liabilities)
                    {
                        Liabilities liability = new Liabilities();
                        liability.Name             = liabilityViewModel.Source;
                        liability.Value            = liabilityViewModel.Value.Value;
                        liability.InterestType     = liabilityViewModel.InterestType;
                        liability.InterestRate     = liabilityViewModel.InterestRate.Value;
                        liability.InterestRatePerX = liabilityViewModel.InterestRatePerX;
                        liability.StartDate        = liabilityViewModel.StartDate.Value;
                        liability.EndDate          = liabilityViewModel.EndDate.Value;
                        liability.LiabilityType    = (int)Constants.Constants.LIABILITY_TYPE.STOCK;
                        liability.CreatedDate      = current;
                        liability.CreatedBy        = Constants.Constants.USER;
                        liability.Username         = username;
                        transaction.Liabilities.Add(liability);
                        stock.Liabilities.Add(liability);
                    }
                }
            }

            stock.StockTransactions.Add(transaction);

            entities.Assets.Add(stock);
            result = entities.SaveChanges();
            return(result);
        }
        public ActionResult _LiabilityUpdateForm(StockLiabilityCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"];
                StockLiabilityCreateViewModel     updateModel = liabilities.Liabilities.Where(x => x.Id == model.Id).FirstOrDefault();

                updateModel.Value = model.Value;

                StockCreateViewModel stock = (StockCreateViewModel)HttpContext.Session["STOCK"];
                double totalLiabilityValue = liabilities != null?liabilities.Liabilities.Sum(x => x.Value.HasValue?x.Value.Value : 0) : 0;

                if (stock.StockValue < totalLiabilityValue && totalLiabilityValue > 0)
                {
                    ModelState.AddModelError("CompareStockValueAndLiabilityValue", "Giá trị tổng số nợ không vượt quá giá trị cổ phiếu");
                    return(PartialView(model));
                }
                else
                {
                    updateModel.Id                     = model.Id;
                    updateModel.Source                 = model.Source;
                    updateModel.InterestType           = model.InterestType;
                    updateModel.InterestRate           = model.InterestRate;
                    updateModel.StartDate              = model.StartDate;
                    updateModel.EndDate                = model.EndDate;
                    HttpContext.Session["LIABILITIES"] = liabilities;
                    return(Content("success"));
                }
            }
            else
            {
                return(PartialView(model));
            }
        }
        public ActionResult _Create()
        {
            StockCreateViewModel model = new StockCreateViewModel();

            HttpContext.Session["LIABILITIES"] = null;
            HttpContext.Session["STOCK"]       = null;
            return(PartialView(model));
        }
Exemplo n.º 6
0
 public JsonResult 進貨單建立(StockCreateViewModel stockList)
 {
     if (Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] != null)
     {
         tEmployee emp = Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] as tEmployee;
         if (Session[CSession關鍵字.SK_STOCKDETAIL] == null)
         {
             return(Json(new { result = false, msg = "進貨單尚未完成!", url = "" }));
         }
         else
         {
             List <StockDetailViewModel> stocks    = Session[CSession關鍵字.SK_STOCKDETAIL] as List <StockDetailViewModel>;
             MotaiDataEntities           dbContext = new MotaiDataEntities();
             tStockList list = new tStockList();
             list.sEmployeeId       = emp.EmployeeId;
             list.sStockSerialValue = stockList.sStockSerialValue;
             list.sVendor           = stockList.sVendor;
             list.sVendorTel        = stockList.sVendorTel;
             list.sStockDate        = stockList.sStockDate;
             list.sStockNote        = stockList.sStockNote;
             dbContext.tStockLists.Add(list);
             dbContext.SaveChanges();
             foreach (var items in stocks)
             {
                 tStockDetail detail = new tStockDetail();
                 detail.sStockId         = dbContext.tStockLists.OrderByDescending(i => i.StockId).First().StockId;
                 detail.sProductId       = items.sProductId;
                 detail.sCost            = items.sCost;
                 detail.sQuantity        = items.sQuantity;
                 detail.sWarehouseNameId = items.sWarehouseNameId;
                 detail.sNote            = items.sNote;
                 dbContext.tStockDetails.Add(detail);
                 //倉儲變動
                 tWarehouse Warehouse = dbContext.tWarehouses.Where(w => w.WarehouseNameId.Equals(items.sWarehouseNameId) && w.wProductId.Equals(items.sProductId)).FirstOrDefault();
                 if (Warehouse != null)
                 {
                     Warehouse.wPQty += items.sQuantity;
                 }
                 else
                 {
                     tWarehouse warehouse = new tWarehouse();
                     warehouse.WarehouseNameId = items.sWarehouseNameId;
                     warehouse.wProductId      = items.sProductId;
                     warehouse.wPQty           = items.sQuantity;
                     dbContext.tWarehouses.Add(warehouse);
                 }
             }
             dbContext.SaveChanges();
             Session[CSession關鍵字.SK_STOCKDETAIL] = null;
             return(Json(new { result = true, msg = "新增成功", url = Url.Action("進貨單建立", "Commodity") }));
         }
     }
     else
     {
         return(Json(new { result = false, msg = "尚未登入!", url = Url.Action("員工登入", "Employee") }));
     }
 }
Exemplo n.º 7
0
        // GET: Stock/Details/5
        public IActionResult Create()
        {
            var stocks = _stockManager.GetAll();
            var model  = new StockCreateViewModel();

            model.StockList = stocks.ToList();
            PopulateDropdownList(); /*Dropdown List Binding*/
            return(View(model));
        }
        public ActionResult _StockForm()
        {
            StockCreateViewModel model = (StockCreateViewModel)HttpContext.Session["STOCK"];

            if (model == null)
            {
                model = new StockCreateViewModel();
            }
            return(PartialView(model));
        }
Exemplo n.º 9
0
        public IActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var stock = _stockManager.GetById((Int64)id);

            PopulateDropdownList(stock.ProductId);
            StockCreateViewModel stockCreateViewModel = _mapper.Map <StockCreateViewModel>(stock);

            if (stock == null)
            {
                return(NotFound());
            }
            stockCreateViewModel.StockList = _stockManager.GetAll().ToList();
            return(View(stock));
        }
Exemplo n.º 10
0
 //進貨單
 public ActionResult 進貨單建立()
 {
     if (Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] != null)
     {
         StockCreateViewModel model  = new StockCreateViewModel();
         StockDetailViewModel detail = new StockDetailViewModel();
         tEmployee            emp    = Session[CSession關鍵字.SK_LOGINED_EMPLOYEE] as tEmployee;
         model.sEmployeeId = emp.EmployeeId;
         var productNames = productRespoitory.GetNameAll();
         List <SelectListItem> productlist = productRespoitory.GetSelectList(productNames);
         var warehouseNames = commodityRespoitory.GetWarehouseAll();
         List <SelectListItem> warehouselist = commodityRespoitory.GetSelectList(warehouseNames);
         detail.WareHouseNames = warehouselist;
         detail.ProductNames   = productlist;
         model.StockDetail     = detail;
         return(View(model));
     }
     return(RedirectToAction("員工登入", "Employee"));
 }
        public ActionResult _LiabilityForm(StockLiabilityCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                int id = 1;
                StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"];
                StockCreateViewModel stock = (StockCreateViewModel)HttpContext.Session["STOCK"];
                double totalLiabilityValue = liabilities != null?liabilities.Liabilities.Sum(x => x.Value.HasValue?x.Value.Value : 0) : 0;

                if (stock.StockValue < totalLiabilityValue + model.Value && totalLiabilityValue + model.Value > 0)
                {
                    ModelState.AddModelError("CompareStockValueAndLiabilityValue", "Giá trị tổng số nợ không vượt quá giá trị cổ phiếu");
                    return(PartialView(model));
                }
                else
                {
                    if (liabilities == null)
                    {
                        liabilities = new StockLiabilityListCreateViewModel();
                    }
                    else
                    {
                        if (liabilities.Liabilities.Count > 0)
                        {
                            id = liabilities.Liabilities.Max(x => x.Id) + 1;
                        }
                        else
                        {
                            id = 1;
                        }
                    }
                    model.Id = id;
                    liabilities.Liabilities.Add(model);
                    HttpContext.Session["LIABILITIES"] = liabilities;
                    return(Content("success"));
                }
            }
            else
            {
                return(PartialView(model));
            }
        }
Exemplo n.º 12
0
        public IActionResult Create(StockCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                var stock = _mapper.Map <Stock>(model); //AutoMapper

                bool isAdded = _stockManager.Add(stock);
                if (isAdded)
                {
                    ViewBag.SuccessMessage = "Saved Successfully!";
                }
            }
            else
            {
                ViewBag.ErrorMessage = "Operation Failed!";
            }

            model.StockList = _stockManager.GetAll().ToList();
            PopulateDropdownList(model.ProductId); /*Dropdown List Binding*/
            return(View(model));
        }
        public ActionResult _Confirm()
        {
            DateTime current = DateTime.Now;

            StockCreateViewModel model     = (StockCreateViewModel)HttpContext.Session["STOCK"];
            StockViewModel       viewModel = new StockViewModel();

            viewModel.Name = model.Name;
            viewModel.Note = model.Note;
            viewModel.Transactions.Transactions.Add(new StockTransactionViewModel
            {
                NumberOfStock    = model.NumberOfStock,
                SpotRice         = model.SpotRice,
                StockValue       = model.StockValue,
                ExpectedDividend = model.ExpectedDividend / 100,
            });

            StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"];

            if (liabilities != null && liabilities.Liabilities.Count > 0)
            {
                foreach (var liability in liabilities.Liabilities)
                {
                    StockLiabilityViewModel liabilityViewModel = new StockLiabilityViewModel();
                    liabilityViewModel.Source           = liability.Source;
                    liabilityViewModel.Value            = liability.Value;
                    liabilityViewModel.InterestType     = StockLiabilityQueries.Helper.GetInterestType(liability.InterestType);
                    liabilityViewModel.InterestRatePerX = StockLiabilityQueries.Helper.GetInterestTypePerX(liability.InterestRatePerX);
                    liabilityViewModel.InterestRate     = liability.InterestRate / 100;
                    liabilityViewModel.StartDate        = liability.StartDate.Value;
                    liabilityViewModel.EndDate          = liability.EndDate.Value;
                    liabilityViewModel.PaymentPeriod    = StockLiabilityQueries.Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, liabilityViewModel.EndDate.Value);

                    if (liabilityViewModel.StartDate <= current && current <= liabilityViewModel.EndDate)
                    {
                        int    currentPeriod = Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, DateTime.Now);
                        double interestRate  = liability.InterestRatePerX == (int)Constants.Constants.INTEREST_RATE_PER.MONTH ? liability.InterestRate.Value / 100 : liability.InterestRate.Value / 1200;
                        liabilityViewModel.OriginalInterestPayment = liabilityViewModel.Value.Value * interestRate;
                        //Fixed interest type
                        if (liability.InterestType == (int)Constants.Constants.INTEREST_TYPE.FIXED)
                        {
                            liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod;
                            liabilityViewModel.MonthlyInterestPayment = liabilityViewModel.Value.Value * interestRate;
                            liabilityViewModel.TotalMonthlyPayment    = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment;
                            liabilityViewModel.TotalPayment           = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability);
                            liabilityViewModel.RemainedValue          = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1);
                            liabilityViewModel.Status     = "Đang nợ";
                            liabilityViewModel.StatusCode = "label-success";
                        }
                        //Reduced interest type
                        else
                        {
                            liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod;
                            liabilityViewModel.RemainedValue          = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1);
                            liabilityViewModel.MonthlyInterestPayment = (liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * currentPeriod) * interestRate;
                            liabilityViewModel.TotalMonthlyPayment    = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment;
                            liabilityViewModel.TotalPayment           = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability);
                            liabilityViewModel.Status     = "Đang nợ";
                            liabilityViewModel.StatusCode = "label-success";
                        }
                    }
                    else
                    {
                        liabilityViewModel.MonthlyOriginalPayment = 0;
                        liabilityViewModel.MonthlyInterestPayment = 0;
                        liabilityViewModel.TotalMonthlyPayment    = 0;
                        liabilityViewModel.TotalPayment           = 0;
                        liabilityViewModel.RemainedValue          = 0;
                    }

                    viewModel.Transactions.Transactions.FirstOrDefault().Liabilities.Liabilities.Add(liabilityViewModel);
                }

                var lbts = viewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities.Where(y => y.StartDate <= current && y.EndDate >= current));
                viewModel.TotalLiabilityValue  = lbts.Sum(x => x.Sum(y => y.Value.HasValue ? y.Value.Value : 0));
                viewModel.TotalOriginalPayment = lbts.Sum(x => x.Sum(y => y.MonthlyOriginalPayment));
                viewModel.TotalInterestPayment = lbts.Sum(x => x.Sum(y => y.MonthlyInterestPayment));
                viewModel.TotalMonthlyPayment  = lbts.Sum(x => x.Sum(y => y.TotalMonthlyPayment));
                viewModel.TotalPayment         = lbts.Sum(x => x.Sum(y => y.TotalPayment));
                viewModel.TotalRemainedValue   = lbts.Sum(x => x.Sum(y => y.RemainedValue));
                viewModel.TotalInterestRate    = viewModel.TotalLiabilityValue > 0 ? lbts.Sum(x => x.Sum(y => y.OriginalInterestPayment)) / viewModel.TotalLiabilityValue * 12 : 0;
                viewModel.RowSpan = viewModel.Transactions.Transactions.Any() ? viewModel.Transactions.Transactions.Count() + viewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities).Count() + 4 : 4;

                if (viewModel.Transactions.Transactions.Any())
                {
                    viewModel.RowSpan = 4;
                    bool flag = false;
                    foreach (var transaction in viewModel.Transactions.Transactions)
                    {
                        if (transaction.Liabilities.Liabilities.Count() > 0)
                        {
                            if (flag == false)
                            {
                                flag = true;
                            }
                            viewModel.RowSpan += transaction.Liabilities.Liabilities.Count();
                        }
                    }
                    if (flag == true)
                    {
                        viewModel.RowSpan += 1;
                    }
                }
                else
                {
                    viewModel.RowSpan = 4;
                }
            }

            return(PartialView(viewModel));
        }