//S35MenuFinal
        //S35MenuFinalEx
        //S35MenuFinalWH
        public bool SaveS35MenuFinalFull(List <S35MenuFinalEx> dataList, List <S35MenuFinal> detailListData, List <S35MenuFinalWH> finalWHData)
        {
            using (DbContextTransaction transaction = Context.Database.BeginTransaction())
            {
                try
                {
                    foreach (S35MenuFinalEx data in dataList)
                    {
                        List <S35MenuFinal> detailData = detailListData.Where(o => o.S35MenuFinalExID == data.S35MenuFinalExID).ToList();
                        long seq       = S35MenuFinalExDAO.GetS35MenuFinalExSEQ();
                        long seqdetail = S35MenuFinalDAO.GetS35MenuFinalSEQ();
                        switch (data.Status)
                        {
                        // Thêm warehouse mới thì sẽ thực hiện thêm Detail mới nếu ListDetail có giá trị
                        case ModifyMode.Insert:
                            seq++;
                            data.S35MenuFinalExID = GenerateID.S35MenuFinalExID(seq);
                            this.S35MenuFinalExDAO.InsertS35MenuFinalEx(data);
                            if (detailData.Count > 0)
                            {
                                //thêm S35MenuFinal
                                #region insert S35MenuFinal
                                foreach (S35MenuFinal s35MenuFinal in detailData)
                                {
                                    if (s35MenuFinal.Status == ModifyMode.Insert)
                                    {
                                        seqdetail++;
                                        s35MenuFinal.S35MenuFinalID   = GenerateID.S35MenuFinalID(seqdetail);
                                        s35MenuFinal.S35MenuFinalExID = data.S35MenuFinalExID;
                                        this.S35MenuFinalDAO.InsertS35MenuFinal(s35MenuFinal);
                                    }
                                }
                                #endregion insert S35MenuFinal
                            }
                            break;

                        // Delete
                        case ModifyMode.Delete:
                            this.S35MenuFinalExDAO.DeleteS35MenuFinalEx(data);
                            //Khi delete warehouse thì DB sẽ tự delete warehouse
                            break;
                        }
                    }
                    //Them Final Warehouse
                    foreach (S35MenuFinalWH s35MenuFinalWH in finalWHData)
                    {
                        long seq = S35MenuFinalWHDAO.GetS35MenuFinalWHSEQ();
                        switch (s35MenuFinalWH.Status)
                        {
                        case ModifyMode.Insert:
                            seq++;
                            s35MenuFinalWH.S35MenuFinalWHID = GenerateID.S35MenuFinalWHID(seq);
                            this.S35MenuFinalWHDAO.InsertS35MenuFinalWH(s35MenuFinalWH);
                            break;
                        }
                    }

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