Esempio n. 1
0
        public ActionResult Shipping(int?Id)
        {
            var q = RequestInboundRepository.GetvwRequestInboundById(Id.Value);

            if (q != null && q.IsDeleted != true)
            {
                var model = new RequestInboundViewModel();
                AutoMapper.Mapper.Map(q, model);
                return(View(model));
            }
            return(RedirectToAction("Edit", new { Id = q.Id }));
        }
Esempio n. 2
0
        public ActionResult Refure(RequestInboundViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (Request["Submit"] == "Save")
                {
                    var q = RequestInboundRepository.GetRequestInboundById(model.Id);
                    q.Status         = "refure";
                    q.CancelReason   = model.CancelReason;
                    q.ModifiedUserId = WebSecurity.CurrentUserId;
                    RequestInboundRepository.UpdateRequestInbound(q);

                    //gửi notifications cho người được phân quyền.
                    Crm.Controllers.ProcessController.Run("RequestInbound", "Refure", q.Id, q.CreatedUserId, null, q);

                    return(View("_ClosePopup"));
                }
                return(RedirectToAction("Edit", new { Id = model.Id }));
            }
            TempData[Globals.SuccessMessageKey] = "Yêu cầu: " + model.Code + " bị từ chối không thành công.";
            return(RedirectToAction("Index"));
        }
Esempio n. 3
0
        public ActionResult Shipping(RequestInboundViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (Request["Submit"] == "Save")
                {
                    var q = RequestInboundRepository.GetRequestInboundById(model.Id);
                    q.Status         = "shipping";
                    q.ShipName       = model.ShipName;
                    q.ShipPhone      = model.ShipPhone;
                    q.ModifiedUserId = WebSecurity.CurrentUserId;
                    RequestInboundRepository.UpdateRequestInbound(q);

                    //gửi notifications cho người được phân quyền.
                    Crm.Controllers.ProcessController.Run("RequestInbound", "Shipping", q.Id, q.CreatedUserId, null, q);

                    return(View("_ClosePopup"));
                }
                return(RedirectToAction("Edit", new { Id = model.Id }));
            }
            TempData[Globals.SuccessMessageKey] = "Yêu cầu: " + model.Code + " giao hàng không thành công. Vui lòng kiểm tra lại thông tin bên giao hàng";
            return(RedirectToAction("Index"));
        }
Esempio n. 4
0
        public ActionResult Create(RequestInboundViewModel model)
        {
            if (ModelState.IsValid && model.DetailList.Count != 0)
            {
                var requestInbound = new Domain.Sale.Entities.RequestInbound();
                using (var scope = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        AutoMapper.Mapper.Map(model, requestInbound);
                        if (model.Id > 0)
                        {
                        }
                        else
                        {
                            requestInbound.IsDeleted      = false;
                            requestInbound.CreatedUserId  = WebSecurity.CurrentUserId;
                            requestInbound.ModifiedUserId = WebSecurity.CurrentUserId;
                            requestInbound.CreatedDate    = DateTime.Now;
                            requestInbound.ModifiedDate   = DateTime.Now;
                            var branch = WarehouseRepository.GetWarehouseById(requestInbound.WarehouseDestinationId.Value);
                            requestInbound.BranchId = branch.BranchId;
                            requestInbound.Status   = "new";
                        }
                        //duyệt qua danh sách sản phẩm mới xử lý tình huống user chọn 2 sản phầm cùng id
                        List <Domain.Sale.Entities.RequestInboundDetail> listNewCheckSameId = new List <Domain.Sale.Entities.RequestInboundDetail>();
                        foreach (var group in model.DetailList.GroupBy(x => x.ProductId))
                        {
                            var product = ProductRepository.GetProductById(group.Key.Value);

                            listNewCheckSameId.Add(new Domain.Sale.Entities.RequestInboundDetail
                            {
                                ProductId      = group.Key,
                                Quantity       = group.Sum(x => x.Quantity),
                                Unit           = product.Unit,
                                Price          = product.PriceOutbound,
                                IsDeleted      = false,
                                CreatedUserId  = WebSecurity.CurrentUserId,
                                ModifiedUserId = WebSecurity.CurrentUserId,
                                CreatedDate    = DateTime.Now,
                                ModifiedDate   = DateTime.Now,
                            });
                        }

                        requestInbound.TotalAmount = listNewCheckSameId.Sum(x => x.Price * x.Quantity);

                        if (model.Id > 0)
                        {
                            requestInbound.Status = "new";
                            RequestInboundRepository.UpdateRequestInbound(requestInbound);
                            var listDetail = RequestInboundRepository.GetAllRequestInboundDetailsByInvoiceId(requestInbound.Id).ToList();
                            //xóa danh sách dữ liệu cũ dưới database
                            RequestInboundRepository.DeleteRequestInboundDetail(listDetail);
                            //thêm mới toàn bộ database
                            foreach (var item in listNewCheckSameId)
                            {
                                item.RequestInboundId = requestInbound.Id;
                                RequestInboundRepository.InsertRequestInboundDetail(item);
                            }
                            //lấy thông tin chi nhánh gửi yêu cầu hiện vào notification
                            var branchName = branchRepository.GetBranchById(model.BranchId.Value);

                            //Apply business process flow
                            Crm.Controllers.ProcessController.Run("RequestInbound", "Create", requestInbound.Id, requestInbound.ModifiedUserId, null, requestInbound);
                        }
                        else
                        {
                            RequestInboundRepository.InsertRequestInbound(requestInbound, listNewCheckSameId);

                            //cập nhật lại mã hóa đơn
                            string prefix = Erp.BackOffice.Helpers.Common.GetSetting("prefixOrderNo_RequestInbound");
                            requestInbound.Code = Erp.BackOffice.Helpers.Common.GetCode(prefix, requestInbound.Id);
                            RequestInboundRepository.UpdateRequestInbound(requestInbound);

                            var branchName = branchRepository.GetBranchById(requestInbound.BranchId.Value);

                            //run process task
                            Crm.Controllers.ProcessController.Run("RequestInbound", "Create", requestInbound.Id, requestInbound.ModifiedUserId, null, requestInbound, requestInbound.BranchId.Value.ToString());
                        }
                        scope.Complete();
                    }
                    catch (DbUpdateException)
                    {
                        TempData[Globals.FailedMessageKey] = App_GlobalResources.Wording.Error;
                        return(View(model));
                    }
                }
                return(RedirectToAction("Detail", new { Id = requestInbound.Id }));
            }
            return(View(model));
        }
