protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { orderID = int.Parse(Request.QueryString["OrderID"]); linkRefresh.NavigateUrl = "ViewOrderDetails.aspx?OrderID=" + orderID; Order order = db.orders.Single(x => x.id == orderID); List <OrderLine> orderLines = db.orderLines.Where(x => x.orderID == orderID).ToList(); txtOrderID.Text = "" + orderID; txtDate.Text = order.date.ToShortDateString(); txtStaff.Text = order.salesmanName; if (order.status.Equals("pending")) { ddlStatus.SelectedIndex = 0; } else if (order.status.Equals("confirmed")) { ddlStatus.SelectedIndex = 1; ddlStatus.Enabled = false; } else { ddlStatus.SelectedIndex = 2; ddlStatus.Enabled = false; } txtCustName.Text = order.custName; txtCustEmail.Text = order.custEmail; txtCustAddress.Text = order.custAddress; decimal ttotal = 0; List <OrderProd> orderProds = new List <OrderProd>(); for (int i = 0; i < orderLines.Count; i++) { OrderLine orderQTY = orderLines.ElementAt(i); Product product = db.products.Single(x => x.id == orderQTY.productID); string prod = product.name; int qty = orderQTY.quantity; decimal price = product.price; decimal discount = orderQTY.discount; decimal total = qty * price * (1 - discount); OrderProd orderProd = new OrderProd(i + 1, prod, qty, price, discount, total); orderProds.Add(orderProd); ttotal += total; } gvOrderQTY.DataSource = orderProds; gvOrderQTY.DataBind(); lblTotal.Text = ttotal.ToString("0.00"); } divPopup.Visible = false; }
protected void btnCreateDO_Click(object sender, EventArgs e) { int orderID = int.Parse(Request.QueryString["OrderID"]); Order order = db.orders.Single(x => x.id == orderID); List <OrderLine> orderLines = db.orderLines.Where(x => x.orderID == orderID).ToList(); decimal ttotal = 0; List <OrderProd> orderProds = new List <OrderProd>(); for (int i = 0; i < orderLines.Count; i++) { OrderLine orderQTY = orderLines.ElementAt(i); Product product = db.products.Single(x => x.id == orderQTY.productID); string prod = product.name; int qty = orderQTY.quantity; decimal price = product.price; decimal discount = orderQTY.discount; decimal total = qty * price * (1 - discount); OrderProd orderProd = new OrderProd(i + 1, prod, qty, price, discount, total); orderProds.Add(orderProd); ttotal += total; } //create html string htmlContent = "<html><head><style>.detail-table, .detail-table th, .detail-table td{border: 1px solid;padding: 5px;text-align:left; border-collapse: collapse; }.display-table td{ padding-right:10px; border: 0px; vertical-align:top; } body{ padding: 10%; }</style></head>" + "<body><div style='width:100%;text-align:center;' > " + "<h2> Millos Trading </h2> 123, Hill Street,<br/> 31000 Perak,<br /> Malaysia.<br /> <br /> Tel : 605-5342353 <br /> Fax : 605-5342352 <br /> </div> " + "<h2>Delivery Order</h2>" + "<table class='display-table' > "+ "<tr> <td>Order ID</td> <td>:</td> "+ "<td>" + order.id + "</td> </tr> "+ "<tr> <td>Date</td> <td>:</td> "+ "<td>" + order.date.ToShortDateString() + "</td> </tr> "+ "<tr> <td>Salesperson</td> <td>:</td> "+ "<td>" + order.salesmanName + "</td> </tr>"+ "<tr> <td>Buyer</td> <td>:</td> "+ "<td>" + order.custName + " (" + order.custEmail + ")</tr>" + "<tr> <td>Deliver to</td> <td>:</td> <td>" + order.custAddress.Replace(",", ",<br/>") + "</td> </tr>" + "</table>" + "<br/>Order Details : <br/>" + "<table class='detail-table' style='width:100%'> "+ "<thead> <th>No</th> <th>Product</th> <th>Quantity</th> </thead> </th>"; int num = 1; foreach (OrderProd op in orderProds) { htmlContent += "<tr><td>" + num + "</td><td>" + op.prod + "</td><td>" + op.qty + "</td></tr>"; num++; } string filePath = Path.Combine(Server.MapPath("~"), "DeliveryOrder" + orderID + ".pdf"); CreatePDFFromHtml(htmlContent, filePath); HttpResponse res = HttpContext.Current.Response; res.Clear(); res.AppendHeader("content-disposition", "attachment; filename=DeliveryOrder" + txtOrderID.Text + ".pdf"); res.ContentType = "application/octet-stream"; res.WriteFile(filePath); res.Flush(); res.End(); }