private void LoadInfoHoaDon()
        {
            string str;

            str                = "SELECT NgayBan FROM tblHoaDon WHERE idHoaDon = N'" + txtMaHoaDon.Text + "'";
            dtpNgayBan.Text    = DAO_Bill.ConvertDateTime(DAO_Bill.SimpleRead(str));
            str                = "SELECT nv.TenNV FROM tblHoaDon hd JOIN dbo.tblNhanVien nv ON nv.iDNhanVien = hd.iDNhanVien WHERE idHoaDon = '" + txtMaHoaDon.Text + "'";
            cbbMaNhanVien.Text = DAO_Bill.SimpleRead(str);
            str                = " SELECT kh.DienThoai FROM dbo.tblHoaDon hd JOIN dbo.tblKhachHang kh ON kh.iDKhachHang = hd.iDKhachHang WHERE hd.idHoaDon = '" + txtMaHoaDon.Text + "'";
            cbbSDTKH.Text      = DAO_Bill.SimpleRead(str);
            str                = "SELECT TongTien FROM tblHoaDon WHERE idHoaDon = N'" + txtMaHoaDon.Text + "'";
            txtTongTien.Text   = DAO_Bill.SimpleRead(str);
            txtthanhtoan.Text  = DAO_Bill.SimpleRead(str);
            lblBangChu.Text    = "Bằng chữ: " + DAO_Bill.ChuyenSoSangChu(double.Parse(txtTongTien.Text));
        }
        private void dgvHoaDon_DoubleClick(object sender, EventArgs e)
        {
            string MaHangxoa, sql;
            Double ThanhTienxoa, SoLuongxoa, sl, slcon, tong, tongmoi;

            if (tblCTHDB.Rows.Count == 0)
            {
                MessageBox.Show("Không có dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            try
            {
                if ((MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes))
                {
                    //Xóa hàng và cập nhật lại số lượng hàng
                    MaHangxoa    = dgvHoaDon.CurrentRow.Cells["idCTHang"].Value.ToString();
                    SoLuongxoa   = Convert.ToDouble(dgvHoaDon.CurrentRow.Cells["SoLuong"].Value.ToString());
                    ThanhTienxoa = Convert.ToDouble(dgvHoaDon.CurrentRow.Cells["ThanhTien"].Value.ToString());
                    sql          = "DELETE tblCT_Hoadon WHERE idHoaDon=N'" + txtMaHoaDon.Text + "' AND idCTHang = N'" + MaHangxoa + "'";
                    DataProvider.Instance.ExecuteQuery(sql);
                    LoadDataGridView();
                    // Cập nhật lại số lượng cho các mặt hàng
                    sl    = Convert.ToDouble(DAO_Bill.SimpleRead("SELECT SoLuong FROM tblCT_Hang WHERE idCTHang = N'" + MaHangxoa + "'"));
                    slcon = sl + SoLuongxoa;
                    sql   = "UPDATE tblCT_Hang SET SoLuong =" + slcon + " WHERE idCTHang= N'" + MaHangxoa + "'";
                    DataProvider.Instance.ExecuteQuery(sql);
                    // Cập nhật lại tổng tiền cho hóa đơn bán
                    tong    = Convert.ToDouble(DAO_Bill.SimpleRead("SELECT TongTien FROM tblHoadon WHERE idhoadon = N'" + txtMaHoaDon.Text + "'"));
                    tongmoi = tong - ThanhTienxoa;
                    sql     = "UPDATE tblHoadon SET TongTien =" + tongmoi + " WHERE idhoadon = N'" + txtMaHoaDon.Text + "'";
                    DataProvider.Instance.ExecuteQuery(sql);
                    txtTongTien.Text  = tongmoi.ToString();
                    txtthanhtoan.Text = tongmoi.ToString();
                    lblBangChu.Text   = "Bằng chữ: " + DAO_Bill.ChuyenSoSangChu(tongmoi);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void btnthem_Click(object sender, EventArgs e)
        {
            string sql;
            double sl, SLcon, tong, Tongmoi;


            sql = "SELECT idHoaDon FROM tblHoaDon WHERE idHoaDon=N'" + txtMaHoaDon.Text + "'";
            if (!DAO_Bill.CheckKey(sql))
            {
                // Mã hóa đơn chưa có, tiến hành lưu các thông tin chung
                // Mã HDBan được sinh tự động do đó không có trường hợp trùng khóa
                if (dtpNgayBan.Text.Length == 0)
                {
                    MessageBox.Show("Bạn phải nhập ngày bán", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dtpNgayBan.Focus();
                    return;
                }
                if (cbbMaNhanVien.Text.Length == 0)
                {
                    MessageBox.Show("Bạn phải nhập nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cbbMaNhanVien.Focus();
                    return;
                }
                if (cbbSDTKH.Text.Length == 0)
                {
                    MessageBox.Show("Bạn phải nhập khách hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cbbSDTKH.Focus();
                    return;
                }
                try
                {
                    sql = "INSERT INTO tblHoaDon(idHoadon, NgayBan, TongTien,idNhanVien, idKhachHang) VALUES (N'" + txtMaHoaDon.Text.Trim() + "','" +
                          dtpNgayBan.Value.ToString() + "',N'" + txtTongTien.Text + "',N'" +
                          cbbMaNhanVien.SelectedValue + "','" + cbbSDTKH.SelectedValue + "')";
                    DataProvider.Instance.ExecuteQuery(sql);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Lỗi: " + ex.Message);
                }
                cbbMaNhanVien.Enabled = false;
                cbbSDTKH.Enabled      = false;
            }



            // Lưu thông tin của các mặt hàng
            if (cbbMaSP.Text.Trim().Length == 0)
            {
                MessageBox.Show("Bạn phải nhập mã hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                cbbMaSP.Focus();
                return;
            }
            if ((txtsoluongsp.Text.Trim().Length == 0) || (txtsoluongsp.Text == "0"))
            {
                MessageBox.Show("Bạn phải nhập số lượng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtsoluongsp.Text = "";
                txtsoluongsp.Focus();
                return;
            }
            if (txtgiamphantramsp.Text.Trim().Length == 0)
            {
                MessageBox.Show("Bạn phải nhập giảm giá", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtgiamphantramsp.Focus();
                return;
            }
            sql = "SELECT idCTHang FROM tblCT_HoaDon WHERE idCTHang=N'" + cbbMaSP.SelectedValue + "' AND idHoaDon = N'" + txtMaHoaDon.Text.Trim() + "'";
            if (DAO_Bill.CheckKey(sql))
            {
                MessageBox.Show("Mã hàng này đã có, bạn phải nhập mã khác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                clearsp();
                cbbMaSP.Focus();
                return;
            }
            // Kiểm tra xem số lượng hàng trong kho còn đủ để cung cấp không?
            sl = Convert.ToDouble(DAO_Bill.SimpleRead("SELECT SoLuong FROM tblCT_Hang WHERE idCTHang = N'" + cbbMaSP.SelectedValue + "'"));
            if (Convert.ToDouble(txtsoluongsp.Text) > sl)
            {
                MessageBox.Show("Số lượng mặt hàng này chỉ còn " + sl, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtsoluongsp.Text = "";
                txtsoluongsp.Focus();
                return;
            }
            try
            {
                sql = "INSERT INTO tblCT_HoaDon(SoLuong,DonGia,GiamGia,ThanhTien, idCTHang,idHoaDon) VALUES( " + txtsoluongsp.Text + "," + txtDonGiaSP.Text + "," + txtgiamphantramsp.Text + "," + txtThanhTien.Text + ", N'" + cbbMaSP.SelectedValue + "',N'" + txtMaHoaDon.Text.Trim() + "')";
                DataProvider.Instance.ExecuteQuery(sql);
                LoadDataGridView();
                // Cập nhật lại số lượng của mặt hàng vào bảng tblHang
                SLcon = sl - Convert.ToDouble(txtsoluongsp.Text);
                sql   = "UPDATE tblCT_Hang SET SoLuong =" + SLcon + " WHERE idCTHang= N'" + cbbMaSP.SelectedValue + "'";
                DataProvider.Instance.ExecuteQuery(sql);
                // Cập nhật lại tổng tiền cho hóa đơn bán
                tong    = Convert.ToDouble(DAO_Bill.SimpleRead("SELECT TongTien FROM tblHoaDon WHERE idHoaDon = N'" + txtMaHoaDon.Text + "'"));
                Tongmoi = tong + Convert.ToDouble(txtThanhTien.Text);
                sql     = "UPDATE tblHoadon SET TongTien =" + Tongmoi + " WHERE idHoaDon = N'" + txtMaHoaDon.Text + "'";
                DataProvider.Instance.ExecuteQuery(sql);
                txtTongTien.Text  = Tongmoi.ToString();
                txtthanhtoan.Text = Tongmoi.ToString();
                lblBangChu.Text   = "Bằng chữ: " + DAO_Bill.ChuyenSoSangChu(Tongmoi);
                clearsp();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi: " + ex.Message);
            }



            //btnXoa.Enabled = true;
            //btnThem.Enabled = true;
            //btnInHoaDon.Enabled = true;


            //bool found = false;
            //if (dgvHoaDon.Rows.Count > 0)
            //{
            //    foreach (DataGridViewRow row in dgvHoaDon.Rows)
            //    {
            //        if (Convert.ToString(row.Cells[0].Value) == cbbMaSP.Text)
            //        {
            //            //neu them san pham giong nhau se cộng dồn số lượng và tiền vào ô
            //            row.Cells[2].Value = (int.Parse(txtsoluongsp.Text) + Convert.ToInt16(row.Cells[2].Value.ToString()));
            //            row.Cells[4].Value = (double.Parse(txtThanhTien.Text) + Convert.ToDouble(row.Cells[4].Value.ToString()));
            //            found = true;
            //            /////////////////////
            //        }
            //    }
            //    if (!found)
            //    {
            //        dgvHoaDon.Rows.Add(cbbMaSP.Text, txtTenSP.Text, txtsoluongsp.Text, txtDonGiaSP.Text, txtThanhTien.Text, txtChatLieu.Text, txtSize.Text, txtgiamphantramsp.Text);
            //    }
            //}
            //else
            //{
            //    dgvHoaDon.Rows.Add(cbbMaSP.Text, txtTenSP.Text, txtsoluongsp.Text, txtDonGiaSP.Text, txtThanhTien.Text, txtChatLieu.Text, txtSize.Text, txtgiamphantramsp.Text);
            //}

            //double sum = 0;
            //for (int i = 0; i < dgvHoaDon.Rows.Count; ++i)
            //{
            //    sum += Convert.ToDouble(dgvHoaDon.Rows[i].Cells[4].Value);
            //}
            //txtTongTien.Text = sum.ToString("###,###");
            ////------------------- update sql -----------------//
            //string sql = "update tblCT_Hang set soluong=soluong - '" + txtsoluongsp.Text + "' where idCTHang ='" + cbbMaSP.Text + "' ";
            //DataProvider.Instance.ExecuteQuery(sql);

            //clearsp();
        }
        private void btnthanhtoan_Click(object sender, EventArgs e)
        {
            COMExcel.Application exApp = new COMExcel.Application();
            COMExcel.Workbook    exBook;  //Trong 1 chương trình Excel có nhiều Workbook
            COMExcel.Worksheet   exSheet; //Trong 1 Workbook có nhiều Worksheet
            COMExcel.Range       exRange;
            string    sql;
            int       hang = 0, cot = 0;
            DataTable tblThongtinHD, tblThongtinHang;

            exBook  = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet);
            exSheet = exBook.Worksheets[1];
            // Định dạng chung
            exRange = exSheet.Cells[1, 1];
            exRange.Range["A1:Z300"].Font.Name         = "Times new roman"; //Font chữ
            exRange.Range["A1:B3"].Font.Size           = 10;
            exRange.Range["A1:B3"].Font.Bold           = true;
            exRange.Range["A1:B3"].Font.ColorIndex     = 5; //Màu xanh da trời
            exRange.Range["A1:A1"].ColumnWidth         = 7;
            exRange.Range["B1:B1"].ColumnWidth         = 15;
            exRange.Range["A1:B1"].MergeCells          = true;
            exRange.Range["A1:B1"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["A1:B1"].Value               = "THE MR.SIMPLE SYTLE.";
            exRange.Range["A2:B2"].MergeCells          = true;
            exRange.Range["A2:B2"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["A2:B2"].Value               = "27 - LÝ TỰ TRONG - QUẬN 1 - TPHCM";
            exRange.Range["A3:B3"].MergeCells          = true;
            exRange.Range["A3:B3"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["A3:B3"].Value               = "Điện thoại: (+84)987644753";
            exRange.Range["C2:E2"].Font.Size           = 16;
            exRange.Range["C2:E2"].Font.Bold           = true;
            exRange.Range["C2:E2"].Font.ColorIndex     = 3; //Màu đỏ
            exRange.Range["C2:E2"].MergeCells          = true;
            exRange.Range["C2:E2"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["C2:E2"].Value               = "HÓA ĐƠN BÁN";
            // Biểu diễn thông tin chung của hóa đơn bán
            sql           = "SELECT a.idHoadon, a.NgayBan, a.TongTien, b.TenKhach, b.DiaChi, b.DienThoai, c.TenNV FROM tblHoadon AS a, tblKhachHang AS b, tblNhanVien AS c WHERE a.idHoaDon = N'" + txtMaHoaDon.Text + "' AND a.idKhachHang = b.idKhachHang AND a.idNhanVien = c.idNhanVien";
            tblThongtinHD = DAO_Bill.GetDataToTable(sql);
            exRange.Range["B6:C9"].Font.Size  = 12;
            exRange.Range["B6:B6"].Value      = "Mã hóa đơn:";
            exRange.Range["C6:E6"].MergeCells = true;
            exRange.Range["C6:E6"].Value      = tblThongtinHD.Rows[0][1].ToString();
            exRange.Range["B7:B7"].Value      = "Khách hàng:";
            exRange.Range["C7:E7"].MergeCells = true;
            exRange.Range["C7:E7"].Value      = tblThongtinHD.Rows[0][3].ToString();
            exRange.Range["B8:B8"].Value      = "Địa chỉ:";
            exRange.Range["C8:E8"].MergeCells = true;
            exRange.Range["C8:E8"].Value      = tblThongtinHD.Rows[0][4].ToString();
            exRange.Range["B9:B9"].Value      = "Điện thoại:";
            exRange.Range["C9:E9"].MergeCells = true;
            exRange.Range["C9:E9"].Value      = tblThongtinHD.Rows[0][5].ToString();
            //Lấy thông tin các mặt hàng
            sql = "SELECT b.Ten, a.SoLuong, b.DonGiaBan, a.GiamGia, a.ThanhTien " +
                  "FROM tblCT_HoaDon AS a , tblCT_Hang AS b WHERE a.idHoaDon = N'" +
                  txtMaHoaDon.Text + "' AND a.idCTHang = b.idCTHang";
            tblThongtinHang = DAO_Bill.GetDataToTable(sql);
            //Tạo dòng tiêu đề bảng
            exRange.Range["A11:F11"].Font.Bold           = true;
            exRange.Range["A11:F11"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["C11:F11"].ColumnWidth         = 12;
            exRange.Range["A11:A11"].Value = "STT";
            exRange.Range["B11:B11"].Value = "Tên hàng";
            exRange.Range["C11:C11"].Value = "Số lượng";
            exRange.Range["D11:D11"].Value = "Đơn giá";
            exRange.Range["E11:E11"].Value = "Giảm giá";
            exRange.Range["F11:F11"].Value = "Thành tiền";
            for (hang = 0; hang < tblThongtinHang.Rows.Count; hang++)
            {
                //Điền số thứ tự vào cột 1 từ dòng 12
                exSheet.Cells[1][hang + 12] = hang + 1;
                for (cot = 0; cot < tblThongtinHang.Columns.Count; cot++)
                //Điền thông tin hàng từ cột thứ 2, dòng 12
                {
                    exSheet.Cells[cot + 2][hang + 12] = tblThongtinHang.Rows[hang][cot].ToString();
                    if (cot == 3)
                    {
                        exSheet.Cells[cot + 2][hang + 12] = tblThongtinHang.Rows[hang][cot].ToString() + "%";
                    }
                }
            }
            exRange           = exSheet.Cells[cot][hang + 14];
            exRange.Font.Bold = true;
            exRange.Value2    = "Tổng tiền:";
            exRange           = exSheet.Cells[cot + 1][hang + 14];
            exRange.Font.Bold = true;
            exRange.Value2    = tblThongtinHD.Rows[0][2].ToString();
            exRange           = exSheet.Cells[1][hang + 15]; //Ô A1
            exRange.Range["A1:F1"].MergeCells          = true;
            exRange.Range["A1:F1"].Font.Bold           = true;
            exRange.Range["A1:F1"].Font.Italic         = true;
            exRange.Range["A1:F1"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignRight;
            exRange.Range["A1:F1"].Value = "Bằng chữ: " + DAO_Bill.ChuyenSoSangChu(double.Parse(tblThongtinHD.Rows[0][2].ToString()));
            exRange = exSheet.Cells[4][hang + 17]; //Ô A1
            exRange.Range["A1:C1"].MergeCells          = true;
            exRange.Range["A1:C1"].Font.Italic         = true;
            exRange.Range["A1:C1"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            DateTime d = Convert.ToDateTime(tblThongtinHD.Rows[0][1]);

            exRange.Range["A1:C1"].Value               = "TPHCM, ngày " + d.Day + " tháng " + d.Month + " năm " + d.Year;
            exRange.Range["A2:C2"].MergeCells          = true;
            exRange.Range["A2:C2"].Font.Italic         = true;
            exRange.Range["A2:C2"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["A2:C2"].Value               = "Nhân viên bán hàng";
            exRange.Range["A6:C6"].MergeCells          = true;
            exRange.Range["A6:C6"].Font.Italic         = true;
            exRange.Range["A6:C6"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
            exRange.Range["A6:C6"].Value               = tblThongtinHD.Rows[0][6];
            exSheet.Name  = "Hóa đơn nhập";
            exApp.Visible = true;
        }