コード例 #1
0
        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.
            }
        }
コード例 #2
0
        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.
            }
        }