internal OlapReport(decimal ID, User Owner) : base(ID, Owner)
        {
            _schema = new Schema();
            _axes   = new Olap.Axes(this.Schema);

            this.Axes.BeforeChangeItem += new EventHandler(OnBeforeChangeAxesItem);

            if (ID == 0)          //if new
            {
                FI.Common.DataAccess.IOlapReportsDA dacObj = DataAccessFactory.Instance.GetOlapReportsDA();

                string ReportXml    = "<R></R>";
                string OpenNodesXml = "<NODES></NODES>";
                _graphOptions = GraphOptionsEnum.Pivot; // graph pivot option on by default

                _id = dacObj.InsertReport(
                    _owner.ID, 0, 0, "New Report", "", this.IsSelected,
                    (byte)this.GraphType, this.GraphTheme, (int)this.GraphOptions, this.GraphWidth, this.GraphHeight, this.GraphNum1,
                    ReportXml, OpenNodesXml);

                // flags
                _isProxy = false;
                _isDirty = false;
            }
        }
        override protected internal Report _Clone(string Name, string Description)
        {
            FI.Common.DataAccess.IOlapReportsDA dacObj = DataAccessFactory.Instance.GetOlapReportsDA();
            string ReportXml    = this.SaveToXml();
            string OpenNodesXml = this.SaveOpenNodesToXml();

            decimal newId = dacObj.InsertReport(_owner.ID, 0, 0, Name, Description, false, (byte)this.GraphType, (int)this.GraphOptions, ReportXml, OpenNodesXml);

            return(_owner.ReportSystem.GetReport(newId, typeof(OlapReport), false));
        }