public ActionResult ReturnNoBill()
        {
            var ctx = new SmsContext();
            ReturnNoBillModel model = new ReturnNoBillModel();
            var units = ctx.DON_VI_TINH.Where(u => u.ACTIVE == "A").ToList <DON_VI_TINH>();

            model.Units = units;
            ctx.Dispose();
            return(View(model));
        }
        public ActionResult ReturnNoBill(ReturnNoBillModel model)
        {
            var ctx = new SmsContext();

            using (var transaction = new System.Transactions.TransactionScope())
            {
                try
                {
                    var returnInfor = ctx.TRA_HANG.Create();
                    returnInfor.GHI_CHU        = model.ReturnInfor.GHI_CHU;
                    returnInfor.NGAY_TRA       = model.ReturnInfor.NGAY_TRA;
                    returnInfor.TEN_KHACH_HANG = model.ReturnInfor.TEN_KHACH_HANG;
                    returnInfor.MA_KHACH_HANG  = model.ReturnInfor.MA_KHACH_HANG;
                    returnInfor.CREATE_AT      = DateTime.Now;
                    returnInfor.UPDATE_AT      = DateTime.Now;
                    returnInfor.NHAN_VIEN_NHAN = Convert.ToInt32(Session["UserId"]);
                    returnInfor.CREATE_BY      = Convert.ToInt32(Session["UserId"]);
                    returnInfor.UPDATE_BY      = Convert.ToInt32(Session["UserId"]);
                    returnInfor.ACTIVE         = "A";
                    ctx.TRA_HANG.Add(returnInfor);
                    ctx.SaveChanges();
                    double total = 0;
                    double percent;
                    foreach (var detail in model.ReturnDetail)
                    {
                        if (detail.DEL_FLG != 1 && detail.MA_SAN_PHAM != null && !string.IsNullOrWhiteSpace(detail.MA_SAN_PHAM.ToString()))
                        {
                            CHI_TIET_TRA_HANG ct;
                            //if (detail.DEL_FLG != 1)
                            //{
                            ct = ctx.CHI_TIET_TRA_HANG.Create();
                            if (detail.PHAN_TRAM_KHAU_HAO == null)
                            {
                                percent = 0;
                            }
                            else
                            {
                                percent = (double)detail.PHAN_TRAM_KHAU_HAO;
                            }
                            total                += (double)detail.GIA_VON * (double)detail.SO_LUONG_TEMP * (100 - percent) / 100;
                            ct.MA_SAN_PHAM        = detail.MA_SAN_PHAM;
                            ct.MA_DON_VI          = detail.MA_DON_VI;
                            ct.SO_LUONG_TEMP      = detail.SO_LUONG_TEMP;
                            ct.SO_LUONG_TRA       = detail.SO_LUONG_TEMP * detail.HE_SO;
                            ct.DON_GIA_TEMP       = detail.GIA_VON;
                            ct.GIA_VON            = detail.GIA_VON / detail.HE_SO;
                            ct.ACTIVE             = "A";
                            ct.CREATE_AT          = DateTime.Now;
                            ct.UPDATE_AT          = DateTime.Now;
                            ct.CREATE_BY          = Convert.ToInt32(Session["UserId"]);
                            ct.UPDATE_BY          = Convert.ToInt32(Session["UserId"]);
                            ct.MA_TRA_HANG        = returnInfor.MA_TRA_HANG;
                            ct.PHAN_TRAM_KHAU_HAO = detail.PHAN_TRAM_KHAU_HAO;
                            ctx.CHI_TIET_TRA_HANG.Add(ct);
                            ctx.SaveChanges();
                        }
                    }
                    if (model.ReturnInfor.MA_KHACH_HANG != null)
                    {
                        var customer = ctx.KHACH_HANG.Find(model.ReturnInfor.MA_KHACH_HANG);
                        if (customer != null && customer.NO_GOI_DAU > 0)
                        {
                            if ((double)customer.NO_GOI_DAU > total)
                            {
                                var cusHist = ctx.KHACH_HANG_DEBIT_HIST.Create();
                                customer.UPDATE_AT      = DateTime.Now;
                                customer.UPDATE_BY      = Convert.ToInt32(Session["UserId"]);
                                cusHist.NO_TRUOC        = (double)customer.NO_GOI_DAU;
                                cusHist.NO_SAU          = cusHist.NO_TRUOC - total;
                                cusHist.MA_NHAN_VIEN_TH = Convert.ToInt32(Session["UserId"]);
                                cusHist.GHI_CHU         = "Trả hàng - Trừ vào công nợ của khách hàng";
                                customer.NO_GOI_DAU     = customer.NO_GOI_DAU - (decimal)total;
                                cusHist.PHAT_SINH       = total;
                                cusHist.NGAY_PHAT_SINH  = DateTime.Now;
                                cusHist.UPDATE_AT       = DateTime.Now;
                                cusHist.CREATE_AT       = DateTime.Now;
                                cusHist.MA_KHACH_HANG   = customer.MA_KHACH_HANG;
                                cusHist.UPDATE_BY       = Convert.ToInt32(Session["UserId"]);
                                cusHist.CREATE_BY       = Convert.ToInt32(Session["UserId"]);
                                cusHist.ACTIVE          = "A";
                                cusHist.MA_PHIEU_TRA    = returnInfor.MA_TRA_HANG;
                                customer.DOANH_SO       = customer.DOANH_SO - (decimal)total;
                                ctx.KHACH_HANG_DEBIT_HIST.Add(cusHist);
                                ctx.SaveChanges();
                            }
                            else
                            {
                                var cusHist = ctx.KHACH_HANG_DEBIT_HIST.Create();
                                customer.UPDATE_AT         = DateTime.Now;
                                customer.UPDATE_BY         = Convert.ToInt32(Session["UserId"]);
                                cusHist.NO_SAU             = 0;
                                cusHist.NO_TRUOC           = (double)customer.NO_GOI_DAU;
                                cusHist.PHAT_SINH          = (double)customer.NO_GOI_DAU;
                                cusHist.NGAY_PHAT_SINH     = DateTime.Now;
                                cusHist.UPDATE_AT          = DateTime.Now;
                                cusHist.CREATE_AT          = DateTime.Now;
                                cusHist.MA_KHACH_HANG      = customer.MA_KHACH_HANG;
                                cusHist.UPDATE_BY          = Convert.ToInt32(Session["UserId"]);
                                cusHist.CREATE_BY          = Convert.ToInt32(Session["UserId"]);
                                cusHist.ACTIVE             = "A";
                                cusHist.MA_PHIEU_TRA       = returnInfor.MA_TRA_HANG;
                                cusHist.MA_NHAN_VIEN_TH    = Convert.ToInt32(Session["UserId"]);
                                cusHist.GHI_CHU            = "Trả hàng - Trừ vào công nợ của khách hàng";
                                customer.NO_GOI_DAU        = 0;
                                customer.NGAY_PHAT_SINH_NO = null;
                                customer.DOANH_SO          = customer.DOANH_SO - (decimal)total;
                                ctx.KHACH_HANG_DEBIT_HIST.Add(cusHist);
                            }
                        }
                    }
                    ctx.SaveChanges();
                    transaction.Complete();
                    ctx.Dispose();
                    return(RedirectToAction("ReturnPurchaseList", new { @inforMessage = "Nhận trả hàng thành công." }));
                }
                catch (Exception)
                {
                    Transaction.Current.Rollback();
                    ctx.Dispose();
                    return(RedirectToAction("ReturnPurchaseList", new { @message = "Nhận trả hàng thất bại, vui lòng liên hệ admin." }));
                }
            }
        }