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; }
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)); }