protected virtual DataSet GenerateDataSet()
        {
            var dataset = new StoreInventoryFileDataSet();

            AddAdditionalDataToDataSet(dataset);
            AddComponentDataToDataSet(dataset);
            return(dataset);
        }
        /// <summary>
        /// Добавление дополнительной информации
        /// </summary>
        /// <param name="storeInventoryDateSet"></param>
        private void AddAdditionalDataToDataSet(StoreInventoryFileDataSet storeInventoryDateSet)
        {
            var reportFooter         = new GlobalTermsProvider()["ReportFooter"].ToString();
            var reportFooterPrepared = new GlobalTermsProvider()["ReportFooterPrepared"].ToString();
            var reportFooterLink     = new GlobalTermsProvider()["ProductWebsite"].ToString();

            _dateAsOf = DateTime.Today.ToString("dd MM yyyy");
            storeInventoryDateSet.AdditionalDataTAble.AddAdditionalDataTAbleRow(_reportTitle, _operatorLogotype, _filterSelection, _dateAsOf, reportFooter, reportFooterPrepared, reportFooterLink, _formName);
        }
        private void AddComponentDataToDataSet(StoreInventoryFileDataSet dataset)
        {
            foreach (var component in _reportedComponents)
            {
                var partNumber   = component.PartNumber;
                var serialNumber = component.SerialNumber;
                var idNumber     = component.IdNumber;
                var description  = component.Description;
                var goodClass    = component.GoodsClass.ToString();
                var state        = component.State.ToString();
                var status       = component.ComponentStatus.ToString();

                bool isComponent =
                    component.GoodsClass.IsNodeOrSubNodeOf(new IDictionaryTreeItem[]
                {
                    GoodsClass.ComponentsAndParts,
                    GoodsClass.ProductionAuxiliaryEquipment
                });

                var quantityIn            = isComponent && component.ItemId > 0 ? 1 : component.QuantityIn;
                var current               = isComponent && component.ItemId > 0 ? 1 : component.Quantity;
                var shouldBeOnStockString = component.ShouldBeOnStock > 0 ? "Yes" : "No";
                var workType              = "";
                var isPool       = component.IsPOOL ? "Yes" : "No";
                var isDangerous  = component.IsDangerous ? "Yes" : "No";
                var remarks      = component.Remarks;
                var location     = component.Location.ToString();
                var locationType = component.Location?.LocationsType?.ToString();

                var lifeLimit             = Lifelength.Null;
                var interval              = Lifelength.Null;
                var lastPerformanceString = "";
                var next       = "";
                var remain     = Lifelength.Null;
                var warrrantly = Lifelength.Null;
                var ata        = component.ATAChapter.ToString();

                if (component.ComponentDirectives.Count > 0)
                {
                    var dd = component.ComponentDirectives.Last();

                    workType = dd.DirectiveType.ToString();

                    if (dd.Threshold.FirstPerformanceSinceNew != null && !dd.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                    {
                        lifeLimit = dd.Threshold.FirstPerformanceSinceNew;
                    }

                    if (dd.LastPerformance != null)
                    {
                        lastPerformanceString = SmartCore.Auxiliary.Convert.GetDateFormat(dd.LastPerformance.RecordDate);
                    }

                    if (dd.Threshold.RepeatInterval != null && !dd.Threshold.RepeatInterval.IsNullOrZero())
                    {
                        interval = dd.Threshold.RepeatInterval;
                    }

                    next = dd.NextPerformanceDate != null?SmartCore.Auxiliary.Convert.GetDateFormat(dd.NextPerformanceDate.Value) : "";

                    remain     = dd.Remains;
                    warrrantly = dd.Warranty;
                }

                dataset.ComponentDataTable.AddComponentDataTableRow(partNumber, serialNumber, idNumber, description, goodClass,
                                                                    state, status,
                                                                    quantityIn.ToString(), current.ToString(), shouldBeOnStockString, workType, lifeLimit.ToString(), interval.ToString(), lastPerformanceString, next.ToString(), remain.ToString(), warrrantly.ToString(),
                                                                    isPool, isDangerous, remarks, location, locationType, ata);
            }
        }