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." })); } } }