예제 #1
0
        public ActionResult Update(PreOrderMasterModel model, List <OrderDetailViewModel> detail)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    using (TransactionScope ts = new TransactionScope())
                    {
                        //_context.Entry(model).State = System.Data.Entity.EntityState.Modified; Chỉ Modified những filed cần thiết
                        var PreOrderDetail = _context.PreOrderDetailModel
                                             .Where(p => p.PreOrderId == model.PreOrderId).ToList();
                        // Xoá những Detail cũ
                        if (PreOrderDetail != null && PreOrderDetail.Count > 0)
                        {
                            foreach (var item in PreOrderDetail)
                            {
                                _context.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                            }
                        }

                        #region // Update lại những filed cần Modified cho Model Master
                        //PreOrderMastermodel.PreOrderId = model.PreOrderId;
                        //PreOrderMastermodel.WarehouseId = model.WarehouseId;
                        //PreOrderMastermodel.BillDiscountTypeId = model.BillDiscountTypeId;
                        //PreOrderMastermodel.BillDiscount = model.BillDiscount;
                        //PreOrderMastermodel.BillVAT = model.BillVAT;
                        //PreOrderMastermodel.SaleName = model.SaleName;
                        //PreOrderMastermodel.DebtDueDate = model.DebtDueDate;
                        //PreOrderMastermodel.PaymentMethodId = model.PaymentMethodId;
                        //PreOrderMastermodel.Paid = model.Paid;
                        //PreOrderMastermodel.MoneyTransfer = model.MoneyTransfer;
                        //PreOrderMastermodel.CompanyName = model.CompanyName;
                        //PreOrderMastermodel.TaxBillCode = model.TaxBillCode;
                        //PreOrderMastermodel.ContractNumber = model.ContractNumber;
                        //PreOrderMastermodel.TaxBillDate = model.TaxBillDate;
                        //PreOrderMastermodel.CustomerId = model.CustomerId;
                        //PreOrderMastermodel.FullName = model.FullName;
                        //PreOrderMastermodel.IdentityCard = model.IdentityCard;
                        //PreOrderMastermodel.FullName = model.FullName;
                        //PreOrderMastermodel.Phone = model.Phone;
                        //PreOrderMastermodel.FullName = model.FullName;
                        //PreOrderMastermodel.Gender = model.Gender;
                        //PreOrderMastermodel.ProvinceId = model.ProvinceId;
                        //PreOrderMastermodel.DistrictId = model.DistrictId;
                        //PreOrderMastermodel.Address = model.Address;
                        //PreOrderMastermodel.Email = model.Email;
                        //PreOrderMastermodel.Note = model.Note;
                        //PreOrderMastermodel.TotalPrice = model.TotalPrice;
                        //PreOrderMastermodel.LastModifiedDate = DateTime.Now;
                        //PreOrderMastermodel.LastModifiedAccount = currentAccount.UserName;
                        //PreOrderMastermodel.OrderStatusId = EnumOrderStatus.KhoiTao;
                        #endregion
                        // đánh dấu sửa OrderMastermodel
                        _context.Entry(model).State = System.Data.Entity.EntityState.Modified;
                        _context.SaveChanges();

                        if (detail != null)
                        {
                            foreach (var item in detail)
                            {
                                PreOrderDetailModel detailmodel = new PreOrderDetailModel()
                                {
                                    PreOrderDetailId = item.OrderDetailId,
                                    PreOrderId       = model.PreOrderId,
                                    ProductId        = item.ProductId,
                                    Quantity         = item.Quantity,
                                    Price            = item.Price,
                                    DiscountTypeId   = item.DiscountTypeId,
                                    Discount         = item.Discount,
                                    UnitDiscount     = item.UnitDiscount,
                                    UnitPrice        = item.UnitPrice,
                                };
                                _context.Entry(detailmodel).State = System.Data.Entity.EntityState.Added;
                            }
                        }
                        _context.SaveChanges();
                        ts.Complete();
                        return(Content("success"));
                    }
                }
                else
                {
                    return(Content("Vui lòng kiểm tra lại thông tin không hợp lệ"));
                }
            }
            catch (Exception ex)
            {
                return(Content("Lỗi hệ thống" + ex.Message));
            }
        }
