public void RenderRfq(Stream stream, VendorModel vendor, IEnumerable<ItemModel> items, UserModel user, int RfqNumber, PurchaseRequest Pr, DateTime DateRequested) { Document document = new Document(PageSize.LETTER); try { PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); // Create a page in the document and add it to the bottom layer document.NewPage(); //Pass Document to this CurrentDoc = document; page = writer.DirectContentUnder; page.BeginText(); int top = (int)document.GetTop(0); SetFontSizeTo(16); PrintText("REQUEST FOR QUOTATION (THIS IS NOT AN ORDER)", 20, 10); SetFontSizeTo(10); //Header PrintText("Company Name: {0}".WithTokens(Pr.User.Company.Name), 20, 30); // Company Name PrintText("Address: 8th Floor Gedisco Tower, 534 Asuncion St., Binondo, Manila", 20, 45); // Company Address PrintText("Purchasing Department", 20, 60); PrintText("Issued By: {0} {1}".WithTokens(user.FirstName, user.LastName), 20, 75); // Requested By PrintTextRight("RFQ NO: {0}".WithTokens(RfqNumber), 70, 30); // RFQ Number PrintTextRight("Date: {0}".WithTokens(DateTime.Now.ToShortDateString()), 70, 45); // Date Created PrintTextRight("PR No: {0}".WithTokens(Pr.PRNo), 70, 60); // PR Number //Body SetFontSizeTo(14); PrintText("BID/OFFER/QUOTE MUST BE RECEIVED BY:", 20, 105); // Requested By PrintTextRight("Date: {0}".WithTokens(DateRequested.ToShortDateString()), 95, 105); // Date Required SetFontSizeTo(10); PrintText("Attention: {0} {1}".WithTokens(user.FirstName, user.LastName), 40, 125); // Vendor Contact Person PrintText("Tel No: {0}".WithTokens("+63 2 244 9296"), 40, 140); // Vendor Tel No PrintText("Email Address: {0}".WithTokens(user.Email), 40, 155); // Vendor Email PrintText("Fax No: {0}".WithTokens("+63 2 241 7826"), 240, 125); // Vendor Fax No SetFontSizeTo(8); PrintText("Unless otherwise requested, quote on each item separately. Unit Prices shall be shown. If unable to furnish", 20, 175); // Vendor Email PrintText("items as specified, submit sample and/or descriptive specifications of substitute offered.", 20, 185); // Vendor Email //Items SetFontSizeTo(8); PrintText("_______________________________________________________________________________________________________________________", 20, 210); PrintText("Item No.", 20, 205); PrintText("Item Description", 70, 205); PrintText("Quantity", 370, 205); PrintText("Unit Price", 420, 205); PrintText("Discount", 470, 205); PrintText("Total", 520, 205); //// Items.. //int staryY = 225; //int itemCount = 1; //foreach (var item in items) { // PrintItem(itemCount.ToString(), item.Description, item.Quantity.ToString(), ref staryY); // itemCount++; //} //PrintText("********** NOTHING FOLLOWS **********", 75, staryY + 15); // START HERE ---------------------------- Paragraph Grid = new Paragraph("\n\n\n\n\n\n\n\n\n"); Grid.Alignment = 1; Grid.SpacingAfter = 35f; document.Add(Grid); Paragraph Grid2 = new Paragraph(); Grid2.Alignment = 1; Grid2.SpacingBefore = 35f; //Start Table ----------------------------------- PdfPTable rightTable = new PdfPTable(7); int[] widths = { 1, 1, 1, 7, 2, 2, 2 }; rightTable.SetWidths(widths); rightTable.TotalWidth = 570f; rightTable.LockedWidth = true; Font tableFont = new Font(Font.FontFamily.HELVETICA, 8); rightTable.HorizontalAlignment = Element.ALIGN_CENTER; rightTable.AddCell(new Phrase("Item No.", tableFont)); rightTable.AddCell(new Phrase("Item Description", tableFont)); rightTable.AddCell(new Phrase("Quantity", tableFont)); rightTable.AddCell(new Phrase("Unit Price", tableFont)); rightTable.AddCell(new Phrase("Discount", tableFont)); rightTable.AddCell(new Phrase("Total Amount", tableFont)); rightTable.HorizontalAlignment = Element.ALIGN_LEFT; int itemCount = 1; foreach (var item in items) { rightTable.AddCell(new Phrase(item.ItemNumber.ToString(), tableFont)); rightTable.AddCell(new Phrase(item.Description, tableFont)); rightTable.AddCell(new Phrase(item.Quantity.ToString(), tableFont)); rightTable.AddCell(new Phrase("", tableFont)); rightTable.AddCell(new Phrase("", tableFont)); rightTable.AddCell(new Phrase("", tableFont)); itemCount++; } //Nothing Follows rightTable.AddCell(new Phrase("", tableFont)); rightTable.AddCell(new Phrase("", tableFont)); rightTable.AddCell(new Phrase("")); rightTable.AddCell(new Phrase("******** NOTHING FOLLOWS ********", tableFont)); rightTable.AddCell(new Phrase("")); rightTable.AddCell(new Phrase("")); rightTable.AddCell(new Phrase("")); Grid2.Add(rightTable); document.Add(Grid2); // End of table ----------------------------------- // Footer SetFontSizeTo(10); PrintTextBottom("If accepted within _____ days, the undersigned offers and agrees to honor this quotation.", 20, 85); PrintTextBottom("Print Name of Person:", 20, 65); PrintTextBottom("Company Name:", 20, 50); PrintTextBottom("Address:", 20, 35); PrintTextBottom("Email Address:", 20, 20); PrintTextBottom("No. of Days to Deliver:", 200, 65); PrintTextBottom("Telephone No.:", 200, 50); PrintTextBottom("Fax No.:", 200, 35); page.EndText(); writer.Flush(); } finally { document.Close(); } }
private void SaveRfqToDb() { //------------------Database Operation------------------------- foreach (var vendor in selectedVendors) { selectedVendor = vendor; // Create RFQ Guid rfqId = Guid.NewGuid(); var rfq = db.RFQs.CreateObject(); rfq.Id = rfqId; rfq.IssuedBy = CurrentUser.Id; rfq.DateRequired = DateRequired; rfq.date_created = DateTime.Now; rfq.VendorId = vendor.Id; bool IsPrDataTaken = false; Guid RequestId = Guid.Empty; //Add Items foreach (var item in items) { //Add to quotation item list var mRfqItems = db.mRfqs_mItemsRequests.CreateObject(); mRfqItems.RfqId = rfqId; mRfqItems.mItemsRequestId = item.ext_id; //Mark itemrequest as quoted IQueryable<mItemsRequest> allItemRequest = db.mItemsRequests; var itemRequest = allItemRequest.Where(x => x.Id == item.ext_id).SingleOrDefault(); itemRequest.IsQuoteSent = true; //Get Purchase Request Data for printing if (!IsPrDataTaken) { CurrentRequest = itemRequest.PurchaseRequest; CurrentRequest.Status = "Pending Quotation"; RequestId = CurrentRequest.Id; IsPrDataTaken = true; } //Add object mRfqItems.RequestId = RequestId; db.mRfqs_mItemsRequests.AddObject(mRfqItems); } // Add object rfq.RequestId = RequestId; db.RFQs.AddObject(rfq); //Save To Database db.SaveChanges(); RfqNo = db.RFQs.Where(x => x.Id == rfqId).SingleOrDefault().RfqNumber; DeployAndRenderRfq(); } }