From acc19977ae74a2448e1d7695a13250d7fc349392 Mon Sep 17 00:00:00 2001 From: Ho Ngoc Hai Date: Sun, 29 Mar 2026 10:46:21 +0700 Subject: [PATCH] fix(receipt): use div layout instead of table for receipt items Table elements can have rendering issues in print popup windows. Switched to div-based flex layout for item rows to ensure products appear correctly in printed receipts. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Services/ReceiptPrintService.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ReceiptPrintService.cs b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ReceiptPrintService.cs index 79bba90d..a345f581 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ReceiptPrintService.cs +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ReceiptPrintService.cs @@ -101,8 +101,6 @@ public class ReceiptPrintService sb.Append($"body {{ font-family: 'Courier New', monospace; font-size: {fontSize}; width: {contentW}mm; margin: 0 auto; color: #000; }}"); sb.Append(".c { text-align: center; } .b { font-weight: bold; }"); sb.Append(".d { border-top: 1px dashed #000; margin: 6px 0; }"); - sb.Append("table { width: 100%; border-collapse: collapse; }"); - sb.Append("th { text-align: left; border-bottom: 1px solid #000; padding: 2px 0; }"); sb.Append(".r { display: flex; justify-content: space-between; padding: 2px 0; }"); sb.Append(".f { text-align: center; margin-top: 8px; color: #555; }"); sb.Append(""); @@ -134,16 +132,16 @@ public class ReceiptPrintService sb.Append("
"); // ── ITEMS ── - if (t.ShowItemList) + if (t.ShowItemList && d.Items.Count > 0) { - sb.Append(""); + sb.Append("
"); + sb.Append("Sản phẩmTiền
"); foreach (var item in d.Items) { - sb.Append($""); - sb.Append($""); - sb.Append($""); + sb.Append($"
"); + sb.Append($"{Enc(item.Name)} x{item.Qty}"); + sb.Append($"{item.Qty * item.Price:N0}
"); } - sb.Append("
Sản phẩmSLTiền
{Enc(item.Name)}x{item.Qty}{item.Qty * item.Price:N0}
"); sb.Append("
"); }