public void generateChiSoFromNearestMonth(int currentMonth, int currentYear, int nhanVienId, int tuyenKHID) { DateTime thangNamGanNhat = getThangNamGanNhatThuocHoaDon(tuyenKHID, currentMonth, currentYear); int previousMonth = thangNamGanNhat.Month; int previousYear = thangNamGanNhat.Year; if (previousYear != 1) { var hoaDonNuocsThangTruoc = getHoaDonThang(previousMonth, previousYear, tuyenKHID); var hoaDonNuocsHienTai = getHoaDonThang(currentMonth, currentYear, tuyenKHID); int countHoaDonsThangTruoc = hoaDonNuocsThangTruoc.Count(); int countHoaDonsThangHienTai = hoaDonNuocsHienTai.Count(); if (countHoaDonsThangTruoc != 0) { foreach (var hoaDonNuocThangTruoc in hoaDonNuocsThangTruoc) { HoaDonNuocHaDong.Models.SoLieuTieuThu.HoaDonNuoc hoaDonNuoc = hoaDonNuocsHienTai.FirstOrDefault(p => p.Thang == currentMonth && p.Nam == currentYear && p.KhachHangID == hoaDonNuocThangTruoc.KhachHangID); if (hoaDonNuoc == null) { Hoadonnuoc hoaDonThangHienTai = new Hoadonnuoc(); hoaDonThangHienTai.ThangHoaDon = currentMonth; hoaDonThangHienTai.NamHoaDon = currentYear; if (hoaDonNuocThangTruoc.NgayKetThucSuDung == null || hoaDonNuocThangTruoc.NgayKetThucSuDung == DateTime.MinValue) { hoaDonThangHienTai.Ngaybatdausudung = hoaDonNuocThangTruoc.NgayBatDauSuDung; } else { hoaDonThangHienTai.Ngaybatdausudung = hoaDonNuocThangTruoc.NgayKetThucSuDung; } hoaDonThangHienTai.KhachhangID = hoaDonNuocThangTruoc.KhachHangID; hoaDonThangHienTai.NhanvienID = nhanVienId; hoaDonThangHienTai.Trangthaixoa = false; hoaDonThangHienTai.Trangthaithu = false; hoaDonThangHienTai.Trangthaiin = false; hoaDonThangHienTai.Trangthaichot = false; db.Hoadonnuocs.Add(hoaDonThangHienTai); db.SaveChanges(); //Thêm chi tiết hóa đơn nước tháng sau Chitiethoadonnuoc chiTiet = new Chitiethoadonnuoc(); chiTiet.HoadonnuocID = hoaDonThangHienTai.HoadonnuocID; chiTiet.Chisocu = hoaDonNuocThangTruoc.ChiSoMoi; db.Chitiethoadonnuocs.Add(chiTiet); } } db.SaveChanges(); } } }
/// <summary> /// Thêm mới hóa đơn cho tháng sau /// </summary> /// <param name="KHID"></param> /// <param name="HoaDonID"></param> /// <param name="ChiSoCuoi"></param> public static void themMoiHoaDonThangSau(int KHID, int ChiSoCuoi, int nhanvienID, int?_month, int?_year, DateTime ngayBatDau) { int month = _month.Value; int year = _year.Value; //thêm 1 record vào tháng sau trong trường hợp chưa có //nếu tháng sau = 12 thì chuyển năm if (month + 1 > 12) { //ngayHoaDon = new DateTime(DateTime.Now.Year + 1, 1,15); month = 1; year = _year.Value + 1; } //nếu không thì vẫn chuyển năm như bình thường else { month = month + 1; } var hoaDonNuocThangSau = db.Hoadonnuocs.FirstOrDefault(p => p.KhachhangID == KHID && p.ThangHoaDon == month && p.NamHoaDon == year); //nếu k có trong db mới tiến hành add record if (hoaDonNuocThangSau == null) { Hoadonnuoc hoaDonThangSau = new Hoadonnuoc(); hoaDonThangSau.Ngayhoadon = null; hoaDonThangSau.KhachhangID = KHID; //lấy hóa đơn tháng sau dựa trên thứ tự đọc của hóa đơn tháng trước hoaDonThangSau.ThangHoaDon = month; hoaDonThangSau.NamHoaDon = year; hoaDonThangSau.NhanvienID = nhanvienID; hoaDonThangSau.Ngaybatdausudung = ngayBatDau; db.Hoadonnuocs.Add(hoaDonThangSau); db.SaveChanges(); //tạo new record chi tiết hóa đơn nước vào tháng sau Chitiethoadonnuoc chiTietThangSau = new Chitiethoadonnuoc(); chiTietThangSau.HoadonnuocID = hoaDonThangSau.HoadonnuocID; chiTietThangSau.Chisocu = ChiSoCuoi; db.Chitiethoadonnuocs.Add(chiTietThangSau); db.SaveChanges(); } //nếu có record trong tháng sau thì cập nhật lại ngày bắt đầu và các thông số liên quan else { hoaDonNuocThangSau.Ngaybatdausudung = ngayBatDau; db.SaveChanges(); var chiTietHoaDonNuocExist = hoaDonNuocThangSau.Chitiethoadonnuocs.FirstOrDefault(); //nếu k có trong db thì add if (chiTietHoaDonNuocExist == null) { //tạo new record chi tiết hóa đơn nước vào tháng sau Chitiethoadonnuoc chiTietThangSau = new Chitiethoadonnuoc(); chiTietThangSau.HoadonnuocID = hoaDonNuocThangSau.HoadonnuocID; chiTietThangSau.Chisocu = ChiSoCuoi; db.Chitiethoadonnuocs.Add(chiTietThangSau); db.SaveChanges(); } else { chiTietHoaDonNuocExist.Chisocu = ChiSoCuoi; db.SaveChanges(); } } }