Ejemplo n.º 1
0
        public ActionResult UnArchive(int Id)
        {
            if (Request["Submit"] == "Save")
            {
                var rePayPoints = RePayPointsService.Get(Id);

                //Kiểm tra cho phép sửa chứng từ này hay không
                if (Helpers.Common.KiemTraNgaySuaChungTu(rePayPoints.CreatedDate.Value) == false)
                {
                    TempData[Globals.FailedMessageKey] = "Quá hạn sửa chứng từ!";
                }
                else
                {
                    //cập nhật trạng thái
                    rePayPoints.ModifiedUserId = WebSecurity.CurrentUserId;
                    rePayPoints.ModifiedDate   = DateTime.Now;
                    rePayPoints.IsArchive      = false;
                    rePayPoints.Status         = RePayPointsStatus.Inprogress;
                    RePayPointsService.Update(rePayPoints);

                    // xoá lịch sử điểm và cập nhật lại điểm cho khách hàng
                    DeletePoint(rePayPoints);
                    // bỏ ghi sổ phiếu xuất kho
                    var ProductOutbound = ProductOutboundRepository.GetAllProductOutbound().Where(item => item.IsArchive == true && item.Type == ProductOutboundType.Gift && item.PayPointId == rePayPoints.Id).FirstOrDefault();
                    if (ProductOutbound != null)
                    {
                        ProductOutboundController.unArchiveFromInvoice(ProductOutboundRepository, ProductOutbound, TempData);
                        // xoá phiếu xuất kho
                        ProductOutbound.ModifiedUserId = WebSecurity.CurrentUserId;
                        ProductOutbound.ModifiedDate   = DateTime.Now;
                        ProductOutbound.IsDeleted      = true;
                        ProductOutbound.CancelReason   = "Bỏ ghi số đơn quà tặng - " + rePayPoints.Code;
                        ProductOutboundRepository.UpdateProductOutbound(ProductOutbound);
                    }

                    PostController.SavePost(rePayPoints.Id, "RePayPoints", "Bỏ ghi sổ (" + rePayPoints.Code + ")");

                    TempData[Globals.SuccessMessageKey] = "Đã bỏ ghi sổ";
                }
            }

            return(RedirectToAction("Detail", new { Id = Id }));
        }
