// Insert ChiTietPhieuNhap
 public static int InsertChiTietPhieuNhap(ChiTietPhieuNhapDTO chiTietPN)
 {
     var sqlParas = new[] {
                              new SQLiteParameter("@MaPhieu", chiTietPN.MaPhieuNhap),
                              new SQLiteParameter("@MaSach", chiTietPN.MaSach),
                              new SQLiteParameter("@SL", chiTietPN.LuongNhap)
                          };
     string q = @"insert into CHITIETPHIEUNHAP (MaPhieuNhap,MaSach,SoLuong) values (@MaPhieu,@MaSach,@SL);
                  SELECT last_insert_rowid() AS MaChiTietPhieuNhap;";
     return Convert.ToInt32(SqliteExecuteScalar(q, sqlParas));
 }
        private void BtnThemClick(object sender, EventArgs e)
        {
            try {
                // Variables
                int rowCount = PhieuNhapGrid.Rows.Count;
                bool hasPhieuNhap = false; // Đảm bảo Phiếu Nhập Sách chỉ được tạo một lần
                string msg = ""; // Biến toàn cục string để thông báo tổng hợp các trường hợp nhập vào không hợp lệ

                for (int i = 0; i < rowCount-1; ++i) {
                    // 1.  Kiểm tra có dữ liệu nhập vào hay không
                    var sachNhap = new SachNhapDTO();
                    DataGridViewCellCollection cell = PhieuNhapGrid.Rows[i].Cells;
                    bool data = true; // Kiểm tra coi dữ liệu một row đã được nhập đủ chưa
                    if (cell[1].Value == null || cell[4].Value == null) {
                        msg += @"Bạn đã chưa nhập Tên Sách hoặc Số lượng ở dòng " + (i+1) + "\n";
                        data = false;
                        }
                    if (data) {
                        sachNhap.STT = cell[0].Value != null ? Int32.Parse(cell[0].Value.ToString()) : 0;
                        sachNhap.TenSach = cell[1].Value.ToString(); // Ten sach
                        sachNhap.TacGia = cell[3].Value != null ? cell[3].Value.ToString() : "";
                        sachNhap.TheLoai = cell[2].Value != null ? cell[2].Value.ToString() : "";
                        sachNhap.SoLuong = Int32.Parse(cell[4].Value.ToString()); // SoLuong Nhap

                        // 2.Kiểm tra số lượng sách nhập có thoả quy định không
                        if (ThamSoBUS.CheckSoLuongNhapNN(sachNhap.SoLuong)) {
                            var phieuNhap = new PhieuNhapDTO {NgayNhap = dtNgayNhap.Value};

                            // We use another hasPhieuNhap bool to make sure
                            // we only check phieuNhap in database one time
                            int phieuNhapID = PhieuNhapBUS.HasPhieuNhap(phieuNhap.NgayNhap);
                            if (!hasPhieuNhap)
                                if (phieuNhapID != 0)
                                    hasPhieuNhap = true;
                                else {
                                    phieuNhapID = PhieuNhapBUS.Insert(phieuNhap.NgayNhap);
                                }
                            // 3.Kiểm tra coi sách có tồn tại trong CSDL không
                            int maSach = DauSachBUS.CheckBook(sachNhap.TenSach);
                            if (maSach != 0) {
                                //Sách tồn tại > kiểm tra lượng tồn và update
                                int luongTon = DauSachBUS.CheckLuongTonLN(sachNhap.TenSach);
                                if (luongTon != -1) {
                                    DauSachBUS.UpdateLuongTon(sachNhap.TenSach, luongTon + sachNhap.SoLuong);
                                }
                                var chiTietPN = new ChiTietPhieuNhapDTO {
                                                                            MaPhieuNhap = phieuNhapID,
                                                                            MaSach = maSach,
                                                                            LuongNhap = sachNhap.SoLuong
                                                                        };
                                ChiTietPhieuNhapBUS.Insert(chiTietPN);
                                msg += @"Thành công!";
                            }
                                // 3. Nếu sách không tồn tại thì ta insert một sách mới
                            else {
                                var sachDTO = new DauSachDTO();
                                sachDTO.TacGia = sachNhap.TacGia;
                                sachDTO.TenSach = sachNhap.TenSach;
                                sachDTO.TheLoai = sachNhap.TheLoai;
                                sachDTO.LuongTon = sachNhap.SoLuong;

                                int sachID = DauSachBUS.InsertBook(sachDTO);
                                var chiTietPN = new ChiTietPhieuNhapDTO {
                                                                            MaPhieuNhap = phieuNhapID,
                                                                            MaSach = sachID,
                                                                            LuongNhap = sachNhap.SoLuong
                                                                        };
                                ChiTietPhieuNhapBUS.Insert(chiTietPN);
                                msg += @"Thành công!";
                            }
                        } else {
                            msg += @"Bạn đã nhập dưới số lượng tối thiểu cho cuốn sách" + sachNhap.TenSach + "\n";
                        }

                    }
                }
                MessageBox.Show(msg, @"Thông báo", MessageBoxButtons.OK);
            }
            catch {
            }
        }