Esempio n. 5
0
        public ActionResult Create(int?Id)
        {
            RequestInboundViewModel model = new RequestInboundViewModel();

            model.DetailList = new List <RequestInboundDetailViewModel>();
            if (Id.HasValue && Id > 0)
            {
                var requestInbound = RequestInboundRepository.GetvwRequestInboundById(Id.Value);
                AutoMapper.Mapper.Map(requestInbound, model);

                var detailList = RequestInboundRepository.GetAllvwRequestInboundDetailsByInvoiceId(requestInbound.Id).ToList();
                AutoMapper.Mapper.Map(detailList, model.DetailList);
            }
            var warehouseList = WarehouseRepository.GetvwAllWarehouse().AsEnumerable();
            var user          = userRepository.GetByvwUserName(Helpers.Common.CurrentUser.UserName);

            if (!Erp.BackOffice.Filters.SecurityFilter.IsAdmin() && !Erp.BackOffice.Filters.SecurityFilter.IsKeToan())
            {
                warehouseList = warehouseList.Where(x => ("," + user.WarehouseId + ",").Contains("," + x.Id + ",") == true);
            }
            var _warehouseList = warehouseList.Select(item => new SelectListItem
            {
                Text  = item.Name + " (" + item.BranchName + ")",
                Value = item.Id.ToString()
            });

            ViewBag.warehouseList = _warehouseList;
            //string image_folder_product = Helpers.Common.GetSetting("product-image-folder");
            var productList = ProductRepository.GetAllProduct().AsEnumerable()
                              .Select(item => new ProductViewModel
            {
                Code          = item.Code,
                Barcode       = item.Barcode,
                Name          = item.Name,
                Id            = item.Id,
                CategoryCode  = string.IsNullOrEmpty(item.CategoryCode) ? "Sản phẩm khác" : item.CategoryCode,
                PriceOutbound = item.PriceOutbound,
                Unit          = item.Unit,
                Image_Name    = Erp.BackOffice.Helpers.Common.KiemTraTonTaiHinhAnh(item.Image_Name, "product-image-folder", "product")
            }).ToList();

            ViewBag.productList   = productList;
            model.CreatedDate     = DateTime.Now;
            model.CreatedUserName = Helpers.Common.CurrentUser.FullName;
            ViewBag.isAdmin       = Erp.BackOffice.Helpers.Common.CurrentUser.UserTypeId == 1 ? true : false;
            if (model.DetailList != null && model.DetailList.Count > 0)
            {
                foreach (var item in model.DetailList)
                {
                    var product = productList.Where(i => i.Id == item.ProductId).FirstOrDefault();
                    if (product == null)
                    {
                        item.Id = 0;
                    }
                }

                model.DetailList.RemoveAll(x => x.Id == 0);

                int n = 0;
                foreach (var item in model.DetailList)
                {
                    item.OrderNo = n;
                    n++;
                }
            }
            return(View(model));
        }
