diff --git a/models/pos_printer.py b/models/pos_printer.py index 832223a..1b8bf14 100644 --- a/models/pos_printer.py +++ b/models/pos_printer.py @@ -77,9 +77,17 @@ class PosPrinter(models.Model): ALIGN_LEFT = ESC + b'a\x00' NEWLINE = b'\n' + title = receipt_data.get('title', '') + reprint = receipt_data.get('reprint', False) + header = "KITCHEN RECEIPT" + if title: + header += f" - {title}" + if reprint: + header += " (DUPLICATE !)" + data = INIT data += ALIGN_CENTER + SIZE_NORMAL + BOLD_ON - data += b"KITCHEN RECEIPT" + NEWLINE + data += f"{header}".encode('utf-8') + NEWLINE data += SIZE_NORMAL + BOLD_OFF + NEWLINE if receipt_data.get('table'): @@ -103,10 +111,30 @@ class PosPrinter(models.Model): data += f"{qty} x {name}".encode('utf-8') + NEWLINE data += SIZE_NORMAL if note: - data += f" NOTE: {note}".encode('utf-8') + NEWLINE + for note_line in note.split('\n'): + if note_line.strip(): + data += f" NOTE: {note_line.strip()}".encode('utf-8') + NEWLINE data += NEWLINE + internal_note = receipt_data.get('internal_note') + general_customer_note = receipt_data.get('general_customer_note') + + if internal_note or general_customer_note: + data += b"-" * 32 + NEWLINE + if internal_note: + data += BOLD_ON + b"INTERNAL NOTE:" + BOLD_OFF + NEWLINE + for note_line in internal_note.split('\n'): + if note_line.strip(): + data += f" {note_line.strip()}".encode('utf-8') + NEWLINE + data += NEWLINE + if general_customer_note: + data += BOLD_ON + b"CUSTOMER NOTE:" + BOLD_OFF + NEWLINE + for note_line in general_customer_note.split('\n'): + if note_line.strip(): + data += f" {note_line.strip()}".encode('utf-8') + NEWLINE + data += NEWLINE + data += b"-" * 32 + NEWLINE + NEWLINE + NEWLINE + CUT # Start thread diff --git a/static/src/app/services/pos_store.js b/static/src/app/services/pos_store.js index cc2e069..c0af2b6 100644 --- a/static/src/app/services/pos_store.js +++ b/static/src/app/services/pos_store.js @@ -54,11 +54,15 @@ patch(PosStore.prototype, { }); const receipt_data = { + title: data.changes?.title || '', + reprint: data.reprint || false, order_name: data.name || '', order_time: (typeof data.time === 'string' ? data.time : data.time?.raw) || new Date().toISOString(), waiter: data.cashier || '', table: data.table_name || '', - lines: lines + lines: lines, + internal_note: data.internal_note || '', + general_customer_note: data.general_customer_note || '' }; try {