public Stream Generate(RequestForQuotation rfq) { ComponentInfo.SetLicense("FREE-LIMITED-KEY"); _fileName = rfq.CompanyName; CreateDocument(); var documentBody = new Section(_document); _document.Sections.Add(documentBody); var introduction = CreateIntroduction(rfq); var rfqDetails = CreateRfqDetails(rfq); var ending = CreateEnding(); documentBody.Blocks.Add(introduction); documentBody.Blocks.Add(rfqDetails); documentBody.Blocks.Add(ending); var stream = new MemoryStream(); _document.Save(stream, SaveOptions.PdfDefault); return(stream); }
public RequestForQuotation Create(RequestForQuotation requestForQuotation) { // return CreatedUserEntity; var a = new RequestForQuotation(); return(a); }
public RequestForQuotation Update(RequestForQuotation requestForQuotation, Guid id) { // return UpdatedUserEntity; var a = new RequestForQuotation(); return(a); }
private static string GenerateMailBody(RequestForQuotation request, string auditor) { var firstName = request.ContactPerson.GetFirstName() == string.Empty ? string.Empty : $"{request.ContactPerson.GetFirstName()}"; return(string.Format(MailResources.BodyTemplate, firstName, auditor)); }
private void Dispatch(RequestForQuotation request) { Subscribers.ForEach(x => request.RetailItems.ForEach(retailItem => { Console.WriteLine($"OrderProcessor: {request.Id} item: {retailItem.Id} to: {x.QuoterId}"); x.QuoteProcessor.Tell(new RequestPriceQuote(request.Id, retailItem.Id, retailItem.RetailPrice, request.TotalRetailPrice())); })); }
public RequestForQuotation GetItemById(Guid id) { RequestForQuotation requestForQuotation = _rFQRepository.GetItemById(id); //if (User == null) return null; //UserEntity UserEntity = new UserEntity(User); //List<Role> Roles = new List<Role>(); //UserEntity.RoleEntities = Roles.Select(r => new RoleEntity(r)).ToList(); //return new UserEntity(User, Roles); return(requestForQuotation); }
public async Task <IActionResult> PostRequestForQuotation([FromBody] RequestForQuotation requestForQuotation) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.RequestForQuotations.Add(requestForQuotation); await _context.SaveChangesAsync(); return(CreatedAtAction("GetRequestForQuotation", new { id = requestForQuotation.Id }, requestForQuotation)); }
public Task CreateAndSend(RequestForQuotation request) { var rfqPdf = _rfqPdfGenerator.Generate(request); var rfqAttachment = new Attachment( $"{MailResources.ProposalPrefix}-{request.CompanyName.WithFallback(MailResources.EmptyCompanyNameFilename)}.pdf", rfqPdf); var body = GenerateMailBody(request, _smtpConfiguration.Auditor); return(_mailerService.Send( new MailAddress(request.ContactPerson, request.Email), MailResources.Subject, body, new[] { rfqAttachment })); }
private void InitListView() { _directivesViewer = new RequestForQuotationListView { TabIndex = 2, Location = new Point(panel1.Left, panel1.Top), Dock = DockStyle.Fill }; //события _directivesViewer.SelectedItemsChanged += DirectivesViewerSelectedItemsChanged; _directivesViewer.AddMenuItems(_toolStripMenuItemCreatePurchase, _toolStripMenuItemClose, _toolStripSeparator1, _toolStripMenuItemEdit); _directivesViewer.MenuOpeningAction = () => { if (_directivesViewer.SelectedItems.Count <= 0) { return; } else if (_directivesViewer.SelectedItems.Count == 1) { RequestForQuotation wp = _directivesViewer.SelectedItem; if (wp.Status == WorkPackageStatus.Closed || wp.Status == WorkPackageStatus.Opened) { _toolStripMenuItemClose.Enabled = false; } else if (wp.Status == WorkPackageStatus.Published) { _toolStripMenuItemClose.Enabled = true; } else { _toolStripMenuItemClose.Enabled = true; } _toolStripMenuItemCreatePurchase.Enabled = wp.Status == WorkPackageStatus.Opened; } else { _toolStripMenuItemClose.Enabled = true; } }; panel1.Controls.Add(_directivesViewer); }
///<summary> /// конструктор для добавления китов в ордер запроса ///</summary> public RequestForQuotationAddForm(RequestForQuotation rfq) : this() { if (rfq == null) { throw new ArgumentNullException("rfq"); } _addedRequest = rfq; _collectionFilter.Filters.Add(_partNumberFilter); _collectionFilter.Filters.Add(_supplierFilter); _collectionFilter.Filters.Add(_manufacturerFilter); _animatedThreadWorker.DoWork += _animatedThreadWorker_DoWork; _animatedThreadWorker.RunWorkerCompleted += _animatedThreadWorker_RunWorkerCompleted; _animatedThreadWorker.RunWorkerAsync(); }
public async Task <IActionResult> CreateOffer(RequestForQuotation rfq) { if (!ModelState.IsValid) { return(View("Index", rfq)); } try { await _rfqFacade.CreateAndSend(rfq); } catch (Exception exception) { _logger.LogError(exception.Message); throw; } return(View("Confirmation")); }
public QuatationOrderFormNew(RequestForQuotation order, IEnumerable <Product> selectedProducts = null) : this() { if (selectedProducts != null) { foreach (var product in selectedProducts) { var newRequest = new RequestForQuotationRecord(-1, product, 1); newRequest.Product = product; _addedQuatationOrderRecords.Add(newRequest); } } _order = order; DocumentControls.AddRange(new[] { documentControl1, documentControl2, documentControl3, documentControl4, documentControl5, documentControl6, documentControl7, documentControl8, documentControl9, documentControl10 }); Task.Run(() => DoWork()) .ContinueWith(task => Completed(), TaskScheduler.FromCurrentSynchronizationContext()); }
///<summary> /// конструктор для создания ордера запроса для определенноно самолета ///</summary> public RequestForQuotationAddForm(BaseEntityObject parent) : this() { if (parent == null) { throw new ArgumentNullException("parent"); } _addedRequest = new RequestForQuotation { ParentId = parent.ItemId, ParentType = parent.SmartCoreObjectType }; _collectionFilter.Filters.Add(_partNumberFilter); _collectionFilter.Filters.Add(_supplierFilter); _collectionFilter.Filters.Add(_manufacturerFilter); _animatedThreadWorker.DoWork += _animatedThreadWorker_DoWork; _animatedThreadWorker.RunWorkerCompleted += _animatedThreadWorker_RunWorkerCompleted; _animatedThreadWorker.RunWorkerAsync(); textBoxTitle.Text = parent + "-QO-" + DateTime.Now; textBoxAuthor.Text = GlobalObjects.CasEnvironment.IdentityUser.Login; }
public virtual RequestForQuotation CreateRFQ(PurchaseRequest pr) { var rfq = new RequestForQuotation { SiteId = pr.SiteId, PurchaseRequestId = pr.Id, RequestorId = pr.RequestorId, DateRequired = pr.DateRequired, Priority = pr.Priority, CreatedUserId = this._workContext.CurrentUser.Id }; _requestForQuotationRepository.Insert(rfq); foreach (var prItem in pr.PurchaseRequestItems) { rfq.RequestForQuotationItems.Add(new RequestForQuotationItem { Sequence = prItem.Sequence, ItemId = prItem.ItemId, QuantityRequested = prItem.QuantityRequested }); } string number = _autoNumberService.GenerateNextAutoNumber(_dateTimeHelper.ConvertToUserTime(DateTime.UtcNow, DateTimeKind.Utc), rfq); rfq.Number = number; this._dbContext.SaveChanges(); //start workflow var workflowInstanceId = WorkflowServiceClient.StartWorkflow(rfq.Id, EntityType.RequestForQuotation, 0, this._workContext.CurrentUser.Id); this._dbContext.Detach(rfq); rfq = _requestForQuotationRepository.GetById(rfq.Id); this._dbContext.Detach(rfq.Assignment); // trigger Submit action WorkflowServiceClient.TriggerWorkflowAction(rfq.Id, EntityType.RequestForQuotation, rfq.Assignment.WorkflowDefinitionId, workflowInstanceId, rfq.Assignment.WorkflowVersion.Value, WorkflowActionName.Submit, "", this._workContext.CurrentUser.Id); return(rfq); }
private Paragraph CreateRfqDetails(RequestForQuotation rfq) { var premium = _premiumCalculator.CalculateYearlyPremium(rfq.YearlyRevenue, rfq.AmountOfInsurance); return(new Paragraph( _document, new Run(_document, $"Information provided by the customer:"), _lineBreak.Clone(), _lineBreak.Clone(), new Run(_document, $"RFQ Created: {rfq.Created.ToString("d", DateTimeFormatInfo.InvariantInfo)}"), _lineBreak.Clone(), new Run(_document, $"Company Name: {rfq.CompanyName}"), _lineBreak.Clone(), new Run(_document, $"Email: {rfq.Email}"), _lineBreak.Clone(), new Run(_document, $"Annual revenue: {rfq.YearlyRevenue}"), _lineBreak.Clone(), new Run(_document, $"Amount of Insurance: {rfq.AmountOfInsurance}"), _lineBreak.Clone(), _lineBreak.Clone(), new Run(_document, $"Estimated yearly premium: {GetPremium(premium)}"), _lineBreak.Clone())); }
private Paragraph CreateIntroduction(RequestForQuotation rfq) { var firstName = rfq.ContactPerson.GetFirstName(); firstName = firstName.Length > 0 ? " " + firstName : ""; return(new Paragraph( _document, new Run(_document, $"{rfq.CompanyName}"), _lineBreak, new Run(_document, $"{rfq.Address}"), _lineBreak.Clone(), new Run(_document, $"{rfq.City}"), _lineBreak.Clone(), _lineBreak.Clone(), _lineBreak.Clone(), _lineBreak.Clone(), new Run(_document, $"Hello{firstName},"), _lineBreak.Clone(), _lineBreak.Clone(), new Run(_document, "This is sample output from FormToPDF.") )); }
public void SmartCoreFileTest_RequestForQuotation() { var enviroment = GetEnviroment(); var requestForQuotation = new RequestForQuotation { AttachedFile = new AttachedFile { FileName = "AttachedFile.test" }, }; enviroment.NewKeeper.Save(requestForQuotation); Assert.IsTrue(requestForQuotation.ItemId > 0, "ItemId должен быть больше 0"); var forCheck = enviroment.NewLoader.GetObject <RequestForQuotationDTO, RequestForQuotation>(new Filter("ItemId", requestForQuotation.ItemId), true); enviroment.NewKeeper.Delete(requestForQuotation); Assert.IsTrue(forCheck != null, "значение не должно быть null"); Assert.AreEqual(forCheck.Files.Count, 1, "Кол-во файлов должно быть 1"); Assert.IsTrue(forCheck.AttachedFile != null); Assert.AreEqual(forCheck.AttachedFile.FileName, "AttachedFile.test"); }
public CreatePurchaseOrderForm(RequestForQuotation quotation) : this() { _quotation = quotation; _order = new PurchaseOrder() { AdditionalInformation = { СurrencyFreight = Сurrency.USD, ArrivalDate = DateTime.Now, ReceiptDate = DateTime.Now }, Parent = _quotation, ParentType = _quotation.SmartCoreObjectType, Title = _quotation.Title, OpeningDate = DateTime.Now, Author = _quotation.Author, Remarks = _quotation.Remarks, Number = _quotation.Number, }; Task.Run(() => DoWork()) .ContinueWith(task => Completed(), TaskScheduler.FromCurrentSynchronizationContext()); }
public bool IsDelete(RequestForQuotation userEntity, Guid id) { // this.UserRepository.Delete(UserId); return(true); }
public QualificationNumberForm(RequestForQuotation order, IEnumerable <Supplier> suppliers) : this() { _order = order; _suppliers = suppliers; UpdateInformation(); }
private void _toolStripMenuItemCreateQuatation_Click(object sender, EventArgs e) { try { var initial = _directivesViewer.SelectedItem; var quatation = new RequestForQuotation { Parent = initial, ParentType = initial.SmartCoreObjectType, Title = initial.Title, OpeningDate = DateTime.Now, Author = initial.Author, Remarks = initial.Remarks, Number = initial.Number, }; GlobalObjects.CasEnvironment.NewKeeper.Save(quatation); var initialRecords = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>(new Filter("ParentPackageId", initial.ItemId)); var ids = initialRecords.Select(i => i.ProductId); if (ids.Count() > 0) { var product = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AccessoryDescriptionDTO, Product>(new Filter("ItemId", ids)); foreach (var addedInitialOrderRecord in initialRecords) { addedInitialOrderRecord.Product = product.FirstOrDefault(i => i.ItemId == addedInitialOrderRecord.ProductId); } } foreach (var record in initialRecords) { var newquatationRecord = new RequestForQuotationRecord(quatation.ItemId, record.Product, record.Quantity); newquatationRecord.Priority = record.Priority; newquatationRecord.Measure = record.Measure; newquatationRecord.DeferredCategory = record.DeferredCategory; newquatationRecord.CostCondition = record.CostCondition; newquatationRecord.DestinationObjectType = record.DestinationObjectType; newquatationRecord.DestinationObjectId = record.DestinationObjectId; newquatationRecord.Remarks = record.Remarks; newquatationRecord.LifeLimit = new Lifelength(record.LifeLimit); newquatationRecord.LifeLimitNotify = new Lifelength(record.LifeLimitNotify); GlobalObjects.CasEnvironment.Keeper.Save(newquatationRecord); } MessageBox.Show("Create quatation successful", "Message infomation", MessageBoxButtons.OK, MessageBoxIcon.Information); initial.Status = WorkPackageStatus.Published; initial.PublishingDate = DateTime.Now; initial.PublishedByUser = GlobalObjects.CasEnvironment.IdentityUser.ToString(); initial.PublishedById = GlobalObjects.CasEnvironment.IdentityUser.ItemId; GlobalObjects.CasEnvironment.NewKeeper.Save(initial); var form = new QuatationOrderFormNew(quatation); form.ShowDialog(); AnimatedThreadWorker.RunWorkerAsync(); } catch (Exception ex) { Program.Provider.Logger.Log("Error while saving data", ex); throw; } }
/// <summary> /// Создается построитель отчета Release To Service /// </summary> /// <param name="rfq">Рабочий пакет</param> public RequestForQuotationReportBuilder(RequestForQuotation rfq) { _currentRfQ = rfq; }
private void SendQuotationOrder(RequestForQuotation _quotation) { var personnel = GlobalObjects.CasEnvironment.Loader.GetObject <Specialist>( new CommonFilter <int>(BaseEntityObject.ItemIdProperty, GlobalObjects.CasEnvironment.IdentityUser.PersonnelId)); if (personnel == null) { MessageBox.Show( $"Please attach personnel for user ({GlobalObjects.CasEnvironment.IdentityUser.ItemId})", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } var destinations = new List <BaseEntityObject>(); destinations.AddRange(GlobalObjects.AircraftsCore.GetAllAircrafts().ToArray()); destinations.AddRange(GlobalObjects.CasEnvironment.Stores.GetValidEntries()); destinations.AddRange(GlobalObjects.CasEnvironment.Hangars.GetValidEntries()); var records = GlobalObjects.CasEnvironment.NewLoader .GetObjectList <RequestForQuotationRecordDTO, RequestForQuotationRecord>( new Filter("ParentPackageId", _quotation.ItemId)); var ids = records.SelectMany(i => i.SupplierPrice).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 parentInitialId = (int)GlobalObjects.CasEnvironment.Execute( $@"select i.ItemId from RequestsForQuotation q left join InitialOrders i on i.ItemID = q.ParentID where q.ItemId = {_quotation.ItemId}" ).Tables[0] .Rows[0][0]; var _initialRecords = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>( new Filter("ParentPackageId", parentInitialId)); foreach (var record in records) { record.ParentInitialRecord = _initialRecords.FirstOrDefault(i => i.ProductId == record.PackageItemId); if (record.ParentInitialRecord != null) { record.ParentInitialRecord.DestinationObject = destinations.FirstOrDefault(i => i.ItemId == record.ParentInitialRecord.DestinationObjectId && record.ParentInitialRecord.DestinationObjectType.ItemId == i.SmartCoreObjectType.ItemId); } record.Product = products.FirstOrDefault(i => i.ItemId == record.PackageItemId); foreach (var price in record.SupplierPrice) { price.Supplier = suppliers.FirstOrDefault(i => i.ItemId == price.SupplierId); price.Parent = record; } } foreach (var g in records.SelectMany(i => i.SupplierPrice).GroupBy(i => i.Supplier)) { var sendMail = new MailSender(GlobalObjects.CasEnvironment.NewLoader); sendMail.SendQuotationEmail(g.Select(i => i.Parent).ToList(), "", personnel); } }
private void _toolStripMenuItemPublish_Click(object sender, EventArgs e) { if (_directivesViewer.SelectedItems.Count == 0) { return; } if (_directivesViewer.SelectedItems[0] is RequestForQuotation) { var editForm = new CreatePurchaseOrderForm(_directivesViewer.SelectedItems[0] as RequestForQuotation); if (editForm.ShowDialog() == DialogResult.OK) { MessageBox.Show("Create purchase successful", "Message infomation", MessageBoxButtons.OK, MessageBoxIcon.Information); foreach (var rfq in _directivesViewer.SelectedItems) { if (rfq.Status == WorkPackageStatus.Published) { MessageBox.Show("Initional Order " + rfq.Title + " is already publisher.", (string)new GlobalTermsProvider()["SystemName"], MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); continue; } rfq.Status = WorkPackageStatus.Published; rfq.PublishingDate = DateTime.Now; rfq.PublishedByUser = GlobalObjects.CasEnvironment.IdentityUser.ToString(); rfq.PublishedById = GlobalObjects.CasEnvironment.IdentityUser.ItemId; GlobalObjects.CasEnvironment.NewKeeper.Save(rfq as BaseEntityObject); SendQuotationOrder(rfq as RequestForQuotation); } } AnimatedThreadWorker.RunWorkerAsync(); } else if (_directivesViewer.SelectedItems[0] is InitialOrder) { var initial = _directivesViewer.SelectedItems[0] as InitialOrder; var quatation = new RequestForQuotation { Parent = initial, ParentType = initial.SmartCoreObjectType, Title = initial.Title, OpeningDate = DateTime.Now, Author = initial.Author, Remarks = initial.Remarks, Number = initial.Number, }; GlobalObjects.CasEnvironment.NewKeeper.Save(quatation); var initialRecords = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <InitialOrderRecordDTO, InitialOrderRecord>(new Filter("ParentPackageId", initial.ItemId)); var ids = initialRecords.Select(i => i.ProductId); if (ids.Count() > 0) { var product = GlobalObjects.CasEnvironment.NewLoader.GetObjectList <AccessoryDescriptionDTO, Product>(new Filter("ItemId", ids)); foreach (var addedInitialOrderRecord in initialRecords) { addedInitialOrderRecord.Product = product.FirstOrDefault(i => i.ItemId == addedInitialOrderRecord.ProductId); } } foreach (var record in initialRecords) { var newquatationRecord = new RequestForQuotationRecord(quatation.ItemId, record.Product, record.Quantity); newquatationRecord.Priority = record.Priority; newquatationRecord.Measure = record.Measure; newquatationRecord.DeferredCategory = record.DeferredCategory; newquatationRecord.CostCondition = record.CostCondition; newquatationRecord.DestinationObjectType = record.DestinationObjectType; newquatationRecord.DestinationObjectId = record.DestinationObjectId; newquatationRecord.Remarks = record.Remarks; newquatationRecord.LifeLimit = new Lifelength(record.LifeLimit); newquatationRecord.LifeLimitNotify = new Lifelength(record.LifeLimitNotify); GlobalObjects.CasEnvironment.Keeper.Save(newquatationRecord); } initial.Status = WorkPackageStatus.Published; initial.PublishingDate = DateTime.Now; initial.PublishedByUser = GlobalObjects.CasEnvironment.IdentityUser.ToString(); initial.PublishedById = GlobalObjects.CasEnvironment.IdentityUser.ItemId; GlobalObjects.CasEnvironment.NewKeeper.Save(initial); var form = new QuatationOrderFormNew(quatation); if (form.ShowDialog() == DialogResult.OK) { MessageBox.Show("Create quatation successful", "Message infomation", MessageBoxButtons.OK, MessageBoxIcon.Information); } AnimatedThreadWorker.RunWorkerAsync(); } else if (_directivesViewer.SelectedItems[0] is PurchaseOrder) { var purch = _directivesViewer.SelectedItem as PurchaseOrder; //var form = new MoveProductForm(purch); //if (form.ShowDialog() == DialogResult.OK) //{ purch.Status = WorkPackageStatus.Published; purch.PublishingDate = DateTime.Now; purch.PublishedByUser = GlobalObjects.CasEnvironment.IdentityUser.ToString(); purch.PublishedById = GlobalObjects.CasEnvironment.IdentityUser.ItemId; GlobalObjects.CasEnvironment.NewKeeper.Save(purch); SendPurchaseOrder(purch); //} AnimatedThreadWorker.RunWorkerAsync(); } }
public QuotationSettingForm(RequestForQuotation order) { _order = order; InitializeComponent(); UpdateInitialControls(); }
public async Task <IActionResult> PutRequestForQuotation([FromRoute] Guid id, [FromBody] RequestForQuotation requestForQuotation) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != requestForQuotation.Id) { return(BadRequest()); } _context.Entry(requestForQuotation).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RequestForQuotationExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }