Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }