diff --git a/src/components/learner-credit-management/ApprovedRequestActionsTableCell.jsx b/src/components/learner-credit-management/ApprovedRequestActionsTableCell.jsx
index 2787ce52e2..8301d87c55 100644
--- a/src/components/learner-credit-management/ApprovedRequestActionsTableCell.jsx
+++ b/src/components/learner-credit-management/ApprovedRequestActionsTableCell.jsx
@@ -10,7 +10,7 @@ const ApprovedRequestActionsTableCell = ({ row }) => {
// Check if the cancel and remind button should be shown for this row
const shouldShowShowActionButtons = (
- (original.lastActionStatus === 'waiting_for_learner' || original.requestStatus === 'approved')
+ (original.lastActionStatus === 'reminded' || original.requestStatus === 'approved')
);
// Don't render dropdown if no actions are available
diff --git a/src/components/learner-credit-management/BudgetDetailApprovedRequestTable.jsx b/src/components/learner-credit-management/BudgetDetailApprovedRequestTable.jsx
index ed07d43e52..3585dac5ba 100644
--- a/src/components/learner-credit-management/BudgetDetailApprovedRequestTable.jsx
+++ b/src/components/learner-credit-management/BudgetDetailApprovedRequestTable.jsx
@@ -17,7 +17,7 @@ const FilterStatus = (rest) => (
);
const getRequestStatusDisplayName = (status) => {
- if (status === 'waiting_for_learner') {
+ if (status === 'appoved' || status === 'reminded') {
return 'Waiting for learner';
}
@@ -29,8 +29,7 @@ const getRequestStatusDisplayName = (status) => {
return 'Failed cancellation';
}
- return status
- .split('_')
+ return status.split('_')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
};
diff --git a/src/components/learner-credit-management/CancelApprovedRequestModal.jsx b/src/components/learner-credit-management/CancelApprovedRequestModal.jsx
index f95a300a4f..a76b8cdd15 100644
--- a/src/components/learner-credit-management/CancelApprovedRequestModal.jsx
+++ b/src/components/learner-credit-management/CancelApprovedRequestModal.jsx
@@ -62,7 +62,7 @@ const CancelApprovedRequestModal = ({
diff --git a/src/components/learner-credit-management/RequestStatusTableCell.jsx b/src/components/learner-credit-management/RequestStatusTableCell.jsx
index a821cd401b..829bdda224 100644
--- a/src/components/learner-credit-management/RequestStatusTableCell.jsx
+++ b/src/components/learner-credit-management/RequestStatusTableCell.jsx
@@ -40,7 +40,7 @@ const RequestStatusTableCell = ({ enterpriseId, row }) => {
// Currently we check both `lastActionErrorReason` and `lastActionStatus` which creates
// confusion since status information comes from two different sources. The API should
// be updated to return a single, unified status field to simplify this logic.
- if (lastActionErrorReason === 'Failed: Cancellation') {
+ if (lastActionErrorReason === 'failed_cancellation') {
return (
{
);
}
- if (lastActionStatus === 'waiting_for_learner' || requestStatus === 'approved') {
+ if (lastActionStatus === 'reminded' || requestStatus === 'approved') {
return (
{
}
};
-const getLastActionStatus = (latestAction) => latestAction?.status?.toLowerCase().replace(/\s+/g, '_');
-
// Transform API response data to match DataTable the requirements
const transformApiDataToTableData = (apiResults) => apiResults.map((item) => {
const requestDate = new Date(item.created).toLocaleDateString('en-US', {
@@ -85,7 +83,7 @@ const transformApiDataToTableData = (apiResults) => apiResults.map((item) => {
amount: item?.coursePrice || 0,
requestDate,
requestStatus: item?.state,
- lastActionStatus: getLastActionStatus(item?.latestAction),
+ lastActionStatus: item?.latestAction?.status, // Direct assignment, no transformation
lastActionErrorReason: item?.latestAction?.errorReason,
lastActionDate,
latestAction: item?.latestAction,
diff --git a/src/components/learner-credit-management/requests-tab/BnrRequestStatusCell.jsx b/src/components/learner-credit-management/requests-tab/BnrRequestStatusCell.jsx
index 1e18afc367..81c1c8a37b 100644
--- a/src/components/learner-credit-management/requests-tab/BnrRequestStatusCell.jsx
+++ b/src/components/learner-credit-management/requests-tab/BnrRequestStatusCell.jsx
@@ -11,6 +11,24 @@ const BnrRequestStatusCell = ({ row }) => {
const recentAction = latestAction?.recentAction;
const [target, setTarget] = useState(null);
const [isModalOpen, setIsModalOpen] = useState(false);
+
+ // Format error reasons for display
+ const formatErrorReason = (reason) => {
+ if (!reason) {
+ return null;
+ }
+
+ const errorReasonMap = {
+ failed_approval: 'Failed: Approval',
+ failed_cancellation: 'Failed: Cancellation',
+ failed_system: 'Failed: System Error',
+ failed_payment: 'Failed: Payment',
+ failed_enrollment: 'Failed: Enrollment',
+ };
+
+ return errorReasonMap[reason]
+ || reason.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(': ');
+ };
const getStatusConfig = useMemo(() => {
const statusConfigs = {
requested: {
@@ -44,7 +62,8 @@ const BnrRequestStatusCell = ({ row }) => {
};
// Determine what to display in the chip
- const displayText = errorReason || getStatusConfig.label;
+ const formattedErrorReason = formatErrorReason(errorReason);
+ const displayText = formattedErrorReason || getStatusConfig.label;
const displayIcon = errorReason ? Error : getStatusConfig.icon;
const displayVariant = errorReason ? 'dark' : '';
const isClickable = !!errorReason;
@@ -66,7 +85,7 @@ const BnrRequestStatusCell = ({ row }) => {
{errorReason && (
', () => {
const mockFailedCancellationRequest = {
...mockApprovedRequest,
- lastActionErrorReason: 'Failed: Cancellation',
+ lastActionErrorReason: 'failed_cancellation',
+ latestAction: {
+ ...mockApprovedRequest.latestAction,
+ errorReason: 'failed_cancellation',
+ },
};
useBnrSubsidyRequests.mockReturnValue({
isLoading: false,
@@ -1895,12 +1899,12 @@ describe('', () => {
const mockRequestsWithDifferentStatuses = [
{
...mockApprovedRequest,
- lastActionStatus: 'waiting_for_learner',
+ lastActionStatus: 'reminded',
},
{
...createMockApprovedRequest(),
lastActionStatus: 'refunded',
- lastActionErrorReason: 'Failed: Cancellation',
+ lastActionErrorReason: 'failed_cancellation',
},
{
...createMockApprovedRequest(),