示例#1
0
        public static string DO(InvoiceIndexListingModel model)
        {
            DataTable dt = new DataTable();

            dt.Columns.AddRange(new DataColumn[7] {
                new DataColumn("L.P.", typeof(string)),
                new DataColumn("Przedmiot", typeof(string)),
                new DataColumn("Ilosc", typeof(string)),
                new DataColumn("Cena brutto", typeof(string)),
                new DataColumn("Cena netto", typeof(string)),
                new DataColumn("Vat", typeof(string)),
                new DataColumn("Razem brutto", typeof(string))
            });


            for (int i = 0; i < model.Lines.InvoiceLines.Count(); i++)
            {
                var item = model.Lines.InvoiceLines.ToList()[i];
                int lp   = i + 1;
                dt.Rows.Add(lp, item.ProductName.ToString(), item.Amount.ToString(), item.Price.ToString(), item.PriceNetto.ToString(), item.Tax.ToString(), item.TotalPrice.ToString());
            }



            using (StringWriter sw = new StringWriter())
            {
                //using (HtmlTextWriter hw = new HtmlTextWriter(sw))
                {
                    StringBuilder sb = new StringBuilder();

                    //Generate Invoice (Bill) Header.
                    sb.Append("<table width='100%' cellspacing='5' cellpadding='2'>");
                    sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan = '2'><b>Faktura VAT " + model.InvoiceNumber + "</b></td></tr>");
                    sb.Append("<tr><td colspan = '2'></td></tr>");
                    sb.Append("<tr><td><b>Zamówienie nr: </b>");
                    sb.Append(model.OrderNumber);
                    sb.Append("</td><td align = 'right'><b>Data faktury: </b>");
                    sb.Append(model.InvoiceTime.ToString("dd/MM/yyyy"));
                    sb.Append("<b></b>");
                    sb.Append("<p>Data wygenerowanie: " + DateTime.Now.ToString("dd/MM/yyyy") + " </p>");

                    sb.Append(" </td></tr>");
                    sb.Append("<tr><td colspan = '3'><b>Sprzedawca: </b>");
                    sb.Append("Baloon");
                    sb.Append("<p>K.Kłys, O.Kalinowska, P.Jeziorski</p>");
                    sb.Append("<p>ul. Nowa 23</p>");
                    sb.Append("<p>95-258 Lodz</p>");
                    sb.Append("</td></tr>");

                    sb.Append("<tr><td colspan = '2' align = 'right'><b>Kupujacy: </b>");
                    sb.Append("df");
                    sb.Append("<p>" + model.ClientName + " " + model.ClientSurname + "</p>");
                    sb.Append("<p>" + model.AddressStreet + " " + model.AddressStreetNumber + " " + model.AddressAppartmentNumber + "</p>");
                    sb.Append("<p>" + model.AddressPostCode + " " + model.AddressCity + "</p>");
                    sb.Append("<p>" + model.AddressCountry + "</p>");
                    sb.Append("</td></tr>");



                    sb.Append("</table>");
                    sb.Append("<br />");

                    //Generate Invoice (Bill) Items Grid.
                    sb.Append("<table border = '1'>");
                    sb.Append("<tr >");
                    sb.Append("<span style=\" background-color: yellow  \">");

                    foreach (DataColumn column in dt.Columns)
                    {
                        Console.WriteLine("JESTEM: " + column.ColumnName);
                        sb.Append("<th bgcolor=\"#d9d9d9\" >");
                        // sb.Append("<span style=\"color: red;background-color: yellow;font-weight:bold;\">");
                        sb.Append(column.ColumnName.ToString());
                        // sb.Append("</span>");
                        sb.Append("</th>");
                    }

                    sb.Append("</span>");
                    sb.Append("</tr>");
                    foreach (DataRow row in dt.Rows)
                    {
                        sb.Append("<tr>");
                        foreach (DataColumn column in dt.Columns)
                        {
                            sb.Append("<td>");
                            sb.Append(row[column]);
                            sb.Append("</td>");
                        }
                        sb.Append("</tr>");
                    }
                    sb.Append("<tr><td align = 'right' colspan = '4");
                    // sb.Append(dt.Columns.Count - 3);
                    sb.Append("'>Total</td>");
                    sb.Append("<td colspan = '1'>");
                    sb.Append(model.TotalPriceNetto);
                    sb.Append("</td>");
                    sb.Append("<td colspan = '1'>");
                    sb.Append(model.TotalTax);
                    sb.Append("</td>");
                    sb.Append("<td colspan = '1'>");
                    sb.Append(model.TotalPriceBrutto);
                    sb.Append("</td>");
                    sb.Append("</tr></table>");
                    return(sb.ToString());

                    /*
                     *
                     * //Export HTML String as PDF.
                     * StringReader sr = new StringReader(sb.ToString());
                     * MemoryStream memoryStream = new MemoryStream();
                     * Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
                     * HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
                     * PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
                     * pdfDoc.Open();
                     * htmlparser.Parse(sr);
                     * pdfDoc.Close();
                     * /*
                     *
                     *
                     * Response.ContentType = "application/pdf";
                     * Response.AddHeader("content-disposition", "attachment;filename=Invoice_" + "125" + ".pdf");
                     * Response.Cache.SetCacheability(HttpCacheability.NoCache);
                     * Response.Write(pdfDoc);
                     * Response.End();
                     */
                }
            }
        }
