kitchen receipt + html printer
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
namespace Inspectron.Epson.PrintServer.Printers.Utils.KitchenReceipt;
|
||||
|
||||
public class KitchenReceiptConverter
|
||||
{
|
||||
private readonly int _lineWidth;
|
||||
private readonly int _BigLineWidth;
|
||||
|
||||
public KitchenReceiptConverter(int lineWidth = 42, int bigLineWidth=22)
|
||||
{
|
||||
_BigLineWidth = bigLineWidth;
|
||||
_lineWidth = lineWidth;
|
||||
}
|
||||
|
||||
public List<PrintCommand> ConvertToPrintCommands(KitchenReceipt kitchenReceipt)
|
||||
{
|
||||
var commands = new List<PrintCommand>();
|
||||
|
||||
// Header - Restaurant name in red
|
||||
commands.Add(new PrintCommand(Center(kitchenReceipt.Title, true)) { IsRed = true , IsBig = true});
|
||||
commands.Add(new PrintCommand(CreateDashedLine()));
|
||||
commands.Add(new PrintCommand(""));
|
||||
|
||||
// Transaction info
|
||||
string dateTimeLine = $"{kitchenReceipt.TransactionDateTime:dd-MMM-yy HH:mm} Nr.:{kitchenReceipt.ReceiptNumber}";
|
||||
commands.Add(new PrintCommand(Center(dateTimeLine, false)));
|
||||
|
||||
string serverLine = $"{kitchenReceipt.WaiterName}";
|
||||
commands.Add(new PrintCommand(Center(serverLine, false)));
|
||||
|
||||
string serverIdLine = $"{kitchenReceipt.WaiterId}";
|
||||
commands.Add(new PrintCommand(Center(serverIdLine, false)));
|
||||
|
||||
string tableLine = $"Tisch: {kitchenReceipt.TableNumber}";
|
||||
commands.Add(new PrintCommand(Center(tableLine, true), true, true));
|
||||
|
||||
commands.Add(new PrintCommand(CreateDashedLine()));
|
||||
|
||||
|
||||
|
||||
|
||||
// Gangs
|
||||
|
||||
foreach (Gang gang in kitchenReceipt.Gangs)
|
||||
{
|
||||
|
||||
commands.Add(new PrintCommand(Center($"{gang.Id}. {gang.Name}", false)) { IsRed = true });
|
||||
foreach (var dish in gang.Dishes)
|
||||
{
|
||||
string dishLine = $"{dish.Number}x {dish.Name}";
|
||||
commands.Add(new PrintCommand(dishLine));
|
||||
}
|
||||
}
|
||||
|
||||
if (kitchenReceipt.Gangs.Count > 0)
|
||||
{
|
||||
commands.Add(new PrintCommand(CreateDashedLine()));
|
||||
}
|
||||
|
||||
foreach (var dish in kitchenReceipt.Dishes)
|
||||
{
|
||||
string dishLine = $"{dish.Number}x {dish.Name}";
|
||||
commands.Add(new PrintCommand(dishLine));
|
||||
}
|
||||
|
||||
|
||||
commands.Add(new PrintCommand(""));
|
||||
commands.Add(new PrintCommand(CreateDashedLine()));
|
||||
commands.Add(new PrintCommand(""));
|
||||
|
||||
//// Additional info section
|
||||
//if (kitchenReceipt.AdditionalInfo != null && kitchenReceipt.AdditionalInfo.Count > 0)
|
||||
//{
|
||||
// commands.Add(new PrintCommand(CreateAsterisksLine()));
|
||||
// commands.Add(new PrintCommand("Info über zugehörige Artikel"));
|
||||
// commands.Add(new PrintCommand(CreateAsterisksLine()));
|
||||
|
||||
// foreach (var info in kitchenReceipt.AdditionalInfo)
|
||||
// {
|
||||
// commands.Add(new PrintCommand(info));
|
||||
// }
|
||||
|
||||
// commands.Add(new PrintCommand(""));
|
||||
//}
|
||||
|
||||
return commands;
|
||||
}
|
||||
|
||||
private string Center(string text, bool isBigFont)
|
||||
{
|
||||
var actualLineWidth = isBigFont ? _BigLineWidth : _lineWidth;
|
||||
if (string.IsNullOrEmpty(text) || text.Length >= actualLineWidth)
|
||||
return text;
|
||||
|
||||
int totalPadding = actualLineWidth - text.Length;
|
||||
int leftPadding = totalPadding / 2;
|
||||
|
||||
return new string(' ', leftPadding) + text;
|
||||
}
|
||||
|
||||
private string CreateDashedLine()
|
||||
{
|
||||
return new string('-', _lineWidth);
|
||||
}
|
||||
|
||||
private string CreateAsterisksLine()
|
||||
{
|
||||
return new string('*', _lineWidth);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
namespace Inspectron.Epson.PrintServer.Printers.Utils.KitchenReceipt
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a restaurant receipt from Warme Küche
|
||||
/// </summary>
|
||||
public class KitchenReceipt
|
||||
{
|
||||
/// <summary>
|
||||
/// Restaurant name
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Date and time of the transaction
|
||||
/// </summary>
|
||||
public DateTime TransactionDateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Receipt number
|
||||
/// </summary>
|
||||
public string ReceiptNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Server/Waiter name
|
||||
/// </summary>
|
||||
public string WaiterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Server/Waiter ID
|
||||
/// </summary>
|
||||
public string WaiterId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Table number
|
||||
/// </summary>
|
||||
public int TableNumber { get; set; }
|
||||
|
||||
|
||||
public List<Gang> Gangs { get; set; } = new List<Gang>();
|
||||
|
||||
public List<Dish> Dishes { get; set; } = new List<Dish>();
|
||||
|
||||
/// <summary>
|
||||
/// Additional items or notes (e.g., "Amuse Bouche")
|
||||
/// </summary>
|
||||
public List<string> AdditionalInfo { get; set; }
|
||||
|
||||
public KitchenReceipt()
|
||||
{
|
||||
Gangs = new List<Gang>();
|
||||
AdditionalInfo = new List<string>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class Gang
|
||||
{
|
||||
public Gang(int id, string name)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public List<Dish> Dishes { get; set; } = new List<Dish>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents a dish item on the receipt
|
||||
/// </summary>
|
||||
public class Dish
|
||||
{
|
||||
/// <summary>
|
||||
/// Number ordered
|
||||
/// </summary>
|
||||
public int Number { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name of the dish
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
public Dish(int number, string name)
|
||||
{
|
||||
Number = number;
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user