private void btnXacNhan_Click(object sender, EventArgs e) { if (khachHang == null) { // Khách hàng mới khachHang = new clsKhachHang_DTO(txtTenKH.Text, txtSDT.Text, Helper.GetTimestamp(DateTime.Now)); clsKhachHang_BUS.Them(khachHang); } hoaDonHienTai = new clsHoaDon_DTO( Helper.GetTimestamp(DateTime.Now), Validation.LayMaNhanVien(), string.IsNullOrWhiteSpace(txtGhiChu.Text) ? "Không" : txtGhiChu.Text, double.Parse(lblGiamTru.Text), double.Parse(lblThanhTien.Text), khachHang, khuyenMai); if (clsHoaDon_BUS.Them(hoaDonHienTai)) { // Chi tiet hoa don foreach (DataRow row in dtSanPham.Rows) { clsKhuyenMai_DTO km = new clsKhuyenMai_DTO ( row["TenKhuyenMai"].ToString(), row["GiamTru"].ToString(), false, null, null, 1, int.Parse(row["MaKhuyenMai"].ToString()) ); clsChiTietHD_DTO cthd = new clsChiTietHD_DTO ( Helper.GetTimestamp(DateTime.Now), row["MaCTSP"].ToString(), double.Parse(row["GiamTru"].ToString()), double.Parse(row["TongTien"].ToString()), int.Parse(row["SoLuong"].ToString()), km, hoaDonHienTai ); if (!clsChiTietHD_BUS.Them(cthd)) { MessageBox.Show("Đã xảy ra lỗi khi tạo chi tiết hóa đơn, vui lòng thử lại hoặc liên hệ Admin để xử lý."); // TODO: Xóa hóa đơn đã tạo ở trên return; } else { // TODO: Giam so luong ton kho trong database if (!clsChiTietSanPham_BUS.CapNhatSoLuong(cthd.MaCTSP, cthd.SoLuong)) { MessageBox.Show("Đã xảy ra lỗi khi cập nhật số lượng, vui lòng thử lại hoặc liên hệ Admin để xử lý."); return; } } int milliseconds = 100; Thread.Sleep(milliseconds); } DialogResult result = MessageBox.Show("Tạo hóa đơn thành công, bạn có muốn In ngay bây giờ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { In(); } btnIn.Enabled = true; XacNhanHoaDon(false); } else { MessageBox.Show("Thêm hóa đơn thất bại."); } }