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. } }