public void InitializeCollection() { OrderListItemsCollection = new ObservableCollection <OrderListItemModel>(); Context = new NiagaposEntities(); GetOrderListItemModel = new OrderListItemModel(); ProductListItemsCollection = new ObservableCollection <ProductListItemModel>(); GetProductListItemModel = new ProductListItemModel(); ConfirmOrderListItemsCollection = new ObservableCollection <ConfirmOrderListItemModel>(); GetConfirmOrderListItemModel = new ConfirmOrderListItemModel(); TransactionListItemsCollection = new ObservableCollection <TransactionDetailViewModel>(); GetTransactionListItemsModel = new TransactionDetailViewModel(); TransactionModelCollection = new ObservableCollection <Transaction>(); GetTransactionModel = new Transaction(); TransactionDetailModelCollection = new ObservableCollection <TransactionDetail>(); GetTransactionDetailModel = new TransactionDetail(); }
public async void ProcessAndPrintTransactionOrder() { Cash = Convert.ToDecimal(TouchPadNumber); if (Cash < TotalPay) { await DI.UI.ShowMessage(new MessageBoxDialogViewModel { Title = "Message", Message = "Opss.. nominal uang pembayaran tidak cukup!" }); return; } else { Change = Cash - TotalPay; var totalDisc = OrderListItemsCollection.Sum(s => s.Discount); foreach (var order in OrderListItemsCollection) { TransactionListItemsCollection.Add(new TransactionDetailViewModel { TransactionId = TransactionId, TransactionDetailId = TransactionDetailId, Bill = Bill, CustomerName = Name, User = User, CustomerId = CustomerId, PhoneNumber = PhoneNumber, Address = Address, DateAndTime = DateAndTime.ToString("yyyy/MM/dd hh:mm:ss"), Note = Note, Change = Change, Total = TotalPay, Cash = Cash, Disc = totalDisc, Quantity = TotalQuantity, ProductId = order.ProductId, PurchaseTotal = order.Quantity, UnitPrice = order.Price, TotalPayItem = order.Subtotal, }); } try { var rect = new Rectangle(190, 350); PdfDocument = new Document(rect); var writer = PdfWriter.GetInstance(PdfDocument, new FileStream(FilePath + FileName, FileMode.Create)); var font = new Font(Font.FontFamily.COURIER, 6f, 0, new BaseColor(System.Drawing.ColorTranslator.FromHtml("#333"))); PdfDocument.Open(); var transactionInfo = default(string); var date = DateTime.Now.ToString("yyyy/MM/dd"); var time = DateTime.Now.ToString("hh:mm:dd"); transactionInfo = $@" Nota : {Bill.ToString()} Tanggal : {date} Jam : {time} Kasir : {User.ToString() ?? "System"} Pelanggan : {Name.ToString() ?? "Umum"} ------------------------------- Name Qty Subtotal "; var paragraph = new Paragraph(transactionInfo, font) { Alignment = Element.ALIGN_LEFT }; PdfDocument.Add(paragraph); var totalItem = 0; var text = ""; foreach (var dataOrder in OrderListItemsCollection) { text = $"{dataOrder.ProductName.ToString().Substring(0, 8) ?? dataOrder.ProductName.ToString().Substring(0, 6) } {dataOrder.Quantity.ToString() ?? "None"} {Convert.ToDecimal(dataOrder.Subtotal).ToString("C0") ?? "None"}"; paragraph = new Paragraph(text, font); PdfDocument.Add(paragraph); totalItem++; if (totalItem == OrderListItemsCollection.Count) { var lineText = "-------------------------------"; var line = new Phrase(lineText, font); PdfDocument.Add(line); text = $"Total : {Convert.ToDecimal(TotalPay).ToString("C0") ?? "0"}"; paragraph = new Paragraph(text, font); PdfDocument.Add(paragraph); text = $"Dibayar : {Convert.ToDecimal(Cash).ToString("C0") ?? "0"}"; paragraph = new Paragraph(text, font); PdfDocument.Add(paragraph); text = $"Kembali : {Convert.ToDecimal(Change).ToString("C0") ?? "0"}"; paragraph = new Paragraph(text, font); PdfDocument.Add(paragraph); paragraph = new Paragraph($"{Environment.NewLine}"); PdfDocument.Add(paragraph); paragraph = new Paragraph($"Catatan:", font); PdfDocument.Add(paragraph); paragraph = new Paragraph($"{Note.Substring(0, 27) ?? "Tidak ada catatan"}", font); PdfDocument.Add(paragraph); paragraph = new Paragraph($"{Environment.NewLine}"); PdfDocument.Add(paragraph); line = new Phrase(" Terimakasih telah berbelanja", font); PdfDocument.Add(line); paragraph = new Paragraph($"{Environment.NewLine}"); PdfDocument.Add(paragraph); } } if (TransactionListItemsCollection != null || TransactionListItemsCollection.Count >= 1) { foreach (var transaction in TransactionListItemsCollection) { var users = (from user in Context.Users where user.Name == User select user).ToList(); if (users.Count >= 1) { foreach (var user in users) { GetTransactionModel = new Transaction { TransactionId = transaction.TransactionId, Bill = transaction.Bill, Date = DateAndTime, GrandTotal = TotalPay, Cash = Cash, Note = Note, CustomerId = CustomerId ?? "None", UsersId = user.UserId ?? "System", }; var counter = 0; var rand = new Random(); GetTransactionDetailModel = new TransactionDetail { TransactionDetailId = $"TO{DateTime.Now.ToLocalTime().ToString("yyMM")}{counter = rand.Next(1000, 9999)}", TransactionId = transaction.TransactionId, ProductId = transaction.ProductId, PurchaseTotal = transaction.PurchaseTotal, UnitPrice = transaction.UnitPrice, Disc = transaction.Disc, Total = transaction.TotalPayItem, }; if (GetTransactionModel != null) { Context.Transactions.Add(GetTransactionModel); } if (GetTransactionDetailModel != null) { Context.TransactionDetails.Add(GetTransactionDetailModel); } Context.SaveChanges(); Process.Start(FilePath + FileName); await Task.Delay(TimeSpan.FromSeconds(0.5)); } } } } } catch (Exception Ex) { CoreDI.Logger.Log(Ex.Message); } finally { PdfDocument.Close(); OrderListItemsCollection.Clear(); TransactionDetailModelCollection.Clear(); TransactionModelCollection.Clear(); TransactionListItemsCollection.Clear(); LoadTransactionInfo(); Address = "-"; PhoneNumber = "-"; Name = "Umum"; } } }