From d0d5aadaf74292c72617557f3d08d5f49a9256dc Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Tue, 24 Feb 2026 22:56:06 +0100 Subject: [PATCH] fix: show proper transaction type labels on loyalty terminal Replace naive points_delta > 0 check with actual transaction_type labels. Previously card_created showed as "Redeemed" because points_delta was 0. Now uses a label map matching all TransactionType enum values with appropriate color coding. Co-Authored-By: Claude Opus 4.6 --- .../static/store/js/loyalty-terminal.js | 32 +++++++++++++++++++ .../templates/loyalty/store/terminal.html | 7 ++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/modules/loyalty/static/store/js/loyalty-terminal.js b/app/modules/loyalty/static/store/js/loyalty-terminal.js index 38194ddc..652272a6 100644 --- a/app/modules/loyalty/static/store/js/loyalty-terminal.js +++ b/app/modules/loyalty/static/store/js/loyalty-terminal.js @@ -263,6 +263,38 @@ function storeLoyaltyTerminal() { }, // Format number + getTransactionLabel(tx) { + const labels = { + 'card_created': 'Enrolled', + 'welcome_bonus': 'Welcome Bonus', + 'stamp_earned': 'Stamp Earned', + 'stamp_redeemed': 'Stamp Redeemed', + 'stamp_voided': 'Stamp Voided', + 'stamp_adjustment': 'Stamp Adjusted', + 'points_earned': 'Points Earned', + 'points_redeemed': 'Points Redeemed', + 'points_voided': 'Points Voided', + 'points_adjustment': 'Points Adjusted', + 'points_expired': 'Points Expired', + 'card_deactivated': 'Deactivated', + }; + return labels[tx.transaction_type] || tx.transaction_type?.replace(/_/g, ' ') || 'Unknown'; + }, + + getTransactionColor(tx) { + const type = tx.transaction_type || ''; + if (['card_created', 'welcome_bonus', 'stamp_earned', 'points_earned'].includes(type)) { + return 'text-green-700 bg-green-100 dark:bg-green-700 dark:text-green-100'; + } + if (['stamp_redeemed', 'points_redeemed'].includes(type)) { + return 'text-blue-700 bg-blue-100 dark:bg-blue-700 dark:text-blue-100'; + } + if (['stamp_voided', 'points_voided', 'points_expired', 'card_deactivated'].includes(type)) { + return 'text-red-700 bg-red-100 dark:bg-red-700 dark:text-red-100'; + } + return 'text-gray-700 bg-gray-100 dark:bg-gray-700 dark:text-gray-100'; + }, + formatNumber(num) { if (num === null || num === undefined) return '0'; return new Intl.NumberFormat('en-US').format(num); diff --git a/app/modules/loyalty/templates/loyalty/store/terminal.html b/app/modules/loyalty/templates/loyalty/store/terminal.html index 390499cc..39c97c25 100644 --- a/app/modules/loyalty/templates/loyalty/store/terminal.html +++ b/app/modules/loyalty/templates/loyalty/store/terminal.html @@ -235,11 +235,8 @@ + :class="getTransactionColor(tx)" + x-text="getTransactionLabel(tx)">