private void ButtonShowEquipmentAndMaterialsDisplayerRequested(object sender, ReferenceEventArgs e)
        {
            var mpdIds = _resultDirectiveArray.Select(mpd => mpd.ItemId).ToList();

            e.TypeOfReflection = ReflectionTypes.DisplayInNew;
            e.DisplayerText    = $"{CurrentAircraft.RegistrationNumber} .Equipment and Materials";
            e.RequestedEntity  = new AccessoryRequiredListScreen(CurrentAircraft, mpdIds);
        }
示例#2
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            if (_parent == null)
            {
                return;
            }
            _quotatioArray.Clear();
            _resultArray.Clear();
            _addedQuatationOrderRecords.Clear();
            _data.Clear();

            AnimatedThreadWorker.ReportProgress(0, "load Quotations");

            try
            {
                _quotatioArray.AddRange(GlobalObjects.CasEnvironment.NewLoader.GetObjectList <RequestForQuotationDTO, RequestForQuotation>(new Filter("Status", WorkPackageStatus.Opened)));
                var quotaIds = _quotatioArray.Select(i => i.ItemId);

                if (quotaIds.Count() > 0)
                {
                    var _quotationCosts =
                        GlobalObjects.CasEnvironment.NewLoader.GetObjectList <QuotationCostDTO, QuotationCost>(
                            new Filter("QuotationId", quotaIds));
                    _addedQuatationOrderRecords =
                        GlobalObjects.CasEnvironment.NewLoader
                        .GetObjectList <RequestForQuotationRecordDTO, RequestForQuotationRecord>(
                            new Filter("ParentPackageId", quotaIds), true);
                    var ids = _addedQuatationOrderRecords.Select(i => i.PackageItemId);


                    if (ids.Count() > 0)
                    {
                        var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>(
                            new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), true);
                        var supplierId = _addedQuatationOrderRecords.SelectMany(i => i.SupplierPrice)
                                         .Select(i => i.SupplierId);
                        var suppliers =
                            GlobalObjects.CasEnvironment.NewLoader.GetObjectList <SupplierDTO, Supplier>(new Filter(
                                                                                                             "ItemId",
                                                                                                             supplierId));

                        foreach (var record in _addedQuatationOrderRecords.GroupBy(i => i.ParentPackageId))
                        {
                            var parentInitialId = (int)GlobalObjects.CasEnvironment.Execute(
                                $@"select i.ItemId from RequestsForQuotation q
			left join InitialOrders i on i.ItemID = q.ParentID where q.ItemId = {record.Key}"            ).Tables[0]
                                                  .Rows[0][0];
                            var initialOrderRecords =
                                GlobalObjects.CasEnvironment.NewLoader
                                .GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>(
                                    new Filter("ParentPackageId", parentInitialId));
                            var initial = GlobalObjects.CasEnvironment.NewLoader.GetObject <InitialOrderDTO, InitialOrder>(new Filter("ItemId", parentInitialId));


                            foreach (var addedInitialOrderRecord in record)
                            {
                                addedInitialOrderRecord.ParentInitialRecord =
                                    initialOrderRecords.FirstOrDefault(i =>
                                                                       i.ProductId == addedInitialOrderRecord.PackageItemId);
                                addedInitialOrderRecord.ParentPackage = _quotatioArray.FirstOrDefault(i =>
                                                                                                      i.ItemId == addedInitialOrderRecord.ParentPackageId);
                                if (addedInitialOrderRecord.ParentInitialRecord != null)
                                {
                                    addedInitialOrderRecord.ParentInitialRecord.ParentPackage = initial;
                                }
                                var product = products.FirstOrDefault(i =>
                                                                      i.ItemId == addedInitialOrderRecord.PackageItemId);
                                foreach (var relation in product.SupplierRelations)
                                {
                                    var findCost = _quotationCosts.FirstOrDefault(i =>
                                                                                  i.ProductId == product.ItemId && i.SupplierId == relation.Supplier.ItemId);
                                    if (findCost != null)
                                    {
                                        findCost.SupplierName = relation.Supplier.Name;
                                        product.QuatationCosts.Add(findCost);
                                    }
                                }

                                addedInitialOrderRecord.Product = product;

                                foreach (var price in addedInitialOrderRecord.SupplierPrice)
                                {
                                    price.Parent   = addedInitialOrderRecord;
                                    price.Supplier = suppliers.FirstOrDefault(i => i.ItemId == price.SupplierId);


                                    _data.Add(new SupplierPriceCustom
                                    {
                                        Record = addedInitialOrderRecord,
                                        Price  = price,
                                    });
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load Quotations", ex);
            }

            AnimatedThreadWorker.ReportProgress(20, "calculation Quotations");

            AnimatedThreadWorker.ReportProgress(70, "filter Quotations");

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }
示例#3
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            if (_parent == null)
            {
                return;
            }
            _purchaseArray.Clear();
            _resultArray.Clear();
            _addedQuatationOrderRecords.Clear();

            AnimatedThreadWorker.ReportProgress(0, "load Quotations");

            try
            {
                _purchaseArray.AddRange(
                    GlobalObjects.CasEnvironment.NewLoader.GetObjectList <PurchaseOrderDTO, PurchaseOrder>(
                        new Filter("Status", WorkPackageStatus.Published)));
                var orderIds = _purchaseArray.Select(i => i.ItemId);
                if (orderIds.Count() > 0)
                {
                    var records = GlobalObjects.CasEnvironment.Loader.GetObjectList <PurchaseRequestRecord>(
                        new ICommonFilter[]
                    {
                        new CommonFilter <int>(PurchaseRequestRecord.ParentPackageIdProperty, FilterType.In,
                                               orderIds.ToArray())
                    });
                    var ids        = records.Select(s => s.SupplierId).Distinct().ToArray();
                    var productIds = records.Select(s => s.PackageItemId).Distinct().ToArray();
                    var suppliers  = GlobalObjects.CasEnvironment.Loader.GetObjectList <Supplier>(new ICommonFilter[]
                    {
                        new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In, ids),
                    });
                    var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>(new ICommonFilter[]
                    {
                        new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In,
                                               productIds),
                    });

                    var _supplierShipper = GlobalObjects.CasEnvironment.Loader.GetObjectList <Supplier>(
                        new ICommonFilter[]
                        { new CommonFilter <int>(Supplier.SupplierClassProperty, SupplierClass.Shipper.ItemId) });

                    var stationIds = _purchaseArray.Select(i => i.StationId);
                    var station    =
                        GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AirportCodeDTO, AirportsCodes>(
                            new Filter("ItemId", stationIds));

                    foreach (var purchase in _purchaseArray)
                    {
                        purchase.Station     = station.FirstOrDefault(i => i.ItemId == purchase.StationId);
                        purchase.ShipCompany =
                            _supplierShipper.FirstOrDefault(i => i.ItemId == purchase.ShipCompanyId) ??
                            Supplier.Unknown;
                    }

                    foreach (var order in records.GroupBy(i => i.ParentPackageId))
                    {
                        var parentInitialId = (int)GlobalObjects.CasEnvironment.Execute(
                            $@"select i.ItemId from PurchaseOrders p
			left join RequestsForQuotation q on q.ItemID = p.ParentID
			left join InitialOrders i on i.ItemID = q.ParentID where p.ItemId = {order.Key}"            ).Tables[0].Rows[0][0];
                        var initialRecords =
                            GlobalObjects.CasEnvironment.NewLoader
                            .GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>(new Filter("ParentPackageId",
                                                                                                  parentInitialId));
                        var initial =
                            GlobalObjects.CasEnvironment.NewLoader.GetObject <InitialOrderDTO, InitialOrder>(
                                new Filter("ItemId", parentInitialId));
                        foreach (var record in order)
                        {
                            record.ParentPackage       = _purchaseArray.FirstOrDefault(i => i.ItemId == order.Key);
                            record.ParentInitialRecord =
                                initialRecords.FirstOrDefault(i => i.ProductId == record.PackageItemId);
                            if (record.ParentInitialRecord != null)
                            {
                                record.ParentInitialRecord.ParentPackage = initial;
                            }
                            record.Product  = products.FirstOrDefault(i => i.ItemId == record.PackageItemId);
                            record.Supplier = suppliers.FirstOrDefault(i => i.ItemId == record.SupplierId);
                        }
                    }

                    _resultArray.AddRange(records);
                }
            }
            catch (Exception ex)
            {
                Program.Provider.Logger.Log("Error while load Quotations", ex);
            }

            AnimatedThreadWorker.ReportProgress(20, "calculation Quotations");

            AnimatedThreadWorker.ReportProgress(70, "filter Quotations");

            AnimatedThreadWorker.ReportProgress(100, "Complete");
        }