private void GetInvoiceDetails(string InvoiceNo) { DAL objDal = new DAL(); InvoiceDetail objInvoiceDetail = new InvoiceDetail(); AmountTaxCalculation objAmountTaxCalculation = new AmountTaxCalculation(); Party objParty = new Party(); List <Product> liProduct = new List <Product>(); DataTable dtInvoiceData = new DataTable(); dtInvoiceData = objDal.getInvoiceByInvoiceNo(InvoiceNo); if (dtInvoiceData.Rows.Count > 0) { objInvoiceDetail.PartyId = Convert.ToInt32(dtInvoiceData.Rows[0]["PartyId"]); objInvoiceDetail.DateOfSell = Convert.ToDateTime(dtInvoiceData.Rows[0]["DateOfSell"]).ToString("dd/MM/yyyy"); objInvoiceDetail.IvoiceNo = dtInvoiceData.Rows[0]["IvoiceNo"].ToString(); for (int i = 0; i < dtInvoiceData.Rows.Count; i++) { liProduct.Add(new Product() { ProductName = dtInvoiceData.Rows[i]["ProductName"].ToString(), Qty = Convert.ToDouble(dtInvoiceData.Rows[i]["Qty"]), PackagingCost = Convert.ToDouble(dtInvoiceData.Rows[i]["PackagingCost"]), //Price= Convert.ToDouble(dtInvoiceData.Rows[i]["PackagingCost"]), Rate = Convert.ToDouble(dtInvoiceData.Rows[i]["Rate"]), Amount = Convert.ToDouble(dtInvoiceData.Rows[i]["Amount"]), AmountDisplay = Math.Round(Convert.ToDouble(dtInvoiceData.Rows[i]["Amount"]), 0, MidpointRounding.AwayFromZero).ToString("n2"), IsPice = Convert.ToBoolean(dtInvoiceData.Rows[i]["IsPiece"]), ProductType = Convert.ToBoolean(dtInvoiceData.Rows[i]["IsPiece"]) == true ? "/ pp" : "/per kg" }); } objInvoiceDetail.Product = liProduct; } objAmountTaxCalculation.Total = CalcuateTotal(objInvoiceDetail).ToString("n2"); objAmountTaxCalculation.CGST = CalculateCGST(Convert.ToDouble(objAmountTaxCalculation.Total)).ToString("n2"); objAmountTaxCalculation.IGST = CalculateIGST(Convert.ToDouble(objAmountTaxCalculation.Total)).ToString("n2"); objAmountTaxCalculation.GrandTotal = (Convert.ToDouble(objAmountTaxCalculation.Total) + Convert.ToDouble(objAmountTaxCalculation.CGST) + Convert.ToDouble(objAmountTaxCalculation.IGST)).ToString("n2"); objAmountTaxCalculation.GTotalInWords = NumbersToWords(Convert.ToInt32(Convert.ToDouble(objAmountTaxCalculation.GrandTotal))); DataRow dr = objDal.getPartyDetail(objInvoiceDetail.PartyId); objParty.PartyName = dr["PartyName"].ToString(); objParty.PartyTinNo = dr["PartyTinNo"].ToString(); objParty.PartyAddress = dr["PartyAddress"].ToString(); GenerateInvoicePDF(objParty, objInvoiceDetail, objAmountTaxCalculation); }
private void GenerateInvoicePDF(Party objPartyDetail, InvoiceDetail objInvDetail, AmountTaxCalculation objAmounts) { string strTemplatePath = Server.MapPath(@"~\Invoice.html"); StringBuilder mainhtml = new StringBuilder(); string htmlTemp = File.ReadAllText(strTemplatePath); mainhtml.Append(htmlTemp); mainhtml = mainhtml.Replace("@PARTY NAME", objPartyDetail.PartyName); mainhtml = mainhtml.Replace("@Address", objPartyDetail.PartyAddress); mainhtml = mainhtml.Replace("@InvoiceNO", objInvDetail.IvoiceNo); mainhtml = mainhtml.Replace("@Date", objInvDetail.DateOfSell); mainhtml = mainhtml.Replace("@Tinno", objPartyDetail.PartyTinNo); mainhtml = mainhtml.Replace("@Logo", "<img src='" + Server.MapPath(@"~/Logo.PNG") + "' width='150' height='100' />"); mainhtml = mainhtml.Replace("@Om", "<img src='" + Server.MapPath(@"~/Content/Narayan.PNG") + "' width='180' height='35'/>"); StringBuilder sbProducts = new StringBuilder(); for (int i = 0; i < objInvDetail.Product.Count; i++) { sbProducts.Append("<tr class='borderBottomRemove'>"); sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + (i + 1) + ".</td>"); sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + objInvDetail.Product[i].ProductName + "</td>"); //Add the HSN Code Dynamically here sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + BillType.HSNCode + "</td>"); string Type = objInvDetail.Product[i].ProductType == "/ pp" ? "Pcs" : "Kgs"; sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + objInvDetail.Product[i].Qty + " " + Type + "</td>"); //sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + Type + "</td>"); sbProducts.Append("<td class='borderleft PartyInfo' style='height:40px;' align='center'>" + (objInvDetail.Product[i].Rate.ToString() + objInvDetail.Product[i].ProductType.ToString()) + "</td>"); sbProducts.Append("<td class='borderleft PartyInfo borderright' style='height:40px;' align='center'>" + objInvDetail.Product[i].AmountDisplay + "</td>"); sbProducts.Append("</tr>"); } mainhtml = mainhtml.Replace("@TableData", sbProducts.ToString()); mainhtml = mainhtml.Replace("@PackingCost", "0.00"); mainhtml = mainhtml.Replace("@Total", objAmounts.Total); mainhtml = mainhtml.Replace("@CGST", objAmounts.CGST); mainhtml = mainhtml.Replace("@Tax", Convert.ToInt32(BillType.TaxRate).ToString()); mainhtml = mainhtml.Replace("@SGST", objAmounts.IGST); mainhtml = mainhtml.Replace("@GradTotal", objAmounts.GrandTotal); mainhtml = mainhtml.Replace("@TInWords", objAmounts.GTotalInWords); string downloadedFileName = objInvDetail.IvoiceNo + "_" + objPartyDetail.PartyName; MemoryStream ms = ConvertHtmlToPdf(mainhtml.ToString()); DownloadAsPdf(ms, downloadedFileName); }