示例#2
0
        // Po orderId tylko
        //ActionID => 2 - GetAll incoice
        public IActionResult ShowInvoice(int InvoiceId, int OrderId, string email, int ActionId)
        {
            ViewBag.ActionId = ActionId;
            var InvoiceMod      = _invoice.GetInvoiceByOrderId(OrderId);
            var OrderMod        = _order.GetAll().FirstOrDefault(o => o.Id == OrderId);
            var InvoiceLinesMod = _invoice.GetInvoiceLines(InvoiceMod.Id);


            int C = 0;
            var listingResultIL = InvoiceLinesMod // _packingNote.GetAllLines(PackingNoteId)
                                  .Select(item =>
                                          new InvoiceLineIndexListingModel
            {
                InvoiceLineId = item.Id,
                ProductName   = item.Product.Name,
                Amount        = item.Amount,
                Price         = item.Price,
                PriceNetto    = Math.Round(Decimal.Divide(item.Price, 1.23m), 2),
                Tax           = Math.Round(item.Price - (Math.Round(Decimal.Divide(item.Price, 1.23m), 2)), 2),

                TotalPrice = item.TotalPrice
            });
            decimal sumA = 0.0m;
            decimal sumT = 0.0m;
            decimal sumN = 0.0m;
            int     cnt  = 1;

            foreach (var item in listingResultIL)
            {
                sumA   += item.TotalPrice;
                sumT   += item.Tax;
                sumN   += Math.Round(Decimal.Divide(item.Price, 1.23m), 2);
                item.LP = cnt;
                Console.WriteLine("DDDDDDDDDDDDDDDD " + item.LP);
                Console.WriteLine("DDDDDDDDDDDDDDDD " + cnt);
                cnt++;
            }


            Console.WriteLine("DDDDDDDDDDDDDDDD 222 " + listingResultIL.ToList()[0].LP);

            var model = new InvoiceLinesListingModel()
            {
                InvoiceLines = listingResultIL
            };

            Console.WriteLine("ILOSC: " + listingResultIL.Count());


            var listingResult = // _packingNote.GetAllLines(PackingNoteId)

                                new InvoiceIndexListingModel
            {
                OrderId     = OrderMod.Id,
                OrderNumber = OrderMod.OrderNumber,

                InvoiceNumber = InvoiceMod.InvoiceNumber,
                InvoiceTime   = InvoiceMod.InvoiceDate,

                AddressId               = OrderMod.Address.Id,
                AddressStreet           = OrderMod.Address.Street,
                AddressStreetNumber     = OrderMod.Address.StreetNumber,
                AddressAppartmentNumber = OrderMod.Address.AppartmentNumber,
                AddressPostCode         = OrderMod.Address.PostCode,
                AddressCity             = OrderMod.Address.City,
                AddressCountry          = OrderMod.Address.Country,


                ClientId         = OrderMod.Client.Id,
                ClientNumber     = OrderMod.Client.ClientNumber,
                ClientName       = OrderMod.Client.Name,
                ClientSurname    = OrderMod.Client.Surname,
                ClientPhoneNumer = OrderMod.Client.PhoneNumer,
                Clientemail      = OrderMod.Client.email,

                Lines            = model,
                TotalPriceBrutto = sumA,
                TotalTax         = sumT,
                TotalPriceNetto  = sumN
            };


            StringReader sr = new StringReader(InvoicePdfTemplete.DO(listingResult));

            MemoryStream memoryStream = new MemoryStream();

            Document   document   = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            HTMLWorker htmlparser = new HTMLWorker(document);

            PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);

            document.Open();
            document.Add(new Paragraph("fdefedwf"));
            htmlparser.Parse(sr);
            document.Close();

            byte[] bytes = memoryStream.ToArray();
            memoryStream = new MemoryStream();
            memoryStream.Write(bytes, 0, bytes.Length);
            memoryStream.Position = 0;
            if (email != "admin")
            {
                _helper.InvoiceEmailSender(listingResult.Clientemail, "Faktura " + listingResult.InvoiceNumber, memoryStream);
            }
            //memoryStream.Close();

            // return new FileStreamResult(memoryStream,"application/pdf");

            return(View(listingResult));
        }