Пример #1
0
        //-----------------giảm số lượng món ăn xuống 1-----------------
        private void btnGiamSoLuongMonAn_Click(object sender, EventArgs e)
        {
            int index;
            int sl;

            try
            {
                sl = int.Parse(dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[1].Value.ToString());
            }
            catch (Exception)
            {
                return;
            }
            if (chiSoCuaLsvHoaDon != -1)
            {
                if (sl > 1)
                {
                    sl = sl - 1;
                }
                dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[1].Value = sl.ToString(); // Giảm số lượng món ăn đi 1
                index = chiSoCuaLsvHoaDon;
                // cập nhật lại số lượng món ăn trong cơ sở dữ liệu
                HoaDonOrder_BUS.CapNhatSoLuongMonAn(sl, HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID), MonAn_BUS.layIDMonAn(dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[0].Value.ToString()));
                LoadHoaDon(danhSachBanAn[indexTable].ID);  // sau khi thêm thì load lại hóa đơn
                dgvHoaDonOrder.CurrentCell = dgvHoaDonOrder.Rows[index].Cells[0];
                chiSoCuaLsvHoaDon          = index;
            }
        }
Пример #2
0
        private void btnThongKe_Click(object sender, EventArgs e)
        {
            lbDoanhThu.Text = DoanhThu();
            List <QuanLiHoaDon_DTO> lstHoaDon = HoaDonOrder_BUS.LocHoaDon(dtpTuNgay.Text, dtpDenNgay.Text);

            if (lstHoaDon == null)
            {
                MessageBox.Show("Không có kết quả nào");
                return;
            }

            long doanhThu = 0;

            foreach (QuanLiHoaDon_DTO hd in lstHoaDon)
            {
                doanhThu += long.Parse(hd.SoTien);
            }
            CultureInfo cul = new CultureInfo("vi-VN");

            lbDT.Text = doanhThu.ToString("c", cul);

            DataTable dt = DataProvider.LayDataTable("select NgayThanhToan , sum(SoTien) as DoanhThu from HoaDon where NgayThanhToan >= '" + dtpTuNgay.Text + "' AND NgayThanhToan <= '" + dtpDenNgay.Text + "' group by NgayThanhToan", conn);

            chartDoanhThu.DataSource = dt;
            chartDoanhThu.ChartAreas["ChartArea1"].AxisX.Title = "Ngày";
            chartDoanhThu.ChartAreas["ChartArea1"].AxisY.Title = "Doanh Thu";

            chartDoanhThu.Series["Doanh Thu"].XValueMember  = "NgayThanhToan";
            chartDoanhThu.Series["Doanh Thu"].YValueMembers = "DoanhThu";
        }
Пример #3
0
        //------------Mở bàn------------------------
        private void btnMoBan_Click(object sender, EventArgs e)
        {
            if (indexTable == -1) // nếu chưa có bàn nào được chọn
            {
                MessageBox.Show("Chọn 1 Bàn Để Mở", "Thông Báo");
                return;
            }
            if (listBanAn.Items[indexTable].ImageIndex == 0)  // Nếu Bàn Đang Mở thì không thêm hóa đơn nữa
            {
                MessageBox.Show("Bàn Đang Mở", "Thông Báo");
                return;
            }
            // khi click thì thêm 1 hóa đơn vào bảng hóa đơn

            // nếu Thêm hóa đơn thành công thì Bàn sẽ màu xanh và trạng thái thành có người
            if (HoaDonOrder_BUS.ThemHoaDon(danhSachBanAn[indexTable].ID) == true && BanAn_BUS.SuaTrangThaiBanAn(danhSachBanAn[indexTable].ID) == true)
            {
                lbTrangThai.Text = "Có Người";
                listBanAn.Items[indexTable].ImageIndex = 0;

                lbBan.ForeColor       = Color.Green;
                lbTrangThai.ForeColor = Color.Green;

                MessageBox.Show("Đã Mở Bàn", "Thông Báo");
                panelOrderMon.Visible = true;
                return;
            }
            MessageBox.Show("Lỗi", "Thông Báo");
        }