Ejemplo n.º 2
0
        public ActionResult Exchange(int Id)
        {
            var PhysicalInventory = PhysicalInventoryRepository.GetPhysicalInventoryById(Id);

            if (PhysicalInventory == null)
            {
                TempData[Globals.FailedMessageKey] = App_GlobalResources.Wording.NotfoundObject;
                if (PhysicalInventory.Type == PhysicalInventoryType.Product)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(RedirectToAction("ListForCard"));
                }
            }

            List <ProductOutboundDetail> outboundDetails = new List <ProductOutboundDetail>();
            List <ProductInboundDetail>  inboundDetails  = new List <ProductInboundDetail>();

            var listDetail = PhysicalInventoryRepository.GetAllPhysicalInventoryDetail(Id).Where(x => x.QuantityInInventory != x.QuantityRemaining).ToList();

            foreach (var item in listDetail)
            {
                var product = ProductRepository.GetProductById(item.ProductId);

                if (item.QuantityDiff < 0) //Chênh lệch dương thì thuộc về xuất
                {
                    outboundDetails.Add(
                        new ProductOutboundDetail
                    {
                        IsDeleted      = false,
                        CreatedDate    = DateTime.Now,
                        CreatedUserId  = Helpers.Common.CurrentUser.Id,
                        ModifiedDate   = DateTime.Now,
                        ModifiedUserId = Helpers.Common.CurrentUser.Id,
                        Price          = product.PriceOutbound,
                        ProductId      = product.Id,
                        Quantity       = Math.Abs(item.QuantityDiff),
                    }
                        );
                }
                else if (item.QuantityDiff > 0) //Chênh lệch âm thì thuộc về nhập
                {
                    inboundDetails.Add(
                        new ProductInboundDetail
                    {
                        IsDeleted      = false,
                        CreatedDate    = DateTime.Now,
                        CreatedUserId  = Helpers.Common.CurrentUser.Id,
                        ModifiedDate   = DateTime.Now,
                        ModifiedUserId = Helpers.Common.CurrentUser.Id,
                        Price          = product.PriceInbound.Value,
                        ProductId      = product.Id,
                        Quantity       = Math.Abs(item.QuantityDiff),
                    }
                        );
                }
            }

            if (outboundDetails.Count != 0)
            {
                var outbound = new ProductOutbound
                {
                    IsDeleted           = false,
                    CreatedDate         = DateTime.Now,
                    CreatedUserId       = Helpers.Common.CurrentUser.Id,
                    ModifiedDate        = DateTime.Now,
                    ModifiedUserId      = Helpers.Common.CurrentUser.Id,
                    BranchId            = Helpers.Common.CurrentUser.BranchId,
                    IsDone              = true,
                    Type                = PhysicalInventory.Type == PhysicalInventoryType.Product ? ProductOutboundType.Physical : ProductOutboundType.PhysicalCard,
                    TotalAmount         = outboundDetails.Sum(x => x.Quantity * x.Price),
                    WarehouseSourceId   = PhysicalInventory.WarehouseId,
                    PhysicalInventoryId = PhysicalInventory.Id,
                    Note                = "Xuất kho kiểm kê"
                };

                productOutboundRepository.InsertProductOutbound(outbound);

                foreach (var item in outboundDetails)
                {
                    item.ProductOutboundId = outbound.Id;
                    item.IsDeleted         = false;
                    item.CreatedUserId     = WebSecurity.CurrentUserId;
                    item.ModifiedUserId    = WebSecurity.CurrentUserId;
                    item.CreatedDate       = DateTime.Now;
                    item.ModifiedDate      = DateTime.Now;
                    productOutboundRepository.InsertProductOutboundDetail(item);
                }

                //cập nhật lại mã xuất kho
                outbound.Code = Erp.BackOffice.Helpers.Common.GetOrderNo("ProductOutbound");
                productOutboundRepository.UpdateProductOutbound(outbound);
                Erp.BackOffice.Helpers.Common.SetOrderNo("ProductOutbound");
                foreach (var item in listDetail.Where(x => x.QuantityDiff < 0))
                {
                    item.ModifiedDate     = DateTime.Now;
                    item.ModifiedUserId   = Helpers.Common.CurrentUser.Id;
                    item.ReferenceVoucher = outbound.Code;
                    PhysicalInventoryRepository.UpdatePhysicalInventoryDetail(item);
                }
                ProductOutboundController.Archive(productOutboundRepository, outbound, TempData);
            }

            if (inboundDetails.Count != 0)
            {
                var inbound = new ProductInbound
                {
                    IsDeleted              = false,
                    CreatedDate            = DateTime.Now,
                    CreatedUserId          = Helpers.Common.CurrentUser.Id,
                    ModifiedDate           = DateTime.Now,
                    ModifiedUserId         = Helpers.Common.CurrentUser.Id,
                    BranchId               = Helpers.Common.CurrentUser.BranchId,
                    IsDone                 = true,
                    Type                   = PhysicalInventory.Type == PhysicalInventoryType.Product ? ProductInboundType.Physical : ProductInboundType.PhysicalCard,
                    TotalAmount            = inboundDetails.Sum(x => x.Quantity * x.Price),
                    WarehouseDestinationId = PhysicalInventory.WarehouseId,
                    PhysicalInventoryId    = PhysicalInventory.Id,
                    Note                   = "Nhập kho kiểm kê"
                };

                productInboundRepository.InsertProductInbound(inbound);

                //Thêm chi tiết phiếu nhập
                foreach (var item in inboundDetails)
                {
                    item.ProductInboundId = inbound.Id;
                    item.IsDeleted        = false;
                    item.CreatedUserId    = WebSecurity.CurrentUserId;
                    item.ModifiedUserId   = WebSecurity.CurrentUserId;
                    item.CreatedDate      = DateTime.Now;
                    item.ModifiedDate     = DateTime.Now;
                    productInboundRepository.InsertProductInboundDetail(item);
                }

                //cập nhật lại mã xuất kho
                inbound.Code = Erp.BackOffice.Helpers.Common.GetOrderNo("ProductInbound");
                productInboundRepository.UpdateProductInbound(inbound);
                Erp.BackOffice.Helpers.Common.SetOrderNo("ProductInbound");
                foreach (var item in listDetail.Where(x => x.QuantityDiff > 0))
                {
                    item.ModifiedDate     = DateTime.Now;
                    item.ModifiedUserId   = Helpers.Common.CurrentUser.Id;
                    item.ReferenceVoucher = inbound.Code;
                    PhysicalInventoryRepository.UpdatePhysicalInventoryDetail(item);
                }
                ProductInboundController.Archive(productInboundRepository, inbound, TempData);
            }

            PhysicalInventory.IsExchange     = true;
            PhysicalInventory.ModifiedDate   = DateTime.Now;
            PhysicalInventory.ModifiedUserId = Helpers.Common.CurrentUser.Id;
            PhysicalInventoryRepository.UpdatePhysicalInventory(PhysicalInventory);
            TempData[Globals.SuccessMessageKey] += App_GlobalResources.Wording.Success;
            return(RedirectToAction("Detail", new { Id = PhysicalInventory.Id }));
        }
