Пример #1
0
        public async Task <ActionResult> printInvoice([FromBody]  printInvoiceRequest printInvoiceRequest)
        {
            try
            {
                var items = await(from o in db.TbtOrder
                                  where o.DocNum == printInvoiceRequest.DocNum
                                  join g in db.TbmItemGroup on o.ItemCode.Trim().Substring(0, 1) equals g.ItemGrpPrefix.Trim()
                                  select new { o, g }).ToListAsync();
                List <InvoiceItem> InvoiceItems = new List <InvoiceItem>();
                items.ForEach(x =>
                {
                    InvoiceItem l = new InvoiceItem
                    {
                        Dscription  = x.o.Dscription,
                        ItemCode    = x.o.ItemCode,
                        Price       = (double)x.o.Price,
                        Qty         = (double)x.o.Quantity,
                        ItemGrpCode = x.g.ItemGrpCode,
                        ItemGrpName = x.g.ItemGrpName
                    };
                    InvoiceItems.Add(l);
                });
                InvoiceDocumentModel invoiceDocumentModel = new InvoiceDocumentModel
                {
                    Address      = items.FirstOrDefault().o.Address,
                    CardName     = items.FirstOrDefault().o.CardName,
                    CardCode     = items.FirstOrDefault().o.CardCode.ToString(),
                    DocDate      = items.FirstOrDefault().o.DocDate,
                    DocDueDate   = items.FirstOrDefault().o.DocDueDate,
                    DocNum       = printInvoiceRequest.DocNum,
                    invoiceitems = InvoiceItems,
                    Remark       = items.FirstOrDefault().o.Remark,
                    County       = items.FirstOrDefault().o.County
                };


                InvoiceDocument pDoc = new InvoiceDocument(this._hostingEnvironment);

                Stream resultPDFStream = pDoc.CreatePDF(invoiceDocumentModel);
                resultPDFStream.Position = 0;
                if (resultPDFStream.Length != 0)
                {
                    FileStreamResult fileStreamResult = new FileStreamResult(resultPDFStream, "application/pdf");
                    fileStreamResult.FileDownloadName = "Invoice_" + "" + ".pdf";


                    return(fileStreamResult);
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }
Пример #2
0
        public Stream CreatePDF(InvoiceDocumentModel invoiceDocumentModel)
        {
            System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
            Document  document = this._document;
            PdfWriter writer   = PdfWriter.GetInstance(document, memoryStream);

            document.Open();

            PdfPTable table = new PdfPTable(1);

            table.WidthPercentage = 95f;
            table.HeaderRows      = 1;
            //table.FooterRows = 2;


            PdfPTable tabletitle = new PdfPTable(4);

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_LEFT));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.County, 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.CardCode + " เลขประจำตัวผู้เสียภาษี", 10, 1, Element.ALIGN_LEFT));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.CardName, 10, 1, Element.ALIGN_LEFT));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.Address, 10, 1, Element.ALIGN_LEFT, 2));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDueDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("ขายส่ง", 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.Address, 10, 1, Element.ALIGN_LEFT, 2));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("60 วัน", 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail(invoiceDocumentModel.DocDueDate.Value.ToString("dd/MM/yyyy"), 10, 1, Element.ALIGN_LEFT));

            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            tabletitle.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
            table.AddCell(tabletitle);

            int count = 1;

            float[]   widthBoxs   = new float[] { 7f, 15F, 47F, 7f, 7f, 7f, 10f };
            PdfPTable tableDetail = new PdfPTable(widthBoxs.Count());

            tableDetail.WidthPercentage = 95f;
            foreach (var item in invoiceDocumentModel.invoiceitems)
            {
                tableDetail.AddCell(bulidColumnDetail(count + ":" + item.ItemGrpCode, 10, 1, Element.ALIGN_CENTER));
                tableDetail.AddCell(bulidColumnDetail(item.ItemCode, 10, 1, Element.ALIGN_CENTER));
                tableDetail.AddCell(bulidColumnDetail(item.Dscription, 10, 1, Element.ALIGN_LEFT));
                tableDetail.AddCell(bulidColumnDetail(item.Qty.ToString(), 10, 1, Element.ALIGN_RIGHT));
                tableDetail.AddCell(bulidColumnDetail(item.Price.ToString(), 10, 1, Element.ALIGN_RIGHT));
                tableDetail.AddCell(bulidColumnDetail("%", 10, 1, Element.ALIGN_CENTER));
                tableDetail.AddCell(bulidColumnDetail((item.Qty * item.Price).ToString(), 10, 1, Element.ALIGN_RIGHT));
                if (count == 12)
                {
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail(NumberToText.ThaiBahtText(invoiceDocumentModel.invoiceitems.Select(x => x.Qty).Sum().ToString()), 10, 1, Element.ALIGN_LEFT));
                    tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty).Sum().ToString(), 10, 1, Element.ALIGN_RIGHT));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty * x.Price).Sum().ToString("n2"), 10, 1, Element.ALIGN_RIGHT));

                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.Remark, 10, 3, Element.ALIGN_LEFT, 2));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));

                    tableDetail.AddCell(bulidColumnDetail("", 10, 2, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail(invoiceDocumentModel.invoiceitems.Select(x => x.Qty * x.Price).Sum().ToString("n2"), 10, 1, Element.ALIGN_RIGHT));

                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnDetail("", 10, 1, Element.ALIGN_CENTER));
                    tableDetail.AddCell(bulidColumnFooster(3, Element.ALIGN_RIGHT));


                    table.AddCell(tableDetail);


                    document.NewPage();
                    document.Add(table);
                    tableDetail = new PdfPTable(widthBoxs.Count());
                    tableDetail.WidthPercentage = 95f;
                    count = 0;
                }
                count++;
            }



            //PdfPTable tablefooster = new PdfPTable(widthBoxs.Count());
            //tablefooster.WidthPercentage = 95f;

            document.Close();
            return(memoryStream);
        }