/// <summary> /// thanh toán hóa đơn vs ID đã cho /// nếu ngày nộp không đúng > ngày nộp = ngày hiện tại /// </summary> /// <effects> /// get HoaDonModel <tt>model</tt> with specified <tt>hoaDonID</tt> /// if model == null || model.HoaDon.TrangThaiThu == true /// throw NotPossibleException: Dữ liệu bất đồng bộ, vui lòng refresh lại trang /// invoke @{link HoaDonHelpers#ThemGiaoDich(HoaDonModel)}: thanh toan HoaDonModel /// </effects> public AjaxResult ThanhToan(int hoaDonID, string ngayThu) { var model = hoaDonRepository.GetHoaDonModelByID(hoaDonID); if (model == null || model.HoaDon.Trangthaithu == true) { return(AjaxResult.Fail("Dữ liệu bất đồng bộ, vui lòng refresh lại trang.", true)); } try { DateTime dt; if (!DateTime.TryParseExact(ngayThu, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { dt = DateTime.Now; } if (!HoaDonHelpers.ThanhToan(model, dt, uow)) { return(AjaxResult.Fail("Lỗi cập nhật dữ liệu. Vui lòng thử lại.")); } } catch (Exception e) { return(AjaxResult.Fail(e.Message)); } int duNo = (int)(model.SoTienNopTheoThang.SoTienPhaiNop - model.SoTienNopTheoThang.SoTienDaThu); return(AjaxResult.Success("Thanh toán thành công.", (model.HoaDon.ThangHoaDon != current.Month && model.HoaDon.NamHoaDon != current.Year), new { HoaDon = new { ID = model.HoaDon.HoadonnuocID, TrangThaiThu = model.HoaDon.Trangthaithu, NgayNopTien = model.HoaDon.NgayNopTien != null ? model.HoaDon.NgayNopTien.Value.ToString("dd/MM/yyyy") : "" }, SoTienNopTheoThang = new { SoTienDaThu = CurrencyHelpers.FormatVN(model.SoTienNopTheoThang.SoTienDaThu ?? 0), DuNo = CurrencyHelpers.FormatVN(duNo > 0 ? duNo : -duNo) } })); }
/// <summary> /// Hủy thanh toán hóa đơn vs ID đã cho /// </summary> /// <effects> /// get HoaDonModel <tt>model</tt> with specified <tt>hoaDonID</tt> /// if model == null || model.TrangThaiThu == false /// throw NotPossibleException: Dữ liệu bất đồng bộ, vui lòng refresh lại trang /// if model.SoTienPhaiNop.SoTienDaThu == 0 /// throw NotPossibleException: Khách hàng thanh toán trừ dư có /// if model.KhachHang.HinhThucThanhToan == ChuyenKhoan /// throw NotPossibleException: Khách hàng thanh toán qua chuyển khoản /// if lastGiaoDich.NgayThu == model.HoaDon.NgayThu && lastGiaoDich.SoTien == model.SoTienNopTheoThang.SoTienDaThu /// invoke @{link #HuyGiaoDich()}: huy giao dich gan nhat /// throw NotPossibleException: Không thể hủy thanh toán! Vui lòng hủy giao dịch tại Xem lịch sử giao dịch. /// </effects> public AjaxResult HuyThanhToan(int hoaDonID) { var model = hoaDonRepository.GetHoaDonModelByID(hoaDonID); if (model == null || model.HoaDon.Trangthaithu == false || model.HoaDon.Trangthaithu == null) { return(AjaxResult.Fail("Dữ liệu bất đồng bộ, vui lòng refresh lại trang.", true)); } try { if (!HoaDonHelpers.HuyThanhToan(model, uow)) { return(AjaxResult.Fail("Lỗi cập nhật dữ liệu. Vui lòng thử lại.")); } } catch (Exception e) { return(AjaxResult.Fail(e.Message)); } int duNo = (int)(model.SoTienNopTheoThang.SoTienPhaiNop - model.SoTienNopTheoThang.SoTienDaThu); return(AjaxResult.Success("Hủy thanh toán thành công.", false, new { HoaDon = new { ID = model.HoaDon.HoadonnuocID, TrangThaiThu = model.HoaDon.Trangthaithu, NgayNopTien = model.HoaDon.NgayNopTien != null ? model.HoaDon.NgayNopTien.Value.ToString("dd/MM/yyyy") : "" }, SoTienNopTheoThang = new { SoTienDaThu = CurrencyHelpers.FormatVN(model.SoTienNopTheoThang.SoTienDaThu ?? 0), DuNo = CurrencyHelpers.FormatVN(duNo > 0 ? duNo : -duNo) } })); }