diff --git a/EpsonPrintService/EpsonPrintService.csproj b/EpsonPrintService/EpsonPrintService.csproj index 015c459..9ec1ba2 100644 --- a/EpsonPrintService/EpsonPrintService.csproj +++ b/EpsonPrintService/EpsonPrintService.csproj @@ -5,7 +5,7 @@ net8.0 enable enable - 1.0.8 + 1.0.9 diff --git a/EpsonTest/EpsonTest.csproj b/EpsonTest/EpsonTest.csproj index 4351240..cd74a53 100644 --- a/EpsonTest/EpsonTest.csproj +++ b/EpsonTest/EpsonTest.csproj @@ -12,6 +12,9 @@ + + PreserveNewest + PreserveNewest diff --git a/EpsonTest/Program.cs b/EpsonTest/Program.cs index d7e6677..004e3e0 100644 --- a/EpsonTest/Program.cs +++ b/EpsonTest/Program.cs @@ -43,19 +43,20 @@ using System.Text.Json; // ============================================================================ // INVOICE RECEIPT - HTML PRINTER // ============================================================================ -//var receipt = TestHelpers.BuildSampleInvoiceReceipt(); +var receipt = TestHelpers.BuildSampleInvoiceReceipt(); //var serializedReceipt = JsonSerializer.Serialize(receipt, new JsonSerializerOptions { WriteIndented = true }); +var fileContent = File.ReadAllText("invoice.json"); +var serializedReceipt = JsonSerializer.Deserialize(fileContent); +var converter = new InvoiceReceiptConverter(lineWidth: 48, bigFontLineWidth: 24); +var printCommands = converter.Convert(serializedReceipt); -//var converter = new InvoiceReceiptConverter(lineWidth: 48, bigFontLineWidth: 24); -//var printCommands = converter.Convert(serializedReceipt); +TestHelpers.PrintCommandsToConsole(printCommands); -//TestHelpers.PrintCommandsToConsole(printCommands); - -//var printer = await TestHelpers.CreateHtmlPrinterAsync(); -//await TestHelpers.PrintCommandsToHtmlPrinterAsync( -// printer, -// printCommands, -// logoPath: "ristorante-klinglers.ch-logo_white_bg.png"); +var printer = await TestHelpers.CreateHtmlPrinterAsync(); +await TestHelpers.PrintCommandsToHtmlPrinterAsync( + printer, + printCommands, + logoPath: "ristorante-klinglers.ch-logo_white_bg.png"); // ============================================================================ @@ -112,17 +113,17 @@ using System.Text.Json; // ============================================================================ // KITCHEN RECEIPT - EPSON PRINTER // ============================================================================ -var receipt = TestHelpers.BuildSampleKitchenReceipt(); -var serializedReceipt = JsonSerializer.Serialize(receipt, new JsonSerializerOptions { WriteIndented = true }); -var deserializedReceipt = JsonSerializer.Deserialize(serializedReceipt); +//var receipt = TestHelpers.BuildSampleKitchenReceipt(); +//var serializedReceipt = JsonSerializer.Serialize(receipt, new JsonSerializerOptions { WriteIndented = true }); +//var deserializedReceipt = JsonSerializer.Deserialize(serializedReceipt); -var converter = new KitchenReceiptConverter(bigLineWidth: 18, lineWidth: 33); -var printCommands = converter.ConvertToPrintCommands(deserializedReceipt); +//var converter = new KitchenReceiptConverter(bigLineWidth: 18, lineWidth: 33); +//var printCommands = converter.ConvertToPrintCommands(deserializedReceipt); -TestHelpers.PrintCommandsToConsole(printCommands); +//TestHelpers.PrintCommandsToConsole(printCommands); -var printer = await TestHelpers.CreateEpsonPrinterAsync(paperWidth: TestHelpers.KitchenPaperWidth); -await TestHelpers.PrintCommandsToEpsonPrinterAsync(printer, printCommands, useDelay: true); +//var printer = await TestHelpers.CreateEpsonPrinterAsync(paperWidth: TestHelpers.KitchenPaperWidth); +//await TestHelpers.PrintCommandsToEpsonPrinterAsync(printer, printCommands, useDelay: true); // ============================================================================ diff --git a/EpsonTest/TestHelpers.cs b/EpsonTest/TestHelpers.cs index 173dc5e..a425e1f 100644 --- a/EpsonTest/TestHelpers.cs +++ b/EpsonTest/TestHelpers.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using Inspectron.Epson; using Inspectron.Epson.PrintServer.Printers.Utils; using Inspectron.Epson.PrintServer.Printers.Utils.FinalRecipe; @@ -108,6 +109,10 @@ public static class TestHelpers TotalEftAmount = 93.00m, Currency = "CHF" } + }, + DiscountInfo = new DiscountInfo() + { + } }; diff --git a/EpsonTest/invoice.json b/EpsonTest/invoice.json index 1da4b24..6982e86 100644 --- a/EpsonTest/invoice.json +++ b/EpsonTest/invoice.json @@ -1,6 +1,7 @@ -{ - "PrinterIp": "10.0.20.12", - "LogoUrl": "https://james-dev-public-images.s3.eu-central-1.amazonaws.com/01-21-26-15:26:16.jpeg", - "ReceiptType": 4, - "Content": "{\"CompanyName\":\"Gaumenfreuden\",\"Address1\":\"Orellistrasse 21\",\"Address2\":\"8044 Zurich\",\"Phone\":\"\\u002B380504371463\",\"ReceiptNumber\":null,\"DateTime\":\"2026-01-28T12:47:47.0874074Z\",\"Guests\":null,\"Items\":[{\"Quantity\":1,\"Description\":\"Beer light\",\"UnitPrice\":40,\"TotalPrice\":40,\"TaxCategory\":\"A\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Premium Juice\",\"UnitPrice\":1.2,\"TotalPrice\":1.2,\"TaxCategory\":\"B\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Beer light from Catalog\",\"UnitPrice\":20,\"TotalPrice\":20,\"TaxCategory\":\"A\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Beer light from Catalog\",\"UnitPrice\":20,\"TotalPrice\":20,\"TaxCategory\":\"A\",\"SubItems\":null}],\"Total\":81.2,\"Currency\":\"CHF\",\"ThankYouMessage\":\"Thanks\",\"TableNumber\":\"HappyHoursDrinks\"}" -} \ No newline at end of file + + + + + + +"{\"CompanyName\":\"Gaumenfreuden\",\"Address1\":\"Orellistrasse 21\",\"Address2\":\"8044 Zurich\",\"Phone\":\"\\u002B380504371463\",\"ReceiptNumber\":null,\"DateTime\":\"2026-01-28T12:47:47.0874074Z\",\"Guests\":null,\"Items\":[{\"Quantity\":1,\"Description\":\"Beer light\",\"UnitPrice\":40,\"TotalPrice\":40,\"TaxCategory\":\"A\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Premium Juice\",\"UnitPrice\":1.2,\"TotalPrice\":1.2,\"TaxCategory\":\"B\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Beer light from Catalog\",\"UnitPrice\":20,\"TotalPrice\":20,\"TaxCategory\":\"A\",\"SubItems\":null},{\"Quantity\":1,\"Description\":\"Beer light from Catalog\",\"UnitPrice\":20,\"TotalPrice\":20,\"TaxCategory\":\"A\",\"SubItems\":null}],\"Total\":81.2,\"Currency\":\"CHF\",\"ThankYouMessage\":\"Thanks\",\"TableNumber\":\"HappyHoursDrinks\"}" diff --git a/Inspectron.Epson/PrintServer/Printers/Utils/BarReceipt/BarReceiptConverter.cs b/Inspectron.Epson/PrintServer/Printers/Utils/BarReceipt/BarReceiptConverter.cs index b72c1ec..c29b20c 100644 --- a/Inspectron.Epson/PrintServer/Printers/Utils/BarReceipt/BarReceiptConverter.cs +++ b/Inspectron.Epson/PrintServer/Printers/Utils/BarReceipt/BarReceiptConverter.cs @@ -31,7 +31,7 @@ public class BarReceiptConverter //string serverIdLine = $"{kitchenReceipt.WaiterId}"; //commands.Add(new PrintCommand(Center(serverIdLine, false))); - + commands.Add(new PrintCommand("")); string tableLine = $"Tisch: {kitchenReceipt.TableNumber}"; commands.Add(new PrintCommand(Center(tableLine, true), true, true)); diff --git a/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/Models.cs b/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/Models.cs index f386415..42f34c6 100644 --- a/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/Models.cs +++ b/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/Models.cs @@ -27,6 +27,16 @@ public class FinalReceipt public string GoodbyeMessageLine1 { get; set; } public string GoodbyeMessageLine2 { get; set; } public List TerminalReceipts { get; set; } = new List(); + public DiscountInfo? DiscountInfo { get; set; } +} + +public class DiscountInfo +{ + public string Description { get; set; } + public decimal Amount { get; set; } + public string Currency { get; set; } + public decimal? AmountInAlternateCurrency { get; set; } + public string AlternateCurrency { get; set; } } public class FinalReceiptItem diff --git a/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/ReceiptConverter.cs b/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/ReceiptConverter.cs index dc054a2..e5e0f59 100644 --- a/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/ReceiptConverter.cs +++ b/Inspectron.Epson/PrintServer/Printers/Utils/FinalReceipt/ReceiptConverter.cs @@ -77,6 +77,14 @@ public class ReceiptConverter commands.Add(new PrintCommand("")); } + // Discount + //if (finalReceipt.DiscountInfo != null && finalReceipt.DiscountInfo.Amount > 0) + //{ + + // commands.Add(new PrintCommand(finalReceipt.DiscountInfo.Description.PadLeft(_lineWidth/2))); + // commands.Add(new PrintCommand("")); + //} + // Split payments if (finalReceipt.SplitPayments != null && finalReceipt.SplitPayments.Count > 0) { @@ -118,7 +126,10 @@ public class ReceiptConverter // Footer info commands.Add(new PrintCommand($"Bedient von:".PadLeft(_lineWidth / 2) + $" {finalReceipt.WaiterName}")); - commands.Add(new PrintCommand($"Terminal:".PadLeft(_lineWidth / 2) + $" {finalReceipt.Terminal}")); + + if(!string.IsNullOrEmpty(finalReceipt.Terminal)) + commands.Add(new PrintCommand($"Terminal:".PadLeft(_lineWidth / 2) + $" {finalReceipt.Terminal}")); + commands.Add(new PrintCommand($"Tisch:".PadLeft(_lineWidth / 2)+$" {finalReceipt.TableNumber}")); commands.Add(new PrintCommand("")); commands.Add(new PrintCommand("")); diff --git a/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/Models.cs b/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/Models.cs index 4e4f2ea..2579f1b 100644 --- a/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/Models.cs +++ b/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/Models.cs @@ -8,7 +8,7 @@ public class InvoiceReceipt public string Phone { get; set; } public string ReceiptNumber { get; set; } public DateTime DateTime { get; set; } - public int Guests { get; set; } + public int? Guests { get; set; } public List Items { get; set; } = new List(); public decimal Total { get; set; } public string Currency { get; set; } diff --git a/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/ReceiptConverter.cs b/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/ReceiptConverter.cs index eb83437..c911935 100644 --- a/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/ReceiptConverter.cs +++ b/Inspectron.Epson/PrintServer/Printers/Utils/InvoiceReceipt/ReceiptConverter.cs @@ -34,7 +34,10 @@ public class ReceiptConverter receiptLine += $"{invoiceReceipt.DateTime:HH:mm dd.MM.yyyy}".PadLeft(_lineWidth / 2); commands.Add(new PrintCommand(receiptLine,isBold:true)); - commands.Add(new PrintCommand($"Guests: {invoiceReceipt.Guests}")); + + if(invoiceReceipt.Guests != null) + commands.Add(new PrintCommand($"Guests: {invoiceReceipt.Guests}")); + commands.Add(new PrintCommand("")); // Items