// GET: SalesInvoices public ActionResult Index() { var salesInvoices = _salesInvoiceService.GetAllSalesInvoices(); var salesInvoiceViewModels = new List <SalesInvoiceViewModel>(); foreach (var salesInvoice in salesInvoices) { var salesInvoiceViewModel = new SalesInvoiceViewModel() { BranchId = salesInvoice.BranchId, CustomerId = salesInvoice.CustomerId, CustomerName = salesInvoice.Customer.FirstName + " " + salesInvoice.Customer.LastName, BranchName = salesInvoice.Branch.BranchName, DateSold = salesInvoice.DateSold, ReferenceNo = salesInvoice.ReferenceNo, SalesInvoiceId = salesInvoice.SalesInvoiceId, SalesType = salesInvoice.SalesType, UserId = salesInvoice.UserId, UserName = userManager.FindById(salesInvoice.UserId).FullName, Status = salesInvoice.Status }; salesInvoiceViewModels.Add(salesInvoiceViewModel); } ViewData["SalesList"] = new SelectList(_salesInvoiceService.GetAllSalesInvoices(), "SalesInvoiceId", "ReferenceNo"); return(View(salesInvoiceViewModels)); }
public ActionResult Create([Bind(Include = "CustomerId,SalesType,ReferenceNo")] SalesInvoiceViewModel salesInvoiceViewModel, int CustomerList, int BranchList, int?SalesTypeList) { if (ModelState.IsValid) { var exists = _salesInvoiceService.Get(t => t.ReferenceNo == salesInvoiceViewModel.ReferenceNo).FirstOrDefault(); if (exists != null) { return(View(salesInvoiceViewModel)); } MyIdentityDbContext db = new MyIdentityDbContext(); UserStore <MyIdentityUser> userStore = new UserStore <MyIdentityUser>(db); UserManager <MyIdentityUser> userManager = new UserManager <MyIdentityUser>(userStore); MyIdentityUser user = userManager.FindByName(HttpContext.User.Identity.Name); var salesInvoice = new SalesInvoice() { BranchId = BranchList, CustomerId = CustomerList, ReferenceNo = salesInvoiceViewModel.ReferenceNo, SalesType = SalesTypeList ?? 0, UserId = user.Id, DateSold = DateTime.Now, Status = "Draft" }; _salesInvoiceService.AddSalesInvoice(salesInvoice); return(RedirectToAction("Create", "SalesInvoices", new { id = salesInvoice.SalesInvoiceId })); } return(View(salesInvoiceViewModel)); }
public DeliveryOrderReportViewer() { InitializeComponent(); Type type = typeof(SalesInvoiceViewModel); //SalesInvoiceViewModel instance = (SalesInvoiceViewModel)Activator.CreateInstance(type); object obj = System.Runtime.Serialization.FormatterServices .GetUninitializedObject(type); _viewModel = (SalesInvoiceViewModel)obj; this.DataContext = obj; }
public async Task <PartialViewResult> ViewSalesInvoiceModal(int id) { var getSalesInvoiceForViewDto = await _salesInvoicesAppService.GetSalesInvoiceForView(id); var model = new SalesInvoiceViewModel() { SalesInvoice = getSalesInvoiceForViewDto.SalesInvoice , SalesOrderNumber = getSalesInvoiceForViewDto.SalesOrderNumber }; return(PartialView("_ViewSalesInvoiceModal", model)); }
public SalesInvoiceView(SalesInvoiceViewModel model) { InitializeComponent(); this.pandsViewModel = model; // this.pandsViewModel = PurchaseQuotationViewModel.GetInstance(); this.DataContext = this.pandsViewModel; if (pandsViewModel.SQDetailsEntity != null) { this.grdPandS.ItemsSource = this.pandsViewModel.SQDetailsEntity; } setDiscountColumn(pandsViewModel.IsHideDiscColumn); CustomGridLines.ItemsSource = DataGridTableCollection.GridLinesForm(8, 50).AsEnumerable(); }
public void Should_Success_Instantiate() { int id = 1; string salesInvoiceNo = "salesInvoiceNo test"; string vatType = "vatType test"; CurrencyViewModel cvm = new CurrencyViewModel(); SalesInvoiceViewModel viewModel = new SalesInvoiceViewModel() { Id = id, SalesInvoiceNo = salesInvoiceNo, VatType = vatType, Currency = cvm }; Assert.Equal(id, viewModel.Id); Assert.Equal(salesInvoiceNo, viewModel.SalesInvoiceNo); Assert.Equal(vatType, viewModel.VatType); Assert.Equal(cvm, viewModel.Currency); }
public ActionResult SalesAttachment(int id) { var salesInvoice = _salesInvoiceService.Get(t => t.SalesInvoiceId == id, null, "SalesLineItems").FirstOrDefault(); var salesInvoiceViewModel = new SalesInvoiceViewModel() { BranchId = salesInvoice.BranchId, CustomerId = salesInvoice.CustomerId, CustomerName = salesInvoice.Customer.FirstName + " " + salesInvoice.Customer.LastName, BranchName = salesInvoice.Branch.BranchName, DateSold = salesInvoice.DateSold, ReferenceNo = salesInvoice.ReferenceNo, SalesInvoiceId = salesInvoice.SalesInvoiceId, SalesType = salesInvoice.SalesType, UserId = salesInvoice.UserId, UserName = userManager.FindById(salesInvoice.UserId).FullName, Status = salesInvoice.Status }; var salesLineItemviewModels = new List <SalesInvoiceLineItemViewModel>(); foreach (var salesLineItem in salesInvoice.SalesLineItems) { var salesLineItemviewModel = new SalesInvoiceLineItemViewModel() { ProductId = salesLineItem.ProductId, Productname = _productService.FindBy(s => s.ProductcId == salesLineItem.ProductId).First().ProductName, Quantity = salesLineItem.Quantity, UnitPrice = salesLineItem.UnitPrice, TotalPrice = salesLineItem.Quantity * salesLineItem.UnitPrice }; salesLineItemviewModels.Add(salesLineItemviewModel); } ViewBag.GrandTotal = salesLineItemviewModels.Sum(t => t.TotalPrice); ViewBag.SalesLineItemViewModels = salesLineItemviewModels; return(View(salesInvoiceViewModel)); }
public SalesInvoiceView(SalesInvoiceViewModel model) { InitializeComponent(); this.pandsViewModel = model; // this.pandsViewModel = PurchaseQuotationViewModel.GetInstance(); this.DataContext = this.pandsViewModel; if (pandsViewModel.SQDetailsEntity != null) { this.grdPandS.ItemsSource = this.pandsViewModel.SQDetailsEntity; } if (pandsViewModel.MustCompare == true) { PART_TextBox.IsReadOnly = false; InvoiceDatepicker.IsEnabled = true; } else { btnNew.IsEnabled = false; PART_TextBox.IsReadOnly = true; InvoiceDatepicker.IsEnabled = false; } setDiscountColumn(pandsViewModel.IsHideDiscColumn); CustomGridLines.ItemsSource = DataGridTableCollection.GridLinesForm(8, 50).AsEnumerable(); }
public MemoryStream GeneratePdfTemplate(SalesInvoiceViewModel viewModel, int clientTimeZoneOffset) { const int MARGIN = 15; Font header_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 18); Font normal_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font Title_bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 10); Document document = new Document(PageSize.A4, MARGIN, MARGIN, MARGIN, MARGIN); MemoryStream stream = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); #region customViewModel double result = 0; double totalTax = 0; double totalPay = 0; var currencyLocal = ""; if (viewModel.Currency.Symbol == "Rp") { currencyLocal = "Rupiah"; } else if (viewModel.Currency.Symbol == "$") { currencyLocal = "Dollar"; } else { currencyLocal = viewModel.Currency.Symbol; } #endregion #region Header PdfPTable headerTable = new PdfPTable(2); PdfPTable headerTable1 = new PdfPTable(1); PdfPTable headerTable2 = new PdfPTable(1); PdfPTable headerTable3 = new PdfPTable(2); PdfPTable headerTable4 = new PdfPTable(2); headerTable.SetWidths(new float[] { 10f, 10f }); headerTable.WidthPercentage = 100; headerTable3.SetWidths(new float[] { 20f, 40f }); headerTable3.WidthPercentage = 80; headerTable4.SetWidths(new float[] { 10f, 40f }); headerTable4.WidthPercentage = 100; PdfPCell cellHeader1 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader3 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader4 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderCS2 = new PdfPCell() { Border = Rectangle.NO_BORDER, Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER }; cellHeaderBody.Phrase = new Phrase("PT. DAN LIRIS", Title_bold_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Head Office : Jl. Merapi No. 23 Banaran, Grogol", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Sukoharjo, 57552 Central Java, Indonesia", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Telp :(+62 271) 740888, 714400", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Fax :(+62 271) 740777, 735222", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("PO BOX 116 Solo, 57100", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Web: www.danliris.com", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeader1.AddElement(headerTable1); headerTable.AddCell(cellHeader1); cellHeaderBody2.HorizontalAlignment = Element.ALIGN_CENTER; cellHeaderBody2.Phrase = new Phrase("FM-PJ-00-03-007", bold_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("Sukoharjo, " + viewModel.SalesInvoiceDate?.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")), normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("" + viewModel.Buyer.Name, normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("" + viewModel.Buyer.Address, normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeader2.AddElement(headerTable2); headerTable.AddCell(cellHeader2); cellHeaderCS2.Phrase = new Phrase("FAKTUR PENJUALAN", header_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase($"No. {viewModel.SalesInvoiceType}{viewModel.AutoIncreament.ToString().PadLeft(6, '0')}", bold_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); cellHeaderBody.HorizontalAlignment = Element.ALIGN_LEFT; cellHeaderBody.Phrase = new Phrase("NPWP ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": 01.139.907.8.532.000", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("NPPKP ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": 01.139.907.8.532.000", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("No Index Debitur ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.Buyer.Code, normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeader3.AddElement(headerTable3); headerTable.AddCell(cellHeader3); cellHeaderBody.Phrase = new Phrase("NIK", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.Buyer.NIK, normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("NPWP Buyer", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.Buyer.NPWP, normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeader4.AddElement(headerTable4); headerTable.AddCell(cellHeader4); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); document.Add(headerTable); #endregion Header #region Body PdfPTable bodyTable = new PdfPTable(7); PdfPCell bodyCell = new PdfPCell(); float[] widthsBody = new float[] { 6f, 22f, 6f, 6f, 10f, 8f, 10f }; bodyTable.SetWidths(widthsBody); bodyTable.WidthPercentage = 100; bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase("Kode", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Nama Barang", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Banyak", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Jumlah", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Satuan", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Harga", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("QuantityItem", bold_font); bodyTable.AddCell(bodyCell); foreach (var detail in viewModel.SalesInvoiceDetails) { foreach (var item in detail.SalesInvoiceItems) { bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.ProductCode, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.ProductName, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.QuantityPacking + " " + item.PackingUom, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.QuantityItem.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.ItemUom, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.Price.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.Amount.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); } } foreach (var item in viewModel.SalesInvoiceDetails) { foreach (var amount in item.SalesInvoiceItems) { result += amount.Amount.GetValueOrDefault(); } } totalTax = result * 0.1; totalPay = totalTax + result; document.Add(bodyTable); #endregion Body #region Footer var dueDate = viewModel.DueDate.Value.Date; var salesInvoiceDate = viewModel.SalesInvoiceDate.Value.Date; var tempo = (dueDate - salesInvoiceDate).ToString("dd"); CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; TextInfo textInfo = cultureInfo.TextInfo; string TotalPayWithVat = textInfo.ToTitleCase(NumberToTextIDN.terbilang(totalPay)); string TotalPayWithoutVat = textInfo.ToTitleCase(NumberToTextIDN.terbilang(result)); //string TotalPayWithVat = NumberToTextIDN.terbilang(totalPay); //string TotalPayWithoutVat = NumberToTextIDN.terbilang(result); PdfPTable footerTable = new PdfPTable(2); PdfPTable footerTable1 = new PdfPTable(1); PdfPTable footerTable2 = new PdfPTable(2); PdfPTable footerTable3 = new PdfPTable(2); footerTable.SetWidths(new float[] { 10f, 10f }); footerTable.WidthPercentage = 100; footerTable1.WidthPercentage = 100; footerTable2.SetWidths(new float[] { 10f, 50f }); footerTable2.WidthPercentage = 100; footerTable3.SetWidths(new float[] { 30f, 50f }); footerTable3.WidthPercentage = 100; PdfPCell cellFooterLeft1 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellFooterLeft2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellFooterLeft3 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderFooter = new PdfPCell() { Border = Rectangle.NO_BORDER }; cellHeaderFooter.HorizontalAlignment = Element.ALIGN_LEFT; cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Tempo", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + tempo + " Hari", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jth. Tempo", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.DueDate?.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")), normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("SJ No.", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.DeliveryOrderNo, normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellFooterLeft2.AddElement(footerTable2); footerTable.AddCell(cellFooterLeft2); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Dasar pengenaan pajak", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + result.ToString("N2"), normal_font); footerTable3.AddCell(cellHeaderFooter); if (viewModel.VatType.Equals("PPN Umum")) { cellHeaderFooter.Phrase = new Phrase("PPN 10%", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalTax.ToString("N2"), normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalPay.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } else if (viewModel.VatType.Equals("PPN Kawasan Berikat")) { cellHeaderFooter.Phrase = new Phrase("PPN", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": Tarif PPN 0% (Berfasilitas)", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalPay.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } else if (viewModel.VatType.Equals("PPN BUMN")) { cellHeaderFooter.Phrase = new Phrase("PPN 10%", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalTax.ToString("N2") + " (Dibayar terpisah)", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + result.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } else if (viewModel.VatType.Equals("PPN Retail")) { cellHeaderFooter.Phrase = new Phrase("PPN 10%", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalTax.ToString("N2"), normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + totalPay.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } else { cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.Currency.Symbol + " " + result.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellFooterLeft3.AddElement(footerTable3); footerTable.AddCell(cellFooterLeft3); document.Add(footerTable); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); if (viewModel.VatType.Equals("PPN Umum")) { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithVat + " " + currencyLocal, normal_font); footerTable1.AddCell(cellFooterLeft1); } else if (viewModel.VatType.Equals("PPN Kawasan Berikat")) { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithVat + " " + currencyLocal, normal_font); footerTable1.AddCell(cellFooterLeft1); } else if (viewModel.VatType.Equals("PPN BUMN")) { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithoutVat + " " + currencyLocal, normal_font); footerTable1.AddCell(cellFooterLeft1); } else if (viewModel.VatType.Equals("PPN Retail")) { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithVat + " " + currencyLocal, normal_font); footerTable1.AddCell(cellFooterLeft1); } //else //{ // cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithoutVat + " " + currencyLocal, normal_font); // footerTable1.AddCell(cellFooterLeft1); //} cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); cellFooterLeft1.Phrase = new Phrase("Catatan : " + viewModel.Remark, bold_font); footerTable1.AddCell(cellFooterLeft1); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); PdfPTable signatureTable = new PdfPTable(4); PdfPCell signatureCell = new PdfPCell() { HorizontalAlignment = Element.ALIGN_CENTER }; float[] widthsSignature = new float[] { 6f, 6f, 6f, 6f }; signatureTable.SetWidths(widthsSignature); signatureTable.WidthPercentage = 30; signatureCell.Phrase = new Phrase("Tanda terima :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Dibuat oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Diperiksa oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Disetujui oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); footerTable1.AddCell(new PdfPCell(signatureTable)); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); document.Add(footerTable1); #endregion Footer document.Close(); byte[] byteInfo = stream.ToArray(); stream.Write(byteInfo, 0, byteInfo.Length); stream.Position = 0; return(stream); }
public MemoryStream GeneratePdfTemplate(SalesInvoiceViewModel viewModel, int clientTimeZoneOffset) { const int MARGIN = 15; Font header_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 18); Font normal_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Document document = new Document(PageSize.A4, MARGIN, MARGIN, MARGIN, MARGIN); MemoryStream stream = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); #region Header PdfPTable headerTable = new PdfPTable(2); headerTable.SetWidths(new float[] { 10f, 10f }); headerTable.WidthPercentage = 100; PdfPTable headerTable1 = new PdfPTable(1); PdfPTable headerTable2 = new PdfPTable(1); PdfPTable headerTable3 = new PdfPTable(2); headerTable3.SetWidths(new float[] { 40f, 70f }); headerTable3.WidthPercentage = 50; PdfPTable headerTable4 = new PdfPTable(2); headerTable4.SetWidths(new float[] { 25f, 40f }); headerTable4.WidthPercentage = 50; PdfPCell cellHeader1 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader3 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader4 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderCS2 = new PdfPCell() { Border = Rectangle.NO_BORDER, Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER }; cellHeaderBody.Phrase = new Phrase("PT. DANLIRIS", bold_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Kel. Banaran (Sel. Lawehan), Telp. (0271) -714400", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Sukoharjo - Indonesia", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeader1.AddElement(headerTable1); headerTable.AddCell(cellHeader1); cellHeaderBody2.HorizontalAlignment = Element.ALIGN_RIGHT; cellHeaderBody2.Phrase = new Phrase("FM-PJ-00-03-008", bold_font); headerTable2.AddCell(cellHeaderBody2); cellHeader2.AddElement(headerTable2); headerTable.AddCell(cellHeader2); cellHeaderCS2.Phrase = new Phrase("SURAT JALAN", header_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase("No. " + viewModel.DeliveryOrderNo, bold_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); cellHeaderBody.HorizontalAlignment = Element.ALIGN_LEFT; cellHeaderBody.Phrase = new Phrase("Kepada Yth. ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.Buyer.Name, normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Alamat", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.Buyer.Address, normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeader3.AddElement(headerTable3); headerTable.AddCell(cellHeader3); cellHeaderBody.Phrase = new Phrase("No. Fakt./Inv.", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase($": {viewModel.SalesInvoiceType}{viewModel.AutoIncreament.ToString().PadLeft(6, '0')}", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Tgl. Fakt./Inv.", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.SalesInvoiceDate?.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")), normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeader4.AddElement(headerTable4); headerTable.AddCell(cellHeader4); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); document.Add(headerTable); #endregion Header int index = 1; #region Body PdfPTable bodyTable = new PdfPTable(4); PdfPCell bodyCell = new PdfPCell(); float[] widthsBody = new float[] { 3f, 15f, 7f, 8f }; bodyTable.SetWidths(widthsBody); bodyTable.WidthPercentage = 100; bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase("No.", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Nama Barang", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Jumlah", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Keterangan", bold_font); bodyTable.AddCell(bodyCell); foreach (var detail in viewModel.SalesInvoiceDetails) { foreach (var item in detail.SalesInvoiceItems) { bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.VerticalAlignment = Element.ALIGN_TOP; bodyCell.Phrase = new Phrase((index++).ToString(), normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.ProductName, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.QuantityItem.GetValueOrDefault().ToString("N2") + " " + item.ItemUom, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.QuantityPacking.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); } } document.Add(bodyTable); #endregion Body #region Footer PdfPTable footerTable = new PdfPTable(1); PdfPCell cellFooterLeft = new PdfPCell() { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT }; footerTable.WidthPercentage = 100; cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("Catatan : " + viewModel.Remark, bold_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("Kami harap Surat Jalan ini dikirim kembali kepada kami. Terima kasih.\n\n\n", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); PdfPTable signatureTable = new PdfPTable(3); PdfPCell signatureCell = new PdfPCell() { HorizontalAlignment = Element.ALIGN_CENTER }; var DateTimeNow = DateTimeOffset.Now; signatureCell.Phrase = new Phrase("\nPenerima", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("\nAngkutan", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Sukoharjo, " + DateTimeNow.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")) + "\nHormat kami\nDiv. Pemasaran Textile", normal_font); signatureTable.AddCell(signatureCell); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); footerTable.AddCell(new PdfPCell(signatureTable)); cellFooterLeft.Phrase = new Phrase("", bold_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("Catatan :", bold_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("Packing diterima dalam keadaan baik/rusak.", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("Jumlah barang sesuai/tidak sesuai.", normal_font); footerTable.AddCell(cellFooterLeft); cellFooterLeft.Phrase = new Phrase("", normal_font); footerTable.AddCell(cellFooterLeft); document.Add(footerTable); #endregion Footer document.Close(); byte[] byteInfo = stream.ToArray(); stream.Write(byteInfo, 0, byteInfo.Length); stream.Position = 0; return(stream); }
// GET: SalesInvoices/Create public ActionResult Create(int?id, int?salesType) { MyIdentityDbContext db = new MyIdentityDbContext(); UserStore <MyIdentityUser> userStore = new UserStore <MyIdentityUser>(db); UserManager <MyIdentityUser> userManager = new UserManager <MyIdentityUser>(userStore); MyIdentityUser user = userManager.FindByName(HttpContext.User.Identity.Name); if (id != null && id != 0) { var salesInvoice = _salesInvoiceService.Get(t => t.SalesInvoiceId == id, null, "SalesLineItems").FirstOrDefault(); var salesInvoiceViewModel = new SalesInvoiceViewModel() { BranchId = salesInvoice.BranchId, CustomerId = salesInvoice.CustomerId, CustomerName = salesInvoice.Customer.FirstName + " " + salesInvoice.Customer.LastName, BranchName = salesInvoice.Branch.BranchName, DateSold = salesInvoice.DateSold, ReferenceNo = salesInvoice.ReferenceNo, SalesInvoiceId = salesInvoice.SalesInvoiceId, SalesType = salesInvoice.SalesType, UserId = salesInvoice.UserId, UserName = userManager.FindById(salesInvoice.UserId).FullName, Status = salesInvoice.Status }; ViewBag.UserName = user.FullName; ViewBag.BranchName = _branchService.FindById(user.BranchId).BranchName; ViewBag.CustomerList = new SelectList(_customerService.GetAllCustomers(), "CustomerId", "FirstName", salesInvoice.CustomerId); ViewBag.BranchList = new SelectList(_branchService.GetAllBranches(), "BranchId", "BranchName", salesInvoice.BranchId); ViewBag.SalesInvoiceId = salesInvoice.SalesInvoiceId; var salesLineItemviewModels = new List <SalesInvoiceLineItemViewModel>(); foreach (var salesLineItem in salesInvoice.SalesLineItems) { var salesLineItemviewModel = new SalesInvoiceLineItemViewModel() { SalesLineItemId = salesLineItem.SalesLineItemId, ProductId = salesLineItem.ProductId, Productname = _productService.FindBy(s => s.ProductcId == salesLineItem.ProductId).First().ProductName, Quantity = salesLineItem.Quantity, UnitPrice = salesLineItem.UnitPrice }; salesLineItemviewModels.Add(salesLineItemviewModel); } ViewData["CustomerList"] = new SelectList(_customerService.GetAllCustomers(), "CustomerId", "FirstName", salesInvoice.CustomerId); ViewData["ProductList"] = new SelectList(_productService.GetAllProducts(), "ProductcId", "ProductName", salesInvoice.CustomerId); ViewBag.SalesLineItemViewModels = salesLineItemviewModels; ViewBag.UserName = user.FullName; ViewBag.BranchName = _branchService.FindById(user.BranchId).BranchName; ViewBag.SalesType = salesInvoice.SalesType; return(View(salesInvoiceViewModel)); } ViewBag.UserName = user.FullName; ViewBag.BranchName = _branchService.FindById(user.BranchId).BranchName; if (salesType == 0) { ViewBag.CustomerList = new SelectList(_customerService.Get(t => t.Trusted).ToList(), "CustomerId", "FirstName"); } else { ViewBag.CustomerList = new SelectList(_customerService.GetAllCustomers(), "CustomerId", "FirstName"); } ViewBag.SalesType = salesType; ViewBag.BranchList = new SelectList(_branchService.GetAllBranches(), "BranchId", "BranchName"); return(View()); }
public SalesInvoicesReportViewer(SalesInvoiceViewModel model) : this() { InitializeComponent(); this.DataContext = _viewModelSales; _viewModelSales = model; }
public DeliveryOrderReportViewer(SalesInvoiceViewModel model):this() { InitializeComponent(); this.DataContext = _viewModel; _viewModel = model; }
public ActionResult Index() { MyIdentityDbContext db = new MyIdentityDbContext(); UserStore <MyIdentityUser> userStore = new UserStore <MyIdentityUser>(db); UserManager <MyIdentityUser> userManager = new UserManager <MyIdentityUser>(userStore); MyIdentityUser user = userManager.FindByName(HttpContext.User.Identity.Name); //MoencoPOSContext northwindDb = new MoencoPOSContext(); //List<AspNetUsers> model = null; //if (userManager.IsInRole(user.Id, "Administrator")) //{ // model = northwindDb.Customers.ToList(); //} //if (userManager.IsInRole(user.Id, "Operator")) //{ // model = northwindDb.Customers.Where(c => c.Country == "USA").ToList(); //} var salesInvoices = new List <SalesInvoice>(); if (user.Role == "Administrator") { salesInvoices = _salesInvoiceService.Get(t => t.Status == "Paid", null, "SalesLineItems").OrderByDescending(o => o.DateSold).ToList(); } else { salesInvoices = _salesInvoiceService.Get(t => t.BranchId == user.BranchId && t.Status == "Paid", null, "SalesLineItems").OrderByDescending(o => o.DateSold).ToList(); } var salesLineItems = new List <SalesLineItem>(); foreach (var salesInvoice in salesInvoices) { foreach (var sLI in salesInvoice.SalesLineItems) { salesLineItems.Add(sLI); } } var groupedSLIs = (from tr in salesLineItems group tr by new { tr.ProductId } into groupedSLI select new { ProductID = groupedSLI.Key.ProductId, ProductName = _productService.FindById(groupedSLI.Key.ProductId).ProductName, UnitPrice = _productService.FindById(groupedSLI.Key.ProductId).UnitPrice, QuantitySold = groupedSLI.Sum(p => p.Quantity) }); List <SalesReportViewModel> salesReportViewModels = (from groupedSLI in groupedSLIs let i = groupedSLI where i != null where i != null select new SalesReportViewModel() { ProductId = i.ProductID, ProductName = i.ProductName, QuantitySold = i.QuantitySold, UnitPrice = i.UnitPrice }).ToList(); ViewBag.GroupedSLIs = salesReportViewModels.Take(10); var allSalesInvoices = _salesInvoiceService.Get(t => t.Status == "Returned", null, "SalesLineItems").OrderByDescending(o => o.DateSold).ToList(); var salesInvoiceViewModels = new List <SalesInvoiceViewModel>(); foreach (var salesInvoice in allSalesInvoices) { var salesInvoiceViewModel = new SalesInvoiceViewModel() { BranchId = salesInvoice.BranchId, CustomerId = salesInvoice.CustomerId, CustomerName = salesInvoice.Customer.FirstName + " " + salesInvoice.Customer.LastName, BranchName = salesInvoice.Branch.BranchName, DateSold = salesInvoice.DateSold, ReferenceNo = salesInvoice.ReferenceNo, SalesInvoiceId = salesInvoice.SalesInvoiceId, SalesType = salesInvoice.SalesType, UserId = salesInvoice.UserId, UserName = userManager.FindById(salesInvoice.UserId).FullName, Status = salesInvoice.Status }; salesInvoiceViewModels.Add(salesInvoiceViewModel); } ViewBag.ReturnedSales = salesInvoiceViewModels.Take(10); var productReceives = _productReceiveService.GetAllProductReceive(); var productReceivesViewModels = new List <ProductReceiveViewModel>(); foreach (var productReceive in productReceives) { var productReceiveViewModel = new ProductReceiveViewModel() { BranchId = productReceive.BranchId, BranchName = productReceive.Branch.BranchName, DateReceived = productReceive.DateReceived, ProductReceiveId = productReceive.ProductReceiveId, UserId = productReceive.UserId, UserName = userManager.FindById(productReceive.UserId).FullName }; productReceivesViewModels.Add(productReceiveViewModel); } ViewBag.ReceivedStock = salesInvoiceViewModels.Take(10); var productTransfers = _productTransferService.GetAllProductTransfer(); var producttransferViewModels = new List <ProductTransferViewModel>(); foreach (var productTransfer in productTransfers) { var productTransferViewModel = new ProductTransferViewModel() { FromBranchId = productTransfer.FromBranchId, ToBranchId = productTransfer.ToBranchId, ProductTransferId = productTransfer.ProductTransferId, DateTransfered = productTransfer.DateTransfered, UserId = productTransfer.UserId, UserName = userManager.FindById(productTransfer.UserId).FullName }; productTransferViewModel.FromBranchName = _branchService.FindById(productTransferViewModel.FromBranchId).BranchName; productTransferViewModel.ToBranchName = _branchService.FindById(productTransferViewModel.ToBranchId).BranchName; producttransferViewModels.Add(productTransferViewModel); } ViewBag.TransferredStock = salesInvoiceViewModels.Take(10); if (user != null) { ViewBag.FullName = user.FullName; } else { ViewBag.FullName = "Admin"; } //return View(model); return(View()); }
public MemoryStream GeneratePdfTemplate(SalesInvoiceViewModel viewModel, int clientTimeZoneOffset) { const int MARGIN = 15; Font header_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 18); Font normal_font = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Font bold_font = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8); Document document = new Document(PageSize.A4, MARGIN, MARGIN, MARGIN, MARGIN); MemoryStream stream = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); #region customViewModel double result = 0; double totalTax = 0; double totalPay = 0; var currencyLocal = ""; if (viewModel.CurrencySymbol == "Rp") { currencyLocal = "Rupiah"; } else if (viewModel.CurrencySymbol == "$") { currencyLocal = "Dollar"; } else { currencyLocal = viewModel.CurrencySymbol; } #endregion #region Header PdfPTable headerTable = new PdfPTable(2); PdfPTable headerTable1 = new PdfPTable(1); PdfPTable headerTable2 = new PdfPTable(1); PdfPTable headerTable3 = new PdfPTable(2); PdfPTable headerTable4 = new PdfPTable(2); headerTable.SetWidths(new float[] { 10f, 10f }); headerTable.WidthPercentage = 100; headerTable3.SetWidths(new float[] { 20f, 40f }); headerTable3.WidthPercentage = 80; headerTable4.SetWidths(new float[] { 10f, 40f }); headerTable4.WidthPercentage = 100; PdfPCell cellHeader1 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader3 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeader4 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderBody2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderCS2 = new PdfPCell() { Border = Rectangle.NO_BORDER, Colspan = 2, HorizontalAlignment = Element.ALIGN_CENTER }; cellHeaderBody.Phrase = new Phrase("PT. DANLIRIS", bold_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Kel. Banaran (Sel. Lawehan), Telp. (0271) -740888, 714400", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("Sukoharjo - Indonesia", normal_font); headerTable1.AddCell(cellHeaderBody); cellHeader1.AddElement(headerTable1); headerTable.AddCell(cellHeader1); cellHeaderBody2.HorizontalAlignment = Element.ALIGN_CENTER; cellHeaderBody2.Phrase = new Phrase("FM-PJ-00-03-007", bold_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("Sukoharjo, " + viewModel.SalesInvoiceDate?.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")), normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("" + viewModel.BuyerName, normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeaderBody2.Phrase = new Phrase("" + viewModel.BuyerAddress, normal_font); headerTable2.AddCell(cellHeaderBody2); cellHeader2.AddElement(headerTable2); headerTable.AddCell(cellHeader2); cellHeaderCS2.Phrase = new Phrase("FAKTUR PENJUALAN", header_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase("No. " + viewModel.SalesInvoiceNo, bold_font); headerTable.AddCell(cellHeaderCS2); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); cellHeaderBody.HorizontalAlignment = Element.ALIGN_LEFT; cellHeaderBody.Phrase = new Phrase("NPWP ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": 01.139.907.8.532.000", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("NPPKP ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": 01.139.907.8.532.000", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("No Index Debitur ", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.DebtorIndexNo, normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable3.AddCell(cellHeaderBody); cellHeader3.AddElement(headerTable3); headerTable.AddCell(cellHeader3); cellHeaderBody.Phrase = new Phrase("NIK", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.IDNo, normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("NPWP Buyer", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase(": " + viewModel.BuyerNPWP, normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeaderBody.Phrase = new Phrase("", normal_font); headerTable4.AddCell(cellHeaderBody); cellHeader4.AddElement(headerTable4); headerTable.AddCell(cellHeader4); cellHeaderCS2.Phrase = new Phrase("", normal_font); headerTable.AddCell(cellHeaderCS2); document.Add(headerTable); #endregion Header #region Body PdfPTable bodyTable = new PdfPTable(7); PdfPCell bodyCell = new PdfPCell(); float[] widthsBody = new float[] { 5f, 12f, 7f, 7f, 5f, 10f, 10f }; bodyTable.SetWidths(widthsBody); bodyTable.WidthPercentage = 100; bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase("Kode", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Nama Barang", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Banyak", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Jumlah", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Sat", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Harga Satuan", bold_font); bodyTable.AddCell(bodyCell); bodyCell.Phrase = new Phrase("Total", bold_font); bodyTable.AddCell(bodyCell); foreach (SalesInvoiceDetailViewModel item in viewModel.SalesInvoiceDetails) { bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.UnitCode, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.UnitName, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_LEFT; bodyCell.Phrase = new Phrase(item.Quantity + " " + item.UomUnit, normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.Total.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase("Yard(s)", normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.UnitPrice.GetValueOrDefault().ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); bodyCell.HorizontalAlignment = Element.ALIGN_CENTER; bodyCell.Phrase = new Phrase(item.Amount.ToString("N2"), normal_font); bodyTable.AddCell(bodyCell); } foreach (var amount in viewModel.SalesInvoiceDetails) { result += amount.Amount; } totalTax = result * 0.1; totalPay = totalTax + result; document.Add(bodyTable); #endregion Body #region Footer var dueDate = viewModel.DueDate.Value.Date; var salesInvoiceDate = viewModel.SalesInvoiceDate.Value.Date; var tempo = (dueDate - salesInvoiceDate).ToString("dd"); string TotalPayWithVat = NumberToTextIDN.terbilang(totalPay); string TotalPayWithoutVat = NumberToTextIDN.terbilang(result); PdfPTable footerTable = new PdfPTable(2); PdfPTable footerTable1 = new PdfPTable(1); PdfPTable footerTable2 = new PdfPTable(2); PdfPTable footerTable3 = new PdfPTable(2); footerTable.SetWidths(new float[] { 10f, 10f }); footerTable.WidthPercentage = 100; footerTable1.WidthPercentage = 100; footerTable2.SetWidths(new float[] { 10f, 50f }); footerTable2.WidthPercentage = 100; footerTable3.SetWidths(new float[] { 30f, 50f }); footerTable3.WidthPercentage = 100; PdfPCell cellFooterLeft1 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellFooterLeft2 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellFooterLeft3 = new PdfPCell() { Border = Rectangle.NO_BORDER }; PdfPCell cellHeaderFooter = new PdfPCell() { Border = Rectangle.NO_BORDER }; cellHeaderFooter.HorizontalAlignment = Element.ALIGN_LEFT; cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Tempo", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + tempo + " Hari", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jth. Tempo", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.DueDate?.AddHours(clientTimeZoneOffset).ToString("dd MMMM yyyy", new CultureInfo("id-ID")), normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("SJ No.", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.DeliveryOrderNo, normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable2.AddCell(cellHeaderFooter); cellFooterLeft2.AddElement(footerTable2); footerTable.AddCell(cellFooterLeft2); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Dasar pengenaan pajak", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.CurrencySymbol + " " + result.ToString("N2"), normal_font); footerTable3.AddCell(cellHeaderFooter); if (viewModel.UseVat.Equals(true)) { cellHeaderFooter.Phrase = new Phrase("PPN 10%", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.CurrencySymbol + " " + totalTax.ToString("N2"), normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.CurrencySymbol + " " + totalPay.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } else { cellHeaderFooter.Phrase = new Phrase("Jumlah", bold_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase(": " + viewModel.CurrencySymbol + " " + result.ToString("N2"), bold_font); footerTable3.AddCell(cellHeaderFooter); } cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellHeaderFooter.Phrase = new Phrase("", normal_font); footerTable3.AddCell(cellHeaderFooter); cellFooterLeft3.AddElement(footerTable3); footerTable.AddCell(cellFooterLeft3); document.Add(footerTable); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); if (viewModel.UseVat.Equals(true)) { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithVat + " " + currencyLocal, bold_font); footerTable1.AddCell(cellFooterLeft1); } else { cellFooterLeft1.Phrase = new Phrase("Terbilang : " + TotalPayWithoutVat + " " + currencyLocal, bold_font); footerTable1.AddCell(cellFooterLeft1); } cellFooterLeft1.Phrase = new Phrase("Catatan : " + viewModel.Remark, bold_font); footerTable1.AddCell(cellFooterLeft1); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); PdfPTable signatureTable = new PdfPTable(4); PdfPCell signatureCell = new PdfPCell() { HorizontalAlignment = Element.ALIGN_CENTER }; signatureCell.Phrase = new Phrase("Tanda terima :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Dibuat oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Diperiksa oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureCell.Phrase = new Phrase("Disetujui oleh :", normal_font); signatureTable.AddCell(signatureCell); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); signatureTable.AddCell(new PdfPCell() { Phrase = new Phrase("---------------------------------", normal_font), FixedHeight = 40, VerticalAlignment = Element.ALIGN_BOTTOM, HorizontalAlignment = Element.ALIGN_CENTER }); footerTable1.AddCell(new PdfPCell(signatureTable)); cellFooterLeft1.Phrase = new Phrase("", normal_font); footerTable1.AddCell(cellFooterLeft1); document.Add(footerTable1); #endregion Footer document.Close(); byte[] byteInfo = stream.ToArray(); stream.Write(byteInfo, 0, byteInfo.Length); stream.Position = 0; return(stream); }