Ejemplo n.º 1
0
        private void PrepareOrder()
        {
            if (_directivesViewer.SelectedItem == null)
            {
                return;
            }
            ;

            var _order  = _directivesViewer.SelectedItem;
            var records = GlobalObjects.CasEnvironment.Loader.GetObjectList <PurchaseRequestRecord>(new ICommonFilter[]
                                                                                                    { new CommonFilter <int>(PurchaseRequestRecord.ParentPackageIdProperty, _order.ItemId) });
            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, FilterType.In, ids), });
            var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>(new ICommonFilter[]
                                                                                       { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In, productIds), });

            var department =
                GlobalObjects.CasEnvironment.NewLoader.GetObject <DepartmentDTO, Department>(new Filter("FullName",
                                                                                                        "Logistics & Stores Department "));

            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.ItemId}"            ).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));

            var publisherId = GlobalObjects.CasEnvironment.ApiProvider
                              .GetByIdAsync(_directivesViewer.SelectedItem.PublishedById)?.PersonnelId ?? -1;

            var personnel =
                GlobalObjects.CasEnvironment.Loader.GetObject <Specialist>(
                    new CommonFilter <int>(BaseEntityObject.ItemIdProperty, publisherId));

            var destinations = new List <BaseEntityObject>();

            destinations.AddRange(GlobalObjects.AircraftsCore.GetAllAircrafts().ToArray());
            destinations.AddRange(GlobalObjects.CasEnvironment.Stores.GetValidEntries());
            destinations.AddRange(GlobalObjects.CasEnvironment.Hangars.GetValidEntries());

            foreach (var record in records)
            {
                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);

                if (record.ParentInitialRecord != null)
                {
                    record.ParentInitialRecord.DestinationObject = destinations.FirstOrDefault(i =>
                                                                                               i.ItemId == record.ParentInitialRecord.DestinationObjectId &&
                                                                                               record.ParentInitialRecord.DestinationObjectType.ItemId == i.SmartCoreObjectType.ItemId);
                }
            }

            _order.Supplier = records.FirstOrDefault(i => i.Supplier != null).Supplier;
            if (personnel == null)
            {
                MessageBox.Show($"Please attach personnel for user ({_directivesViewer.SelectedItem.PublishedByUser})",
                                "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            var builder = new PurchaseOrderReportNewBuilder(GlobalObjects.CasEnvironment.Operators[0], records, _order,
                                                            department, personnel);

            var refArgs = new ReferenceEventArgs();

            refArgs.TypeOfReflection = ReflectionTypes.DisplayInNew;
            refArgs.DisplayerText    = $"iPurchaseOrderReport {_directivesViewer.SelectedItem.Title}";
            refArgs.RequestedEntity  = new ReportScreen(builder);
            Program.MainDispatcher.DisplayerRequest(refArgs);
            refArgs.Cancel = false;
        }
Ejemplo n.º 2
0
        private void SendPurchaseOrder(PurchaseOrder _order)
        {
            //var res = MessageBox.Show("Do you really want sent Mail?", "Information", MessageBoxButtons.YesNo,
            //	MessageBoxIcon.Information);

            var records = GlobalObjects.CasEnvironment.Loader.GetObjectList <PurchaseRequestRecord>(new ICommonFilter[]
                                                                                                    { new CommonFilter <int>(BasePackageRecord.ParentPackageIdProperty, _order.ItemId) });
            var ids = records.Select(s => s.SupplierId).Distinct().ToList();

            ids.Add(_order.ShipToId);
            ids.Add(_order.ShipCompanyId);
            var productIds = records.Select(s => s.PackageItemId).Distinct().ToArray();
            var suppliers  = GlobalObjects.CasEnvironment.Loader.GetObjectList <Supplier>(new ICommonFilter[]
                                                                                          { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, FilterType.In, ids.ToArray()), });
            var products = GlobalObjects.CasEnvironment.Loader.GetObjectList <Product>(new ICommonFilter[]
                                                                                       { new CommonFilter <int>(BaseEntityObject.ItemIdProperty, SmartCore.Filters.FilterType.In, productIds), });

            var department =
                GlobalObjects.CasEnvironment.NewLoader.GetObject <DepartmentDTO, Department>(new Filter("FullName",
                                                                                                        "Logistics & Stores Department "));

            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.ItemId}"            ).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));

            var publisherId = GlobalObjects.CasEnvironment.ApiProvider
                              .GetByIdAsync(_directivesViewer.SelectedItem.PublishedById)?.PersonnelId ?? -1;

            var personnel =
                GlobalObjects.CasEnvironment.Loader.GetObject <Specialist>(
                    new CommonFilter <int>(BaseEntityObject.ItemIdProperty, publisherId));

            var destinations = new List <BaseEntityObject>();

            destinations.AddRange(GlobalObjects.AircraftsCore.GetAllAircrafts().ToArray());
            destinations.AddRange(GlobalObjects.CasEnvironment.Stores.GetValidEntries());
            destinations.AddRange(GlobalObjects.CasEnvironment.Hangars.GetValidEntries());

            foreach (var record in records)
            {
                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);

                if (record.ParentInitialRecord != null)
                {
                    record.ParentInitialRecord.DestinationObject = destinations.FirstOrDefault(i =>
                                                                                               i.ItemId == record.ParentInitialRecord.DestinationObjectId &&
                                                                                               record.ParentInitialRecord.DestinationObjectType.ItemId == i.SmartCoreObjectType.ItemId);
                }
            }

            _order.Supplier    = records.FirstOrDefault(i => i.Supplier != null).Supplier;
            _order.ShipCompany = suppliers.FirstOrDefault(i => i.ItemId == _order.ShipCompanyId);
            _order.ShipTo      = suppliers.FirstOrDefault(i => i.ItemId == _order.ShipToId);
            var airportCode = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <AirportCodeDTO, AirportsCodes>(_order.StationId);

            if (personnel == null)
            {
                MessageBox.Show($"Please attach personnel for user ({_directivesViewer.SelectedItem.PublishedByUser})",
                                "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            var builder = new PurchaseOrderReportNewBuilder(GlobalObjects.CasEnvironment.Operators[0], records, _order,
                                                            department, personnel);

            var doc = (PurchaseOrderReportNew)builder.GenerateReport();
            var CrFormatTypeOptions          = new PdfRtfWordFormatOptions();
            var CrDiskFileDestinationOptions = new DiskFileDestinationOptions {
                DiskFileName = "C:\\SampleReport.pdf"
            };
            var CrExportOptions = doc.ExportOptions;
            {
                CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                CrExportOptions.ExportFormatType      = ExportFormatType.PortableDocFormat;
                CrExportOptions.DestinationOptions    = CrDiskFileDestinationOptions;
                CrExportOptions.FormatOptions         = CrFormatTypeOptions;
            }
            var sendMail = new MailSender(GlobalObjects.CasEnvironment.NewLoader);

            sendMail.SendPurchaseEmail(records, "", personnel, doc.ExportToStream(ExportFormatType.PortableDocFormat));
            sendMail.SendPurchaseToShipper("", _order.ShipCompany, personnel, airportCode.ShortName, doc.ExportToStream(ExportFormatType.PortableDocFormat));
        }