feat: rename Expense Type to Expense Category across controllers, models, and views for consistency
This commit is contained in:
parent
5dd09869ad
commit
92c739045c
@ -58,7 +58,7 @@ class DashboardController extends GetxController {
|
|||||||
final Rx<PendingExpensesData?> pendingExpensesData =
|
final Rx<PendingExpensesData?> pendingExpensesData =
|
||||||
Rx<PendingExpensesData?>(null);
|
Rx<PendingExpensesData?>(null);
|
||||||
// =========================
|
// =========================
|
||||||
// Expense Type Report
|
// Expense Category Report
|
||||||
// =========================
|
// =========================
|
||||||
final RxBool isExpenseTypeReportLoading = false.obs;
|
final RxBool isExpenseTypeReportLoading = false.obs;
|
||||||
final Rx<ExpenseTypeReportData?> expenseTypeReportData =
|
final Rx<ExpenseTypeReportData?> expenseTypeReportData =
|
||||||
@ -355,15 +355,15 @@ class DashboardController extends GetxController {
|
|||||||
|
|
||||||
if (response != null && response.success) {
|
if (response != null && response.success) {
|
||||||
expenseTypeReportData.value = response.data;
|
expenseTypeReportData.value = response.data;
|
||||||
logSafe('Expense Type Report fetched successfully.',
|
logSafe('Expense Category Report fetched successfully.',
|
||||||
level: LogLevel.info);
|
level: LogLevel.info);
|
||||||
} else {
|
} else {
|
||||||
expenseTypeReportData.value = null;
|
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) {
|
} catch (e, st) {
|
||||||
expenseTypeReportData.value = null;
|
expenseTypeReportData.value = null;
|
||||||
logSafe('Error fetching Expense Type Report',
|
logSafe('Error fetching Expense Category Report',
|
||||||
level: LogLevel.error, error: e, stackTrace: st);
|
level: LogLevel.error, error: e, stackTrace: st);
|
||||||
} finally {
|
} finally {
|
||||||
isExpenseTypeReportLoading.value = false;
|
isExpenseTypeReportLoading.value = false;
|
||||||
|
|||||||
@ -196,7 +196,7 @@ class AddExpenseController extends GetxController {
|
|||||||
'Location: ${locationController.text}',
|
'Location: ${locationController.text}',
|
||||||
'Transaction Date: ${transactionDateController.text}',
|
'Transaction Date: ${transactionDateController.text}',
|
||||||
'No. of Persons: ${noOfPersonsController.text}',
|
'No. of Persons: ${noOfPersonsController.text}',
|
||||||
'Expense Type: ${selectedExpenseType.value?.name}',
|
'Expense Category: ${selectedExpenseType.value?.name}',
|
||||||
'Payment Mode: ${selectedPaymentMode.value?.name}',
|
'Payment Mode: ${selectedPaymentMode.value?.name}',
|
||||||
'Paid By: ${selectedPaidBy.value?.name}',
|
'Paid By: ${selectedPaidBy.value?.name}',
|
||||||
'Attachments: ${attachments.length}',
|
'Attachments: ${attachments.length}',
|
||||||
@ -445,7 +445,7 @@ class AddExpenseController extends GetxController {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (expenseType == null) {
|
if (expenseType == null) {
|
||||||
_errorSnackbar("Expense type not selected");
|
_errorSnackbar("Expense Category not selected");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (paymentMode == null) {
|
if (paymentMode == null) {
|
||||||
@ -517,7 +517,7 @@ class AddExpenseController extends GetxController {
|
|||||||
final missing = <String>[];
|
final missing = <String>[];
|
||||||
|
|
||||||
if (selectedProject.value.isEmpty) missing.add("Project");
|
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 (selectedPaymentMode.value == null) missing.add("Payment Mode");
|
||||||
if (selectedPaidBy.value == null) missing.add("Paid By");
|
if (selectedPaidBy.value == null) missing.add("Paid By");
|
||||||
if (amountController.text.trim().isEmpty) missing.add("Amount");
|
if (amountController.text.trim().isEmpty) missing.add("Amount");
|
||||||
|
|||||||
@ -213,7 +213,7 @@ class ExpenseController extends GetxController {
|
|||||||
selectedCreatedByEmployees.clear();
|
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 {
|
Future<void> fetchMasterData() async {
|
||||||
try {
|
try {
|
||||||
final expenseTypesData = await ApiService.getMasterExpenseTypes();
|
final expenseTypesData = await ApiService.getMasterExpenseTypes();
|
||||||
|
|||||||
@ -1329,14 +1329,14 @@ class ApiService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get Expense Type Report
|
/// Get Expense Category Report
|
||||||
static Future<ExpenseTypeReportResponse?> getExpenseTypeReportApi({
|
static Future<ExpenseTypeReportResponse?> getExpenseTypeReportApi({
|
||||||
required String projectId,
|
required String projectId,
|
||||||
required DateTime startDate,
|
required DateTime startDate,
|
||||||
required DateTime endDate,
|
required DateTime endDate,
|
||||||
}) async {
|
}) async {
|
||||||
const endpoint = ApiEndpoints.getExpenseTypeReport;
|
const endpoint = ApiEndpoints.getExpenseTypeReport;
|
||||||
logSafe("Fetching Expense Type Report for projectId: $projectId");
|
logSafe("Fetching Expense Category Report for projectId: $projectId");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await _getRequest(
|
final response = await _getRequest(
|
||||||
@ -1349,13 +1349,13 @@ class ApiService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response == null) {
|
if (response == null) {
|
||||||
logSafe("Expense Type Report request failed: null response",
|
logSafe("Expense Category Report request failed: null response",
|
||||||
level: LogLevel.error);
|
level: LogLevel.error);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final jsonResponse =
|
final jsonResponse =
|
||||||
_parseResponseForAllData(response, label: "Expense Type Report");
|
_parseResponseForAllData(response, label: "Expense Category Report");
|
||||||
|
|
||||||
if (jsonResponse != null) {
|
if (jsonResponse != null) {
|
||||||
return ExpenseTypeReportResponse.fromJson(jsonResponse);
|
return ExpenseTypeReportResponse.fromJson(jsonResponse);
|
||||||
@ -2428,11 +2428,11 @@ class ApiService {
|
|||||||
: null);
|
: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fetch Master Expense Types
|
/// Fetch Master Expense Categorys
|
||||||
static Future<List<dynamic>?> getMasterExpenseTypes() async {
|
static Future<List<dynamic>?> getMasterExpenseTypes() async {
|
||||||
const endpoint = ApiEndpoints.getMasterExpenseCategory;
|
const endpoint = ApiEndpoints.getMasterExpenseCategory;
|
||||||
return _getRequest(endpoint).then((res) => res != null
|
return _getRequest(endpoint).then((res) => res != null
|
||||||
? _parseResponse(res, label: 'Master Expense Types')
|
? _parseResponse(res, label: 'Master Expense Categorys')
|
||||||
: null);
|
: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -203,7 +203,7 @@ class _ChartHeader extends StatelessWidget {
|
|||||||
final selectedType = controller.selectedExpenseType.value;
|
final selectedType = controller.selectedExpenseType.value;
|
||||||
|
|
||||||
return PopupMenuButton<String>(
|
return PopupMenuButton<String>(
|
||||||
tooltip: 'Filter by Expense Type',
|
tooltip: 'Filter by Expense Category',
|
||||||
onSelected: (String value) {
|
onSelected: (String value) {
|
||||||
if (value == 'all') {
|
if (value == 'all') {
|
||||||
controller.updateSelectedExpenseType(null);
|
controller.updateSelectedExpenseType(null);
|
||||||
|
|||||||
@ -112,7 +112,7 @@ class _AddExpenseBottomSheetState extends State<_AddExpenseBottomSheet>
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (controller.selectedExpenseType.value == null) {
|
if (controller.selectedExpenseType.value == null) {
|
||||||
_showError("Please select an expense type");
|
_showError("Please select an Expense Category");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (controller.selectedPaymentMode.value == null) {
|
if (controller.selectedPaymentMode.value == null) {
|
||||||
@ -178,10 +178,10 @@ class _AddExpenseBottomSheetState extends State<_AddExpenseBottomSheet>
|
|||||||
|
|
||||||
_buildDropdownField<ExpenseTypeModel>(
|
_buildDropdownField<ExpenseTypeModel>(
|
||||||
icon: Icons.category_outlined,
|
icon: Icons.category_outlined,
|
||||||
title: "Expense Type",
|
title: "Expense Category",
|
||||||
requiredField: true,
|
requiredField: true,
|
||||||
value: controller.selectedExpenseType.value?.name ??
|
value: controller.selectedExpenseType.value?.name ??
|
||||||
"Select Expense Type",
|
"Select Expense Category",
|
||||||
onTap: () => _showOptionList<ExpenseTypeModel>(
|
onTap: () => _showOptionList<ExpenseTypeModel>(
|
||||||
controller.expenseTypes.toList(),
|
controller.expenseTypes.toList(),
|
||||||
(e) => e.name,
|
(e) => e.name,
|
||||||
|
|||||||
@ -312,7 +312,7 @@ class Project {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// --- Expense Type ---
|
/// --- Expense Category ---
|
||||||
class ExpenseType {
|
class ExpenseType {
|
||||||
final String id;
|
final String id;
|
||||||
final String name;
|
final String name;
|
||||||
|
|||||||
@ -598,7 +598,7 @@ class _InvoiceDetailsTable extends StatelessWidget {
|
|||||||
|
|
||||||
// List of all label-value pairs
|
// List of all label-value pairs
|
||||||
final details = [
|
final details = [
|
||||||
{'label': 'Expense Type', 'value': expense.expensesType.name},
|
{'label': 'Expense Category', 'value': expense.expensesType.name},
|
||||||
{'label': 'Payment Mode', 'value': expense.paymentMode.name},
|
{'label': 'Payment Mode', 'value': expense.paymentMode.name},
|
||||||
{'label': 'Transaction Date', 'value': transactionDate},
|
{'label': 'Transaction Date', 'value': transactionDate},
|
||||||
{'label': 'Created At', 'value': createdAt},
|
{'label': 'Created At', 'value': createdAt},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user