Пример #1
0
        public ActionResult Edit(int id)
        {
            if (id < 0)
            {
                return(RedirectToAction("Index", "HoaDon", new { @message = "Không tìm thấy hóa đơn này." }));
            }
            var ctx   = new SmsContext();
            var Infor = ctx.SP_GET_BILL_INFOR(id).FirstOrDefault();

            if (Infor == null)
            {
                return(RedirectToAction("Index", "HoaDon", new { @message = "Không tìm thấy hóa đơn này." }));
            }
            var details             = ctx.SP_GET_BILL_DETAIL_BY_ID(id).ToList <SP_GET_BILL_DETAIL_BY_ID_Result>();
            var stores              = ctx.KHOes.Where(u => u.ACTIVE == "A").ToList();
            var units               = ctx.DON_VI_TINH.Where(u => u.ACTIVE == "A").ToList();
            EditHoaDonBanHang model = new EditHoaDonBanHang();

            model.Store   = stores;
            model.Units   = units;
            model.Infor   = Infor;
            model.Details = details;
            ctx.Dispose();
            return(View(model));
        }
Пример #2
0
        public ActionResult Edit(EditHoaDonBanHang model)
        {
            var ctx   = new SmsContext();
            var infor = ctx.HOA_DON.Find(model.Infor.MA_HOA_DON);

            if (infor == null || infor.ACTIVE != "A")
            {
                return(RedirectToAction("Index", "HoaDon", new { @message = "Không tìm thấy hóa đơn này." }));
            }
            if (infor.STATUS > 1)
            {
                return(RedirectToAction("Index", "HoaDon", new { @message = "Hóa đơn đã được thu tiền. Bạn không được phép sửa hóa đơn này." }));
            }
            TransactionOptions transOptions = new TransactionOptions();

            transOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            transOptions.Timeout        = TransactionManager.MaximumTimeout;
            using (var transaction = new System.Transactions.TransactionScope(TransactionScopeOption.Required, transOptions))
            {
                try
                {
                    infor.MA_KHACH_HANG = model.Infor.MA_KHACH_HANG;
                    if (infor.MA_KHACH_HANG == null || infor.MA_KHACH_HANG <= 0)
                    {
                        infor.TEN_KHACH_HANG = model.Infor.TEN_KHACH_HANG;
                    }
                    infor.NGAY_BAN          = model.Infor.NGAY_BAN;
                    infor.NGAY_GIAO         = model.Infor.NGAY_GIAO;
                    infor.SO_DIEN_THOAI     = model.Infor.SO_DIEN_THOAI;
                    infor.DIA_CHI_GIAO_HANG = model.Infor.DIA_CHI_GIAO_HANG;
                    infor.UPDATE_AT         = DateTime.Now;
                    infor.UPDATE_BY         = Convert.ToInt32(Session["UserId"]);
                    ctx.SaveChanges();

                    ctx.CHI_TIET_HOA_DON.RemoveRange(ctx.CHI_TIET_HOA_DON.Where(x => x.MA_HOA_DON == model.Infor.MA_HOA_DON));
                    CHI_TIET_HOA_DON ct;
                    foreach (var detail in model.Details)
                    {
                        if (detail.DEL_FLG != 1 && detail.MA_SAN_PHAM != null && !string.IsNullOrWhiteSpace(detail.MA_SAN_PHAM.ToString()))
                        {
                            ct                      = ctx.CHI_TIET_HOA_DON.Create();
                            ct.MA_HOA_DON           = infor.MA_HOA_DON;
                            ct.MA_SAN_PHAM          = detail.MA_SAN_PHAM;
                            ct.SO_LUONG_TEMP        = detail.SO_LUONG;
                            ct.SO_LUONG             = detail.SO_LUONG * detail.HE_SO;
                            ct.DON_GIA_TEMP         = (double)detail.DON_GIA;
                            ct.DON_GIA              = (double)detail.DON_GIA / detail.HE_SO;
                            ct.PHAN_TRAM_CHIEC_KHAU = detail.PHAN_TRAM_CHIEC_KHAU;
                            ct.MA_DON_VI            = detail.MA_DON_VI;
                            ct.MA_KHO_XUAT          = detail.MA_KHO_XUAT;
                            ct.CREATE_AT            = DateTime.Now;
                            ct.CREATE_BY            = Convert.ToInt32(Session["UserId"]);
                            ct.UPDATE_AT            = DateTime.Now;
                            ct.UPDATE_BY            = Convert.ToInt32(Session["UserId"]);
                            ct.ACTIVE               = "A";
                            ctx.CHI_TIET_HOA_DON.Add(ct);
                            ctx.SaveChanges();
                        }
                    }
                    transaction.Complete();
                    ctx.Dispose();
                    return(RedirectToAction("Index", "HoaDon", new { @inforMessage = "Lưu hóa đơn bán hàng thành công." }));
                }
                catch (Exception ex)
                {
                    Console.Write(ex.ToString());
                    Transaction.Current.Rollback();
                    ctx.Dispose();
                    return(RedirectToAction("Index", "HoaDon", new { @message = "Lưu hóa đơn thất bại. Vui lòng liên hệ admin." }));
                }
            }
        }