Пример #4
0
        private void LoadHoaDon(int idBan)
        {
            int tongTien = 0;

            dgvHoaDonOrder.Rows.Clear();                        // xóa hết các dòng trên listview đi để tránh cái sau đè lên cái trước
            danhSachHoaDon = HoaDonOrder_BUS.LoadHoaDon(idBan); // lấy hóa đơn của bàn đang được click
            if (danhSachHoaDon == null)                         // nếu không có hóa đơn tiền = 0
            {
                LabelTongTienSo.Text = "0";
                return;
            }

            else                                                                                                                                                                                    // nếu có hóa đơn
            {
                for (int i = 0; i < danhSachHoaDon.Count; i++)                                                                                                                                      // duyệt từ đầu danh sách hóa đơn đến cuối danh sách hóa đơn
                {
                    tongTien += int.Parse(danhSachHoaDon[i].ThanhTien.ToString());                                                                                                                  // tính tổng tiền
                    dgvHoaDonOrder.Rows.Add(danhSachHoaDon[i].TenMonAn.ToString(), danhSachHoaDon[i].SoLuong.ToString(), danhSachHoaDon[i].Gia.ToString(), danhSachHoaDon[i].ThanhTien.ToString()); // thêm items vừa tạo vào listview
                }
                //CultureInfo cul = new CultureInfo("vi-VN");

                // Gán Tiền vào textbox
                LabelTongTienSo.Text = tongTien.ToString();
            }
        }
 //---------------Xóa Hóa Đơn-----------
 private void btnXoa_Click(object sender, EventArgs e)
 {
     if (TKDN.Substring(0, 2) == "NV")
     {
         MessageBox.Show("Chỉ có chức vụ quản lý mới được sử dụng chức năng này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     else
     {
         if (dr == null)
         {
             MessageBox.Show("Chọn hóa đơn muốn xóa");
             return;
         }
         if (MessageBox.Show("Xác nhận xóa", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
         {
             if (HoaDonOrder_BUS.XoaHoaDon(int.Parse(dr.Cells["IDHoaDon"].Value.ToString())))
             {
                 dr = null;
                 LayDanhSachHoaDon();
                 MessageBox.Show("Xóa thành công");
                 return;
             }
         }
         else
         {
             MessageBox.Show("Xóa thất bại");
         }
     }
 }
Пример #6
0
        private void btn_DoubleClick(object sender, EventArgs e)
        {
            int    iD       = ((sender as Guna.UI.WinForms.GunaAdvenceTileButton).Tag as MonAn_DTO).ID;
            string tenMonAn = ((sender as Guna.UI.WinForms.GunaAdvenceTileButton).Tag as MonAn_DTO).TenMonAn;
            int    gia      = ((sender as Guna.UI.WinForms.GunaAdvenceTileButton).Tag as MonAn_DTO).Gia;

            if (listBanAn.Items.Count > 0)
            {
                for (int i = 0; i < dgvHoaDonOrder.RowCount; i++)
                {
                    try
                    {
                        if (dgvHoaDonOrder.Rows[i].Cells[0].Value.ToString() == tenMonAn)
                        {
                            MessageBox.Show("Món ăn đã có rồi", "Thông Báo");
                            return;
                        }
                    }
                    catch (Exception) // có lỗi ở chỗ này thì thoát
                    {
                        MessageBox.Show("Món ăn đã có rồi", "Thông Báo");
                        return;
                    }
                }
            }

            dgvHoaDonOrder.Rows.Add(tenMonAn, soluong, gia, soluong * gia);

            HoaDonOrder_BUS.ThemThongTinHoaDon(HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID), iD, soluong);
            LoadHoaDon(danhSachBanAn[indexTable].ID); //sau khi thêm thì load lại hóa đơn
        }
Пример #7
0
        public void BangThongKeTheoThang()
        {
            BatBieuDo();
            DataTable dtHoaDon            = HoaDonOrder_BUS.LocHoaDonTheoThang(cbNam.Text);
            List <QuanLiHoaDon_DTO> lstHD = new List <QuanLiHoaDon_DTO>();

            if (dtHoaDon == null)
            {
                MessageBox.Show("Không có kết quả nào");
                return;
            }
            for (int i = 0; i < dtHoaDon.Rows.Count; i++)
            {
                QuanLiHoaDon_DTO hoaDon = new QuanLiHoaDon_DTO();
                hoaDon.NgayThanhToan = dtHoaDon.Rows[i]["Thang"].ToString();
                hoaDon.SoTien        = dtHoaDon.Rows[i]["DoanhThu"].ToString();
                lstHD.Add(hoaDon);
            }
            CultureInfo cul = new CultureInfo("vi-VN");

            lbDTNum.Text             = DoanhThu(lstHD);
            chartDoanhThu.DataSource = dtHoaDon;
            chartDoanhThu.ChartAreas["ChartArea1"].AxisX.Title = "Tháng";
            chartDoanhThu.ChartAreas["ChartArea1"].AxisY.Title = "Doanh Thu";

            chartDoanhThu.Series["Doanh Thu"].XValueMember  = "Thang";
            chartDoanhThu.Series["Doanh Thu"].YValueMembers = "DoanhThu";
        }
Пример #8
0
        //------------------Lọc Hóa Đơn---------------
        private void btnLoc_Click(object sender, EventArgs e)
        {
            List <QuanLiHoaDon_DTO> lstHoaDon;

            lstHoaDon = HoaDonOrder_BUS.LocHoaDon(dtpTuNgay.Text, dtpDenNgay.Text);
            if (lstHoaDon == null)
            {
                MessageBox.Show("Không có kết quả nào");
                return;
            }
            dgvDanhSachHoaDon.DataSource = lstHoaDon;
        }
Пример #9
0
 //------------------Xóa Tất cả Hóa đơn-----------
 private void btnXoaTatCa_Click(object sender, EventArgs e)
 {
     if (lstHoaDon == null)
     {
         return;
     }
     if (MessageBox.Show("Xóa toàn bộ hóa đơn", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
     {
         HoaDonOrder_BUS.XoaToanBoHoaDon();
         MessageBox.Show("Đã xóa");
         LayDanhSachHoaDon();
         return;
     }
 }
Пример #10
0
        private void btnDoanhThuTrongNgay_Click(object sender, EventArgs e)
        {
            KieuTK                = "Ngay";
            lbDTNum.Text          = "Chưa có dữ liệu";
            lbBieuDo.Visible      = false;
            lbTK.Visible          = false;
            chartDoanhThu.Visible = false;
            cbNam.Visible         = false;
            List <QuanLiHoaDon_DTO> lstHD = HoaDonOrder_BUS.DoanhThuTrongNgay(dtpNgay.Text);
            CultureInfo             cul   = new CultureInfo("vi-VN");

            if (lstHD != null)
            {
                lbDTNum.Text = DoanhThu(lstHD);
            }
        }
Пример #11
0
        private void ButtonThanhToan_Click(object sender, EventArgs e)
        {
            if (indexTable == -1)
            {
                return;
            }
            if (listBanAn.Items[indexTable].ImageIndex == 1)
            {
                MessageBox.Show("Mở Bàn Để Thanh Tóan");
                return;
            }
            int tien = int.Parse(lbThanhTien.Text);

            CultureInfo cul           = new CultureInfo("vi-VN"); // định dạng tiền việt
            string      tienThanhToan = tien.ToString("c", cul);

            if (MessageBox.Show("Thanh Toán: " + tienThanhToan, "Thanh Toán", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                //  xóa hết món ăn trên bàn ăn đó
                HoaDonOrder_BUS.XoaThongTinHoaDon(HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID));

                // update số tiền
                DateTime time          = DateTime.Now;
                string   ngayThanhToan = time.ToString("dd/MM/yyyy");
                try
                {
                    HoaDonOrder_BUS.UpdateHoaDon(1, ngayThanhToan, int.Parse(lbThanhTien.Text), danhSachBanAn[indexTable].ID);
                }
                catch (Exception)
                {
                    MessageBox.Show("Lỗi Rồi....");
                    return;
                }

                // sửa lại trạng thái bàn ăn thành trống
                BanAn_BUS.SuaTrangThaiBanAn2(danhSachBanAn[indexTable].ID);

                listBanAn.Items[indexTable].ImageIndex = 1;

                lbTrangThai.Text = "Trống";

                lbBan.ForeColor       = Color.Red;        // load lại màu chữ
                lbTrangThai.ForeColor = Color.Red;        // load lại màu chữ

                LoadHoaDon(danhSachBanAn[indexTable].ID); // sau khi xóa thì load lại hóa đơn
            }
        }
Пример #12
0
        private string DoanhThu()
        {
            List <QuanLiHoaDon_DTO> lstHoaDon = HoaDonOrder_BUS.LocHoaDon(now.ToString("dd/MM/yyyy"), now.ToString("dd/MM/yyyy"));

            long doanhThu = 0;

            if (lstHoaDon != null)
            {
                foreach (QuanLiHoaDon_DTO hd in lstHoaDon)
                {
                    doanhThu += long.Parse(hd.SoTien);
                }
            }
            CultureInfo cul = new CultureInfo("vi-VN");

            return(doanhThu.ToString("c", cul));
        }
Пример #13
0
        private void btnchuyenBan_Click(object sender, EventArgs e)
        {
            if (indexTable == -1)
            {
                MessageBox.Show("Chọn bàn muốn chuyển");
                return;
            }
            if (listBanAn.Items[indexTable].ImageIndex == 1)
            {
                MessageBox.Show("Mở bàn để chuyển bàn");
                return;
            }
            FormChuyenBan formChuyenBan = new FormChuyenBan();  // khởi tạo form chuyển bàn để lấy dữ liệu từ form

            formChuyenBan.ShowDialog();

            int idToTable = formChuyenBan.idToTable; // lấy id của bàn muốn chuyển đến

            if (formChuyenBan.chuyenBan == false)    // chuyển bàn = false thì không được chuyển
            {
                return;
            }

            // chuyển từ bàn có id là idfromTable đến bàn có id là idTotable
            if (HoaDonOrder_BUS.ChuyenBan(danhSachBanAn[indexTable].ID, idToTable))
            {
                BanAn_BUS.SuaTrangThaiBanAn2(danhSachBanAn[indexTable].ID); // cập nhật lại trạng thái cho bàn vừa bị chuyển thành trống
                BanAn_BUS.SuaTrangThaiBanAn(idToTable);                     // cập nhật lại trạng thái cho bàn được chuyển đến thành có người
                listBanAn.Clear();                                          // load lại bàn ăn
                LoadBanAn();

                LoadHoaDon(danhSachBanAn[indexTable].ID); // load lại hóa đơn

                // cập nhật lại màu chữ cho label
                lbTrangThai.Text      = "Trống";
                lbBan.ForeColor       = Color.Red;
                lbTrangThai.ForeColor = Color.Red;

                MessageBox.Show("Chuyển thành công");
                return;
            }
            MessageBox.Show("Chuyển thất bại !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
Пример #14
0
        void LayDanhSachHoaDon()
        {
            lstHoaDon = HoaDonOrder_BUS.DanhSachHoaDon();
            dgvDanhSachHoaDon.DataSource = lstHoaDon;
            if (lstHoaDon == null)
            {
                return;
            }

            dgvDanhSachHoaDon.Columns["IDHoaDon"].HeaderText           = "So HD";
            dgvDanhSachHoaDon.Columns["TenBan"].HeaderText             = "Tên Bàn";
            dgvDanhSachHoaDon.Columns["TinhTrangThanhToan"].HeaderText = "Tình Trạng Thanh Toán";
            dgvDanhSachHoaDon.Columns["NgayThanhToan"].HeaderText      = "Ngày Thanh Toán";
            dgvDanhSachHoaDon.Columns["SoTien"].HeaderText             = "Số Tiền";

            dgvDanhSachHoaDon.Columns["IDHoaDon"].Width           = 50;
            dgvDanhSachHoaDon.Columns["TenBan"].Width             = 150;
            dgvDanhSachHoaDon.Columns["TinhTrangThanhToan"].Width = 150;
            dgvDanhSachHoaDon.Columns["NgayThanhToan"].Width      = 150;
            dgvDanhSachHoaDon.Columns["SoTien"].Width             = 125;
        }
Пример #15
0
        //-----------------Tăng số lượng món ăn lên 1-----------------
        private void btnTangSoLuongMonAn_Click(object sender, EventArgs e)
        {
            int sl;

            try
            {
                sl = int.Parse(dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[1].Value.ToString());
            }
            catch (Exception)
            {
                return;
            }
            if (chiSoCuaLsvHoaDon != -1)
            {
                sl = sl + 1;
                dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[1].Value = sl.ToString(); // tăng số lượng món ăn trong lstHoaDon lên 1

                HoaDonOrder_BUS.CapNhatSoLuongMonAn(sl, HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID), MonAn_BUS.layIDMonAn(dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[0].Value.ToString()));
                LoadHoaDon(danhSachBanAn[indexTable].ID); // sau khi thêm thì load lại hóa đơn
            }
        }
Пример #16
0
 //------------------Xóa Tất cả Hóa đơn-----------
 private void btnXoaTatCa_Click(object sender, EventArgs e)
 {
     if (TKDN.Substring(0, 2) == "NV")
     {
         MessageBox.Show("Chỉ có chức vụ quản lý mới được sử dụng chức năng này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     else
     {
         if (lstHoaDon == null)
         {
             return;
         }
         if (MessageBox.Show("Xóa toàn bộ hóa đơn", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
         {
             HoaDonOrder_BUS.XoaToanBoHoaDon();
             MessageBox.Show("Đã xóa");
             LayDanhSachHoaDon();
             return;
         }
     }
 }
Пример #17
0
 //---------------Xóa Hóa Đơn-----------
 private void btnXoa_Click(object sender, EventArgs e)
 {
     if (dr == null)
     {
         MessageBox.Show("Chọn hóa đơn muốn xóa");
         return;
     }
     if (MessageBox.Show("Xác nhận xóa", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
     {
         if (HoaDonOrder_BUS.XoaHoaDon(int.Parse(dr.Cells["IDHoaDon"].Value.ToString())))
         {
             dr = null;
             LayDanhSachHoaDon();
             MessageBox.Show("Xóa thành công");
             return;
         }
     }
     else
     {
         MessageBox.Show("Xóa thất bại");
     }
 }
Пример #18
0
        private void btnXoaMonAn_Click(object sender, EventArgs e)
        {
            if (dgvHoaDonOrder.RowCount < 1)
            {
                return;
            }
            if (chiSoCuaLsvHoaDon != -1)
            {
                // xóa món ăn đã chọn dựa vào id hóa đơn và id món ăn
                try
                {
                    // xóa món ăn trong cơ sở dữ liệu dựa vào IDHoaDon và IDMonAN
                    HoaDonOrder_BUS.XoaMonAn(HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID), MonAn_BUS.layIDMonAn(dgvHoaDonOrder.Rows[chiSoCuaLsvHoaDon].Cells[0].Value.ToString()));
                }
                catch (Exception)
                {
                    return;
                }

                dgvHoaDonOrder.Rows.RemoveAt(chiSoCuaLsvHoaDon); // xóa món ăn trên listview

                LoadHoaDon(danhSachBanAn[indexTable].ID);        // sau khi xóa thì load lại hóa đơn
            }
        }
Пример #19
0
        private void ButtonThanhToan_Click(object sender, EventArgs e)
        {
            if (indexTable == -1)
            {
                return;
            }
            if (listBanAn.Items[indexTable].ImageIndex == 1)
            {
                MessageBox.Show("Mở Bàn Để Thanh Tóan");
                return;
            }
            int tien = int.Parse(lbThanhTien.Text);

            CultureInfo cul           = new CultureInfo("vi-VN"); // định dạng tiền việt
            string      tienThanhToan = tien.ToString("c", cul);
            int         ID            = HoaDonOrder_BUS.layIDHoaDon(danhSachBanAn[indexTable].ID);

            if (MessageBox.Show("Thanh Toán: " + tienThanhToan, "Thanh Toán", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                //  xóa hết món ăn trên bàn ăn đó
                HoaDonOrder_BUS.XoaThongTinHoaDon(ID);

                // update số tiền
                DateTime time          = DateTime.Now;
                string   ngayThanhToan = time.ToString("dd/MM/yyyy");
                try
                {
                    HoaDonOrder_BUS.UpdateHoaDon(1, ngayThanhToan, int.Parse(lbThanhTien.Text), danhSachBanAn[indexTable].ID);
                }
                catch (Exception)
                {
                    MessageBox.Show("Lỗi Rồi....");
                    return;
                }
                Document             doc         = new Document(iTextSharp.text.PageSize.LETTER, 5, 5, 2, 2);
                string               timesTTF    = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "times.TTF");
                BaseFont             arial       = BaseFont.CreateFont(timesTTF, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
                iTextSharp.text.Font f_24_Bold   = new iTextSharp.text.Font(arial, 24, iTextSharp.text.Font.BOLD);
                iTextSharp.text.Font f_20_normal = new iTextSharp.text.Font(arial, 20, iTextSharp.text.Font.NORMAL);
                iTextSharp.text.Font f_20_Bold   = new iTextSharp.text.Font(arial, 20, iTextSharp.text.Font.BOLD);
                FileStream           os          = new FileStream(lbBan.Text.ToString() + ".pdf", FileMode.Create);

                using (os)
                {
                    //Khi báo lỗi tick vào ô itextsharp, lỗi này đã được itextsharp exception xử lý rồi nên sẽ không sao
                    //Sau khi skip exception của lỗi này thì chương trình vẫn chạy bình thường
                    //Lỗi này không xuất hiện khi chạy ứng dụng cài bằng file setup
                    PdfWriter wri = PdfWriter.GetInstance(doc, os);
                    doc.Open();
                    PdfPTable             table = new PdfPTable(1);
                    iTextSharp.text.Image JPEG  = iTextSharp.text.Image.GetInstance(stringIMAGE);
                    JPEG.BorderColor      = iTextSharp.text.BaseColor.WHITE;
                    JPEG.Alignment        = Element.ALIGN_CENTER;
                    table.WidthPercentage = 20;
                    table.AddCell(JPEG);

                    doc.Add(table);
                    PdfPTable table1 = new PdfPTable(1);
                    float[]   width  = new float[] { 20f, 40f };

                    PdfPCell cell1 = new PdfPCell(new Phrase("\nRESTAURANT", f_24_Bold));

                    PdfPCell cell3  = new PdfPCell(new Phrase("\nĐT: 0854402341 - 0333304558", f_20_normal));
                    PdfPCell cell4  = new PdfPCell(new Phrase("-----------------------------------------", f_20_normal));
                    PdfPCell cell5  = new PdfPCell(new Phrase("Hóa Đơn Thanh Toán", f_24_Bold));
                    PdfPCell cell6  = new PdfPCell(new Phrase($"Số HD: {ID}", f_20_normal));
                    PdfPCell cell7  = new PdfPCell(new Phrase("Ngày in:   " + lbNgay.Text.ToString() + "                 Giờ in: " + DateTime.Now.ToString("HH:mm:ss tt"), f_20_normal));
                    PdfPCell cell8  = new PdfPCell(new Phrase("Bàn:       " + lbBan.Text.ToString(), f_20_Bold));
                    PdfPCell cell9  = new PdfPCell(new Phrase($"Thu ngân:   {nv.TenNhanVien}", f_20_normal));
                    PdfPCell cell10 = new PdfPCell(new Phrase("Số khách: ", f_20_normal));

                    cell1.Border = iTextSharp.text.Rectangle.NO_BORDER;

                    cell3.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell4.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell5.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell6.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell7.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell8.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell9.Border  = iTextSharp.text.Rectangle.NO_BORDER;
                    cell10.Border = iTextSharp.text.Rectangle.NO_BORDER;

                    cell1.HorizontalAlignment = Element.ALIGN_JUSTIFIED_ALL;

                    cell3.HorizontalAlignment  = Element.ALIGN_CENTER;
                    cell4.HorizontalAlignment  = Element.ALIGN_CENTER;
                    cell5.HorizontalAlignment  = Element.ALIGN_CENTER;
                    cell6.HorizontalAlignment  = Element.ALIGN_JUSTIFIED;
                    cell7.HorizontalAlignment  = Element.ALIGN_JUSTIFIED;
                    cell8.HorizontalAlignment  = Element.ALIGN_JUSTIFIED;
                    cell9.HorizontalAlignment  = Element.ALIGN_JUSTIFIED;
                    cell10.HorizontalAlignment = Element.ALIGN_JUSTIFIED;

                    cell1.VerticalAlignment = Element.ALIGN_TOP;

                    cell3.VerticalAlignment = Element.ALIGN_CENTER;


                    table1.WidthPercentage     = 80;
                    table1.HorizontalAlignment = Element.ALIGN_CENTER;

                    table1.AddCell(cell1);
                    table1.AddCell(cell3);
                    table1.AddCell(cell4);
                    table1.AddCell(cell5);
                    table1.AddCell(cell6);
                    table1.AddCell(cell7);
                    table1.AddCell(cell8);
                    table1.AddCell(cell9);
                    table1.AddCell(cell10);
                    table1.SpacingAfter  = 5;
                    table1.SpacingBefore = 5;

                    doc.Add(table1);

                    PdfPTable pdfTable = new PdfPTable(dgvHoaDonOrder.Columns.Count);
                    pdfTable.DefaultCell.Padding = 3;
                    pdfTable.WidthPercentage     = 80;
                    pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;
                    pdfTable.SpacingAfter        = 5;
                    pdfTable.SpacingBefore       = 5;
                    foreach (DataGridViewColumn column in dgvHoaDonOrder.Columns)
                    {
                        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, f_20_Bold));

                        cell.Border = iTextSharp.text.Font.BOLD + iTextSharp.text.Rectangle.BOTTOM_BORDER;
                        cell.HorizontalAlignment = Element.ALIGN_CENTER;

                        pdfTable.AddCell(cell);
                    }

                    foreach (DataGridViewRow row in dgvHoaDonOrder.Rows)
                    {
                        foreach (DataGridViewCell cell in row.Cells)
                        {
                            PdfPCell c = new PdfPCell(new Phrase(cell.Value.ToString(), f_20_normal));
                            c.Border = iTextSharp.text.Rectangle.NO_BORDER;
                            c.HorizontalAlignment = Element.ALIGN_CENTER;
                            pdfTable.AddCell(c);
                        }
                    }
                    doc.Add(pdfTable);

                    //Thành tiền
                    PdfPTable table2 = new PdfPTable(1);
                    PdfPCell  c1     = new PdfPCell(new Phrase("\nTổng Tiền:                                                       " + lbTongTienThanhToan.Text.ToString() + " VND", f_20_Bold));
                    PdfPCell  c2     = new PdfPCell(new Phrase("\nKhuyến Mãi:                                                             " + txtKhuyenMaiPhanTram.Text.ToString() + "%" + "\n\n\n", f_20_Bold));
                    PdfPCell  c3     = new PdfPCell(new Phrase("\nThành Tiền:                                                      " + lbThanhTien.Text.ToString() + " VND", f_20_Bold));
                    PdfPCell  c4     = new PdfPCell(new Phrase("\n\n\nHân hạnh được phục vụ quý khách !", f_20_normal));

                    c1.Border = iTextSharp.text.Font.BOLD;
                    c2.Border = iTextSharp.text.Rectangle.BOTTOM_BORDER;
                    c3.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    c4.Border = iTextSharp.text.Rectangle.NO_BORDER;

                    c1.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
                    c2.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
                    c3.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
                    c3.VerticalAlignment   = Element.ALIGN_CENTER;
                    c4.HorizontalAlignment = Element.ALIGN_CENTER;

                    table2.HorizontalAlignment = Element.ALIGN_CENTER;
                    table2.WidthPercentage     = 80;
                    table2.AddCell(c1);
                    table2.AddCell(c2);
                    table2.AddCell(c3);
                    table2.AddCell(c4);
                    table2.SpacingAfter  = 10;
                    table2.SpacingBefore = 10;
                    doc.Add(table2);



                    doc.Close();
                    System.Diagnostics.Process.Start(lbBan.Text.ToString() + ".pdf");
                }

                // sửa lại trạng thái bàn ăn thành trống
                BanAn_BUS.SuaTrangThaiBanAn2(danhSachBanAn[indexTable].ID);

                listBanAn.Items[indexTable].ImageIndex = 1;

                lbTrangThai.Text = "Trống";

                lbBan.ForeColor       = Color.Red;        // load lại màu chữ
                lbTrangThai.ForeColor = Color.Red;        // load lại màu chữ

                LoadHoaDon(danhSachBanAn[indexTable].ID); // sau khi xóa thì load lại hóa đơn
                panelOrderMon.SendToBack();
            }
        }