Esempio n. 6
0
        public ActionResult Detail(int?Id)
        {
            var model = new RequestInboundViewModel();
            var modelproductInbound  = new ProductInboundViewModel();
            var modelproductOutbound = new ProductOutboundViewModel();
            var requestInbound       = new vwRequestInbound();
            var productInbound       = new vwProductInbound();
            var productOutbound      = new vwProductOutbound();

            if (Id != null && Id.Value > 0)
            {
                requestInbound = RequestInboundRepository.GetvwRequestInboundById(Id.Value);
                if (requestInbound.InboundId != null && requestInbound.InboundId.Value > 0)
                {
                    productInbound = productInboundRepository.GetvwProductInboundFullById(requestInbound.InboundId.Value);
                    AutoMapper.Mapper.Map(productInbound, modelproductInbound);
                    modelproductInbound.CreatedUserName = userRepository.GetUserById(modelproductInbound.CreatedUserId.Value).FullName;
                }
                if (requestInbound.OutboundId != null && requestInbound.OutboundId.Value > 0)
                {
                    productOutbound = productOutboundRepository.GetvwProductOutboundFullById(requestInbound.OutboundId.Value);
                    AutoMapper.Mapper.Map(productOutbound, modelproductOutbound);
                    modelproductOutbound.CreatedUserName = userRepository.GetUserById(modelproductOutbound.CreatedUserId.Value).FullName;
                }
            }
            ViewBag.productInbound  = modelproductInbound;
            ViewBag.productOutbound = modelproductOutbound;
            AutoMapper.Mapper.Map(requestInbound, model);
            model.CreatedUserName = userRepository.GetUserById(requestInbound.CreatedUserId.Value).FullName;
            model.DetailList      = RequestInboundRepository.GetAllvwRequestInboundDetailsByInvoiceId(requestInbound.Id).AsEnumerable().Select(x =>
                                                                                                                                               new RequestInboundDetailViewModel
            {
                Id                = x.Id,
                Price             = x.Price,
                ProductId         = x.ProductId,
                Quantity          = x.Quantity,
                Unit              = x.Unit,
                CategoryCode      = x.CategoryCode,
                ProductName       = x.ProductName,
                ProductCode       = x.ProductCode,
                ProductGroup      = x.ProductGroup,
                Manufacturer      = x.Manufacturer,
                ProductBarCode    = x.ProductBarCode,
                RequestInboundId  = x.RequestInboundId,
                QuantityRemaining = x.QuantityRemaining,
                ProductGroupName  = x.ProductGroupName,
                Image_Name        = x.Image_Name
            }).OrderBy(x => x.Id).ToList();
            var warehouse = WarehouseRepository.GetAllWarehouse().Where(x => x.IsSale == true && x.BranchId == null).ToList();

            if (warehouse.Count() > 0)
            {
                // var wh = warehouse.FirstOrDefault().Id;
                var productList = Domain.Helper.SqlHelper.QuerySP <InventoryViewModel>("spSale_Get_Inventory", new { WarehouseId = "", HasQuantity = "1", ProductCode = "", ProductName = "", CategoryCode = "", ProductGroup = "", BranchId = "", LoCode = "", ProductId = "", ExpiryDate = "" });
                productList = productList.Where(id1 => warehouse.Any(id2 => id2.Id == id1.WarehouseId)).ToList();
                foreach (var item in model.DetailList)
                {
                    var quantity = productList.Where(x => x.ProductId == item.ProductId).Sum(x => x.Quantity);
                    item.QuantityInventoryKT  = quantity == null ? 0 : quantity;
                    item.QuantityNotCondition = item.QuantityInventoryKT <= 0 ? 1 : 0;
                }
            }
            var ProductInvoiceList = SqlHelper.QuerySP <ProductInvoiceViewModel>("spSale_LiabilitiesDrugStore", new
            {
                StartDate  = "",
                EndDate    = "",
                branchId   = model.BranchId,
                CityId     = "",
                DistrictId = ""
            }).ToList();

            //var inbound = productInboundRepository.GetAllProductInbound().Where(x => x.BranchId == model.BranchId&&x.IsArchive==true).Sum(x => x.TotalAmount);
            model.Liabilities = 0;
            var invoice = ProductInvoiceList.Where(x => x.AccountancyUserId == null).Sum(x => x.TotalAmount);

            model.Liabilities    = invoice;
            model.MaxDebitAmount = branchRepository.GetBranchById(model.BranchId.Value).MaxDebitAmount;
            var tonkho = Domain.Helper.SqlHelper.QuerySP <InventoryViewModel>("spSale_Get_Inventory", new { WarehouseId = model.WarehouseDestinationId, HasQuantity = "1", ProductCode = "", ProductName = "", CategoryCode = "", ProductGroup = "", BranchId = "", LoCode = "", ProductId = "", ExpiryDate = "" }).ToList();

            model.DinhMucKho = tonkho.Sum(x => x.Quantity * x.ProductPriceOutbound) + invoice;
            //var user = userRepository.GetUserById(WebSecurity.CurrentUserId);
            //ViewBag.User = user;
            return(View(model));
        }
        public ActionResult Detail(int?Id)
        {
            var model = new RequestInboundViewModel();
            var modelproductInbound  = new ProductInboundViewModel();
            var modelproductOutbound = new ProductOutboundViewModel();
            var requestInbound       = new vwRequestInbound();
            var productInbound       = new vwProductInbound();
            var productOutbound      = new vwProductOutbound();

            if (Id != null && Id.Value > 0)
            {
                requestInbound = RequestInboundRepository.GetvwRequestInboundById(Id.Value);
                if (requestInbound.InboundId != null && requestInbound.InboundId.Value > 0)
                {
                    productInbound = productInboundRepository.GetvwProductInboundById(requestInbound.InboundId.Value);
                    AutoMapper.Mapper.Map(productInbound, modelproductInbound);
                    modelproductInbound.CreatedUserName = userRepository.GetUserById(modelproductInbound.CreatedUserId.Value).FullName;
                }
                if (requestInbound.OutboundId != null && requestInbound.OutboundId.Value > 0)
                {
                    productOutbound = productOutboundRepository.GetvwProductOutboundById(requestInbound.OutboundId.Value);
                    AutoMapper.Mapper.Map(productOutbound, modelproductOutbound);
                    modelproductOutbound.CreatedUserName = userRepository.GetUserById(modelproductOutbound.CreatedUserId.Value).FullName;
                }
            }
            ViewBag.productInbound  = modelproductInbound;
            ViewBag.productOutbound = modelproductOutbound;
            AutoMapper.Mapper.Map(requestInbound, model);
            model.CreatedUserName = userRepository.GetUserById(requestInbound.CreatedUserId.Value).FullName;
            model.DetailList      = RequestInboundRepository.GetAllvwRequestInboundDetailsByInvoiceId(requestInbound.Id).AsEnumerable().Select(x =>
                                                                                                                                               new RequestInboundDetailViewModel
            {
                Id                = x.Id,
                Price             = x.Price,
                ProductId         = x.ProductId,
                Quantity          = x.Quantity,
                Unit              = x.Unit,
                CategoryCode      = x.CategoryCode,
                ProductName       = x.ProductName,
                ProductCode       = x.ProductCode,
                ProductGroup      = x.ProductGroup,
                Manufacturer      = x.Manufacturer,
                ProductBarCode    = x.ProductBarCode,
                RequestInboundId  = x.RequestInboundId,
                QuantityRemaining = x.QuantityRemaining,
                Image_Name        = Erp.BackOffice.Helpers.Common.KiemTraTonTaiHinhAnh(x.Image_Name, "product-image-folder", "product")
            }).ToList();

            model.GroupProduct = model.DetailList.GroupBy(x => new { x.ProductGroup }, (key, group) => new RequestInboundDetailViewModel
            {
                ProductGroup = key.ProductGroup,
                ProductId    = group.FirstOrDefault().ProductId,
                Id           = group.FirstOrDefault().Id
            }).ToList();

            foreach (var item in model.GroupProduct)
            {
                if (!string.IsNullOrEmpty(item.ProductGroup))
                {
                    var ProductGroupName = categoryRepository.GetCategoryByCode("Categories_product").Where(x => x.Value == item.ProductGroup).FirstOrDefault();
                    item.ProductGroupName = ProductGroupName.Name;
                }
            }
            var user = userRepository.GetUserById(WebSecurity.CurrentUserId);

            ViewBag.User = user;
            return(View(model));
        }