Ejemplo n.º 3
0
        public ActionResult Create(MemberCardViewModel model, bool?IsInvoice)
        {
            if (ModelState.IsValid)
            {
                var MemberCard = MemberCardService.GetMemberCardByCode(model.Code);
                if (MemberCard != null)
                {
                    TempData[Globals.FailedMessageKey] = "Mã thẻ đã được cấp";
                    return(RedirectToAction("Create", new { CustomerId = model.CustomerId, IsPopup = true, IsInvoice = IsInvoice }));
                }
                var customer       = CustomerRepository.GetCustomerById(model.CustomerId.Value);
                var MemberCardType = MemberCardTypeService.MemberCardTypeGetById(model.MemberCardTypeId.Value);
                ProductOutboundController.CreateForMemberCard(TempData, MemberCardType.CardId, Helpers.Common.CurrentUser.BranchId, customer.Name, customer.Code);
                if (TempData[Globals.FailedMessageKey] != null)
                {
                    return(RedirectToAction("Create", new { CustomerId = model.CustomerId, IsPopup = true, IsInvoice = IsInvoice }));
                }

                if (customer.MemberCardId != null)
                {
                    var memberCard_Before = MemberCardService.GetMemberCardById(customer.MemberCardId.Value);
                    if (memberCard_Before != null)
                    {
                        memberCard_Before.Status = MemberCardViewModel.Inactive;
                        MemberCardService.Update(memberCard_Before);
                    }
                }

                MemberCard = new MemberCard();
                AutoMapper.Mapper.Map(model, MemberCard);
                SetModifier(MemberCard);
                MemberCard.DateOfIssue = DateTime.Now;
                MemberCard.Status      = MemberCardViewModel.Active;
                MemberCardService.Create(MemberCard);
                //Thay đổi thẻ cho khách hàng
                customer.MemberCardId = MemberCard.Id;
                CustomerRepository.UpdateCustomer(customer);

                TempData[Globals.SuccessMessageKey] += App_GlobalResources.Wording.InsertSuccess;
                if (IsInvoice == true)
                {
                    ViewBag.closePopup       = "close Popup";
                    model.ListMemberCardType = MemberCardTypeService.Get()
                                               .Select(item => new MemberCardTypeViewModel
                    {
                        Id    = item.Id,
                        Name  = item.Name,
                        Image = item.Image
                    })
                                               .OrderBy(item => item.Name)
                                               .ToList();
                    return(View(model));
                }
                if (Request["IsPopup"] != null && Request["IsPopup"].ToString().ToLower().Equals("true"))
                {
                    return(RedirectToAction("_ClosePopup", "Home", new { area = "", FunctionCallback = "ClosePopupAndReloadPage" }));
                }
                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
Ejemplo n.º 4
0
        public ActionResult Create(RePayPointsViewModel model)
        {
            if (ModelState.IsValid && model.DetailList.Count != 0)
            {
                RePayPoints rePayPoints = null;
                if (model.Id > 0)
                {
                    rePayPoints = RePayPointsService.Get(model.Id);
                }

                if (rePayPoints != null)
                {
                    #region Cập nhật
                    //Nếu đã ghi sổ rồi thì không được sửa
                    if (rePayPoints.IsArchive == true)
                    {
                        TempData[Globals.FailedMessageKey] = "Đã ghi sổ. không được chỉnh sửa";
                        return(RedirectToAction("Detail", new { Id = rePayPoints.Id }));
                    }

                    //Kiểm tra xem nếu có xuất kho rồi thì return
                    var checkProductOutbound = ProductOutboundRepository.GetAllProductOutbound()
                                               .Where(item => item.Type == ProductOutboundType.Gift && item.PayPointId == rePayPoints.Id).FirstOrDefault();
                    if (checkProductOutbound != null)
                    {
                        TempData[Globals.FailedMessageKey] = "Phiếu xuất kho đã có!";
                        return(RedirectToAction("Detail", new { Id = rePayPoints.Id }));
                    }

                    AutoMapper.Mapper.Map(model, rePayPoints);
                    rePayPoints.ModifiedUserId = WebSecurity.CurrentUserId;
                    rePayPoints.ModifiedDate   = DateTime.Now;
                    rePayPoints.Status         = RePayPointsStatus.Pending;
                    rePayPoints.BranchId       = Helpers.Common.CurrentUser.BranchId;
                    rePayPoints.IsArchive      = false;
                    RePayPointsService.Update(rePayPoints);

                    //Xóa chi tiết cũ và thêm chi tiết mới
                    var listDetail_old = RePayPointsDetailService.GetRePayPointsDetailByPayPointId(rePayPoints.Id).ToList();
                    foreach (var item in listDetail_old)
                    {
                        RePayPointsDetailService.Delete(item);
                    }

                    foreach (var item in model.DetailList)
                    {
                        RePayPointsDetail rePayPointsDetail = new RePayPointsDetail();
                        AutoMapper.Mapper.Map(item, rePayPointsDetail);
                        rePayPointsDetail.RePayPointId   = rePayPoints.Id;
                        rePayPointsDetail.IsDeleted      = false;
                        rePayPointsDetail.CreatedUserId  = WebSecurity.CurrentUserId;
                        rePayPointsDetail.ModifiedUserId = WebSecurity.CurrentUserId;
                        rePayPointsDetail.CreatedDate    = DateTime.Now;
                        rePayPointsDetail.ModifiedDate   = DateTime.Now;
                        RePayPointsDetailService.Create(rePayPointsDetail);
                    }

                    #endregion
                }
                else// Thêm mới
                {
                    #region MyRegion
                    rePayPoints = new RePayPoints();
                    AutoMapper.Mapper.Map(model, rePayPoints);
                    rePayPoints.IsDeleted      = false;
                    rePayPoints.CreatedUserId  = WebSecurity.CurrentUserId;
                    rePayPoints.ModifiedUserId = WebSecurity.CurrentUserId;
                    rePayPoints.CreatedDate    = DateTime.Now;
                    rePayPoints.ModifiedDate   = DateTime.Now;
                    rePayPoints.Status         = RePayPointsStatus.Pending;
                    rePayPoints.BranchId       = Helpers.Common.CurrentUser.BranchId;
                    rePayPoints.IsArchive      = false;
                    RePayPointsService.Create(rePayPoints);
                    //Cập nhật lại mã xuất kho
                    rePayPoints.Code = Erp.BackOffice.Helpers.Common.GetOrderNo("RepayPoints", model.Code);
                    RePayPointsService.Update(rePayPoints);
                    Erp.BackOffice.Helpers.Common.SetOrderNo("RepayPoints");

                    foreach (var item in model.DetailList)
                    {
                        RePayPointsDetail rePayPointsDetail = new RePayPointsDetail();
                        AutoMapper.Mapper.Map(item, rePayPointsDetail);
                        rePayPointsDetail.IsDeleted      = false;
                        rePayPointsDetail.CreatedUserId  = WebSecurity.CurrentUserId;
                        rePayPointsDetail.ModifiedUserId = WebSecurity.CurrentUserId;
                        rePayPointsDetail.CreatedDate    = DateTime.Now;
                        rePayPointsDetail.ModifiedDate   = DateTime.Now;
                        rePayPointsDetail.RePayPointId   = rePayPoints.Id;
                        RePayPointsDetailService.Create(rePayPointsDetail);
                    }

                    //Thêm vào quản lý chứng từ
                    TransactionController.Create(new TransactionViewModel
                    {
                        TransactionModule = "RePayPoints",
                        TransactionCode   = rePayPoints.Code,
                        TransactionName   = "Trả điểm"
                    });
                    #endregion
                }
                //Tạo phiếu nhập, nếu là tự động
                string sale_tu_dong_tao_chung_tu = Erp.BackOffice.Helpers.Common.GetSetting("sale_auto_outbound");
                if (sale_tu_dong_tao_chung_tu == "true")
                {
                    ProductOutboundViewModel productOutboundViewModel = new ProductOutboundViewModel();
                    // var warehouseDefault = WarehouseRepository.GetAllWarehouse().Where(x => x.BranchId == Helpers.Common.CurrentUser.BranchId && x.IsSale == true).FirstOrDefault();

                    //Nếu trong đơn hàng có sản phẩm thì xuất kho
                    if (model.WarehouseSourceId != null)
                    {
                        productOutboundViewModel.PayPointId        = rePayPoints.Id;
                        productOutboundViewModel.PayPointCode      = rePayPoints.Code;
                        productOutboundViewModel.WarehouseSourceId = model.WarehouseSourceId;
                        productOutboundViewModel.Note = "Xuất kho cho đơn trả điểm " + rePayPoints.Code;
                        // lấy các danh sách không Xuất kho
                        var productNoInbound = ProductRepository.GetAllProduct().Where(x => x.Type == ProductType.Gift && x.NoInbound == true).ToList();
                        //Lấy dữ liệu cho chi tiết
                        productOutboundViewModel.DetailList = model.DetailList.Where(x => !productNoInbound.Any(y => y.Id == x.GiftId)).Select(x => new ProductOutboundDetailViewModel
                        {
                            ProductId = x.GiftId,
                            Quantity  = x.Quantity,
                            Price     = 0,
                            Unit      = x.Unit,
                        }).ToList();

                        var productOutbound = ProductOutboundController.CreateFromPayPoint(ProductOutboundRepository, productOutboundViewModel, rePayPoints.Code, TempData);
                        PostController.SavePost(rePayPoints.Id, "RePayPoints", "Xuất kho trả điểm (" + productOutbound.Code + ")");
                    }
                    //Ghi sổ chứng từ bán hàng
                    model.Id = rePayPoints.Id;
                    Archive(model);
                }
                return(RedirectToAction("Detail", new { Id = rePayPoints.Id }));
            }
            return(View(model));
        }
Ejemplo n.º 5
0
        public ActionResult Create(CustomerViewModel model, bool?IsAppend)
        {
            if (ModelState.IsValid)
            {
                //Tạo thẻ cho khách hàng
                if (model.IsCreateCard == true)
                {
                    if (model.MemberCardTypeId == null)
                    {
                        TempData[Globals.FailedMessageKey] = "Vui lòng chọn loại thẻ";
                        ViewBag.FailedMessage = TempData["FailedMessage"];
                        return(View(model));
                    }
                    var MemberCard = MemberCardService.GetMemberCardByCode(model.MemberCardCode);
                    if (MemberCard != null)
                    {
                        TempData[Globals.FailedMessageKey] = "Mã thẻ đã đã tồn tại, Vui lòng kiểm tra lại";
                        ViewBag.FailedMessage = TempData["FailedMessage"];
                        return(View(model));
                    }
                }
                var Customer = new Domain.Account.Entities.Customer();
                AutoMapper.Mapper.Map(model, Customer);
                Customer.IsDeleted      = false;
                Customer.CreatedUserId  = WebSecurity.CurrentUserId;
                Customer.ModifiedUserId = WebSecurity.CurrentUserId;
                Customer.CreatedDate    = DateTime.Now;
                Customer.ModifiedDate   = DateTime.Now;
                Customer.BranchId       = Helpers.Common.CurrentUser.BranchId;
                Customer.NameSearch     = Helpers.Common.ChuyenThanhKhongDau(Customer.Name);
                Customer.Point          = 0;
                Customer.PaidPoint      = 0;
                Customer.RemainingPoint = 0;
                Customer.Frequency      = 0;
                CustomerRepository.InsertCustomer(Customer);
                Customer.Code = Erp.BackOffice.Helpers.Common.GetOrderNo("Customer");
                CustomerRepository.UpdateCustomer(Customer);
                Erp.BackOffice.Helpers.Common.SetOrderNo("Customer");
                ////tạo liên hệ cho khách hàng
                //if (string.IsNullOrEmpty(model.FirstName) == false && string.IsNullOrEmpty(model.LastName) == false)
                //{
                //    var contact = new Domain.Account.Entities.Contact();
                //    AutoMapper.Mapper.Map(model, contact);
                //    contact.IsDeleted = false;
                //    contact.CreatedUserId = WebSecurity.CurrentUserId;
                //    contact.ModifiedUserId = WebSecurity.CurrentUserId;
                //    contact.CreatedDate = DateTime.Now;
                //    contact.ModifiedDate = DateTime.Now;
                //    contact.CustomerId = Customer.Id;

                //    ContactRepository.InsertContact(contact);
                //}

                ////tạo đặc tính động cho sản phẩm nếu có danh sách đặc tính động truyền vào và đặc tính đó phải có giá trị
                //ObjectAttributeController.CreateOrUpdateForObject(Customer.Id, model.AttributeValueList);

                if (model.IsCreateCard == true)
                {
                    var MemberCardType = MemberCardTypeService.MemberCardTypeGetById(model.MemberCardTypeId.Value);
                    if (MemberCardType != null)
                    {
                        ProductOutboundController.CreateForMemberCard(TempData, MemberCardType.CardId, Helpers.Common.CurrentUser.BranchId, Customer.Name, Customer.Code);
                        if (TempData[Globals.FailedMessageKey] != null)
                        {
                            TempData[Globals.FailedMessageKey] += "Chưa cấp được thẻ cho khách hàng! </br>";
                        }
                        else
                        {
                            var memberCard = new MemberCard();
                            memberCard.IsDeleted        = false;
                            memberCard.CreatedUserId    = WebSecurity.CurrentUserId;
                            memberCard.CreatedDate      = DateTime.Now;
                            memberCard.DateOfIssue      = DateTime.Now;
                            memberCard.Status           = MemberCardViewModel.Active;
                            memberCard.Code             = model.MemberCardCode;
                            memberCard.CustomerId       = Customer.Id;
                            memberCard.MemberCardTypeId = MemberCardType.Id;
                            MemberCardService.Create(memberCard);

                            //Thay đổi thẻ cho khách hàng
                            Customer.MemberCardId = memberCard.Id;
                            CustomerRepository.UpdateCustomer(Customer);
                            TempData[Globals.SuccessMessageKey] = App_GlobalResources.Wording.InsertSuccess;
                        }
                    }
                }

                if (IsAppend == true)
                {
                    ViewBag.closePopup = "close and append to page parent";
                    model.Name         = model.Name;
                    model.Id           = Customer.Id;
                    return(View(model));
                }
                if (Request["IsPopup"] != null && Request["IsPopup"].ToString().ToLower().Equals("true"))
                {
                    return(RedirectToAction("_ClosePopup", "Home", new { area = "", FunctionCallback = "ClosePopupAndReloadPage" }));
                }
                return(RedirectToAction("Index"));
            }
            return(View(model));
        }