feat: rename Expense Type to Expense Category across controllers, models, and views for consistency

This commit is contained in:
Vaibhav Surve 2025-11-19 17:20:44 +05:30
parent 5dd09869ad
commit 92c739045c
8 changed files with 20 additions and 20 deletions

View File

@ -58,7 +58,7 @@ class DashboardController extends GetxController {
final Rx<PendingExpensesData?> pendingExpensesData =
Rx<PendingExpensesData?>(null);
// =========================
// Expense Type Report
// Expense Category Report
// =========================
final RxBool isExpenseTypeReportLoading = false.obs;
final Rx<ExpenseTypeReportData?> expenseTypeReportData =
@ -355,15 +355,15 @@ class DashboardController extends GetxController {
if (response != null && response.success) {
expenseTypeReportData.value = response.data;
logSafe('Expense Type Report fetched successfully.',
logSafe('Expense Category Report fetched successfully.',
level: LogLevel.info);
} else {
expenseTypeReportData.value = null;
logSafe('Failed to fetch Expense Type Report.', level: LogLevel.error);
logSafe('Failed to fetch Expense Category Report.', level: LogLevel.error);
}
} catch (e, st) {
expenseTypeReportData.value = null;
logSafe('Error fetching Expense Type Report',
logSafe('Error fetching Expense Category Report',
level: LogLevel.error, error: e, stackTrace: st);
} finally {
isExpenseTypeReportLoading.value = false;

View File

@ -196,7 +196,7 @@ class AddExpenseController extends GetxController {
'Location: ${locationController.text}',
'Transaction Date: ${transactionDateController.text}',
'No. of Persons: ${noOfPersonsController.text}',
'Expense Type: ${selectedExpenseType.value?.name}',
'Expense Category: ${selectedExpenseType.value?.name}',
'Payment Mode: ${selectedPaymentMode.value?.name}',
'Paid By: ${selectedPaidBy.value?.name}',
'Attachments: ${attachments.length}',
@ -445,7 +445,7 @@ class AddExpenseController extends GetxController {
return null;
}
if (expenseType == null) {
_errorSnackbar("Expense type not selected");
_errorSnackbar("Expense Category not selected");
return null;
}
if (paymentMode == null) {
@ -517,7 +517,7 @@ class AddExpenseController extends GetxController {
final missing = <String>[];
if (selectedProject.value.isEmpty) missing.add("Project");
if (selectedExpenseType.value == null) missing.add("Expense Type");
if (selectedExpenseType.value == null) missing.add("Expense Category");
if (selectedPaymentMode.value == null) missing.add("Payment Mode");
if (selectedPaidBy.value == null) missing.add("Paid By");
if (amountController.text.trim().isEmpty) missing.add("Amount");

View File

@ -213,7 +213,7 @@ class ExpenseController extends GetxController {
selectedCreatedByEmployees.clear();
}
/// Fetch master data: expense types, payment modes, and expense status
/// Fetch master data: Expense Categorys, payment modes, and expense status
Future<void> fetchMasterData() async {
try {
final expenseTypesData = await ApiService.getMasterExpenseTypes();

View File

@ -1329,14 +1329,14 @@ class ApiService {
return null;
}
/// Get Expense Type Report
/// Get Expense Category Report
static Future<ExpenseTypeReportResponse?> getExpenseTypeReportApi({
required String projectId,
required DateTime startDate,
required DateTime endDate,
}) async {
const endpoint = ApiEndpoints.getExpenseTypeReport;
logSafe("Fetching Expense Type Report for projectId: $projectId");
logSafe("Fetching Expense Category Report for projectId: $projectId");
try {
final response = await _getRequest(
@ -1349,13 +1349,13 @@ class ApiService {
);
if (response == null) {
logSafe("Expense Type Report request failed: null response",
logSafe("Expense Category Report request failed: null response",
level: LogLevel.error);
return null;
}
final jsonResponse =
_parseResponseForAllData(response, label: "Expense Type Report");
_parseResponseForAllData(response, label: "Expense Category Report");
if (jsonResponse != null) {
return ExpenseTypeReportResponse.fromJson(jsonResponse);
@ -2428,11 +2428,11 @@ class ApiService {
: null);
}
/// Fetch Master Expense Types
/// Fetch Master Expense Categorys
static Future<List<dynamic>?> getMasterExpenseTypes() async {
const endpoint = ApiEndpoints.getMasterExpenseCategory;
return _getRequest(endpoint).then((res) => res != null
? _parseResponse(res, label: 'Master Expense Types')
? _parseResponse(res, label: 'Master Expense Categorys')
: null);
}

View File

@ -203,7 +203,7 @@ class _ChartHeader extends StatelessWidget {
final selectedType = controller.selectedExpenseType.value;
return PopupMenuButton<String>(
tooltip: 'Filter by Expense Type',
tooltip: 'Filter by Expense Category',
onSelected: (String value) {
if (value == 'all') {
controller.updateSelectedExpenseType(null);

View File

@ -112,7 +112,7 @@ class _AddExpenseBottomSheetState extends State<_AddExpenseBottomSheet>
return false;
}
if (controller.selectedExpenseType.value == null) {
_showError("Please select an expense type");
_showError("Please select an Expense Category");
return false;
}
if (controller.selectedPaymentMode.value == null) {
@ -178,10 +178,10 @@ class _AddExpenseBottomSheetState extends State<_AddExpenseBottomSheet>
_buildDropdownField<ExpenseTypeModel>(
icon: Icons.category_outlined,
title: "Expense Type",
title: "Expense Category",
requiredField: true,
value: controller.selectedExpenseType.value?.name ??
"Select Expense Type",
"Select Expense Category",
onTap: () => _showOptionList<ExpenseTypeModel>(
controller.expenseTypes.toList(),
(e) => e.name,

View File

@ -312,7 +312,7 @@ class Project {
};
}
/// --- Expense Type ---
/// --- Expense Category ---
class ExpenseType {
final String id;
final String name;

View File

@ -598,7 +598,7 @@ class _InvoiceDetailsTable extends StatelessWidget {
// List of all label-value pairs
final details = [
{'label': 'Expense Type', 'value': expense.expensesType.name},
{'label': 'Expense Category', 'value': expense.expensesType.name},
{'label': 'Payment Mode', 'value': expense.paymentMode.name},
{'label': 'Transaction Date', 'value': transactionDate},
{'label': 'Created At', 'value': createdAt},