public bool InsertS35MenuSXConnectDT(S35MenuSXConnectDT data)
        {
            SqlParameter[] sqlParameters = new SqlParameter[]
            {
                new SqlParameter("@S35MenuSXID", data.S35MenuSXID),
                new SqlParameter("@TPID", data.TPID),
                new SqlParameter("@CompanyID", CommonInfo.CompanyInfo.CompanyID),
                new SqlParameter("@UpdateUser", UserInfo.UserID)
            };

            this.Context.ExecuteDataFromProcedure("S35MenuSXConnectDTInsert", sqlParameters);

            return(true);
        }
        }                                                     //Không có ID riêng

        public bool SaveS35MenuDetailSanXuatFinal(ThanhPhamKey thanhpham, List <S35MenuDetailSanXuatFinal> s35menudetailsx, List <S35MenuSanXuatWH> nguyenlieu, List <ItemDetailS35MenuSX> congthucsd, List <S35MenuSanXuat> s35menusx)
        {
            using (DbContextTransaction transaction = Context.Database.BeginTransaction())
            {
                try
                {
                    long tpseq = ThanhPhamKeyDAO.ThanhPhamSEQ();
                    tpseq++;
                    thanhpham.TPID = GenerateID.ThanhPhamID(tpseq);
                    ThanhPhamKeyDAO.InsertThanhPhamKey(thanhpham);
                    //Insert truy vết MenuSanXuat
                    foreach (S35MenuSanXuat s35MenuSanXuat in s35menusx)
                    {
                        S35MenuSXConnectDT tempData = new S35MenuSXConnectDT
                        {
                            TPID        = thanhpham.TPID,
                            S35MenuSXID = s35MenuSanXuat.S35MenuSXID,
                            CompanyID   = CommonInfo.CompanyInfo.CompanyID,
                            CreateUser  = UserInfo.UserID
                        };
                        S35MenuSXConnectDTDAO.InsertS35MenuSXConnectDT(tempData);
                    }

                    long s35menudetailsxseq = S35MenuDetailSanXuatFinalDAO.S35MenuDetailSanXuatFinalSEQ();
                    long nguyenlieuseq      = S35MenuSanXuatWHDAO.S35MenuSanXuatWHSEQ();
                    long congthucsdseq      = ItemDetailS35MenuSXDAO.ItemDetailMenuSEQ();
                    //insert danh sách thành phẩm
                    foreach (S35MenuDetailSanXuatFinal s35MenuDetailSanXuatFinal in s35menudetailsx)
                    {
                        //Chạy từng món
                        switch (s35MenuDetailSanXuatFinal.Status)
                        {
                        // Thêm S35 mới thì sẽ thực hiện thêm Detail mới nếu ListDetail có giá trị
                        case ModifyMode.Insert:
                            s35menudetailsxseq++;
                            s35MenuDetailSanXuatFinal.S35MenuDetailSXFNID = GenerateID.S35MenuDetailSXFNID(s35menudetailsxseq);
                            s35MenuDetailSanXuatFinal.TPID = thanhpham.TPID;
                            this.S35MenuDetailSanXuatFinalDAO.InsertS35MenuDetailSanXuatFinal(s35MenuDetailSanXuatFinal);
                            s35MenuDetailSanXuatFinal.Status = ModifyMode.None;
                            //Sau khi insert S35MenuDetailSanXuatFinal thành công thì insert danh sách nguyên liệu, lưu lại loại công thức, Lưu vết truy xuất liên quan menu
                            List <ItemDetailS35MenuSX> nguyenlieuListmenu = congthucsd.Where(o => o.ItemID == s35MenuDetailSanXuatFinal.ItemID).ToList();
                            //Insert công thức liên quan của 1 món
                            foreach (ItemDetailS35MenuSX itemDetailS35MenuSX in nguyenlieuListmenu)
                            {
                                congthucsdseq++;
                                itemDetailS35MenuSX.ItemDetailS35MenuSXID = GenerateID.ItemDetailMenuID(congthucsdseq);
                                itemDetailS35MenuSX.S35MenuDetailSXFNID   = s35MenuDetailSanXuatFinal.S35MenuDetailSXFNID;
                                ItemDetailS35MenuSXDAO.InsertItemDetailS35MenuSX(itemDetailS35MenuSX);
                            }
                            break;
                        }
                    }
                    //Insert nguyên liệu
                    foreach (S35MenuSanXuatWH nguyenlieuItem in nguyenlieu)
                    {
                        //Chạy từng món
                        switch (nguyenlieuItem.Status)
                        {
                        // Thêm S35 mới thì sẽ thực hiện thêm Detail mới nếu ListDetail có giá trị
                        case ModifyMode.Insert:
                            nguyenlieuseq++;
                            nguyenlieuItem.S35MenuSanXuatWHID = GenerateID.S35MenuSXWHID(nguyenlieuseq);
                            nguyenlieuItem.TPID = thanhpham.TPID;
                            this.S35MenuSanXuatWHDAO.InsertS35MenuSanXuatWH(nguyenlieuItem);
                            nguyenlieuItem.Status = ModifyMode.None;
                            break;
                        }
                    }

                    transaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    BSLog.Logger.Error(ex.Message);
                    return(false);
                }
            }
        }