/// <summary> /// báo cáo dư có theo tháng /// </summary> public ActionResult DuCo(int?month, int?year, DuCoFilterModel filter, Pager pager, ViewMode viewMode = ViewMode.Default) { title = "Báo cáo dư có"; IDuCoRepository duCoRepository = uow.Repository <DuCoRepository>(); // default values: xem báo cáo tháng trước var dtBaoCao = DateTime.Now.AddMonths(-1); if (month == null) { month = dtBaoCao.Month; } if (year == null) { year = dtBaoCao.Year; } //if (filter.Mode == null) // not in filter //{ // // set selected to, quan huyen = nhanVien's to, quan huyen // if (nhanVien != null) // { // filter.NhanVienID = nhanVien.NhanvienID; // filter.ToID = nhanVien.ToQuanHuyenID; // var to = toRepository.GetByID(nhanVien.ToQuanHuyenID ?? 0); // if (to != null) // { // filter.QuanHuyenID = to.QuanHuyenID; // } // } //} var items = duCoRepository.GetAllDuCoModel(month.Value, year.Value); items = filter.ApplyFilter(items); ViewBag.TongSoDu = items.Sum(m => m.SoTien) ?? 0; ViewBag.Month = month.Value; ViewBag.Year = year.Value; if (viewMode == ViewMode.Excel) { return(ExcelResult("DuCoExport", items.ToList())); } if (viewMode == ViewMode.Print) { return(View("DuCoPrint", items.ToList())); } items = pager.ApplyPager(items); #region view data ViewBag.Filter = filter; ViewBag.Pager = pager; #endregion return(View(items.ToList())); }
/// <summary> /// Hủy giao dịch với id xác định /// </summary> /// <requires> /// lastGiaoDich != null /\ lastGiaoDich.GiaoDich.SoTien != null /// </requires> /// <effects> /// soTien = lastGiaoDich.SoTien /// delete GiaoDich /// /// update model /// SoTienDaThu -= soTien /// /// duNo = SoTienPhaiNop - SoTienDaThu /// if duNo > 0 /// TrangThaiThu = false /// if DuCo != null /// delete DuCo /// else /// if DuCo != null /// DuCo.SoTienDu -= soTien /// if DuCo.SoTienDu eq 0 /// delete DuCo /// </effects> public static bool HuyGiaoDich(GiaoDichModel model, HDNHDUnitOfWork uow = null) { if (uow == null) { uow = new HDNHDUnitOfWork(); } IGiaoDichRepository giaoDichRepository = uow.Repository <GiaoDichRepository>(); IDuCoRepository duCoRepository = uow.Repository <DuCoRepository>(); uow.BeginTransaction(); try { var soTien = model.GiaoDich.SoTien.Value; giaoDichRepository.Delete(model.GiaoDich); // update model model.SoTienNopTheoThang.SoTienDaThu -= soTien; int duNo = (int)(model.SoTienNopTheoThang.SoTienPhaiNop - model.SoTienNopTheoThang.SoTienDaThu); if (duNo > 0) { model.HoaDon.Trangthaithu = false; model.HoaDon.NgayNopTien = null; } // trừ dư có if (model.DuCo != null) { // thu hồi dư có nếu đã áp dụng cho hóa đơn tháng sau IHoaDonRepository hoaDonRepository = uow.Repository <HoaDonRepository>(); var hoaDonModel = hoaDonRepository.GetHoaDonModelByID(model.HoaDon.HoadonnuocID); // cập nhật dư có model.DuCo.SoTienDu -= soTien; if (model.DuCo.SoTienDu <= 0) { duCoRepository.Delete(model.DuCo); thuHoiDuCo(hoaDonModel, uow); } else { apDungDuCo(hoaDonModel, uow); } } uow.SubmitChanges(); uow.Commit(); } catch (Exception) { uow.RollBack(); return(false); } return(true); }
/// <summary> /// Khách hàng thanh toán hóa đơn hoặc nộp vào tài khoản /// ngayThu không đúng > ngày hiện tại /// </summary> /// <requires> /// model != null /\ model.KhachHang != null /\ model.SoTienNopTheoThang != null /\ soTien > 0 /// </requires> /// <effects> /// create new GiaoDich & insert /// update model /// SoTienDaThu += soTien /// /// duNo = SoTienPhaiNop - SoTienDaThu /// if duNo lt= 0 /// TrangThaiThu = true /// NgayThu = ngayThu /// if duNo lt 0 /// if DuCo == null /// create new DuCo & insert /// DuCo.SoTienDu -= duNo /// else /// giaoDich.SoDu = duNo /// </effects> public static bool ThemGiaoDich(HoaDonModel model, int soTien, DateTime?ngayThu = null, HDNHDUnitOfWork uow = null) { if (ngayThu == null) { ngayThu = DateTime.Now; } if (uow == null) { uow = new HDNHDUnitOfWork(); } IGiaoDichRepository giaoDichRepository = uow.Repository <GiaoDichRepository>(); IDuCoRepository duCoRepository = uow.Repository <DuCoRepository>(); uow.BeginTransaction(); try { // add new GiaoDich var giaoDich = new HDNHD.Models.DataContexts.GiaoDich() { TienNopTheoThangID = model.SoTienNopTheoThang.ID, SoTien = soTien, SoDu = 0, NgayGiaoDich = ngayThu }; giaoDichRepository.Insert(giaoDich); // update model model.SoTienNopTheoThang.SoTienDaThu += soTien; int duNo = (int)(model.SoTienNopTheoThang.SoTienPhaiNop - model.SoTienNopTheoThang.SoTienDaThu); if (duNo <= 0) { model.HoaDon.Trangthaithu = true; model.HoaDon.NgayNopTien = ngayThu; if (duNo < 0) { if (model.DuCo == null) { model.DuCo = new HDNHD.Models.DataContexts.DuCo() { KhachhangID = model.KhachHang.KhachhangID, TienNopTheoThangID = model.SoTienNopTheoThang.ID, }; duCoRepository.Insert(model.DuCo); } model.DuCo.SoTienDu = -duNo; // trừ dư có cho hóa đơn tiếp theo (nếu có) apDungDuCo(model, uow); } } else { giaoDich.SoDu = duNo; // TODO: nếu hóa đơn đã thanh toán, giaoDich.SoDu = dư có sau giao dịch } uow.SubmitChanges(); uow.Commit(); return(true); } catch (Exception) { uow.RollBack(); } return(false); }