private void btnThanhToan_Click(object sender, EventArgs e)
 {
     if (trangThaiBan == true)
     {
         // Kiểm tra Danh sách CTHD có không
         // Nếu không có thì xóa Hóa đơn
         // Nếu có Update Trạng thái Hóa đơn : đã thanh toán
         // Xóa listView ---> Load lại listView
         // Đỗi trạng thái Bàn ----> Load lại bàn
         if (MessageBox.Show("Thanh toán hóa đơn bàn số : " + txtMaBan.Text, "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             BLL.HoaDonBLL hoaDon    = new BLL.HoaDonBLL();
             DTO.HoaDonDTO hoaDonDTO = hoaDon.GetHoaDonChuaThanhToanByMaBan(txtMaBan.Text);
             if (listViewHoaDon.Items.Count > 0)
             {
                 // có CTHD -> đỗi trạng thái hóa đơn và trạng thái bàn
                 if (hoaDon.UpdateHoaDonKhiThanhToan(hoaDonDTO.MaHD))
                 {
                     // Update lại trạng thái bàn
                     BLL.BanBLL ban = new BLL.BanBLL();
                     if (ban.UpdateBanKhiThanhToan(txtMaBan.Text))
                     {
                         MessageBox.Show("Thanh toán thành công \n Đơn giá : " + labelTongTien.Text + "vnđ");
                     }
                 }
             }
             else
             {
                 // không có CTHD
                 hoaDon.DeleteHoaDon(hoaDonDTO.MaHD);
                 BLL.BanBLL ban = new BLL.BanBLL();
                 ban.UpdateBanKhiThanhToan(txtMaBan.Text);
             }
             // Xóa danh sách trong list view
             listViewHoaDon.Items.Clear();
             // Load lại tổng tiền
             LoadTongTien();
             // Load lại danh sách bàn
             LoadTableList();
         }
     }
     else
     {
         MessageBox.Show("Hãy lập hóa đơn trước khi thanh toán !!", "Thông báo");
     }
 }
        private void btnXoa_Click(object sender, EventArgs e)
        {
            int    soLuong = 0;
            string maSP    = "";

            // Khi bàn có người
            if (this.trangThaiBan == true)
            {
                BLL.HoaDonBLL hoaDon    = new BLL.HoaDonBLL();
                DTO.HoaDonDTO hoaDonDTO = hoaDon.GetHoaDonChuaThanhToanByMaBan(txtMaBan.Text);
                for (int i = 0; i < listViewHoaDon.Items.Count; i++)
                {
                    // Khi sản phẩm được check
                    if (listViewHoaDon.Items[i].Checked)
                    {
                        if (MessageBox.Show("Xóa sản phẩm " + listViewHoaDon.Items[i].SubItems[1].Text.ToString() + " ra khỏi hóa đơn thanh toán ??", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                        {
                            BLL.CTHDBLL cthd = new BLL.CTHDBLL();
                            maSP    = listViewHoaDon.Items[i].SubItems[0].Text.ToString();
                            soLuong = Int32.Parse(listViewHoaDon.Items[i].SubItems[2].Text.ToString());
                            if (cthd.DeleteCTHDByMaHDAndMaSP(hoaDonDTO.MaHD, maSP))
                            {
                                // Update lại
                                BLL.SanPhamBLL sanPham       = new BLL.SanPhamBLL();
                                int            soLuongTonKho = sanPham.GetSoLuongTonKhoByMaSP(maSP);
                                sanPham.UpdateSoLuongTonKhoKhiXoa(maSP, soLuongTonKho, soLuong);
                                MessageBox.Show("Thành công");
                            }
                            else
                            {
                                MessageBox.Show("Thất bại");
                            }
                            listViewHoaDon.Items.Clear();
                            ShowHoaDon(txtMaBan.Text);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Hãy lập hóa đơn trước khi xóa !!", "Thông báo");
            }
            //Load lại danh sách sản phẩm
            LoadDanhSachSanPham();
        }
        private void ShowHoaDon(string maBan)
        {
            BLL.CTHDBLL        cthd      = new BLL.CTHDBLL();
            BLL.HoaDonBLL      hoaDon    = new BLL.HoaDonBLL();
            DTO.HoaDonDTO      hoaDonDTO = hoaDon.GetHoaDonChuaThanhToanByMaBan(maBan);
            List <DTO.CTHDDTO> cthdList  = cthd.LoadChiTietHoaDonByMaHD(hoaDonDTO.MaHD);

            foreach (DTO.CTHDDTO item in cthdList)
            {
                BLL.SanPhamBLL sanPham    = new BLL.SanPhamBLL();
                DTO.SanPhamDTO sanPhamDTO = sanPham.GetSanPhamByMaSP(item.MaSP);
                ListViewItem   lsvItem    = new ListViewItem(item.MaSP);
                lsvItem.SubItems.Add(sanPhamDTO.TenSP);
                lsvItem.SubItems.Add(item.SoLuong.ToString());
                lsvItem.SubItems.Add(sanPhamDTO.DonGia.ToString());
                lsvItem.SubItems.Add((item.SoLuong * sanPhamDTO.DonGia).ToString());
                listViewHoaDon.Items.Add(lsvItem);
            }
            // Load tổng tiền các CTHD
            LoadTongTien();
        }
 private void btnThem_Click(object sender, EventArgs e)
 {
     if (cbbSoLuong.Text.Length > 0 && txtMaBan.Text.Length > 0)
     {
         if (trangThaiBan == true)
         {
             // Update CTHD
             BLL.HoaDonBLL hoaDon    = new BLL.HoaDonBLL();
             DTO.HoaDonDTO hoaDonDTO = hoaDon.GetHoaDonChuaThanhToanByMaBan(txtMaBan.Text);
             BLL.CTHDBLL   cthd      = new BLL.CTHDBLL();
             if (cthd.KiemTraSanPhamTrongCTHD(hoaDonDTO.MaHD, txtMaSP.Text))
             {
                 // Đã có sản phẩm => Update CTHD
                 if (cthd.UpdateSoLuongByMaHDAndMaSp(hoaDonDTO.MaHD, txtMaSP.Text, Int32.Parse(cbbSoLuong.Text)))
                 {
                     BLL.SanPhamBLL sanPham = new BLL.SanPhamBLL();
                     int            soLuong = sanPham.GetSoLuongTonKhoByMaSP(txtMaSP.Text);
                     sanPham.UpdateSoLuongTonKhoByMaSP(txtMaSP.Text, soLuong, Int32.Parse(cbbSoLuong.Text));
                     MessageBox.Show("Thành công");
                 }
                 else
                 {
                     MessageBox.Show("Thất bại");
                 }
             }
             else
             {
                 // Chưa có sản phẩm => Tạo mới CTHD
                 // Thêm 1 CTHD
                 CreateCTHD(txtMaSP.Text, hoaDonDTO.MaHD, Int32.Parse(cbbSoLuong.Text));
                 // Update số lượng sau khi thêm CTHD
                 BLL.SanPhamBLL sanPham = new BLL.SanPhamBLL();
                 int            soLuong = sanPham.GetSoLuongTonKhoByMaSP(txtMaSP.Text);
                 sanPham.UpdateSoLuongTonKhoByMaSP(txtMaSP.Text, soLuong, Int32.Parse(cbbSoLuong.Text));
                 MessageBox.Show("Thành công");
             }
         }
         else
         {
             // Insert HD và thêm 1 bảng CTHD
             // Update trạng thái bàn
             bool check = CreateHoaDon(txtMaBan.Text);
             if (check == true)
             {
                 BLL.HoaDonBLL hoaDon    = new BLL.HoaDonBLL();
                 DTO.HoaDonDTO hoaDonDTO = hoaDon.GetHoaDonChuaThanhToanByMaBan(txtMaBan.Text);
                 // Thêm 1 CTHD
                 CreateCTHD(txtMaSP.Text, hoaDonDTO.MaHD, Int32.Parse(cbbSoLuong.Text));
                 // Update số lượng sau khi thêm CTHD
                 BLL.SanPhamBLL sanPham = new BLL.SanPhamBLL();
                 int            soLuong = sanPham.GetSoLuongTonKhoByMaSP(txtMaSP.Text);
                 sanPham.UpdateSoLuongTonKhoByMaSP(txtMaSP.Text, soLuong, Int32.Parse(cbbSoLuong.Text));
                 // thay đỗi trạng thái bàn => Có người
                 BLL.BanBLL ban = new BLL.BanBLL();
                 ban.UpdateBanKhiLapHoaDon(txtMaBan.Text);
                 MessageBox.Show("Thành công");
             }
         }
         BLL.BanBLL ban1 = new BLL.BanBLL();
         trangThaiBan = ban1.LoadTrangThaiBanByMaBan(txtMaBan.Text);
         if (trangThaiBan == true)
         {
             listViewHoaDon.Items.Clear();
             ShowHoaDon(txtMaBan.Text);
         }
     }
     else
     {
         MessageBox.Show("Chọn bàn và số lượng trước khi thêm dữ liệu", "Thông báo");
     }
     // Load lại ds sản phẩm và bàn
     LoadDanhSachSanPham();
     LoadTableList();
 }