예제 #2
0
        public ActionResult Save(PreOrderMasterModel model, List <OrderDetailViewModel> detail, decimal?GuestAmountPaid, decimal?TotalBillDiscount, decimal?TotalVAT, int CreateReceipt = 1)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    using (TransactionScope ts = new TransactionScope())
                    {
                        model.CreatedDate    = DateTime.Now;
                        model.CreatedAccount = currentAccount.UserName;
                        model.OrderStatusId  = EnumOrderStatus.KhoiTao;
                        AccountModel Account = _context.AccountModel.Where(p => p.UserName == model.CreatedAccount).FirstOrDefault();
                        model.CreatedEmployeeId = Account.EmployeeId;
                        model.SaleName          = Account.EmployeeModel.FullName;
                        model.StatusCode        = "TAOMOI";
                        //// Tìm giá trị STT order code
                        model.PreOrderCode = GetOrderCode();
                        if (model.PaymentMethodId == EnumPamentMethod.TienMat)
                        {
                            model.Paid          = GuestAmountPaid;
                            model.MoneyTransfer = 0;
                        }
                        else if (model.PaymentMethodId == EnumPamentMethod.ChuyenKhoan)
                        {
                            model.Paid          = 0;
                            model.MoneyTransfer = GuestAmountPaid;
                        }
                        else if (model.PaymentMethodId == EnumPamentMethod.CongNo)
                        {
                            model.Paid          = 0;
                            model.MoneyTransfer = 0;
                        }
                        else
                        {
                            return(Content("Phương thức thanh toán không hợp lệ !"));
                        }
                        _context.Entry(model).State = System.Data.Entity.EntityState.Added;
                        _context.SaveChanges();

                        //_context.SaveChanges();

                        if (detail != null)
                        {
                            if (detail.GroupBy(p => p.ProductId).ToList().Count < detail.Count)
                            {
                                //khong duoc trung san pham
                                return(Content("Vui lòng không chọn thông tin sản phẩm trùng nhau"));
                            }

                            foreach (var item in detail)
                            {
                                #region Thêm giá vốn
                                decimal?COGS = _context.ProductModel.Where(p => p.ProductId == item.ProductId).Select(p => p.COGS).FirstOrDefault();
                                item.COGS = COGS ?? 0;
                                #endregion
                                EndInventoryRepository EndInventoryRepo = new EndInventoryRepository(_context);
                                decimal TonCuoiTrongHeThong             = EndInventoryRepo.GetQty(item.ProductId.Value);

                                if (item.Quantity > TonCuoiTrongHeThong)
                                {
                                    return(Content(string.Format("Vui lòng chọn số lượng sản phẩm ' {0} ' nhỏ hơn hoặc bằng trong kho", item.ProductName)));
                                }
                                PreOrderDetailModel detailmodel = new PreOrderDetailModel()
                                {
                                    PreOrderId     = model.PreOrderId,
                                    ProductId      = item.ProductId,
                                    Quantity       = item.Quantity,
                                    Price          = item.Price,
                                    DiscountTypeId = item.DiscountTypeId,
                                    Discount       = item.Discount,
                                    UnitDiscount   = item.UnitDiscount,
                                    UnitPrice      = item.UnitPrice,
                                    Note           = item.Note,
                                    COGS           = item.COGS
                                };
                                _context.Entry(detailmodel).State = System.Data.Entity.EntityState.Added;
                            }
                            // Cập nhật lại Tổng giá vốn
                            model.SumCOGSOfOrderDetail  = detail.Sum(p => p.COGS);
                            model.TotalDiscount         = TotalBillDiscount;
                            model.TotalVAT              = TotalVAT;
                            _context.Entry(model).State = System.Data.Entity.EntityState.Modified;

                            _context.SaveChanges();
                            ts.Complete();
                            return(Content("success"));
                        }
                        else
                        {
                            //chua nhap tt san pham
                            return(Content("Vui lòng chọn thông tin sản phẩm"));
                        }
                    }
                }
                else
                {
                    return(Content("Vui lòng kiểm tra lại thông tin không hợp lệ"));
                }
            }
            catch
            {
                return(Content("Xảy ra lỗi trong quá trình thêm mới đơn hàng"));
            }
        }