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 @@