// Nếu nhấp vào hóa đơn thì sẽ in ra Report chi tiết của hóa đơn đấy ! private void listView4_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { List <ChiTietHoaDon> listCTHD = BanhkemDB.ChiTietHoaDons.ToList(); if (e.IsSelected) { string MaHD = e.Item.SubItems[1].Text; MaHD = MaHD.Remove(0, 2); HoaDon temp = new HoaDon(); List <rptCTHD> listRPCTHD = new List <rptCTHD>(); // Tạo hóa đơn tạm chứ thông tin của hóa đơn đang xét. (để sau này gửi chung với chitiethoa đơn qua form Report) foreach (HoaDon hd in listHD) { if (Convert.ToInt32(MaHD) == hd.MaHD) { temp = hd; } } // Nhờ vào mã hóa đơn để tìm được danh sách chi tiết các sản phẩm được mua trong hóa đơn ấy foreach (ChiTietHoaDon cthd in listCTHD) { if (Convert.ToInt32(MaHD) == cthd.MaHD) { rptCTHD a = new rptCTHD(); a.GiaGoc = cthd.Gia.Value; a.SIZE = cthd.SIZE; a.SL = cthd.SoLuong.Value; a.TenSP = cthd.SanPham.TenSP; a.ThanhTien = cthd.ThanhTien.Value; listRPCTHD.Add(a); } } // Có thông tin hóa đơn + chi tiết của hóa đơn => Truyền vào form Report để xuất hóa đơn FrmReportCTHoaDon f = new FrmReportCTHoaDon(temp, listRPCTHD); f.ShowDialog(); this.Show(); Cursor.Current = Cursors.Arrow; } }
private void listView4_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { List <ChiTietHoaDon> listCTHD = BanhkemDB.ChiTietHoaDons.ToList(); if (e.IsSelected) { string MaHD = e.Item.SubItems[1].Text; MaHD = MaHD.Remove(0, 2); HoaDon temp = new HoaDon(); List <rptCTHD> listRPCTHD = new List <rptCTHD>(); foreach (HoaDon hd in listHD) { if (Convert.ToInt32(MaHD) == hd.MaHD) { temp = hd; } } foreach (ChiTietHoaDon cthd in listCTHD) { if (Convert.ToInt32(MaHD) == cthd.MaHD) { rptCTHD a = new rptCTHD(); a.GiaGoc = cthd.Gia.Value; a.SIZE = cthd.SIZE; a.SL = cthd.SoLuong.Value; a.TenSP = cthd.SanPham.TenSP; a.ThanhTien = cthd.ThanhTien.Value; listRPCTHD.Add(a); } } FrmReportCTHoaDon f = new FrmReportCTHoaDon(temp, listRPCTHD); f.ShowDialog(); this.Show(); Cursor.Current = Cursors.Arrow; } }
private void btnXuatHD_Click(object sender, EventArgs e) { try { if (lstProductCart.Items.Count < 1) { MessageBox.Show("Không tạo hóa đơn trống"); } else { List <rptCTHD> listRPCTHD = new List <rptCTHD>(); string MaHD_temp = txtMaHD.Text.Remove(0, 2); HoaDon hoadon_moi = new HoaDon() { MaNV = user.MaNV, NgayLap = Convert.ToDateTime(lblNgayHienTai.Text), TienKhachTra = Convert.ToDecimal(txtSTK.Text), TienThoi = Convert.ToDecimal(txtTienThoi.Text), Tongsotien = Convert.ToDecimal(txtTongTien.Text), }; BanhkemDB.HoaDons.Add(hoadon_moi); BanhkemDB.SaveChanges(); for (int i = 0; i < lstProductCart.Items.Count; i++) { foreach (var sanPham in listSP) { if (lstProductCart.Items[i].SubItems[1].Text == sanPham.TenSP && lstProductCart.Items[i].SubItems[4].Text == sanPham.Size) { int sl = Convert.ToInt32(lstProductCart.Items[i].SubItems[2].Text); ChiTietHoaDon chitiethoadon_moi = new ChiTietHoaDon() { MaHD = Convert.ToInt32(MaHD_temp), MaSP = sanPham.MaSP, Gia = Convert.ToDecimal(lstProductCart.Items[i].SubItems[3].Text), SIZE = lstProductCart.Items[i].SubItems[4].Text, SoLuong = sl, ThanhTien = Convert.ToDecimal(lstProductCart.Items[i].SubItems[5].Text) }; BanhkemDB.ChiTietHoaDons.Add(chitiethoadon_moi); BanhkemDB.SaveChanges(); rptCTHD a = new rptCTHD(); a.GiaGoc = Convert.ToDecimal(lstProductCart.Items[i].SubItems[3].Text); a.SIZE = lstProductCart.Items[i].SubItems[4].Text; a.SL = Convert.ToInt32(lstProductCart.Items[i].SubItems[2].Text); a.TenSP = lstProductCart.Items[i].SubItems[1].Text; a.ThanhTien = Convert.ToDecimal(lstProductCart.Items[i].SubItems[5].Text); listRPCTHD.Add(a); } } } FrmReportCTHoaDon f = new FrmReportCTHoaDon(hoadon_moi, listRPCTHD); f.ShowDialog(); this.Show(); Cursor.Current = Cursors.Arrow; txtSTK.Text = "0"; MessageBox.Show("Đã thanh toán hóa đơn"); ClearSP(); HuyHD(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Thông báo", MessageBoxButtons.OK); // Nếu bắt được lỗi logic thì in nó lên MessageBox. } }
private void btnXuatHD_Click(object sender, EventArgs e) { try { if (lstProductCart.Items.Count < 1) { MessageBox.Show("Không tạo hóa đơn trống"); } else { // Tạo một danh sách chứa các biến cần thiết để in ra Report List <rptCTHD> listRPCTHD = new List <rptCTHD>(); // Mã hóa đơn đang là dạng string "HDXX" nên phải loại bỏ 2 chữ "HD" rồi chuyển về về dạng int // để sau này còn gán giá trị vào chi tiết hóa đơn. string MaHD_temp = txtMaHD.Text.Remove(0, 2); // Thêm HD vào database HoaDon hoadon_moi = new HoaDon() { MaNV = user.MaNV, NgayLap = Convert.ToDateTime(lblNgayHienTai.Text), TienKhachTra = Convert.ToDecimal(txtSTK.Text), TienThoi = Convert.ToDecimal(txtTienThoi.Text), Tongsotien = Convert.ToDecimal(txtTongTien.Text), }; BanhkemDB.HoaDons.Add(hoadon_moi); BanhkemDB.SaveChanges(); // Chi tiết hóa đơn lấy từ danh sách đặt hàng. Nên ta phải xét toàn bộ sản phẩm trong danh sách đặt hàng. for (int i = 0; i < lstProductCart.Items.Count; i++) { foreach (var sanPham in listSP) { // Vì không cho hiện mã sản phẩm nên phải qua 1 cách khác để nhận diện sản phẩm, đó là : Tên SP và kích thước. if (lstProductCart.Items[i].SubItems[1].Text == sanPham.TenSP && lstProductCart.Items[i].SubItems[4].Text == sanPham.Size) { int sl = Convert.ToInt32(lstProductCart.Items[i].SubItems[2].Text); // Tạo 1 biến chi tiết của sản phẩm đang xét rồi lưu vào database, cứ như vậy đến khi hết sản phẩm // trong giỏ hàng ChiTietHoaDon chitiethoadon_moi = new ChiTietHoaDon() { MaHD = Convert.ToInt32(MaHD_temp), MaSP = sanPham.MaSP, Gia = Convert.ToDecimal(lstProductCart.Items[i].SubItems[3].Text), SIZE = lstProductCart.Items[i].SubItems[4].Text, SoLuong = sl, ThanhTien = Convert.ToDecimal(lstProductCart.Items[i].SubItems[5].Text) }; BanhkemDB.ChiTietHoaDons.Add(chitiethoadon_moi); BanhkemDB.SaveChanges(); // Biến Report này chứa thông tin của sản phẩm. Sau khi thêm xong thì sẽ thêm nó vào danh sách // sau này cần report. rptCTHD a = new rptCTHD(); a.GiaGoc = Convert.ToDecimal(lstProductCart.Items[i].SubItems[3].Text); a.SIZE = lstProductCart.Items[i].SubItems[4].Text; a.SL = Convert.ToInt32(lstProductCart.Items[i].SubItems[2].Text); a.TenSP = lstProductCart.Items[i].SubItems[1].Text; a.ThanhTien = Convert.ToDecimal(lstProductCart.Items[i].SubItems[5].Text); listRPCTHD.Add(a); } } } // Sau khi xét hết sản phẩm trong giỏ hàng thì ta gửi dữ liệu danh sách cần Report qua form Report để hiện // Report chi tiết hóa đơn. FrmReportCTHoaDon f = new FrmReportCTHoaDon(hoadon_moi, listRPCTHD); f.ShowDialog(); this.Show(); Cursor.Current = Cursors.Arrow; txtSTK.Text = "0"; // Sau khi xuất hóa đơn thì thông báo đã thanh toán MessageBox.Show("Đã thanh toán hóa đơn"); ClearSP(); HuyHD(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Thông báo", MessageBoxButtons.OK); // Nếu bắt được lỗi logic thì in nó lên MessageBox. } }