private static IEnumerable <string> GetFormattedLines(IEnumerable <TicketItem> lines, PrinterTemplate template) { if (!string.IsNullOrEmpty(template.GroupTemplate)) { if (template.GroupTemplate.Contains("{PRODUCT GROUP}")) { var groups = lines.GroupBy(GetMenuItemGroup); var result = new List <string>(); foreach (var grp in groups) { var grpSep = template.GroupTemplate.Replace("{PRODUCT GROUP}", grp.Key); result.AddRange(grpSep.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); result.AddRange(grp.SelectMany(x => FormatLines(template, x).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))); } return(result); } if (template.GroupTemplate.Contains("{PRODUCT TAG}")) { var groups = lines.GroupBy(GetMenuItemTag); var result = new List <string>(); foreach (var grp in groups) { var grpSep = template.GroupTemplate.Replace("{PRODUCT TAG}", grp.Key); result.AddRange(grpSep.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); result.AddRange(grp.SelectMany(x => FormatLines(template, x).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))); } return(result); } if (template.GroupTemplate.Contains("{ITEM TAG}")) { var groups = lines.GroupBy(x => (x.Tag ?? "").Split('|')[0]); var result = new List <string>(); foreach (var grp in groups) { var grpSep = template.GroupTemplate.Replace("{ITEM TAG}", grp.Key); result.AddRange(grpSep.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); result.AddRange(grp.SelectMany(x => FormatLines(template, x).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))); } return(result); } if (template.GroupTemplate.Contains("{ORDER NO}")) { var groups = lines.GroupBy(x => x.OrderNumber); var result = new List <string>(); foreach (var grp in groups) { var grpSep = template.GroupTemplate.Replace("{ORDER NO}", grp.Key.ToString()); result.AddRange(grpSep.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); result.AddRange(grp.SelectMany(x => FormatLines(template, x).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))); } return(result); } } return(lines.SelectMany(x => FormatLines(template, x).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)).ToArray()); }
protected override string ReplaceTemplateValues(string templatePart, Ticket model, PrinterTemplate template) { var result = _preCalculationValueChanger.Replace(template, templatePart, model.Calculations.Where(x => !x.IncludeTax)); result = _postCalculationValueChanger.Replace(template, result, model.Calculations.Where(x => x.IncludeTax)); result = _paymentValueChanger.Replace(template, result, model.Payments); result = _changePaymentValueChanger.Replace(template, result, model.ChangePayments); result = _entityValueChanger.Replace(template, result, model.TicketEntities); result = _taxValueChanger.Replace(template, result, GetTaxValues(model)); result = _orderValueChanger.Replace(template, result, model.Orders); return(result); }
public string[] GetFormattedDocument(object item, PrinterTemplate printerTemplate) { return(GetFormattedDocument(item as Entity, printerTemplate)); }
public static string[] GetFormattedTicket(Ticket ticket, IEnumerable <TicketItem> lines, PrinterTemplate template) { if (template.MergeLines) { lines = MergeLines(lines); } var orderNo = lines.Count() > 0 ? lines.ElementAt(0).OrderNumber : 0; var userNo = lines.Count() > 0 ? lines.ElementAt(0).CreatingUserId : 0; var departmentNo = lines.Count() > 0 ? lines.ElementAt(0).DepartmentId : ticket.DepartmentId; var header = ReplaceDocumentVars(template.HeaderTemplate, ticket, orderNo, userNo, departmentNo); var footer = ReplaceDocumentVars(template.FooterTemplate, ticket, orderNo, userNo, departmentNo); var lns = GetFormattedLines(lines, template); var result = header.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList(); result.AddRange(lns); result.AddRange(footer.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)); return(result.ToArray()); }
protected virtual string ReplaceTemplateValues(string templatePart, T model, PrinterTemplate template) { return(templatePart); }
public string Replace(PrinterTemplate template, string content, IEnumerable <T> models) { return(Helper.FormatData(content, "{" + GetTargetTag() + "}", () => GetValue(template, models.OrderBy(x => GetModelOrder(template, x))))); }
public void CreateData() { CreateDefaultCurrenciesIfNeeded(); if (!ShouldCreateData()) { return; } var screen = new ScreenMenu(); _workspace.Add(screen); var ticketNumerator = new Numerator { Name = Resources.TicketNumerator }; _workspace.Add(ticketNumerator); var orderNumerator = new Numerator { Name = Resources.OrderNumerator }; _workspace.Add(orderNumerator); _workspace.CommitChanges(); var department = new Department { Name = Resources.Restaurant, ScreenMenuId = screen.Id, TicketNumerator = ticketNumerator, OrderNumerator = orderNumerator, IsAlaCarte = true }; _workspace.Add(department); var role = new UserRole("Admin") { IsAdmin = true, DepartmentId = 1 }; _workspace.Add(role); var u = new User("Administrator", "1234") { UserRole = role }; _workspace.Add(u); var ticketTemplate = new PrinterTemplate(); ticketTemplate.Name = Resources.TicketTemplate; ticketTemplate.HeaderTemplate = Resources.TicketTemplateHeaderValue; ticketTemplate.LineTemplate = Resources.TicketTempleteLineTemplateValue; ticketTemplate.GiftLineTemplate = Resources.TicketTemplateGiftedLineTemplateValue; ticketTemplate.FooterTemplate = Resources.TicketTemplateFooterValue; var kitchenTemplate = new PrinterTemplate(); kitchenTemplate.Name = Resources.KitchenOrderTemplate; kitchenTemplate.HeaderTemplate = Resources.KitchenTemplateHeaderValue; kitchenTemplate.LineTemplate = Resources.KitchenTemplateLineTemplateValue; kitchenTemplate.GiftLineTemplate = Resources.KitchenTemplateLineTemplateValue; kitchenTemplate.VoidedLineTemplate = Resources.KitchenTemplateVoidedLineTemplateValue; kitchenTemplate.FooterTemplate = "<F>-"; var invoiceTemplate = new PrinterTemplate(); invoiceTemplate.Name = Resources.InvoicePrinterTemplate; invoiceTemplate.HeaderTemplate = Resources.InvoiceTemplateHeaderValue; invoiceTemplate.LineTemplate = Resources.InvoiceTemplateLineTemplateValue; invoiceTemplate.VoidedLineTemplate = ""; invoiceTemplate.FooterTemplate = "<F>-"; _workspace.Add(ticketTemplate); _workspace.Add(kitchenTemplate); _workspace.Add(invoiceTemplate); var printer1 = new Printer { Name = Resources.TicketPrinter }; var printer2 = new Printer { Name = Resources.KitchenPrinter }; var printer3 = new Printer { Name = Resources.InvoicePrinter }; _workspace.Add(printer1); _workspace.Add(printer2); _workspace.Add(printer3); var t = new Terminal { IsDefault = true, Name = Resources.Server, SlipReportPrinter = printer1, }; var pm1 = new PrinterMap { Printer = printer1, PrinterTemplate = ticketTemplate }; _workspace.Add(pm1); var pj1 = new PrintJob { Name = Resources.PrintBill, ButtonText = Resources.PrintBill, LocksTicket = true, Order = 0, UseFromPaymentScreen = true, UseFromTerminal = true, UseFromPos = true, WhatToPrint = (int)WhatToPrintTypes.Everything, WhenToPrint = (int)WhenToPrintTypes.Manual }; pj1.PrinterMaps.Add(pm1); _workspace.Add(pj1); var pm2 = new PrinterMap { Printer = printer2, PrinterTemplate = kitchenTemplate }; var pj2 = new PrintJob { Name = Resources.PrintOrdersToKitchenPrinter, ButtonText = "", Order = 1, WhatToPrint = (int)WhatToPrintTypes.NewLines, WhenToPrint = (int)WhenToPrintTypes.NewLinesAdded }; pj2.PrinterMaps.Add(pm2); _workspace.Add(pj2); t.PrintJobs.Add(pj1); t.PrintJobs.Add(pj2); _workspace.Add(t); ImportMenus(screen); ImportTables(department); _workspace.CommitChanges(); _workspace.Dispose(); }
protected override string ReplaceTemplateValues(string templatePart, AccountTransactionDocument model, PrinterTemplate template) { var result = _accountTransactionValueChanger.Replace(template, templatePart, model.AccountTransactions); return(result); }
private static bool ShouldSkipPrint(Printer printer, IEnumerable <Order> lns, PrinterTemplate prinerTemplate) { if (printer == null || string.IsNullOrEmpty(printer.ShareName) || prinerTemplate == null) { return(true); } if (printer.IsCustomPrinter) { return(false); } return(!lns.Any() && prinerTemplate.Template.Contains("{ORDERS}")); }
protected override string ReplaceTemplateValues(string templatePart, Order model, PrinterTemplate template) { return(OrderTagValueChanger.Replace(template, templatePart, model.OrderTagValues.Where(x => !x.SubValue))); }
public void CreateData() { CreateDefaultCurrenciesIfNeeded(); if (!ShouldCreateData()) { return; } var saleAccountType = new AccountType { Name = string.Format(Resources.Accounts_f, Resources.Sales) }; var receivableAccountType = new AccountType { Name = string.Format(Resources.Accounts_f, Resources.Receiveable) }; var paymentAccountType = new AccountType { Name = string.Format(Resources.Accounts_f, Resources.Payment) }; var discountAccountType = new AccountType { Name = string.Format(Resources.Accounts_f, Resources.Discount) }; var customerAccountType = new AccountType { Name = string.Format(Resources.Accounts_f, Resources.Customer) }; _workspace.Add(receivableAccountType); _workspace.Add(saleAccountType); _workspace.Add(paymentAccountType); _workspace.Add(discountAccountType); _workspace.Add(customerAccountType); _workspace.CommitChanges(); var customerEntityType = new EntityType { Name = Resources.Customers, EntityName = Resources.Customer, AccountTypeId = customerAccountType.Id, PrimaryFieldName = Resources.Name }; customerEntityType.EntityCustomFields.Add(new EntityCustomField { EditingFormat = "(###) ### ####", FieldType = 0, Name = Resources.Phone }); customerEntityType.AccountNameTemplate = "[Name]-[" + Resources.Phone + "]"; var tableEntityType = new EntityType { Name = Resources.Tables, EntityName = Resources.Table, PrimaryFieldName = Resources.Name }; _workspace.Add(customerEntityType); _workspace.Add(tableEntityType); _workspace.CommitChanges(); var accountScreen = new AccountScreen { Name = Resources.General }; accountScreen.AccountScreenValues.Add(new AccountScreenValue { AccountTypeName = saleAccountType.Name, AccountTypeId = saleAccountType.Id, DisplayDetails = true, SortOrder = 10 }); accountScreen.AccountScreenValues.Add(new AccountScreenValue { AccountTypeName = receivableAccountType.Name, AccountTypeId = receivableAccountType.Id, DisplayDetails = true, SortOrder = 20 }); accountScreen.AccountScreenValues.Add(new AccountScreenValue { AccountTypeName = discountAccountType.Name, AccountTypeId = discountAccountType.Id, DisplayDetails = true, SortOrder = 30 }); accountScreen.AccountScreenValues.Add(new AccountScreenValue { AccountTypeName = paymentAccountType.Name, AccountTypeId = paymentAccountType.Id, DisplayDetails = true, SortOrder = 40 }); _workspace.Add(accountScreen); var defaultSaleAccount = new Account { AccountTypeId = saleAccountType.Id, Name = Resources.Sales }; var defaultReceivableAccount = new Account { AccountTypeId = receivableAccountType.Id, Name = Resources.Receivables }; var cashAccount = new Account { AccountTypeId = paymentAccountType.Id, Name = Resources.Cash }; var creditCardAccount = new Account { AccountTypeId = paymentAccountType.Id, Name = Resources.CreditCard }; var voucherAccount = new Account { AccountTypeId = paymentAccountType.Id, Name = Resources.Voucher }; var defaultDiscountAccount = new Account { AccountTypeId = discountAccountType.Id, Name = Resources.Discount }; var defaultRoundingAccount = new Account { AccountTypeId = discountAccountType.Id, Name = Resources.Rounding }; _workspace.Add(defaultSaleAccount); _workspace.Add(defaultReceivableAccount); _workspace.Add(defaultDiscountAccount); _workspace.Add(defaultRoundingAccount); _workspace.Add(cashAccount); _workspace.Add(creditCardAccount); _workspace.Add(voucherAccount); _workspace.CommitChanges(); var discountTransactionType = new AccountTransactionType { Name = string.Format(Resources.Transaction_f, Resources.Discount), SourceAccountTypeId = receivableAccountType.Id, TargetAccountTypeId = discountAccountType.Id, DefaultSourceAccountId = defaultReceivableAccount.Id, DefaultTargetAccountId = defaultDiscountAccount.Id }; var roundingTransactionType = new AccountTransactionType { Name = string.Format(Resources.Transaction_f, Resources.Rounding), SourceAccountTypeId = receivableAccountType.Id, TargetAccountTypeId = discountAccountType.Id, DefaultSourceAccountId = defaultReceivableAccount.Id, DefaultTargetAccountId = defaultRoundingAccount.Id }; var saleTransactionType = new AccountTransactionType { Name = string.Format(Resources.Transaction_f, Resources.Sale), SourceAccountTypeId = saleAccountType.Id, TargetAccountTypeId = receivableAccountType.Id, DefaultSourceAccountId = defaultSaleAccount.Id, DefaultTargetAccountId = defaultReceivableAccount.Id }; var paymentTransactionType = new AccountTransactionType { Name = string.Format(Resources.Transaction_f, Resources.Payment), SourceAccountTypeId = receivableAccountType.Id, TargetAccountTypeId = paymentAccountType.Id, DefaultSourceAccountId = defaultReceivableAccount.Id, DefaultTargetAccountId = cashAccount.Id }; var customerAccountTransactionType = new AccountTransactionType { Name = string.Format(Resources.Customer_f, Resources.AccountTransaction), SourceAccountTypeId = receivableAccountType.Id, TargetAccountTypeId = customerAccountType.Id, DefaultSourceAccountId = defaultReceivableAccount.Id }; var customerCashPaymentType = new AccountTransactionType { Name = string.Format(Resources.Customer_f, Resources.CashPayment), SourceAccountTypeId = customerAccountType.Id, TargetAccountTypeId = paymentAccountType.Id, DefaultTargetAccountId = cashAccount.Id }; var customerCreditCardPaymentType = new AccountTransactionType { Name = string.Format(Resources.Customer_f, Resources.CreditCardPayment), SourceAccountTypeId = customerAccountType.Id, TargetAccountTypeId = paymentAccountType.Id, DefaultTargetAccountId = creditCardAccount.Id }; _workspace.Add(saleTransactionType); _workspace.Add(paymentTransactionType); _workspace.Add(discountTransactionType); _workspace.Add(roundingTransactionType); _workspace.Add(customerAccountTransactionType); _workspace.Add(customerCashPaymentType); _workspace.Add(customerCreditCardPaymentType); var discountService = new CalculationType { AccountTransactionType = discountTransactionType, CalculationMethod = 0, DecreaseAmount = true, Name = Resources.Discount }; var roundingService = new CalculationType { AccountTransactionType = roundingTransactionType, CalculationMethod = 2, DecreaseAmount = true, IncludeTax = true, Name = Resources.Round }; var discountSelector = new CalculationSelector { Name = Resources.Discount, ButtonHeader = Resources.DiscountPercentSign }; discountSelector.CalculationTypes.Add(discountService); discountSelector.AddCalculationSelectorMap(); var roundingSelector = new CalculationSelector { Name = Resources.Round, ButtonHeader = Resources.Round }; roundingSelector.CalculationTypes.Add(roundingService); roundingSelector.AddCalculationSelectorMap(); _workspace.Add(discountService); _workspace.Add(roundingService); _workspace.Add(discountSelector); _workspace.Add(roundingSelector); var screen = new ScreenMenu(); _workspace.Add(screen); var ticketNumerator = new Numerator { Name = Resources.TicketNumerator }; _workspace.Add(ticketNumerator); var orderNumerator = new Numerator { Name = Resources.OrderNumerator }; _workspace.Add(orderNumerator); _workspace.CommitChanges(); var ticketType = new TicketType { Name = Resources.Ticket, TicketNumerator = ticketNumerator, OrderNumerator = orderNumerator, SaleTransactionType = saleTransactionType, ScreenMenuId = screen.Id, }; ticketType.EntityTypeAssignments.Add(new EntityTypeAssignment { EntityTypeId = tableEntityType.Id, EntityTypeName = tableEntityType.Name, SortOrder = 10 }); ticketType.EntityTypeAssignments.Add(new EntityTypeAssignment { EntityTypeId = customerEntityType.Id, EntityTypeName = customerEntityType.Name, SortOrder = 20 }); var cashPayment = new PaymentType { AccountTransactionType = paymentTransactionType, Account = cashAccount, Name = cashAccount.Name }; cashPayment.PaymentTypeMaps.Add(new PaymentTypeMap()); var creditCardPayment = new PaymentType { AccountTransactionType = paymentTransactionType, Account = creditCardAccount, Name = creditCardAccount.Name }; creditCardPayment.PaymentTypeMaps.Add(new PaymentTypeMap()); var voucherPayment = new PaymentType { AccountTransactionType = paymentTransactionType, Account = voucherAccount, Name = voucherAccount.Name }; voucherPayment.PaymentTypeMaps.Add(new PaymentTypeMap()); var accountPayment = new PaymentType { AccountTransactionType = customerAccountTransactionType, Name = Resources.CustomerAccount }; accountPayment.PaymentTypeMaps.Add(new PaymentTypeMap()); _workspace.Add(cashPayment); _workspace.Add(creditCardPayment); _workspace.Add(voucherPayment); _workspace.Add(accountPayment); _workspace.Add(ticketType); var warehouseType = new WarehouseType { Name = Resources.Warehouses }; _workspace.Add(warehouseType); _workspace.CommitChanges(); var localWarehouse = new Warehouse { Name = Resources.LocalWarehouse, WarehouseTypeId = warehouseType.Id }; _workspace.Add(localWarehouse); _workspace.CommitChanges(); var department = new Department { Name = Resources.Restaurant, TicketTypeId = ticketType.Id, WarehouseId = localWarehouse.Id }; _workspace.Add(department); var transactionType = new InventoryTransactionType { Name = Resources.PurchaseTransactionType, TargetWarehouseTypeId = warehouseType.Id, DefaultTargetWarehouseId = localWarehouse.Id }; _workspace.Add(transactionType); var transactionDocumentType = new InventoryTransactionDocumentType { Name = Resources.PurchaseTransaction, InventoryTransactionType = transactionType }; _workspace.Add(transactionDocumentType); var role = new UserRole("Admin") { IsAdmin = true, DepartmentId = 1 }; _workspace.Add(role); var u = new User("Administrator", "1234") { UserRole = role }; _workspace.Add(u); var ticketPrinterTemplate = new PrinterTemplate { Name = Resources.TicketTemplate, Template = GetDefaultTicketPrintTemplate() }; var kitchenPrinterTemplate = new PrinterTemplate { Name = Resources.KitchenOrderTemplate, Template = GetDefaultKitchenPrintTemplate() }; var customerReceiptTemplate = new PrinterTemplate { Name = Resources.CustomerReceiptTemplate, Template = GetDefaultCustomerReceiptTemplate() }; _workspace.Add(ticketPrinterTemplate); _workspace.Add(kitchenPrinterTemplate); _workspace.Add(customerReceiptTemplate); var printer1 = new Printer { Name = Resources.TicketPrinter }; var printer2 = new Printer { Name = Resources.KitchenPrinter }; var printer3 = new Printer { Name = Resources.InvoicePrinter }; _workspace.Add(printer1); _workspace.Add(printer2); _workspace.Add(printer3); _workspace.CommitChanges(); var t = new Terminal { IsDefault = true, Name = Resources.Server, ReportPrinterId = printer1.Id, TransactionPrinterId = printer1.Id, }; var pm1 = new PrinterMap { PrinterId = printer1.Id, PrinterTemplateId = ticketPrinterTemplate.Id }; _workspace.Add(pm1); var pj1 = new PrintJob { Name = Resources.PrintBill, WhatToPrint = (int)WhatToPrintTypes.Everything, }; pj1.PrinterMaps.Add(pm1); _workspace.Add(pj1); var pm2 = new PrinterMap { PrinterId = printer2.Id, PrinterTemplateId = kitchenPrinterTemplate.Id }; var pj2 = new PrintJob { Name = Resources.PrintOrdersToKitchenPrinter, WhatToPrint = (int)WhatToPrintTypes.Everything, }; pj2.PrinterMaps.Add(pm2); _workspace.Add(pj2); _workspace.Add(t); new RuleGenerator().GenerateSystemRules(_workspace); ImportMenus(screen); ImportTableResources(tableEntityType, ticketType); var customerScreen = new EntityScreen { Name = string.Format(Resources.Customer_f, Resources.Search), DisplayMode = 1, EntityTypeId = customerEntityType.Id, TicketTypeId = ticketType.Id }; customerScreen.EntityScreenMaps.Add(new EntityScreenMap()); _workspace.Add(customerScreen); var customerTicketScreen = new EntityScreen { Name = Resources.CustomerTickets, DisplayMode = 0, EntityTypeId = customerEntityType.Id, StateFilter = Resources.NewOrders, ColumnCount = 6, RowCount = 6, TicketTypeId = ticketType.Id }; customerTicketScreen.EntityScreenMaps.Add(new EntityScreenMap()); _workspace.Add(customerTicketScreen); var customerCashDocument = new AccountTransactionDocumentType { Name = string.Format(Resources.Customer_f, Resources.Cash), ButtonHeader = Resources.Cash, DefaultAmount = string.Format("[{0}]", Resources.Balance), DescriptionTemplate = string.Format(Resources.Payment_f, Resources.Cash), MasterAccountTypeId = customerAccountType.Id, PrinterTemplateId = customerReceiptTemplate.Id }; customerCashDocument.AddAccountTransactionDocumentTypeMap(); customerCashDocument.TransactionTypes.Add(customerCashPaymentType); var customerCreditCardDocument = new AccountTransactionDocumentType { Name = string.Format(Resources.Customer_f, Resources.CreditCard), ButtonHeader = Resources.CreditCard, DefaultAmount = string.Format("[{0}]", Resources.Balance), DescriptionTemplate = string.Format(Resources.Payment_f, Resources.CreditCard), MasterAccountTypeId = customerAccountType.Id, PrinterTemplateId = customerReceiptTemplate.Id }; customerCreditCardDocument.AddAccountTransactionDocumentTypeMap(); customerCreditCardDocument.TransactionTypes.Add(customerCreditCardPaymentType); _workspace.Add(customerCashDocument); _workspace.Add(customerCreditCardDocument); ImportItems(BatchCreateEntities); ImportItems(BatchCreateTransactionTypes); ImportItems(BatchCreateTransactionTypeDocuments); _workspace.CommitChanges(); _workspace.Dispose(); }
public void CanFormatTicket() { WorkspaceFactory.SetDefaultConnectionString("c:\\testData.txt"); IWorkspace workspace = WorkspaceFactory.Create(); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; var user = new User("Emre", "1"); workspace.Add(user); var menuItem1 = MenuItem.Create(); menuItem1.Name = "Kurufasülye"; menuItem1.Portions[0].Price.Amount = 5; var menuItem2 = MenuItem.Create(); menuItem2.Name = "Pilav"; menuItem2.Portions[0].Price.Amount = 3; menuItem2.AddPortion("Az", 1, "TL"); workspace.Add(menuItem1); workspace.Add(menuItem2); var d = new Department(); var ticket = Ticket.Create(d); ticket.AddTicketItem(user.Id, menuItem1, "Normal"); ticket.AddTicketItem(user.Id, menuItem2, "Normal"); ticket.Date = new DateTime(2010, 1, 1); ticket.AddTicketDiscount(DiscountType.Amount, 1, user.Id); var template = new PrinterTemplate(); template.HeaderTemplate = @"SAMBA Adisyon Tarihi:{ADİSYON TARİH} [Müşteri Adı: {MÜŞTERİ ADI}]"; template.LineTemplate = @"{MİKTAR} {ÜRÜN} {FİYAT}"; template.FooterTemplate = @"{VARSA İSKONTO} [<C>İkram: {TOPLAM İKRAM}, teşekkürler] [Toplam: {TOPLAM BAKİYE}]"; var formatResult = TicketFormatter.GetFormattedTicket(ticket, ticket.GetUnlockedLines(), template); var expectedResult = @"SAMBA Adisyon Tarihi:01.01.2010 1 Kurufasülye 5,00 1 Pilav 3,00 Belge TOPLAMI:|8,00 <J>İskonto:|1,00 Toplam: 7,00"; var result = string.Join("\r\n", formatResult); Assert.IsTrue(result == expectedResult); template.MergeLines = true; formatResult = TicketFormatter.GetFormattedTicket(ticket, ticket.GetUnlockedLines(), template); result = string.Join("\r\n", formatResult); Assert.AreEqual(expectedResult, result); var l1 = ticket.AddTicketItem(user.Id, menuItem1, "Normal"); l1.Quantity = 5; var l2 = ticket.AddTicketItem(user.Id, menuItem2, "Az"); formatResult = TicketFormatter.GetFormattedTicket(ticket, ticket.GetUnlockedLines(), template); result = string.Join("\r\n", formatResult); expectedResult = @"SAMBA Adisyon Tarihi:01.01.2010 1 Pilav 3,00 6 Kurufasülye 5,00 1 Pilav.Az 1,00 Belge TOPLAMI:|34,00 <J>İskonto:|1,00 Toplam: 33,00"; Assert.AreEqual(expectedResult, result); var c = new Customer { Name = "Emre EREN" }; workspace.Add(c); ticket.CustomerId = c.Id; ticket.CustomerName = c.Name; ticket.AddTicketDiscount(DiscountType.Amount, 0, user.Id); formatResult = TicketFormatter.GetFormattedTicket(ticket, ticket.GetUnlockedLines(), template); expectedResult = @"SAMBA Adisyon Tarihi:01.01.2010 Müşteri Adı: Emre EREN 1 Pilav 3,00 6 Kurufasülye 5,00 1 Pilav.Az 1,00 Toplam: 34,00"; result = string.Join("\r\n", formatResult); Assert.IsTrue(result == expectedResult); l2.Gifted = true; template.GiftLineTemplate = "{MİKTAR} {ÜRÜN} İKRAM"; expectedResult = @"SAMBA Adisyon Tarihi:01.01.2010 Müşteri Adı: Emre EREN 1 Pilav 3,00 6 Kurufasülye 5,00 1 Pilav.Az İKRAM <C>İkram: 1,00, teşekkürler Toplam: 33,00"; formatResult = TicketFormatter.GetFormattedTicket(ticket, ticket.GetUnlockedLines(), template); result = string.Join("\r\n", formatResult); Assert.IsTrue(result == expectedResult); }
public static string[] GetFormattedTicket(Ticket ticket, IEnumerable <Order> lines, PrinterTemplate printerTemplate) { var orders = printerTemplate.MergeLines ? MergeLines(lines) : lines; ticket.Orders.Clear(); orders.ToList().ForEach(ticket.Orders.Add); var content = TicketValueChanger.GetValue(printerTemplate, ticket); content = UpdateExpressions(content); return(content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToArray()); }
public string[] GetFormattedDocument(object item, PrinterTemplate printerTemplate) { return(GetFormattedDocument(item as AccountTransactionDocument, printerTemplate)); }
public string ReplaceValues(string templatePart, T model, PrinterTemplate printerTemplate) { var result = ReplaceTemplateValues(templatePart, model, printerTemplate); return(FunctionRegistry.ExecuteFunctions(result, model, printerTemplate)); }
protected override string ReplaceTemplateValues(string templatePart, Order model, PrinterTemplate template) { var result = _orderStateValueChanger.Replace(template, templatePart, model.GetOrderStateValues()); return(_orderTagValueChanger.Replace(template, result, model.GetOrderTagValues())); }
protected override string ReplaceTemplateValues(string templatePart, Ticket model, PrinterTemplate template) { var result = PreCalculationValueChanger.Replace(template, templatePart, model.Calculations.Where(x => !x.IncludeTax)); result = PostCalculationValueChanger.Replace(template, result, model.Calculations.Where(x => x.IncludeTax)); result = PaymentValueChanger.Replace(template, result, model.Payments); result = ChangePaymentValueChanger.Replace(template, result, model.ChangePayments); result = ResourceValueChanger.Replace(template, result, model.TicketResources); result = TaxValueChanger.Replace(template, result, model.Orders.GroupBy(x => x.TaxTemplateName).Select(x => new TaxValue { Name = x.Key, Amount = x.Average(y => y.TaxRate), OrderAmount = x.Sum(y => y.GetItemValue() + (!y.TaxIncluded ? y.GetTotalTaxAmount(model.GetPlainSum(), model.GetPreTaxServicesTotal()) : 0)), TaxAmount = x.Sum(y => y.GetTotalTaxAmount(model.GetPlainSum(), model.GetPreTaxServicesTotal())) })); result = OrderValueChanger.Replace(template, result, model.Orders); return(result); }